三类加密算法
对称加密
加密解密用同一把密钥.
优点: 速度
缺点: 多人通讯下密钥分发复杂 O(n2); 共用一个加密密钥, 则失去保密性;
- 3DES
- AES
- RC6
不对称加密
一对密钥: 公钥, 私钥; 可以 公钥加密私钥解密 或者 私钥加密公钥解密;
一般地, 公钥分发给一群人, 私钥自己持有;
优点: 多人通讯下密钥分发简单 O(n);
缺点: 速度远慢于对称加密
- RSA
- ECC 移动设备用
- DSA 数字签名用
摘要算法
对原文hash得到唯一的定长密文, 且密文无法还原得到原文;
不可逆这个特性用于: 数据完整性校验, 密码存储
加盐增加彩虹表破解难度
- MD5 输出32 hex字符
- SHA1 输出40 hex字符
- SHA256 输出64 hex字符
相关的
数字签名
目的: 解决信息被篡改的风险(数据完整性校验)
原文附上数字签名的步骤:
[A] → 原文 → 摘要 → 私钥+ → 数字签名
原文 + 数字签名 → [B]
完整性校验:
[B] → 原文 → 原文摘要
[B] → 数字签名 → 公钥- → 摘要
- 比较两个摘要可知, 原文是否被篡改
数字证书
目的:解决公钥被冒充的风险
数字签名的问题:
- 签名可被冒充
- 例如:[B] 使用 A给的公钥 进行识别, 若公钥A在传输过程中被替换为公钥C, 则C可冒充A 与B通讯;
- 所以需要一个信任的第三方, 来保证公钥A的可信度;
数字证书签发与验证:
- [B]找证书中心CA, 为自己公钥做认证, 得到 数字证书
<[B]个人信息 + [B]公钥> + CA私钥加密 → 数字证书
- [B]将证书追加到信件中, 这样信件包括
{原文, 签名, 证书}
- [A]收到信后, 验证证书:
- 客户端CA公钥 解密证书,验证证书有效期,证书颁发者合法性
- 通过后,即保证了[B]公钥的正确性
ref
http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html