介绍
当许多人提到HTTPS时,第一反应是安全性,这对于普通用户来说已经足够了。
然而,对于程序员来说,有必要了解HTTP中存在的问题以及HTTPS如何解决这些问题,以及这些问题背后的解决方案和方法
由于HTTPS系统非常复杂,这样一个简短的文本无法详细和准确地分析,因此本文只做了简单的描述,并尽一切努力简单清晰地阐明主要内容。如果你想更多地了解HTTPS,你可以阅读文章“即时消息安全( 7 ) :如果你这样理解HTTPS,一篇文章就足够了”。
( This article was published synchronously at: 2027 - 1 - 1.html )
2。相关文章
“即时消息安全文章( 7 ) :如果这样理解HTTPS,一篇文章就足够了。"
“阅读https安全原理、数字证书、单认证、双认证等。"
https时代已经到来。您是否计划更新您的http服务
“苹果即将实施ATS,你的应用程序准备好切换到HTTPS了吗?"
3 .了解HTTPS的性能
HTTP有几个典型的问题,第一个是性能,HTTP是基于TCP的,所以网络层不会说(速度不是HTTP问题)。
更严重的问题是,HTTP头不能被压缩,并且每次都会传送大数据包。此外,HTTP的请求模型是每个连接只能支持一个请求,所以它看起来会很慢。
那么HTTPS能解决这些问题吗
不,事实上HTTPS为HTTP协议增加了另一层,这将会更慢,并且会在将来逐渐解决。同时,HTTPS使用许多加密算法,这些算法的执行也会影响速度。
为什么HTTPS会提高性能?只有当支持HTTPS时,才能部署HTTP / 2,HTTP / 2协议将提高速度,有效减轻客户端和服务器的压力,并使响应更快。关于HTTP / 2的详细文章,您可以看到“从HTTP / 0.9到HTTP / 2 :理解HTTP协议的历史演变和设计思想”和“脑残网络编程导论”( IV ) :服务器推动快速理解HTTP / 2”。只要知道一件事: HTTP / 2能够加速的主要原因是多路复用,并且同一连接可以并行发送和接收多个请求。
4。传统超文本传输协议的安全性
当用户在浏览器中输入网址时,当他们在地址栏中看到一个小锁图标时,他们会感到轻松。他们下意识地认为他们的在线行为是安全的。当然,对于白人小用户来说,这可能不清楚,但将来会逐渐改善。
那么HTTP有什么安全问题呢?让我们看几个例子:
1 )由于互联网传输可能被阻止,如果你的互联网访问被他人控制(没有绝对的安全性),那么你的任何行为和信息攻击者都会知道,例如,我们连接了匿名WiFi,当你访问互联网时,在网站上输入的密码可能已经被泄露;
2 )当我们在最后一个网站上时,我们无缘无故地跳出了一个广告(这个广告不是来自这个网站),因为浏览的页面可能已经被运营商强行修改了(添加了他自己的内容,比如广告)。
HTTP的最大问题是数据没有加密,双方都无法进行身份验证。由于数据没有加密,只要数据包被攻击者劫持,信息就会泄露。
身份验证意味着服务器不知道连接到它的客户端是谁,客户端也不确定他连接到的服务器是他想要连接到的服务器。没有办法确认双方的身份。
有关HTTP的更好文章,请参见:
“网络编程入门懒人( 7 ) :对HTTP协议的深入和简单理解”、“从HTTP / 0.9到HTTP / 2 :阅读HTTP协议的历史演变和设计思想”和“脑残网络编程入门( 3 ) : HTTP协议必须知道一些知识”
5 .HTTPS背后的加密技术
为了解决HTTP的两个核心问题,HTTPS出现了,它包括几个核心部分: TLS协议、OpenSSL和证书。
什么是OpenSSL?它实现了世界上最重要和众多的加密算法。密码学是解决这个问题的最重要的环节。
TLS最重要的是如何处理握手。证书系统也很大,但是它们都基于相同的加密技术。
1 )由于HTTP没有数据加密,我们将在加密下使用对称加密算法。该算法的加密和解密需要使用相同的密钥,通信方需要知道这个密钥(或者一次协商一个)。事实上,这种方法不太可能,因为它涉及关键的保密和分发。一旦攻击者知道了密钥,传输的数据就等于没有加密。
2 )此时,非对称加密算法开始发挥作用。公钥和私钥是分开的。客户端保存公钥,服务器保存私钥(这将不会公开)。此时,这个问题似乎可以完美地解决。
然而,实际上有两个问题,第一是不对称加密算法非常慢,第二是它会遇到中间人攻击。
让我们先谈谈中间人攻击的问题。如果使用非对称加密算法,它获得的公钥可能不是客户端的真实服务器公钥,因为客户端在联机时可能不会仔细区分公钥和公司。如果它错误地获得了攻击者的公钥,攻击者可以在他发送的数据包被劫持后使用他的私钥来解决问题。
3 )如何解决公钥认证问题?出现证书。证书由CA组织认证,客户端完全信任它。它可以证明你得到的公钥是特定组织的,然后可以使用非对称加密算法加密。
证书是如何加密的?事实上,它们也是用非对称加密算法加密的,但是不同的是证书是用私钥加密的,用公钥解密的。
CA将使用自己的私钥加密服务器用户的公钥,而客户端将使用CA的公钥解码服务器的公钥。听起来有点头晕。我会仔细感受的。这个知识可以详细阅读:即时消息安全章节( 7 ) :如果HTTPS是这样理解的,一个就足够了。
4 )上述非对称加密算法加密和解密非常耗时。对于HTTP等大型数据包,速度甚至更慢。此时,可以使用对称加密算法。这个密钥由客户端和服务器协商,并由服务器的公钥加密,因此没有安全问题。
5 )此外,客户将在获得证书后验证证书是否正确。其验证方法是通过哈希摘要算法。CA将在通过哈希算法后加密证书信息,然后使用私钥。客户端将使用CA的公钥解决它,然后计算证书的哈希摘要值。两者之间的协议意味着认证被通过。
6 ) HTTPS解决的第三个问题是完整性问题,即信息是否被篡改(信息可以解密),使用HMAC算法,这类似于哈希方法,但需要传递客户端和服务器之间协商的密钥。
附录:更多安全用品
“即时消息安全章节( 1 ) :正确理解和使用Android加密算法”、“即时消息安全章节( 2 ) :探索组合加密算法在即时消息中的应用”、“即时消息安全章节( 3 ) :解释常见的加解密算法和通信安全”、“即时消息安全章节( 4 ) : Android密钥硬编码风险的示例分析”、“即时消息安全章节( 5 ) :对称加密技术在Android平台上的应用实践”、“即时消息安全章节( 6 ) :不对称加密技术的原理和应用实践”、“传输层安全协议SSL / TLS Java平台实施介绍和演示演示”以及“理论联系实践”
( This article was published synchronously at: 2027 - 1 - 1.html )
领取专属 10元无门槛券
私享最新 技术干货