为了抢口罩,我竟然把 https 的原理整明白了
疫情当下,口罩难抢啊,没有口罩的我不能出门。在 52 破解上看到了一个口罩查询余量的软件。 软件类似这样子: 我用这软件蹲点抢来好久,也没抢到。于是我寻思着,能不能把这个软件的口罩消息来源给搞到。由于是一枚菜鸡 web 狗,俺也不会逆向。通过 wireshark 来抓请求看看他到底是咋弄的。 看他软件上的提示,是每隔 5s 就请求一次数据。由于 wireshark 抓包的数据是抓这个网卡的全部流量,分析起来比较多。打开 wireshark,抓了一会包就停了没必要太久。不然会很多其他的流量请求。 可以看到居多数给 27.124.36.8 这个 IP 发包,我日还是 https,这可咋整。没有密钥咋解密呢。嗯,虽然解不开数据包,不知道他以什么样子的参数去发送,但是我们能看到服务器的证书信息。 发现了一个 app.tonystark.io 仅仅是找到了服务器的地址,具体的口罩信息的请求方式,我们还是不知道。 从上面 wireshark 的流量,我们可以知道程序与服务器之间的通信是使用 https 来连接,在解密之前我们先来学一下 https 的原理吧。 一、Https 原理学习 https 与 http 相比,仅仅多了一层的 tls: 1. 为什么要加入这一层tls安全层呢? 是因为最初的 HTTP 存在下面三个问题: 数据在裸奔。数据以明文的方式传播 无法验证通信双方的身份 无法防止数据被篡改 我们先来解决第一个问题,如何给数据加密? 密码学加密方式只有对称密码和非对称密码 对称密码:加密的加密和解密使用同一密钥。 从流程图中得到,这种加密方式在双方通信时候需要预先准备好密钥。但是服务器和浏览器之间传递密钥的过程被人监听,相当于明文传输。倘若预先把密钥保存在本地,到需要建立连接在取出,那么浏览器需要预存好世界上所以的 HTTPS 网站的密钥,显然不现实。 非对称密码:公钥加密,私钥解密 这种加密方式, 也称为非对称密钥加密,使用一对密钥用于加密和解密,分别为公开密钥和私有密钥。公开密钥所有人都可以获得,通信发送方获得接收方的公开密钥之后,就可以使用公开密钥进行加密,接收方收到通信内容后使用私有密钥解密。因为公钥加密,私钥解密,即使传输中的公钥被监听了,也解不开传输的流量。但是仅仅是客户端到服务器这条传输链路保证了传输的安全,那么怎么保证服务端下行到客户端这条链路的安全呢? HTTPS 采用混合的加密机制,使用公开密钥加密用于传输对称密钥,之后使用对称密钥加密进行通信。 首先 Client 发起想要连接 Server,则会发送 ClientHello,这个 Hello 信息标识就是 Client 最高支持的 TLS 版本,支持的密码套件,Session 信息以及压缩算法。 而 Server 收到 Client 的请求后,会发送与协商确定 Client 的密码套件,同时会发送 Server Certificate 证书信息和服务器公钥。 Client 收到 ServerHello 后,会验证 Server 的证书信息是否合法,如果合法,则产生随机码(这一步又涉及到TLS的密钥计算,太过复杂了,大家有兴趣可以自己去查阅),作为对称密钥加密密钥,对随机码使用接收到的服务器公钥进行加密。 大概的流程图就是这样子,不同的 TLS 版本流程很不一样。 (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |