密码学入门科普
0.传递消息 —— 摘要
摘要MD(Message Digest)是【哈希值】,我们通过散列算法比如MD5算法就可以得到这个哈希值。
摘要只是用于【验证数据完整性和唯一性】的哈希值,不管原始数据是什么样的,得到的哈希值都是【固定长度】的,也就是说摘要并不是原始数据加密后的密文,只是一个验证身份的令牌。所以我们无法通过摘要解密得到原始数据。
1.如何不被窃听 —— 加密
- 上图这种加密方案在密码学里称为【对称密码】,加密方和解密方使用的是【相同的密钥】
- 知名的密码算法有 AES(2001)、Blowfish(1993)、DES(1977),再远一点,有二战时期的恩尼格码(转轮机原理,德国)、紫色密码(转轮机原理,日本),以及著名的凯撒密码(没错就是地中海北岸那个凯撒)、栅栏密码等。
2.如何交换密钥 —— 非对称加密
为了解决信道安全问题
- Bob 事先生成【一对公钥和私钥】,私钥 pri 由自己保管,把公钥 pub 发给 Alice。
- Alice 使用 pub 对消息内容进行加密,Bob 用 pri 进行解密。公钥加密,私钥解密。
- 需要注意的是, 只有私钥才可以解密,所以即使 Eve 窃取到了 pub(只有 pub 被传输而容易被窃取),她也无法解密。
- 这种加密方式在密码学里称为【非对称密码】,所谓“非对称”指的是加密方和解密方用的密钥不一样。
- 知名的非对称算法有:DSA(数字签名算法,只能用于签名,1991)、ECC(椭圆曲线加密,1985)、RSA(公钥加密算法,1977)等。
- 这些算法除了用于加密外,还可以用于【数字签名】。非对称算法有个致命弱点: 性能很低。实际应用中一般采用混合加密体制、哈希签名体制。
3.如何防止数据篡改 —— MAC