【问题标题】:HTTPS authentication and session hijackHTTPS 身份验证和会话劫持
【发布时间】:2015-08-13 14:56:03
【问题描述】:

例如,当我第一次在浏览器中键入一个 URL 时,www.google.com。 我确信发送了包含 URL 的内容。然后返回的 HTML 页面显示在屏幕上。

我的浏览器如何确保响应我请求的服务器是真正的 Google 的服务器而不是其他人的服务器(中间人)?

我可以看到还建立了 HTTPS 连接。我相信这与上面的问题有关。

谁能用我的www.google.com 例子详细回答这个问题?

我知道什么是公钥和私钥。我知道公钥可用于加密消息,然后其私钥用于解密。私钥可以用来做数字签名,公钥可以用来验证这个签名。 但我不知道它们是如何应用于www.google.com 案例的。

至于使用公钥来验证签名,我们是怎么做的呢?我们用公钥解密消息,看看能不能得到之前定义的东西?

已编辑

  1. 一旦浏览器知道发回页面的是真正的google服务器,浏览器如何确保页面内容本身不被别人修改?发回的第一页是否已经加密?
  2. 以下请求和响应是否使用对称加密?
  3. URL 本身是否加密?

【问题讨论】:

  • 这可能不是一个适合堆栈溢出的问题。查看security.stackexchange.com/questions/20803/…
  • 我投票结束这个问题,因为这与编程或软件开发没有直接关系。 Information Security 更适合这类问题,但 How does SSL/TLS work? 已经回答了。
  • @Artjom B. 我很抱歉问了一个可能应该在其他地方问的问题。但是如果你投票结束这个问题,我将失去下面对我非常有用的所有答案!

标签: security encryption https


【解决方案1】:

https 使用签名证书来确保响应服务器的身份。

请求将发送到您的名称解析声明该名称解析到的 IP 地址。这并不可靠,因为您自己可以轻松更改该分辨率。

但是,来自服务器的响应包含已为主机名颁发的证书(此处为 www.google.com)。这还不能提供您正在寻找的安全性,但它让我们更接近。

要验证证书是否真实,您的本地浏览器会尝试验证证书(其内容)。这是通过使用“证书链”来完成的。一个证书可以用另一个证书签名。如果您信任该其他证书,那么您也可以信任那些已与您信任的证书签署的证书。这样就创建了一个链,可以达到所谓的“根证书”。这些证书是本地安装在您的系统中的,对您的浏览器来说是已知的和可用的,因此它们不能被攻击者欺骗。


与往常一样,现实有点复杂,但以上内容应该让您了解事物的运作方式。

注意:您也可以自己创建证书,甚至可以自己签名。例如,如果您只是想与自己的 https 服务器建立加密连接,这实际上很有帮助。但是这样的自签名证书并没有证明服务器的身份。这只能通过使用已按上述方式签名的证书来完成。

【讨论】:

    【解决方案2】:

    一旦浏览器知道它是一个真正的谷歌服务器发回 页面,浏览器如何确保页面内容本身是 没有被别人修改过?

    浏览器验证在 SSL 握手中发回的证书是否由浏览器信任的证书颁发机构 (CA) 签名,并检查某些字段是否设置为正确的值(例如,主题或备用名称设置为显示的域名和有效的开始日期和截止日期都是最新的)。

    如果使用中间证书,则链中可能有多个证书,这很可能。只要链中倒数第二个证书由受信任的根签名,那么一切都很好。

    发回的第一页是否已经加密?

    是的,一旦进行 SSL 握手,所有内容都会被加密。这包括从浏览器发送的初始请求中的任何数据(例如 cookie 或查询字符串)。

    以下请求和响应是否使用对称加密?

    是的,尽管密钥是客户端和服务器生成的随机数的函数,以及从客户端发送到服务器的“预主密钥”,该密钥由证书公钥加密(或由一次性生成的密钥加密) Diffie-Hellman 的例子)。

    URL 本身是否加密?

    域名以明文形式发送给服务器名称指示扩展,而且连接中的窃听者也可以知道 DNS 查找和目标 IP。

    URL 路径和查询字符串是加密的。

    【讨论】:

      【解决方案3】:

      他们使用证书来验证身份和签名。 当服务器响应您时,其中包含为该特定主机颁发的证书。在您的示例中,这将是 www.google.com 这提供了某种信任,因为根证书包含在您的浏览器安装中。 说到根证书,您开始构建信任链,一个证书由另一个证书签名,直到它到达该信任树的根。它们安装在您的浏览器本地,因此很难被攻击者欺骗。

      猜你喜欢
      • 1970-01-01
      • 2014-06-12
      • 2010-09-13
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      • 2016-10-16
      • 2017-10-05
      • 2013-04-03
      相关资源
      最近更新 更多