加密算法发展历程
- 最原始使用明文进行传输,但是容易被第三方进窃听。
- 于是在明文上进行一层加密:对称加密,但是交互密钥的过程过于复杂,且不安全。
- 使用非对称加密,只有对方可以解密,但是过于复杂,消耗资源多。
- 如何扬长避短?使用非对称算法加密对称密钥,使用对称密钥加密明文的方案进行传输信息。但是会出现信息被篡改的情况。
- 如何保证信息不被篡改?对明文进行不可逆的HASH算法,再使用自身私钥进行加密;对明文使用对方的公钥进行进行加密。对方收到后首先对密文使用自身私钥进行解密,这里可以保证身份;再使用发送方的公钥进行解密,得到HASH计算后的值,最后对刚才已经解开的明文进行HASH计算得出的值进行对比,这一步保证数据的真实性,保证没有被篡改。但还是会出现伪造的情况。
- 要使用一个唯一标识证明自身的真实性,就要依靠一个权威机构来进行认证颁发证书,然后再发送过程中将证书使用对方的公钥进行加密,对方使用自身的私钥解开之后会看到里面的证书,也就能确定是不是自己要接收消息的那个人了。
完整的数据传输安全案例
现在Alice要传输信息给Bob:
1.原始信息经过HASH计算生成摘要信息,再对摘要信息使用Alice的私钥进行加密生成数字签名;
2.将原始信息与数字签名与Alice的证书(里面包含Alice的公钥)使用对称密钥进行加密;
3.使用Bob的公钥对对称密钥进行加密,生成数字信封;
4.将密文以及数字信封一同发给Bob;
5.Bob收到密文以及数字信封之后,首先使用Bob的私钥解出对称密钥;
6.Bob使用对称密钥解出密文中的内容(包括原始信息与数字签名与Alice的证书);
7.Bob使用Alice的公钥对密文进行解密,得到Alice使用HASH计算后得到的摘要信息;
8.最后Bob将自己解密出的摘要信息,与密文中的原始信息HASH后的值进行对比,如果一致则接收,不一致则直接丢弃。