HTTPS如何提供安全性?

时间:2010-10-19 12:04:50

标签: https

我想知道如何实现HTTPS。数据是加密的还是路径是加密的(通过哪些数据传递)。如果有人向我提供实施细节,我将感激不尽。

5 个答案:

答案 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)

以两种方式。

  1. 确保您和网站之间传输的所有信息都经过加密。它通过使用RSA(交换“会话密钥”,用于实际加密)的密钥交换过程完成此操作。

  2. 通过(试图)证明您对所访问网站的信任。证书被提供给域,并且想法是在您的机器上您只信任来自各种信誉来源的证书。然后,您(理论上)可以放心,当一个证书弹出“您的银行”时,它实际上是“您的银行”网站,而不是其他网站。在实践中,很少有人关心/注意SSL的这一方面。

  3. 传输层安全性。它不是应用程序级别。您仍需要遵循安全编码实践和各种其他技术,以确保您的网站安全。

答案 2 :(得分:5)

您可以阅读TLSv1 RFC-2246中的所有详细信息。


对于安全性分析,特别是以下部分:

  

F。安全分析

     

TLS协议旨在建立之间的安全连接   客户端和服务器通过不安全的通道进行通信。这个   文件做了几个传统的假设,包括那些   攻击者拥有大量的计算资源而无法获得   来自协议外的来源的秘密信息。攻击者是   假设有能力捕获,修改,删除,重放和   否则篡改通过通信信道发送的消息。   本附录概述了TLS如何设计用于抵御各种变化   攻击。

     

进一步内容剪辑

答案 3 :(得分:3)

我认为这是一个非常简洁的人类可读解释: http://robertheaton.com/2014/03/27/how-does-https-actually-work/

以下是我的总结版本:

概念:

  • 非对称加密算法 - 公钥加密,私有 密钥解密。
  • 对称加密算法 - 公钥 加密和解密。

握手:

  1. Hello - 客户端发送加密算法及其支持的SSL版本。
  2. 证书交换 - 服务器发送证书以标识自己和证书公钥。
  3. 密钥交换 - 客户端使用证书公钥加密新客户端重新生成的公钥(使用步骤1中约定的非对称加密算法)并将其发送到服务器。服务器使用其私钥对其进行解密(使用非对称加密算法)。
  4. 数据交换 - 客户端和服务器现在都知道此公钥。它用于客户端和服务器上的加密和解密的后续请求/响应(对称加密算法)

答案 4 :(得分:0)

服务器和客户端无法控制用于传输数据的路径。使用的路径是网络层(Internet协议 - IP)的问题,而不是传输层安全性(TLS)

数据本身是加密的,并且还有检查服务器的严重性的方法,如Noon Silk所述。

http://en.wikipedia.org/wiki/Transport_Layer_Security