Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 什么使SSL安全?_Security_Ssl_Https - Fatal编程技术网

Security 什么使SSL安全?

Security 什么使SSL安全?,security,ssl,https,Security,Ssl,Https,我在互联网上读了一些关于SSL如何工作的网站,但我不明白它到底是如何使事情变得安全的。可能是因为我不完全理解它是如何工作的 让我从SSL的核心思想开始。它用于加密HTTP连接,但对于客户端和服务器与加密数据通信来说,肯定需要共享加密密钥。如果有人正在窃听你的连接,难道他们不能够在解密数据的同时获取此密钥并继续监听吗?我可以想象,如果我们谈论的是长期连接,这种技术会起作用,但HTTP请求通常在半秒钟内完成 让我们假设这已经得到了妥善处理。SSL的另一个用途是验证服务器是否与它所说的完全相同。如何防

我在互联网上读了一些关于SSL如何工作的网站,但我不明白它到底是如何使事情变得安全的。可能是因为我不完全理解它是如何工作的

让我从SSL的核心思想开始。它用于加密HTTP连接,但对于客户端和服务器与加密数据通信来说,肯定需要共享加密密钥。如果有人正在窃听你的连接,难道他们不能够在解密数据的同时获取此密钥并继续监听吗?我可以想象,如果我们谈论的是长期连接,这种技术会起作用,但HTTP请求通常在半秒钟内完成

让我们假设这已经得到了妥善处理。SSL的另一个用途是验证服务器是否与它所说的完全相同。如何防止恶意服务器伪造由根证书提供程序签名的证书?在我读过的所有描述中,浏览器实际上都联系了其中一个权威机构来验证证书。假设根证书颁发机构使用私钥对证书进行加密,浏览器如何在不知道解密密钥的情况下验证此证书中的数据?或者解密密钥与加密密钥不同

我可以想象,解决这些问题的一个办法是,证书和密钥只发送一次,并与域和IP地址一起存储在浏览器中


感谢您提前解释。

要加密连接,您必须同意某些共享机密。这可以通过以下方式完成。为了防止中间人发生攻击,所以你也需要一个证书机制。 对于加密或签名(证书),可以使用异步密钥。这意味着您有两个不同的密钥(公钥和私钥)要加密/解密。通常你用公钥加密你的数据,有人可以用他的私钥解密。签名是使用您的私钥完成的,其他人可以使用公钥进行检查


因此,伪造证书并不容易,因为您没有根证书提供程序提供的私钥。

首先,介绍一些关于公钥加密的基本概念:

  • 这依赖于一对钥匙。一个是公钥(可以分发);另一个是私钥,用于保持私密性
  • 您可以使用公钥加密数据,而私钥可以对其进行解密/解密
  • 您可以使用私钥对数据进行签名,并且可以使用公钥验证此签名
为了确保与正确的实体通信,需要将标识绑定到密钥对。这就是证书的用武之地。公钥证书是一种已签名的文档,包含主体的身份(名称)和主体的公钥。 例如,
www.google.com
的证书包含其公钥和名称
www.google.com
。它已使用证书颁发机构(在本例中为Thawte)的私钥进行签名。在X.509术语(HTTPS使用的证书的通用标准)中,CA是证书的颁发者,它将其名称与主体名称、主体公钥(和其他属性)一起放入证书中。发行人的目的是验证他们为谁颁发证书的身份

您不一定看到浏览器从CAs获取信息的原因是,许多商业(或政府)CA证书与您的浏览器或操作系统捆绑在一起。你默认信任他们。这可以被视为“信仰的飞跃”,但任何信任机制都需要这种起点

您可能想了解更多有关的信息,但简而言之:

  • 客户端通过查看服务器的证书来获取服务器的公钥
  • 客户端使用此公钥加密一个秘密并将其发送到服务器。这方面的细节取决于密码套件(可以基于),但其结果应该是共享加密密钥列表(使用对称加密,而不是公钥加密)
  • 这些共享密钥仅为客户端和服务器所知,用于加密/解密
要使SSL/TLS安全,您至少需要3点:

  • 合适的密码套件,以及成功的握手
  • 验证客户端是否信任服务器证书(通常,通过中的已知CA)
  • 验证证书是否属于客户端要联系的服务器()

(SSL/TLS(尤其是HTTPS)的绝大多数用法都是这样,但也可以使用X.509证书以外的其他机制来使用TLS,例如OpenPGP证书或Kerberos密码套件。据我所知,这不太常见。)

在使用协议时,例如,通信双方各自生成一个随机数,以某种方式对其进行变换,然后将变换后的版本发送给另一方。该转换使得将第一个数字与第二个数字的转换版本组合将产生与将第二个数字与第一个数字的转换版本组合相同的结果。然而,一个只有经过转换的数字的对手将无法找到其中一个数字的未转换版本,也无法计算如果一个数字的(不可用)未转换版本与另一个数字的(可用)转换版本相结合,结果会是什么

Diffie-Hellman密钥交换本身足以抵御所有形式的被动攻击或历史攻击(这意味着,如果攻击者在通信发生之前没有采取措施拦截通信,则除非通过执行某些计算,而这些计算与当今技术类似,无法以任何远程可行的方式进行计算,否则以后就无法破坏通信。)