带你读《2022技术人的百宝黑皮书》——HTTPS的原理浅析与本地开发实践(1)https://developer.aliyun.com/article/1340630?groupCode=taobaotech
方案四:先在客户端/服务端之间做认证,然后通过非对称加密协商秘钥, 最后用协商的秘钥做后续的数据传输
场景:在传输数据前先通过鉴别通信双方是否真实,而不是假冒的其他用户,在身份验证完毕后,基于某种高安全性的秘钥协商算法,通过非对称加密(秘钥对随机产生)的方式在客户端/服务端之间协商秘钥,双方会基于协商算 法的公开数据得到相同的秘钥,然后开启后续的对称加密通信。
特点:
- 数据传输前先做身份认证,基本可以解决中间人攻击的问题,防止篡改数据;
- 使用高安全性的秘钥加密通信数据,可以有效防止数据被嗅探;
结论
方案四就是HTTPS解决明文传输两大问题的基本思路。其中身份认证涉及数字签名和数字证书概念,而非对称加密 设计非对称加密体系。由于非对称加密的计算性能不及对称加密,所以,在经过几轮握手,协商好秘钥后,将数据传输的加密方式改为对称加密。
总的来说,HTTPS就是通过数字证书 + 非对称秘钥体系 + 对称秘钥体系的组合方案来解决HTTP协议传输明文的两大问题。
HTTPS
HTTPS (Hypertext Transfer Protocol Secure) 是基于 HTTP 的扩展,用于计算机网络的安全通信,已经在互联网得到广泛应用。在 HTTPS 中,原有的 HTTP 协议会得到 TLS (Transport Layer Security - 安全传输层协议) 或其前任 SSL (Secure Sockets Layer - 安全套接层) 的加密。因此 HTTPS 也常指 HTTP over TLS 或 HTTP over SSL。(HTTPS)
理论分析
方案四只对信息传输的场景做了简要分析,其中有数字签名、数字证书、加密体系这些基础概念,为了方便在后续解析TLS/SSL握手过程,这里先对涉及的基础技术概念做简要的汇总介绍。
散列函数 —— 散列算法、哈希函数
定义
散列函数(Hash Function)是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来(散列值)。
特点
- 确定性:如果两个散列值是不相同的(根据同一散列函数),那么这两个散列值的原始输入也是不相同的;
- 不可逆性:故意创建产生给定散列值的消息是不可行的;
- 散列碰撞:散列函数的输入和输出不是唯一对应关系的,如果两个散列值相同,两个输入值很可能是相同的,但也可能不同;
常见的两种散列算法
- MD (Message Digest)摘要算法:MD算法生成的摘要消息都是128位长(32位的十六进制数字)表示,安全性排序:MD2 < MD4 < MD5,但是目前安全性最高的MD5算法存在弱点,可以被破解。
- SHA(Secure Hash Algorithm)安全散列
带你读《2022技术人的百宝黑皮书》——HTTPS的原理浅析与本地开发实践(3)https://developer.aliyun.com/article/1340628?groupCode=taobaotech