HTTPS 的原理
最近看了下《图解 HTTP》,对 HTTPS 怎么实现安全的原理总结了一下。
HTTPS 的原理要从怎么解决安全性问题来一步步阐明,这样说起来会更清晰一点:
- 如何解决网络传播中数据安全问题?
答:运用对称加密或者非对称加密来加密数据内容。https 使用对称加密 加密数据内容,不使用非对称加密 是因为性能比对称加密 更差。
对称加密 的密钥需要双方都要知道,如何保证密钥安全?
答:使用非对称加密 加密对称加密 的密钥。客户端拥有非对称加密 的公钥,对对称加密 的密钥加密后,传给服务端,服务端用非对称加密 的私钥解密,拿到明文的对称加密 的密钥,确保对称加密 的密钥在网络传输中不被劫持破解。
- 客户端从哪拿到
非对称加密 的公钥?并且怎么确保这个公钥是服务器下发的,而不是攻击人中途替换的?
答:服务端生成一对非对称加密 的公私钥,公钥会给客户端。至于这个公钥的权威性如何保证,主要依赖CA认证。服务器把公钥给CA去认证,CA在确认这个申请人的身份后,会对公钥做数字签名(CA自己的私钥加密),然后这个 数字签名+明文公钥 会一并给服务端,服务端再给客户端,客户端拿CA机构的公钥去对这个数字签名进行验证(公钥验签),没问题的话就说明服务器下发的 非对称加密 的公钥是没有掉包的,值得信赖的。
- 客户端哪来的CA机构的公钥?
答:游览器会直接内置常用CA机构的公钥。所以至此我们也能进一步理解抓包软件的原理,在我们使用抓包软件的时候,通常需要先导入并信任抓包软件提供的证书,这样抓包软件可以伪装成为CA,客户端实际就成了在与抓包软件进行https通讯(自然也就可以解密客户端传的明文信息);然后抓包软件又与服务端进行通信,把自己伪装成客户端(自然也就可以解密服务端传的明文信息)。抓包软件能够顺利成功实施中间人攻击的关键就是用户主动内置并信任抓包软件的证书。
声明
- 本章总结了《图解 HTTP》的内容,想系统学习可以直接阅读本书。
|