https 加密的问题

2020-06-18 17:38:36 +08:00
 ileeoyo

请问个 https 加密的问题。 我抓包发现 https 的包,里面 user-agent 和域名部分是明文的,其他的内容是加密的。 请问一下 https 加密了哪些内容,换句话说,在没有中间人攻击的前提下,可以通过抓包获取 https 中的哪些信息?

4318 次点击
所在节点    程序员
42 条回复
ileeoyo
2020-06-19 09:14:39 +08:00
@monkeyWie 这是用 http 代理抓包的原因吗?我用 wireshark 试试
arloor
2020-06-19 09:23:55 +08:00
你这是在 connect 连代理,练完之后传输的才是被 http over tls 的东西,也就是一串乱码

要理解这个东西,你去搜下 http connect 方法就行。

需要自成体系的学习,咋遇到个问题上 V2EX 呢
qwerthhusn
2020-06-19 09:30:24 +08:00
代理服务器而已,想要理解 TLS 的数据包

去 Wireshark 抓包去看,不要经过代理

https://tls13.ulfheim.net/
https://tls13.ulfheim.net/
这两个网址,作者做的挺有意思,图示全程分析了 tls 握手的每一步中的每一个字节是什么意思
smallpython
2020-06-19 09:34:38 +08:00
问题是个好问题, 楼主你不要在意有些莫名其妙的回答
而且我遇到过抓包工具自动读取系统私钥把包解密出来再呈现在屏幕上, 让当时的我以为加密了也能看见明文.......
sujin190
2020-06-19 09:35:19 +08:00
这不是连接你代理服务器的信息么,不明文你咋代理连接
ileeoyo
2020-06-19 09:38:08 +08:00
@qwerthhusn 感谢感谢,我已经 wireshark 抓包看了
caola
2020-06-19 09:41:53 +08:00
HTTP/3 和 ESNI 已经在路上了,DNSsec/DoT/DoH 也在慢慢得到支持
monkeyWie
2020-06-19 09:44:02 +08:00
@ileeoyo 是的,用 wireshark 就看不到了,但是 tls client hello 里还是会有 SNI 扩展暴露域名,不过现在好像有 ESNI 来做加密了
holyzhou
2020-06-19 09:53:27 +08:00
@qwerthhusn 两个地址重复的 请问另一个地址是什么?
ileeoyo
2020-06-19 10:32:42 +08:00
@smallpython 楼上很多人还是给了很多好的意见,不过确实也有人回复和话题不相关。有时确实在不熟悉的地方有些疑惑,帖子出来以后别人搜索也有个好的借鉴
ileeoyo
2020-06-19 10:34:58 +08:00
@caola doh/dot 目前也还没广泛支持,我也在持续关注,毕竟我目前的网络环境就有 dns 劫持的问题,太难受了
ileeoyo
2020-06-19 10:35:27 +08:00
@qwerthhusn 感谢,我去看看
leafre
2020-06-19 10:37:36 +08:00
@ileeoyo host 确实要暴露,要去 dns 取 ip
ileeoyo
2020-06-19 10:37:50 +08:00
@arloor 只是一时很迷惑不知道从何搜起,比如这里你给了关键词 http connect 去搜索学习就快得多了。也给后来的人一些借鉴吧
ileeoyo
2020-06-19 10:40:05 +08:00
@leafre dns 可以用 doh 解决,只是目前 tls 的握手阶段,sni 会暴露域名
leafre
2020-06-19 10:52:36 +08:00
@ileeoyo ESNI
no1xsyzy
2020-06-19 17:55:01 +08:00
@smallpython #24 不对啊,这应该是不可能的。TLS 是在用户态每个应用独立实现的,握手产生的一次性密钥应该不会出现在系统里(当然,系统可能会自带一些库,但内容是在进程里的)。
而系统内能读到的是公开的证书,包含的公钥也是无法单方面解密的。
你指的可能是自动往系统内插根证书?这是提权操作,即使没有让你亲手操作也是很明确地提示你这一操作破坏了你机器上 HTTPS 的完整性。
smallpython
2020-06-22 09:45:15 +08:00
@no1xsyzy 我理解你只要有私钥就可以解密吧, 一般不是存在系统的某一个文件夹下嘛(具体是哪个我也不知道....)
no1xsyzy
2020-06-22 10:21:28 +08:00
@smallpython #38 因为你说的是私钥,这是非对称加密的术语,所以我认为你是指 TLS 层握手前已经确定的非对称密钥对中的私钥。这个私钥只存在于服务器上,不存在于你本地。对应的公钥则附在证书内分发,一般与域名绑定。也就是说,私钥基本固定到域名,拥有特定私钥即可向任何人伪装这些域名身份。
而且即使拥有私钥也是无法旁观者的,因为非对称加密的效率是比较低的,所以目前来说非对称加密是用来安全地交换一个一次性密钥的。一旦交换完成,这一密钥只存在于每个客户端 /浏览器的用户空间内。所以你必须通过中间人攻击的方法,在两侧使用不同但中间人均知晓的一次性密钥,每次中间人均先解密再加密。
smallpython
2020-06-22 11:30:41 +08:00
@no1xsyzy 服务器发给我的数据包我不是也要用本地的私钥来解密吗?你的意思是这个私钥每次都是重新生成且存在浏览器的内存中的吗?我一直以为是存在某一个文件里, 是固定的, 除非手动删除再重新生成, 不然不会变.....

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

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

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

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

© 2021 V2EX