共计 1539 个字符,预计需要花费 4 分钟才能阅读完成。
HTTPS 如何实现平安通信
什么样的通信过程能称得上平安?
如果通信具备以下特色,那么就能称得上平安。
- 机密性,信息只能让可信的人看懂,对其他人是机密。
- 完整性,信息在传输的过程中没有被截取和篡改。
- 身份认证,可能确认通信方的身份。
- 不可否认,不可能否定曾经产生过的行为。
如何实现平安通信
- 机密性
为了让通信单方的信息不被其他人看到,就需当时磋商好要应用的密钥。这看上去可能实现机密性,然而通信的单方如何传递这个密钥呢。替换密钥的过程是可见的,一旦密钥被获取,通信内容就能够被破解。
为了解决密钥替换的问题,非对称加密便产生了。非对称加密应用两个密钥:公钥和私钥,公钥能够任意散发而私钥窃密。首先某服务器产生公钥 a 和私钥 a’,浏览器领有公钥 b 和 b’。浏览器把公钥 b 传输给服务器,服务器把公钥 a 传输给浏览器。之后浏览器向服务器传输的内容都用公钥 a 加密,服务器收到后用私钥 a’解密。同理服务器向浏览器传输的内容都用公钥加密,浏览器收到后用私钥 b’解密。非对称加密也有毛病,那就是运算速度很慢。
为了获取两种加密的劣势,混合加密便产生了。首先某服务器产生公钥 a 和私钥 a’’。浏览器向服务器申请,服务器把公钥 a 给浏览器。浏览器随机生成一个用于对称加密的密钥 x, 用公钥 a 加密传给服务器,服务器拿到后用私钥 a’解密失去密钥 x,这样单方就都领有密钥 x,其他人都无奈晓得,之后的数据都通过 x 加解密。
- 完整性
只实现机密性,也不够平安。尽管他人看不了交互的信息,然而不可能免于被串改(间接批改加密后的信息,截取,颠倒程序)。为了平安,咱们还要验证信息的完整性,个别应用摘要算法来实现。摘要算法近似地了解成一种非凡的压缩算法,它可能把任意长度的数据“压缩”成固定长度、而且举世无双的“摘要”字符串,能够看成文件的指纹。摘要算法对输出具备“单向性”和“雪崩效应”,输出的渺小不同会导致输入的激烈变动,这样就能够很容易看出信息是否被批改。这个摘要会放在原信息的前面。摘要的算法也是由通信的单方在首次通信时就要确定好。
- 不可否认 + 一部分身份认证
尽管有了摘要,然而还是不平安,因为它容易伪造。为了确保消息来源牢靠,咱们还要退出数字签名的技术。即信息发送方把音讯做摘要后,用本人的私钥把摘要的信息做一次加密。音讯的接受方收到音讯后,依据摘要算法,对音讯提取一次摘要,接着用对方的公钥把音讯尾部做了加密的摘要解密,而后把两份摘要做比照,如果统一则承受。
- 身份认证
其实到上一步,咱们曾经实现了平安的四大特色了。然而这里还有一个“公钥的信赖”问题。因为任何一方还是可能被假冒,你没有方法晓得对方的实在身份。这时就须要引入一个值得信赖的两头机构 CA,由它来发证书证实身份。这里拿网站和浏览器来举例,网站想要一个证书,它找 CA 机构申请,CA 把申请者的信息和申请者的公钥绑定在一起,并用本人的私钥给该证书签名(证实申请人身份可信,证书是本人签发的),最初证书交给网站。浏览器向网站发动申请后,网站把该证书的证书链发给浏览器,而后浏览器就能够应用信赖的根证书(根公钥)解析证书链的根证书失去一级证书的公钥 + 摘要验签,而后拿一级证书的公钥解密一级证书拿到二级证书的公钥和摘要验签,再而后拿二级证书的公钥解密二级证书失去服务器的公钥和摘要验签,确保证书中网站身份和公钥的可信。
证书体系也是有弱点的。如果 CA 失误或者被坑骗,签发了谬误的证书,尽管证书是真的,可它代表的网站却是假的。还有一种更危险的状况,CA 被黑客攻陷,或者 CA 有歹意,因为它(即根证书)是信赖的源头,整个信赖链里的所有证书也就都不可信了。
证书的申请流程如下:
参考资料
- 铜墙铁壁的基本(上):对称加密与非对称加密
- 铜墙铁壁的基本(下):数字签名与证书
- 数字证书、签名到底是什么?这篇文章讲得太好了