https 能防范这种情况么?

2020-05-26 17:43:12 +08:00
 Newyorkcity
小白第一次访问网站 60321 并输入账号密码登录,网站 60321 规范使用 HTTPS,小白这边使用 Chrome 等主流浏览器规范发起 HTTPS 。

但好巧不巧小白和网站 60321 之间所有的数据( TCP 包)都经过黑客张三的主机并被张三捕获。假设黑客张三有足够的计算机网络知识,但他一开始并不知道网站 60321 的私钥公钥,那么张三能不能得到小白的账号和密码?

如果能防范,为什么?小白和网站 60321 第一次通信,它们协商加密方式的数据也一样被张三捕获了。那小白那边怎么加密数据,张三能知道,之后小白加密好的数据再发过来又被张三捕获,那张三知道怎么加密却解密不了?那张三解密不了,网站 60321 的服务器却能解密?这怎么做到的啊?

如果不能防范,那 HTTPS 所防范的危险场景是?

谢谢!
3204 次点击
所在节点    问与答
38 条回复
woodensail
2020-05-26 19:39:05 +08:00
我看了开头还以为楼主想说 HSTS 的事儿,结果楼主竟然试图破解 rsa……
uTOmOuk3L6sb4MSI
2020-05-26 19:39:58 +08:00
@Newyorkcity #18
小白路过,路由器只负责转发,又不劫持,劫持还得证书不是?

得先装伪装证书劫持成功才能解密吧。装的伪装证书校验不通过也抓不了包吧?
rrfeng
2020-05-26 19:42:08 +08:00
看了 append 以为大家都在喷…然后发现并不是,实际上 90% 人都说错了。

这部分不涉及证书,非对称加密 RSA 等等,更贴切的的是密钥交换算法例如 DH,还有完美前向加密 PFS 。
rrfeng
2020-05-26 19:44:32 +08:00
另外还有一点很重要,张三对数据流是只读的,还是可以篡改。

如果只读,上面的回答(除了我)全是错的。
如果可篡改,那么可以伪装成 server,才需要涉及到 CA 相关知识。

HTTPS 有两个作用:身份验证,传输加密。要分开看哦
uTOmOuk3L6sb4MSI
2020-05-26 19:48:02 +08:00
举个例子:

代理软件也有抓包功能,平时不开启抓包,apple.com 能正常访问,Apple Store 也能正常联网;但如果开启了抓包功能,并加入了 apple.com 以及 apple 多级域名,apple.com 访问不了,Apple Store 也无法联网。

代理软件应该是网关吧?
我想这可以说明,单纯的转发没啥问题,一但劫持,就无法联网,所以路由器不是个问题。
djs
2020-05-26 19:55:41 +08:00
只要信任了他的假证书,我觉得是可以的
grimpil
2020-05-26 20:34:52 +08:00
12306 是被敏感词了还是有啥梗,为啥要倒过来说
Newyorkcity
2020-05-26 21:08:49 +08:00
@grimpil 额,就是尽量脱离具体场景,避免回答一些 12306 才有的特性。
ljpCN
2020-05-26 21:59:42 +08:00
比如你用 charles 或者 fiddler 代理 https 请求,你想要解密报文内容的话,计算机需要信任证书。至于你说中间节点可以读取,它能读取的是加密后的内容而已。
CEBBCAT
2020-05-26 22:04:01 +08:00
这不算嘲讽或秀优越,这种蠢问题没人直接骂你算是不错的了。

只要顺着 HTTPS 搜索一下,很快就有帖子教给你机密性、完整性、真实性,教给你为什么沃通不被采信。你就是自以为想得很多,其实闭门造车。
liuminghao233
2020-05-26 22:18:08 +08:00
有点奇怪
你看完 https 的百度百科不就知道有 rsa 了嘛
你百度搜索 https 第一个就是 https 的百度百科嘛
你百度都没有用过吗?(
???
wshcdr
2020-05-26 22:32:09 +08:00
HTTP 主要防范 中间人攻击, 且能保证服务器的真实性
otakustay
2020-05-26 23:03:17 +08:00
这里的关键点是:

1. 如果张三不劫持 HTTPS 的握手,那么他理论上无法算出 60321 网站的私钥,所以他无法解密小白的请求并得到里面的内容
2. 如果帮三试图劫持 HTTPS 的握手(包括劫持 DNS 的手段),那么他理论上无法造出一个符合 60321 这个域名的合法证书来,过不了浏览器的证书信任

所以理论上是安全的,只要小白看到证书不受信任的提示别傻子一样强行继续访问。张三知道怎么加密(算法公开),只是他拿不出这个加密用的私钥,签不出这个证书,浏览器会直接不信任而中止发送请求
otakustay
2020-05-26 23:05:02 +08:00
在 HTTPS 的场景下,要攻击小白最好的办法就是骗小白装一个浏览器插件或者送他一个干掉了证书信任校验的套壳浏览器,反正都小白了,有挺大概率是能骗的
shadeofgod
2020-05-27 00:00:27 +08:00
正好前几天复习了下基础概念总结了下

https://zoubingwu.com/2020-05-20/cryptography/
misaka19000
2020-05-27 00:03:12 +08:00
V 站现在这么友善啊,楼主这种伸手党大家也回答的的这么有耐心
ZRS
2020-05-27 00:07:14 +08:00
不能,当然如果你的计算能力足够指的是接近无穷的话,可以。不过不存在现实意义
systemcall
2020-05-27 01:53:53 +08:00
在现有的算力下不能,现在的加密足够应对产品生命周期内在已知科技树下发展出来的技术了
不过如果 SHA256 之类的可以破解了的话,确实是什么都可以做到的
如果有办法让对方信任自己的证书的话是可以的,已信任的证书颁发机构颁发的证书会被浏览器信任
在现有科技树下的话,假设是正常的较新的浏览器,可以路由层面拦截 https 跳转,不过现在的浏览器会有警告。或者用自己的证书来中间人攻击,不过如果那个证书对方没有信任的话是不行的,信任过的话确实是可以发起中间人攻击,发生过这种事。更简单的方法是骗用户装个自己的套壳浏览器,或者是想办法让用户装了的软件里面的套壳浏览器帮忙完成这些事。如果是普遍可以提权的 Windows,让一些程序帮忙在内核态做些微小的工作都没有什么问题,比如某杀软的驱动就经常被拿来用
利用证书来加密在现在是十分常见的事,利用已经信任的证书来作恶也的确是发生过

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/675701

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX