HTTPS实现安全通信的方法就是在原有的HTTP层与TCP之间加入TLS/SSL协议层(收发报文不再使用Socket API,而是调用专门的安全接口)。
“密钥交换算法”(非对称密钥加密算法)进行对称密钥的协商,而TLS四次握手的目的也正在于此。 本文中以RSA非对称加密算法为例,说明TLS四次握手的过程。
TLS四次握手流程图:
RAS四次握手的整体示意图:
客户端发送 消息,跟服务器打招呼,其中主要携带:
2.2.1 Server Hello :
服务器收到客户端的消息后,首先回复 消息,其中主要包括:
本例中,服务器选择的加密套件为:
这是 “TLS安全密码套件”的固定格式:
TLS安全密码套件的基本形式:
(1)“ECDHE” + “RSA” 共同组成了密码套件中的“非对称加密算法”部分:分别用于“密钥交换”和“签名”;
(2)“AES” + “128” + “GCM” 共同组成了密码套件中的“对称加密算法”部分:“AES”指明所采用的对称加密算法的类型;“128”表示AES的密钥长度;“GCM”为“加密分组模式”,可使AES算法用固定长度的密钥加密任意长度的明文,即将密钥转换为密文;
(3)“SHA256” 表示密码套件中的“摘要算法”类型;
(4)“WITH” 关键字用于分割套件中的非对称加密算法部分和对称加密算法部分。
2.2.2 Cerficate :
随后,服务器为了证明身份,会给客户端发送数字证书,即 消息:
一个Certificate证书的结构:
一个CA机构颁发的数字证书大概包含以下几个部分:
(1)服务器的信息:例如证书拥有者(服务器)的域名等信息;
(2)服务器的公钥:CA机构为这个服务器颁发的公钥,也是在后续TLS第三次握手时客户端所使用的公钥;
(3)CA机构的签名:CA机构对证书的签名,即先对证书的明文部分计算哈希值(SHA256)得到摘要后,再用CA机构本身的私钥对摘要进行加密(RSA),得到CA机构的签名。
从wireshark抓包的结果中可以看到,只有证书的签名部分是使用RSA私钥加密的,其他的服务器信息、服务器公钥部分作为证书的正文数据,是明文的。 因为RSA非对称加密的效率太低,所以只对明文的摘要进行加密,这样运算量就小的多,而且得到的数字签名也很小,方便保管和传输。
2.2.3 Server Hello Done :
最后,服务器发送 消息给客户端,这条消息中并没有其他有价值的信息,仅仅是为了通知客户端第二次握手中服务器的所有消息都已发送完毕,
2.3.1 Client Key Exchange :
客户端在收到服务器返回的 和 消息后,会使用操作系统内置的CA机构的公钥对证书进行解密,如果解密成功,得到 数据原文 及 摘要值 H1,然后客户端使用与CA机构相同的摘要算法(散列算法,SHA或MD5)对数据原文进行计算得到 摘要值 H2,比较 H1 与 H2,若完全相同则说明证书合法且未被其他人篡改,从而拿到服务器的RSA公钥。
随后,客户端生成TLS握手过程中的 第三个随机数:,并用服务器的公钥对其加密,通过 消息发给服务器:
2.3.2 Change Cipher Spec :
接着,客户端使用它所拥有的三个随机数 、、 去生成 对称加密的密钥:。客户端通过 消息将 对称密钥发送给服务器,并通知服务器开始使用对称加密的方式进行通信。
在此之前的握手消息都是明文的,但只要出现了 消息,之后的握手消息就都是密文了,wireshark抓到的数据包也会是乱码。
2.3.3 Encrypted Handshake Message :
最后,客户端发送 消息,将之前发送的所有数据做成摘要,使用 对称密钥加密(这条消息已经是对称加密),供服务器验证之前握手过程中的数据是否被其他人篡改。
2.4.1 Change Cipher Spec :
2.4.2 Encrypted Handshake Message :
服务器通过 消息将之前握手过程中的数据生成的摘要 使用对称密钥加密后 发给 客户端,供客户端进行验证。至此TLS四次握手完毕。
总结TLS四次握手的具体消息流程:
第一类:非对称加密算法:
非对称加密算法的作用是在四次握手过程中交换密钥。
第二类:对称加密算法:
对称加密算法的作用是在完成TLS四次握手后,在数据交换过程中对数据进行加密、解密。
AES是比DES更完善的对称加密算法。
第三类:散列算法(哈希算法、摘要算法):
散列算法的作用是对输入的数据生成固定长度的摘要,精简数据量量,且过程不可逆(只能从数据生成摘要,不能从摘要反推出数据)。
SHA是比MD5更完善的散列算法。
到此这篇tcpip工具包(tcp协议工具)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/cjjbc/13145.html