技术
- 对称密码
- 非对称密码
- 单向散列函数
- 消息认证码
- 数字签名
- 伪随机数生成器
对称密码
- 对称密码存在密钥配送的问题,如何将密钥安全的发送给接收者
XOR
可以作为一个对称密码算法 ,其中 A 是明文,B是密钥- 一次性密码本是无条件安全的,在理论上是无法破译的
DES
已经不再使用
- DES(Data Encryption Standard) 是一种将64bit的明文加密成64bit的密文的对称密码算法,它的密钥长度是56bit。
- DES是以64bit的明文为一个单位进行加密的,这个64bit的单位成为分组。
一般来说,以分组为单位进行处理的密码算法成为分组密码
DES的结构 (Fiestel 网络)
3重 DES
- 3重DES由于兼容DES,可能还是使用一段时间,但是会被AES取代
AES(Advanced Encryption Standard)
- AES 是取代 DES成为新标准的一种对称加密算法。
- AES(Rijndeal) 也是分组密码算法,分组长度为128bit,密钥长度可以32bit为单位在128bit和256bit的范围进行选择,但是AES规格中,密码长度只有128、192、256bit三种。
分组密码的模式
非对称密码
- 用公钥(public-key cryptography)加密,用私钥解密
- 使用公钥密码,解决了密钥配送的问题
- 公钥和私钥是一一对应的,成为密钥对(key pair)
- RSA 是公钥密码的事实标准
特性
- 发送者使用加密密钥
- 接收者使用解密密钥
- 加密密钥可以公开
- 解密密钥一定要保密
流程
- 接收者生成公私钥对,发送公钥给发送者
- 发送者使用公钥加密明文
- 接收者使用私钥解密密文
需要解决的问题
- 处理速度只有对称密码的几百分之一
- 公钥认证问题(为了应对中间人攻击)
RSA是一种公钥密码算法,可以用于公钥密码和数字签名
- RSA利用质因分解的困难度
- 在RSA中,密文、明文、公钥都是数字,加密过程如下,对代表明文的数字的E次方求模N,(E,D,N都是很大的数字,512比特以上)
(E,N的组合就是公钥)
- 解密过程
(D,N的组合就是私钥)
ElGamal
- 利用mod N 求离散对数的困难度
Rabin
- 利用mod N 求平方根的困难度
椭圆曲线密码 ECC
- 将椭圆曲线上的特定点进行特殊的乘法运算,利用了这种乘法运算的逆运算困难度
单向散列函数(一致性或者完整性验证)
-
用于获取信息的摘要
-
输入消息,输出散列值,散列值用于检查消息的完整性
-
散列值的长度和消息的长度没有关系
-
MD4、MD5 是单向散列函数,已经不安全了。(MD是message digest的缩写)
-
SHA、SHA-1(已经被攻破)、SHA-256、SHA-384、SHA-512(统称为SHA-2,还未被攻破)
数字签名
- 数字签名 由单向散列函数和公钥密码组成
- 先通过单向散列函数计算出消息的散列值,再对散列值施加数字签名。
证书
- 证书由公钥和数字签名组成
消息认证码(message authentication code MAC)
- MAC是一种确认完整性并进行认证的技术
- 消息认证码是由单向散列函数和密钥组合而成,也可以通过对称密码来生成