-
Notifications
You must be signed in to change notification settings - Fork 3.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
第 91 题:介绍下 HTTPS 中间人攻击 #142
Comments
先占个座 |
https协议由 http + ssl 协议构成,具体的链接过程可参考SSL或TLS握手的概述 中间人攻击过程如下:
防范方法:
|
@lvwxx 再来个证书的中间人攻击方式讲解 |
CA得保证不泄漏自己的私钥,否则中间人又可以连CA做的的签名都伪造了 |
charles https 代理 是不是根据这个原理 实现的? |
步骤6至8,攻击者已经将真秘钥保存下来了,所以完全可以把真秘钥发给服务端,没有必要再生成一个假密钥,后续客户端与服务端之间以共享密钥加密方式通信时,攻击者就可以用它保存的真秘钥解密了,不知道这样理解对不对 |
不对,因为服务端解密的东西必须是自己的公钥加密的文件,攻击者只能通过这个服务器的公钥重新生成密文才能被服务端正确解析。如果没有6-8步,那么服务端就无法进行解密。 |
其实我的问题是:在步骤6中,攻击者为什么要再造一个假的hash值给服务端,而不是那个从客户端得来的真hash值,毕竟无论是客户端还是服务端它们都不知道已经泄露了这个密钥,所以后续攻击者完全可以只用这个密钥就可以解密通信中的数据包了 |
如果将客户端的hash值直接返回给服务端,服务端不能解密。因为客户端是用假的公钥加密的,服务器不能用真的私钥解密。所以攻击者一定要用自己的假私钥将客户端的hash值解密得到真秘钥。但攻击者是再伪造一个假秘钥,还是直接用真秘钥,我个人觉得都可以。最后通过真公钥对这个真或者假的秘钥进行加密,发给服务端。这是我的个人理解,不知道对不对。 |
charles 想拦截 https 先要信任他的证书,印象中 charles 确实是用中间人的方式实现的拦截 |
https本就有CA认证过程,这个就是用来防止劫持,退一万步讲,就算你伪造CA成功,你也拿不到我的对称密钥,除非客户端主动泄漏,我实在不理解HTTPS如何能进行中间人攻击。我觉得这个问题应该改成http的中间人攻击? |
from baidu~~ |
1,浏览器�和服务器分别保有运营商的公钥秘钥。 |
你可能弄混了秘钥和hash,攻击者一定是要再造一个假的hash值给服务端的,否则服务端无法解密。至于这个假hash的本体是真秘钥还是假秘钥,这个无所谓的。 |
所以实际上所谓 https 的中间人攻击是客户端主动泄密(信任了中间人的证书)的结果,也就是说只能抓你自己的客户端和服务端之间的包,抓不了别人的客户端和服务端通信的包,因为别人的客户端不会信任你的证书。 |
我也是这么理解的,不知道对不对。所谓的中间人攻击,只不过就是中间人代替了客户端与服务端进行传输,前提是客户端还要信任这个中间人的证书。 |
个人理解中间人攻击利用的是客户端和服务端认证阶段syn等泄露,伪装成客户端和服务端进行身份认证,从而拿到了服务端的公钥。同时为了持续保持劫持客户端的状态,需要将服务端的报文解密之后,混淆自己的类似广告等信息到新报文(如果不返回部分服务端内容的报文很容易被客户端识别出来网站可能是被劫持了),因此需要伪装成服务端生成一个公钥和客户端持续地通信,通过两头骗的方式,将自己的报文神不知鬼不觉地推送到了客户端。(如有理解偏差,劳烦指点,谢谢) |
总结:以charles为例实现中间人攻击过程如下:
|
首先要说明一点,后续数据传输进行对称加密的密钥是算出来的,客户端和服务器端会生成两对值,k1,p1, k2,p2, 他们分别把自己的p给对方,这样客户端基于k1, p2, 服务器端基于k2, p1生成一个相同的密钥来加解密,而这个k是服务器端和客户端自己持有的,不会发送给对方,所以中间人是获取不到的,自然也就无法得到对称加密的密钥,同时,因为中间人没有服务器的私钥,所以握手过程当中,是无法解密客户端的数据的。 个人理解,如有不对,欢迎指正 |
https不存在中间人攻击。除非你自己忽略浏览器的不安全提醒,或者自己http client禁用证书校验。但是这都是使用者的错,和https没有关系。 |
如果中间人也申请一个正常的CA证书和客户端进行通信呢? |
您好,邮件已收到,尽快给您回复。
|
No description provided.
The text was updated successfully, but these errors were encountered: