加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_阳江站长网 (https://www.0662zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 酷站推荐 > 酷站 > 正文

为了抢口罩,我竟然把 https 的原理整明白了

发布时间:2020-03-11 16:51:31 所属栏目:酷站 来源:站长网
导读:疫情当下,口罩难抢啊,没有口罩的我不能出门。在 52 破解上看到了一个口罩查询余量的软件。 软件类似这样子: 我用这软件蹲点抢来好久,也没抢到。于是我寻思着,能不能把这个软件的口罩消息来源给搞到。由于是一枚菜鸡 web 狗,俺也不会逆向。通过 wires

网站在使用HTTPS前,需要向“CA机构”申请颁发一份数字证书,数字证书里有证书持有者、证书持有者的公钥等信息,服务器把证书传输给浏览器,浏览器从证书里取公钥就行了,证书就如身份证一样,可以证明“该公钥对应该网站”

二、那么怎么认证数据的完整性?举个例子 :

A 向 B 汇钱 100 万元。如果攻击者从中攻击,篡改这条消息,就可能变成 A 向攻击者汇钱 1000 万元。这里针对汇款消息。如何保证两个问题:消息的 “完整性” 和 “认证” 。

这时候可以用到数字签名技术,相当于现实生活的盖章。数字签名可以识别篡改、伪装、防止抵赖。

非对称密钥是公钥加密,私钥解密。而数字签名是公钥解密,私钥加密。看一个流程

https

为了防止消息被篡改和被伪造,使用数字签名技术,服务端使用私钥对消息的 hash 进行加密,再把 hash 和签名发送给客户端,随后客户端利用公钥进行解密,比对传输的 hash 是否一致。如果一致就证明消息未被篡改和伪造。

我们都知道,指纹是一个人独一无二的东西,能通过它找他对应的唯一一个人。而消息的指纹就是密码学中的单向散列函数 (Hash)。每一个消息都有其对应的 Hash,如果消息发生了变换,其 hash 也会随之变换。

消息的完整性,就叫消息的一致性,这个可以用消息指纹来判断,通过对比单向散列函数的 hash 值来判断这条消息的完整性,有没有被篡改。

消息的认证,指的是,消息是否来自正确的发送者。如果确认汇款请求确实来自 A,就相当于对消息进行了认证,代表消息没有被伪装。

好了 Https 大概完成了 Http 不曾完成的三个使命。想必看完你也大概了解了 Https 是怎么实现它所说的安全的。

三、怎么才能够对流量进行解密?

网上搜索大多都是两种解法,一种是导入 RSA 私钥进入 wireshark。第二种是配置 SSLKEYLOGFILE。

第一种:导入 RSA 私钥进入 wireshark

实现过程:

1. 拿到百度的服务器证书

使用 fiddler 的中间人代理技术拿到含有私钥的服务器证书。

打开 fiddler 并启用 https 代理服务

用配置了 fiddler 代理的浏览器访问百度

运行 “certmgr.msc”打开证书管理器

从 Personal/Certificates 目录下找到 *.baidu.com 的证书,右键所有任务-导出

2、取出证书中的私钥

使用 openssl 取出私钥。

1) 将 pfx 证书转为 pem 证书

命令行:

openssl pkcs12 -in <pfx证书路径> -nodes -out <输出的pem证书路径(.pem)> 

2) 从 pem 证书中取出私钥

命令行:

openssl rsa -in <pem证书路径> -out <输出的私钥文件路径(.key)> 

3) 点击编辑——>首选项——>协议——>SSL(有的版本只有 TLS),导入 RSA key:

https

导入服务器证书:

https

点击 ok 后,Wireshark 会对捕获的报文进行解密:

这种方法仅仅对于使用 RSA 的密钥交换有用,在知晓了 RSA 密钥,就可以导入 wireshark 来解密流量。但是目前大多数的 HTTPS 网站都是采用 DH 密钥交换。在此说明一下 RSA 和 DH 的区别。先看这个两个的过程。

https

ssl_handshake_rsa:

Client Hello,包含协议版本、客户端 random、密码套件列表

Server Hello,服务器“hello”消息包含服务器随机、服务器选择的密码套件和服务器的证书

Client Key Exchange Client 验证证书后,客户端创建一个随机的 pre-master secret。并使用公钥加密发送 之后服务器收到加密的 pre-master secret 会使用私钥进行解密。所以,我们知道私钥,就可以导入 wireshark ,解出 pre-master secret 来解密流量。

为了抢口罩,我竟然把 https 的原理整明白了

ssl_handshake_diffie_hellman:

Client Hello,包含协议版本、客户端 random、密码套件列表

Server Hello,服务器“hello”消息包含服务器随机、服务器选择的密码套件和服务器的证书

Server Key Exchange 紧跟着 Server Hello,为了启动 DH 交换,服务器会发送 Diffie-Hellman 参数和签名

Client Key Exchange 客户端会验证服务器的证书。然后会向服务器发送 DH 参数。

注:整个过程不存在密钥的交换,客户端服务端可以通过 DH 参数来计算 pre-master secret。

(编辑:应用网_阳江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读