我想知道如何实现HTTPS。数据是加密的还是路径是加密的(通过哪些数据传递)。如果有人向我提供实施细节,我将感激不尽。
答案 0 :(得分:61)
非常简单,HTTPS使用安全套接字层来加密在客户端和服务器之间传输的数据。 SSL使用RSA算法http://en.wikipedia.org/wiki/RSA,这是一种非对称加密技术。算法如何工作的确切细节是复杂的,但基本上它利用了这样的事实,即将两个大质数相乘很容易,将结果分解回成分素数是非常非常困难的。所有SSL / RSA加密的工作原理如下:
服务器生成两个大的素数,并将它们相乘。这被称为“公钥”。该密钥可供任何希望将数据安全地传输到服务器的客户端使用。客户端使用此“公钥”来加密它希望发送的数据。现在因为这是一个非对称算法,公钥不能用于解密传输的数据,只加密它。为了解密,您需要原始素数,并且只有服务器具有这些(“私钥”)。收到加密数据后,服务器使用其私钥解密传输。
如果您浏览网页,浏览器会向服务器提供公钥。服务器使用此密钥加密要发送到浏览器的数据,然后浏览器使用其私钥进行解密。
所以,通过HTTP传输到服务器/从服务器传输的所有数据都是加密的 - 并且加密良好。典型的SSL实现使用128或256位数字作为其键。要打破这一点,您需要真正庞大的计算资源。
据我所知,对服务器资产的请求未加密 - 请使用httpfox https://addons.mozilla.org/en-US/firefox/addon/6647/或Wireshark http://www.wireshark.org/或其他内容进行确认。
答案 1 :(得分:9)
以两种方式。
确保您和网站之间传输的所有信息都经过加密。它通过使用RSA(交换“会话密钥”,用于实际加密)的密钥交换过程完成此操作。
通过(试图)证明您对所访问网站的信任。证书被提供给域,并且想法是在您的机器上您只信任来自各种信誉来源的证书。然后,您(理论上)可以放心,当一个证书弹出“您的银行”时,它实际上是“您的银行”网站,而不是其他网站。在实践中,很少有人关心/注意SSL的这一方面。
传输层安全性。它不是应用程序级别。您仍需要遵循安全编码实践和各种其他技术,以确保您的网站安全。
答案 2 :(得分:5)
您可以阅读TLSv1 RFC-2246中的所有详细信息。
对于安全性分析,特别是以下部分:
F。安全分析
TLS协议旨在建立之间的安全连接 客户端和服务器通过不安全的通道进行通信。这个 文件做了几个传统的假设,包括那些 攻击者拥有大量的计算资源而无法获得 来自协议外的来源的秘密信息。攻击者是 假设有能力捕获,修改,删除,重放和 否则篡改通过通信信道发送的消息。 本附录概述了TLS如何设计用于抵御各种变化 攻击。
进一步内容剪辑
答案 3 :(得分:3)
我认为这是一个非常简洁的人类可读解释: http://robertheaton.com/2014/03/27/how-does-https-actually-work/
以下是我的总结版本:
概念:
握手:
答案 4 :(得分:0)
服务器和客户端无法控制用于传输数据的路径。使用的路径是网络层(Internet协议 - IP)的问题,而不是传输层安全性(TLS)
数据本身是加密的,并且还有检查服务器的严重性的方法,如Noon Silk所述。