读书的很大一个目的就在于理解与记忆,技术类图书尤为如此。近期学习了密码学的相关知识,在这里沿着书中给出的线索,简述密码学基础。参考书籍——《图解密码技术》。
此前,先认识几个英语单词:
cryptography /krɪp'tɑgrəfi/ n. 密码学
crypto /'krɪpto/ n. 加密 密码
encryption /ɛn'krɪpʃən/ n. 加密;加密术
第一部分:密码
在系统的学习密码知识之前,我们需要先了解几条密码学的一般性常识:
- 不要使用保密的密码算法:
- 历史证明:密码算法的秘密早晚会公诸于世。
- 开发高强度的密码算法是非常困难的。
- 使用强度低的密码算法比不进行任何加密更危险:会给人一种错误的安全感,使人麻痹大意。
- 任何密码总有一天都会被破解:遍历所有秘钥即可实现。但一次性密码本是不会被破解的。
- 密码知识信息安全的一部分:社会工程学所体现的安全中的人为因素。
一.对称密码
使用同一把秘钥实现加密解密过程。其中重要的安全性问题就是秘钥的配送问题,主要通过以下方法来解决:
- 事先共享秘钥
- 秘钥分配中心
- 通过Diffe-Hellman秘钥交换解决秘钥配送问题:根据所交换的信息,双方可以生成相同的秘钥。
- 通过公钥密码来解决秘钥配送问题
一.一次性密码本
原理:将明文与一串随机的比特序列进行XOR运算。
特点:一次性密码本是无法破译的,即使遍历整个秘钥空间,因为无法判断得出的结果是否为正确的明文。1949年,香农通过数学方法加以证明。
没有使用的原因:秘钥的配送、保存、重用、同步、生成:在一次性密码本中需要生成大量的无重复性的真正随机数。
二.DES(Data Encryption Standard)
现状:已经能够实现暴力破解。
Feistel网络。
三.三重DES
将DES重复三次所得到的一种密码算法,通常缩写为3DES。
流程:加密->解密->加密
现状:处理速度不高,安全性方面也逐渐显现出一些问题。
四.AES(Advanced Encryption Standard)——Rijndeal(2000 年)
Advanced /əd'vænst/ adj. 先进的;高级的
二.公钥密码
公钥加密,私钥解密。
RSA(由三位开发者姓氏首字母组成)
1.加密:密文 = 明文 E mod N(明文的E次幂)
2.解密:明文 = 密文 D mod N(密文的D次幂)
椭圆曲线密码
三.混合密码
原理:使用对称密码加密信息,提高速度;用公钥密码加密秘钥。
密码组合:伪随机数生成器具有优秀的算法;对称密码与公钥秘钥秘钥都应有足够的长度;公钥密码的强度应该高于对称密码,因为公钥密码一旦被破译,所有的通信内容随之也会被全部破译。
第二部分:认证
一.单项散列函数(one-way hash function)
通过hash算法计算出定长不可逆的字符序列。
1. 单向散列函数的性质:
- 根据任意长度的消息,计算出固定长度的散列值
- 快速
- 抗碰撞性
- 强抗碰撞性:已知散列值与一个消息,得出具有相同散列值另一个消息。
- 弱抗碰撞性:得出具有相同散列值的两个消息。
- 单向性:不可逆
2. 具体算法:MD4 MD5 SHA-1 SHA-2(6 种版本) SHA-3(2012 年):Keccak
3. 可以验证消息是否被篡改,但是无法解决伪装。
二.消息认证码(MAC:Message Authentication Code)
共享秘钥 + 单向散列函数
计算出消息散列值 -> 共享秘钥加密 -> MAC
问题:可以防止篡改和伪装,但是无法防止否认。因为发送者与接受者共同保存秘钥,所以无法确认MAC是哪一方进行计算的,因此无法防止否认。
三.数字签名
公钥密码 + 单向散列函数
计算出消息散列值 -> 私钥加密 -> 数字签名
解决问题:防止篡改、伪装和否认:因为只有发送者具有可以对散列值加密的私钥,由此判断消息一定是他发出的。
四.证书
这里所讲的证书,就是用来对公钥的合法性提供证明的技术。
中间人攻击,可以拦截发送方的公钥,将一个错误的公钥发送给接受者。就是对数字签名的一种使用方式,通过可信的渠道获取公钥,由认证机构完成对公钥的数字签名。