HTTPS如何提供安全性?

Jag*_*gan 29 https

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

Ric*_*d H 63

很简单,HTTPS使用安全套接字层来加密在客户端和服务器之间传输的数据.SSL使用RSA算法http://en.wikipedia.org/wiki/RSA,这是一种非对称加密技术.算法如何工作的确切细节是复杂的,但基本上它利用了这样的事实,即将两个大质数相乘很容易,将结果分解回成分素数是非常非常困难的.所有SSL/RSA加密的工作原理如下:

服务器生成两个大的素数,并将它们相乘.这被称为"公钥".该密钥可供任何希望将数据安全地传输到服务器的客户端使用.客户端使用此"公钥"来加密它希望发送的数据.现在因为这是一个非对称算法,公钥不能用于解密传输的数据,只能对其进行加密.为了解密,您需要原始素数,并且只有服务器具有这些("私钥").在接收加密数据时,服务器使用其私钥来解密传输.

如果您浏览网页,浏览器会为服务器提供公钥.服务器使用此密钥加密要发送到浏览器的数据,然后浏览器使用其私钥进行解密.

所以,是通过HTTPS从服务器传输到/所有数据进行加密 - 和加密井.典型的SSL实现使用128或256位数字作为其键.为了打破这一点,你需要一个真正庞大的计算资源量.

据我所知,没有加密的服务器资产的请求-使用的是HttpFox https://addons.mozilla.org/en-US/firefox/addon/6647/或者Wireshark的http://www.wireshark.org/或确认的事情.

  • 你的答案有一些错误.公钥通常为2048位长,并且仅用于交换对称密码的密钥,例如RC4.原因是对于给定的密钥长度,对称密码更安全,并且加密和解密也更快.然后,使用对称密钥对通过链路传递的所有实际数据进行加密. (6认同)
  • 每个数字一个字节没有意义(基数256除外).RSA密钥实际上是单个1024位或2048位二进制数. (3认同)
  • 顺便说一下,SSL 是传输层加密。客户端获得公钥后,通过 TCP 连接传输的所有内容都会被加密。其中包括包含所需服务器资源的 HTTP 请求的第一行。 (2认同)
  • @Bytecode:不 - 因为数据没有使用公钥加密 - 这是用于协商对称密钥,并且因为该协商的一半来自客户端,所以无法使用服务器的公钥进行解密。随后,使用临时对称密钥对数据进行加密,服务器的公共证书没有用处。 (2认同)

Noo*_*ilk 9

有两种方式.

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

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

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


Ant*_*onK 6

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

这是我总结的版本:

概念:

  • 非对称密码算法——公钥加密、私钥解密。
  • 对称密码算法——公钥加密和解密。

握手:

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


Kla*_*sen 5

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


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

F.安全分析

TLS协议旨在通过不安全的通道在客户端和服务器之间建立安全连接.本文档提出了几个传统的假设,包括攻击者拥有大量的计算资源,无法从协议之外的来源获取秘密信息.假设攻击者具有捕获,修改,删除,重放和以其他方式篡改通过通信信道发送的消息的能力.本附录概述了TLS如何设计用于抵御各种攻击.

进一步的内容剪断

  • 数据已加密. (3认同)