写点什么

长安链 tls 基础研究

作者:
  • 2022 年 7 月 16 日
  • 本文字数:761 字

    阅读完需:约 2 分钟

本文已参与「开源摘星计划」,欢迎正在阅读的你加入。活动链接:https://github.com/weopenprojects/WeOpen-Star


TLS 同时使用了对称算法和非对称算法。

TLS 的整个过程大致可以分为两个主要阶段:

握手阶段,完成验证,协商出密码套件,进而生成对称密钥,用于后续的加密通信。

加密通信阶段,数据由对称加密算法来加解密。


TLS 的握手阶段需要在下面四个环节里实现不同类型的安全性,它们可以说是 TLS 的“四大护法”。


密钥交换算法:保证对称密钥的交换是安全的,典型算法包括 DHE、ECDHE。


身份验证和签名算法:确认服务端的身份,其实就是对证书的验证,非对称算法就用在这里。典型算法包括 RSA、ECDSA。补充:如果是双向验证(mTLS),服务端会验证客户端的证书。


对称加密算法:对应用层数据进行加密,典型算法包括 AES、DES。


消息完整性校验算法:确保消息不被篡改,典型算法包括 SHA1、SHA256。


每一个类型都有很多不同的具体算法实现,它们的组合,就是密码套件 Cipher Suite。

先看一个典型的密码套件:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA(0xc013)


TLS 不用多说,代表了 TLS 协议。

ECDHE 是密钥交换算法,双方通过它就不用直接传输对称密钥,而只需通过交换双方生成的随机数等信息,就可以各自计算出对称密钥。

RSA 是身份验证和签名算法,主要是客户端来验证服务端证书的有效性,确保服务端是本尊,非假冒。AES128_CBC 是对称加密算法,应用层的数据就是用这个算法来加解密的。这里的 CBC 属于块式加密模式,另外一类模式是流式加密。

SHA 就是最后的完整性校验算法(哈希算法)了,它用来保证密文不被篡改。

0xc013 呢,是这个密码套件的编号,每种密码套件都有独立的编号


对长安链 java 客户端抓报,看看客户端支持的套件

看看服务端支持的套件


有共同的套件,两个可以匹配


TLS_AES_128_GCM_SHA256 (0x1301)


发现一个问题,明天继续研究

用户头像

关注

还未添加个人签名 2018.05.04 加入

还未添加个人简介

评论

发布
暂无评论
长安链tls基础研究_长安链_李_InfoQ写作社区