为了抢口罩,我竟然把 https 的原理整明白了
网站在使用HTTPS前,需要向“CA机构”申请颁发一份数字证书,数字证书里有证书持有者、证书持有者的公钥等信息,服务器把证书传输给浏览器,浏览器从证书里取公钥就行了,证书就如身份证一样,可以证明“该公钥对应该网站” 二、那么怎么认证数据的完整性?举个例子 : A 向 B 汇钱 100 万元。如果攻击者从中攻击,篡改这条消息,就可能变成 A 向攻击者汇钱 1000 万元。这里针对汇款消息。如何保证两个问题:消息的 “完整性” 和 “认证” 。 这时候可以用到数字签名技术,相当于现实生活的盖章。数字签名可以识别篡改、伪装、防止抵赖。 非对称密钥是公钥加密,私钥解密。而数字签名是公钥解密,私钥加密。看一个流程 为了防止消息被篡改和被伪造,使用数字签名技术,服务端使用私钥对消息的 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: 导入服务器证书: 点击 ok 后,Wireshark 会对捕获的报文进行解密: 这种方法仅仅对于使用 RSA 的密钥交换有用,在知晓了 RSA 密钥,就可以导入 wireshark 来解密流量。但是目前大多数的 HTTPS 网站都是采用 DH 密钥交换。在此说明一下 RSA 和 DH 的区别。先看这个两个的过程。 ssl_handshake_rsa: Client Hello,包含协议版本、客户端 random、密码套件列表 Server Hello,服务器“hello”消息包含服务器随机、服务器选择的密码套件和服务器的证书 Client Key Exchange Client 验证证书后,客户端创建一个随机的 pre-master secret。并使用公钥加密发送 之后服务器收到加密的 pre-master secret 会使用私钥进行解密。所以,我们知道私钥,就可以导入 wireshark ,解出 pre-master secret 来解密流量。 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。 (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |