如果这个问题真的很幼稚,请原谅,但我尽可能多地搜索却无法找到相关答案。
我花了最后三天试图了解 https 的工作原理。这些天之前我所知道的只是对称和非对称密码学是如何工作的。我是时候了解这两者是如何应用在 ssl-https 上并实现所谓的数据加密和服务器身份验证的了。
关于数据加密和防止中间人攻击,一切都很清楚
似乎我并不完全了解服务器身份验证的工作原理,因此我们将非常感谢您的帮助。
到目前为止,我的理解如下:
当客户端通过 https 连接到服务器时,服务器会发送一个由 CA 签名的证书。此服务器证书是一个文本文件,其中包含有关服务器的信息(名称、所有者电子邮件、公钥等)以及数字签名。
此签名是服务器信息内容的散列,由 CA 私钥加密。
客户端通过再次自己生成服务器信息的哈希并使用 CA 的公钥解密签名来检查签名的有效性。如果解密后的签名值与产生的哈希值相同,则签名和证书随后都是有效的。
请注意,公私加密方案具有双重性质。消息可以用公钥加密,用私钥解密。相同的消息可以用私钥加密,也可以用公钥解密。
我们需要记住的是,证书是一个静态且不可更改的文件。对文件的任何更改都将导致签名不匹配。
我现在将描述一种欺骗 https 的方法:
假设有一个 URL = https://wwww.TheBank.com/ebanking(公共 IP = 195.134.0.1)的电子银行网站,我连接到这个 URL,我的浏览器获取服务器证书。(theBank.cer)
同时,我是一家网吧的老板。我的网吧有自己的路由器、DNS 和 DCHP 服务器,我可以控制这些服务器。它也有一个网络服务器。
我将 Web 服务器配置为拥有 ip 195.134.0.1,与银行的相同我创建了一条到路由器的路由,该路由将 195.134.0.1 的连接请求发送到我的 Web 服务器我配置我的 DNS 以将上述银行 URL 指向 195.134.0.1(我的网络服务器)我在我的网络服务器上放置了一个欺诈性银行网站。对于此站点上的任何连接,我指示 Web 服务器将我之前下载的证书发送给客户端。( theBank.cer)
一个用户来到我的咖啡馆,连接到我的网络并尝试连接到这家银行。我的服务器将银行证书发送给他。他的浏览器将确认证书的有效性,因为它确实是有效的,并允许连接到我的假网站,因为它的 URL、IP 和主机名与真实网站相同。
所以我的欺诈成功了。
当然,这个安全漏洞太明显了,不可能是真的。意思是我在这个服务器身份验证过程中没有理解一些东西。有人可以向我解释我在这里缺少什么吗?