密码学大致加密算法可以分为两种,
- 一种是对称加密(Symmetric cryptograthy),
- 另一种是非对称加密(Asymmetric cryptography) 第二种也叫公钥加密(Public-Key Cryptography)
两者的区别是是否使用了相同的秘钥。对称加密使用相同秘钥,非对称加密使用两种秘钥。
对称加密代表有 “三重DES”和“AES”,非对称加密代表有 RSA、ElGamal算法加密、椭圆曲线加密等 .
相对于对称密码加密解密采用相同的密码,非对称密码加密采用的是不同的秘钥,公钥和私钥是成对出现的,公钥加密的信息只有相应的私钥才能解密。
- 非对称加密,就是向大家派发锁(公钥),大家可以通过锁对信息加密,锁是公开的,丢了也无所谓,但钥匙(私钥)只有一把,归信息的接收者所有
- 对称加密好比大家用相同的锁对信息加密,加密双方都拥有相同的钥匙,钥匙(秘钥)丢了,锁(明文信息)就被别人打开了
非对称加密流程
- 接收方生成公钥私钥对,私钥由接收方保管
- 接收方将公钥发送给发送方
- 发送方通过公钥对明文加密,产生密文
- 发送方向接收方发送密文
- 接收方通过私钥解密密文,得到明文
缺点是无法解决公钥认证问题,可能被中间人伪造公钥
RSA
RSA加密存在的问题:
- 效率慢,因此在工业场景下,往往是通过非对称加密配送秘钥、对称加密加密明文的混合加密方式,如著名的SSL
- 公钥认证问题难,消息发送方无法确认公钥的身份问题
- 无法避免中间人攻击,可能被人在中间劫持后发送一个伪造的公钥,此公钥加密后的密文可以被劫持者解密,之后所有的密文对劫持者都是透明的
- 选择密文攻击,即通过不断的发送请求,分析请求的反馈,猜测秘钥和明文
- 密码劣化,随着算力的提升,密码的安全性下降
其他非对称加密算法:
- ECC (Elloptic Curve Cryptography) 椭圆曲线密码
- ElGamal
- Rabin
混合密码系统
对称加密和非对称加密的结合,由于对称加密算法速度快、强度高,而非对称加密算法效率低,但能解决秘钥配送问题,
因此可以通过非对称加密配送对称秘钥,再采用对称秘钥用来加密的方式,实现网络的秘钥配送和通信加密。
单向散列
单向散列是为了保证消息的完整性,防止信息被篡改的一项技术。
特点:
- 无论消息长度,计算出的长度永远不变
- 快速计算
- 消息不同,散列值不同,需要具有抗碰撞性 Collision Resistance
-弱抗碰撞性:给定散列值,找到和该消息具有相同散列值的另一条消息是困难的
-强抗碰撞性:任意散列值,找到散列值相同的两条不同的消息是困难的
- 具有单向性 one-way,不可由散列值推出原消息
单向散列算法
- MD(Message Digest)
MD 散列算法分为 MD4, MD5 两套算法,都可计算出 128 bits 的散列。MD 系列算法已经被中国科学家王小云破解(可于有限时间内找出碰撞)。
- SHA(Secure Hash Algorithm)
SHA 是单向散列算法的一个标准的统称,其下又分为 SHA-1, SHA-2, SHA-3 三套算法。
- 其中 SHA-1 可生成 160 bit 散列值,已被攻破(由王小云、姚期智联手破解),不推荐使用。
- SHA-2 可生成不同长度的散列,如 256 bits (SHA-256), 384 bits (SHA-384), 512 bits (SHA-512),同时对输入的消息长度存在一定限制,SHA-256 上限接近于 $2^{64}-1$ 比特,SHA-384、SHA512 则接近于 $2^{128}-1$ 比特。
- SHA-3,是 2012 年被采用的最新标准,采用了 Keccak 算法。
Keccak 算法的优点:
- 采用与 SHA2 完全不同的结构
- 结构清晰,易于分析
- 适用于各种硬件,性能优越
- 可生成任意长度
- 对消息长度无限制
- 可采用双工结构,输入同时输出,提升效率
MD4,5, RIPEMD, RIPEMD-160, SHA-1, SHA-2 均采用 MD 结构(Merkle-Damgard construction)
对散列的攻击
- 暴力破解,冗余碰撞
- 生日攻击,针对强抗碰撞性
Reference: https://www.jianshu.com/p/a8070920810d