我一直在阅读HTTPS,试图弄清楚它是如何工作的.对我而言似乎没有意义,例如,我正在读这篇文章
https://ssl.trustwave.com/support/support-how-ssl-works.php
请注意它在页面中说明了这一点
步骤4:xyz.com接下来将创建一个唯一的哈希,并使用客户的公钥和xyz.com的私钥对其进行加密,然后将其发送回客户端.
第5步:客户的浏览器将解密哈希.此过程显示xyz.com发送了哈希,只有客户能够读取它.
我不明白的是,黑客不能只是拦截它发送回"客户浏览器"的公钥,并且能够解密客户可以做的任何事情吗?
谢谢你的回复
Jer*_*yal 101
验证网站是否经过身份验证/认证(未经认证的网站可以做恶事).经过身份验证的网站具有从其中一个CA购买的唯一个人证书.
CA是全球值得信赖的公司,如GoDaddy,GeoTrust,VeriSign等,为网站提供数字证书.
密钥只是用于加密/解密数据的长随机数.
公钥是可以与他人共享的密钥.私钥应保密.
假设Jerry生成私钥和公钥.他制作了许多公钥副本并与他人分享.
现在,其他人只能使用公钥加密数据,并且数据只能通过Jerry的私钥解密.
另一种方法是使用公钥仅解密数据和私钥以仅加密数据.
网站所有者首先生成公钥和私钥,保密私钥.他给出了一个签名请求文件(CSR)和他的公钥给CA.
然后,CA根据CSR创建个人证书,包括域名,所有者名称,到期日期,序列号.等等,并且还在证书中添加加密文本(= 数字签名),最后使用服务器的公钥加密整个证书,并将其发送回网站所有者.
然后使用网站所有者的私钥解密该证书,最后,他将其安装在网站上.
注意:加密文本是CA 的数字签名.该文本由CA的私钥加密,并且只能由CA的公钥解密.
安装操作系统或浏览器时,许多可信任的CA(如GeoTrust,VeriSign,GoDaddy等)的根证书随附.这些根证书 包含该 CA提供程序的公钥,该公钥用于帮助解密签名.
1)当您输入URL www.Google.com时,Google的服务器会将其公钥和证书(由GeoTrust签名)提供给浏览器.
2)现在浏览器必须验证证书的真实性,即它实际上是否从GeoTrust签名.当浏览器附带来自所有主要CA的预先安装的公钥列表时,它会选择GeoTrust的公钥并尝试解密由GeoTrust的私钥加密的证书的数字签名.
3)如果它能够解密签名(这意味着它是一个值得信赖的网站),那么它将进入下一步,否则它将停止并在URL之前显示红叉.
1)正如我所提到的,当您输入www.Google.com时,Google会发送其公钥.使用此公钥加密的任何数据只能通过Google的私钥解密,Google不会与任何人共享.
2)验证证书后,浏览器创建一个新密钥,让我们称之为会话密钥,并制作2份副本.这些密钥可以加密以及解密数据.
3)然后浏览器使用Google的公钥加密(会话密钥的一个副本+其他请求数据).然后它将其发送回Google服务器.
4)Google的服务器使用其私钥解密加密数据,并获取会话密钥和其他请求数据.
现在,看,服务器和浏览器都有相同的浏览器会话密钥副本.没有其他人拥有此密钥,因此,只有服务器和浏览器才能加密和解密数据.此密钥现在将用于解密和加密数据.
5)当Google将所请求的HTML文档和其他HTTP数据等数据发送到浏览器时,它首先使用此会话密钥加密数据,浏览器使用会话密钥的另一个副本解密数据.
6)类似地,当浏览器将数据发送到谷歌服务器时,它使用服务器在另一侧解密的会话密钥对其进行加密.
注意:此会话密钥仅用于该会话.如果用户关闭网站并再次打开,则会创建一个新的会话密钥.
Fra*_*ang 26
我不明白的是,黑客不能只是拦截它发送回"客户浏览器"的公钥,并且能够解密客户可以做的任何事情.
首先,要了解HTTP通信通常有两个步骤.
1)生成一个共享的对称密钥,只能在客户端和服务器之间知道,没有人知道它
2)利用这种共享的对称密钥,客户端和服务器能够安全地相互通信,而不必担心被其他人拦截和解密的信息.
所以问题就变成了,客户端和服务器如何生成一个秘密共享密钥而不被其他人知道在这个开放的互联网中?这是非对称算法即将发挥,演示流程如下:
- 客户端从服务器接收公钥.
- 客户端生成一个密钥字符串" DummySharedKey ",稍后将其用作共享密钥,并使用服务器的公钥将其加密为" 7 $&^^%#### LDD !! @ ",Man-in-the-中间可能有公钥并且可能能够拦截加密数据,但数据对他来说是无用的,因为数据只能由服务器的私钥解密.
- 服务器接收加密的密钥字符串" 7 $&^^%#### LDD !! @ ",并使用其私钥将其解密为" DummySharedKey "
上面的密钥交换步骤确保只有客户端和服务器可以知道共享密钥是" DummySharedKey ",没有人知道它.
因此,了解客户有责任生成共享密钥,而不是服务器,这一点至关重要!(我觉得这让你很困惑)
我还建议你看看这个非常好解释HTTP的视频. https://www.youtube.com/watch?v=JCvPnwpWVUQ&list=FLt15cp4Q09BpKVUryBOg2hQ&index=3
Den*_*rdy 21
我不明白的是,黑客不能只是拦截它发送回"客户浏览器"的公钥,并且能够解密客户可以做的任何事情.
公钥/私钥加密基于使用素数的模数算术.
这种非对称加密仅在20世纪70年代中期被发现.它归功于Diffie和Hellman,以及Rivest,Shamir和Adleman.(尽管两人实际上都重新发现了英国秘密机构已经知道的事情.)
关于Diffie-Hellman的维基百科页面有一个通过公共频道进行秘密密钥交换的详细示例.虽然它本身并不描述SSL,但要理解为什么知道公钥不会泄露消息的内容应该很方便.
您可能还会发现这个简单的RSA示例很有趣.
我正在研究相关主题并阅读了几篇博客,例如how-https-works和how-does-https-work-rsa-encryption-explained/。
我根据我的研究总结了一个序列图,希望它可以对来到这个线程的人有所帮助。
有关更多详细信息,您可以查看提到的博客。