HTTP和HTTPS有什么区别
HTTPS 使用默认端口 443 ,而 HTTP 使用默认端口是 80。HTTPS 需要证书。HTTP是超文本传输协议,是明文传输,HTTPS是SSL加密协议,传输更安全。HTTPS 比 HTTP 慢是因为 HTTPS 除了 TCP 握手的三个数据包外,还增加了 SSL 握手的九个数据包。
HTTPS是如何加密的
通过分析几种加密方式,循序渐进了解HTTPS的加密方式以及使用它的原因
对称加密
前端(客户端)和服务器共享一个密钥来加密和解密消息,这称为对称加密。前端(客户端)和服务器就加密密钥达成一致。前端(客户端) 在发送消息前使用密钥对消息进行加密,发送给服务器后,服务器使用密钥对消息进行解密得到消息
译这种方式在一定程度上保证了数据的安全,但是一旦密钥泄露(密钥在传输过程中被截获),传输内容就会暴露,所以需要想办法安全传输密钥。
非对称加密
使用非对称加密时,前端(客户端)和服务端都有公钥和私钥,公钥加密的内容只有对应的私钥才能解密。私钥自己保管,公钥发给对方。这样,消息在发送前先用对方的公钥加密Q,收到后用自己的私钥解密。这样,攻击者只能得到传输过程中的公钥Q,无法破译传输内容。
非对称加密虽然解决了因获取密钥而导致传输内容泄露的问题,但是中间人仍然可以通过篡改公钥获取或篡改传输内容,非对称加密的性能不如对称加密
第三方认证
上述方式的弱点在于前端(客户端)不知道公钥是服务端返回的还是中间人返回的,所以引入第二方认证环节: 即第三方使用私钥加密公钥key,浏览器内置了一些权威的第三方认证机构的公钥。浏览器会使用第三方公钥来解开我们用第三方私钥加密后的公钥,得到公钥。如果能解密成功,说明获取的公钥是正确的。
但是,第三方认证并没有彻底解决问题。第三方认证是大家的,中介也可以申请证书。如果中介用自己的证书代替原来的证书,前端(客户端)仍然无法确认公钥的真实性。
数字签名
为了让前端(客户端)能够验证公钥的来源,在公钥上添加了数字签名。这种数字签名是通过对企业、网站等各种信息和公钥进行单向哈希得到的。一旦构成数字签名的信息发生变化,哈希值就会发生变化,从而构成公钥来源的唯一标识。
具体来说,服务器在本地生成一对密钥,然后拿着公钥和企业、网站等各种信息到CA(第三方认证中心)申请数字证书。CA会使用一种单向散列算法(比如MD5),生成一串摘要,这串摘要就是这堆信息的唯一标识,然后CA也会用自己的私钥对摘要进行加密并将其与我们服务器的公钥一起发送给我们。
浏览器获得数字签名后,会使用浏览器本地内置的CA公钥对数字证书进行解锁和验证,得到正确的公钥。由于非对称加密的性能较低,前端(客户端)在获得公钥后,会随机生成一个对称密钥,用这个公钥加密,发送给服务器,服务器用自己的私钥解锁对称密钥Q,以及随后的加密 连接使用此对称密钥进行对称加密。
综上所述,HTTPS在验证阶段采用非对称加密+第三方认证+数字签名的方式获取正确的公钥,获取正确的公钥后采用对称加密方式进行通信。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2305938578@qq.com 举报,一经查实,本站将立刻删除,本文链接:https://www.spubm.cn/23222.html