1
bearice 2014-10-31 18:11:27 +08:00
不能
|
2
virusdefender 2014-10-31 18:18:51 +08:00
能吧 在本地导入证书 参考http://wangsheng14591.blog.163.com/blog/static/3277971020130465730354/
|
3
spance 2014-10-31 18:18:58 +08:00 1
看到的是经过加密的数据,里面基本都是不可见字符,无法知道里面的通信内容。
但ip头和tcp头还是可见的,知道你发往那个ip的那个port |
4
lshero 2014-10-31 18:19:18 +08:00
客户端如果安装了并且信任了私有CA办法的证书还是有可能的
除非你改成双向的SSL连接 |
7
tabris17 2014-10-31 18:29:42 +08:00
本地能。
中间人如果能搞到合法证书也能 |
9
abelyao OP @virusdefender @tabris17 @lshero
几位都提到了中间人导入证书的事,这样听起来好像有证书是蛮简单的,但我还是不太明白是不是真的这么简单,我举个例子: 运行在 SAE 上面的微信公众帐号服务端,传输的时候都带有 AppSecret 之类的参数,而且是明文的(之前的情况,现在已经升级了),那是不是意味着 SAE 的机房网管作为中间人,完全是可以看到这些敏感资料的? |
10
wanwangkangluo1 2014-10-31 18:53:50 +08:00
http://www.fenesky.com/blog/2014/07/19/how-https-works.html
你无法获取client端产生的PreMaster Secret是无法解密的。 |
11
spance 2014-10-31 18:54:19 +08:00 1
@abelyao
抓包在链路上任何一个中间节点都可以,但是他们无法知道传输内容。 不管有谁的证书,都不能知道,证书只是不对称加密中的公钥,没有私钥是无法解迷的。 况且这个过程是这样的,ssl握手过程就是用非对称加密方法传输了对称加密的算法和密钥,之后的通信都是用对称加密的密钥来加密,这个密钥只有握手的双发知道,中间人不知道这个密钥,自然无法解迷你的通信内容。 |
12
tabris17 2014-10-31 18:56:25 +08:00
@abelyao 证书必须是合法的机构签发,必须在浏览器的受信任的机构列表里,除非是该机构不靠谱,比如CNNIC,或者机构的证书密钥泄漏造成伪造证书(以前有家被黑客入侵的根证书服务商密钥泄漏,后来这家公司就倒闭了),否则使用自己签发的证书客户端浏览器会有安全提示的
|
13
wanwangkangluo1 2014-10-31 18:58:30 +08:00
双向验证是验证client端合法性的,不要把这玩意扯进来了。
|
14
RIcter 2014-10-31 18:59:30 +08:00 via Android
能,而且在geekpwn上還有在https下劫持網銀的show。
|
15
jeansfish 2014-10-31 19:34:11 +08:00
自己做中间人就看到了,就看自己是不是信任的,比如fiddler2
|
16
abelyao OP 还是觉得好乱…
@wanwangkangluo1 @spance @tabris17 几位朋友的说法是只有握手双方可以解密,其他人抓到包也看不到数据, 而 @RIcter @jeansfish 几位朋友的说法则是可以… 是不是我理解有误?这是两种不同的答案… 还是说,看中间人的技术水平? |
17
wangkangluo1 2014-10-31 21:29:53 +08:00
@abelyao 反正我搞了2个礼拜,TLSv1.2一点办法都没有。这样吧,我提供服务器和生成证书,谁会的,教教我,愿支付¥200作为酬劳。
|
18
spance 2014-10-31 21:33:06 +08:00
|
19
adow 2014-10-31 21:35:53 +08:00
其实可以把,证书就好比是密码,你在本地比如fliddler2上面添加那个证书就知道了你的密码,所以你机器上完全可以抓包。ssl 只是保证在传输的过程中被截获的内容是无法解密的吧,你亲手送人家一个密码当然就可以了。
|
20
wanwangkangluo1 2014-10-31 21:37:10 +08:00
@spance 说的比较在理。
|
21
adow 2014-10-31 21:40:12 +08:00
传输的过程中指的是比如在你的路由器上拦截的时候,他的内容是无法得到明文的,当然如果他在别的地方使用你的证书的话应该也可以。
我对这个不是很清楚,所以只能打这样的比方。 在我之前一个帖子讨论 http 接口盗用的问题的时候(http://v2ex.com/t/90016#reply55),开始我们也认为用上ssl 别人就没法抓取内容了,其实他完全是可以的,他正常访问获得合法的证书后就可以很轻松的用fliddler 抓包获得明文。 |
22
mornlight 2014-10-31 21:45:13 +08:00
只要你的私钥没有泄露,客户端那边没有信任奇奇怪怪的证书,按规矩来,就应该认为在中间环节上是不可解密的。
客户端有问题的话,根本不是你该管的事。他要是信任了一个自签名的证书,你一点办法都没有。 |
23
Quaintjade 2014-10-31 21:47:16 +08:00 via Android
@abelyao
理论上(体系、协议、算法的设计上)中间人无法解密,但由于实现时(软件作者写软件时)有意无意的疏漏,或使用者的错误,使得中间人攻击成为可能 比如设计上如果目标网站和证书对不上(或者证书不受信任),应该拒绝访问,或至少醒目提示,但很多软件会绕过这环节。 比如设计上只有经过安全审计的机构才能获得CA资格,但许多软件会把自己的证书加到根证书列表里。 比如设计上你从头到尾都应该用https通讯,实际上大多数人都是访问http,由浏览器去跳转到https。 还有演示可以长期留存的cookies,等你下次访问目标网站时触发,插入代码。 |
24
adow 2014-10-31 21:47:45 +08:00
@mornlight 没错,ssl 就是保证,如果你妥善保管你的证书(私钥,就好比密码),那我们就是安全的,你私钥给人用了,那他就知道了。而所谓的抓包,他完全可以在获取到私钥的情况下来抓包,这时他就能知道内容了。
|
25
abelyao OP |
26
jeansfish 2014-10-31 23:35:06 +08:00
仔细看了下问题,其实理解了RSA加密就简单了。服务器知道私钥,暴露公钥,这样客户端获取私钥加密的内容,用公钥解密,客户端就信任这个内容是服务器送来的。客户端用公钥加密Post的内容,只有服务器有私钥才能解密。
@spance 说的对。fiddler就是把这个过程变成了两步。 |
27
julyclyde 2014-11-02 17:38:49 +08:00
抓包是在网卡层面的,当然能抓
你如果问能不能解密,那我告诉你,有私钥才能解,否则仅剩下理论上的可能性了 |