TLS Record Protocol在TLS协议中,有四种子协议运行于Record protocol之上
- Handshake protocol
- Alert protocol
- Change cipher spec protocol
- Application data protocol
- 在发送端:将数据(Record)分段,压缩,增加mac(Message Authentication Code)和加密
- 在接收端:将数据(Record)解密,验证MAC,解压并重组
值得一提的是,Record protocol提供了数据完整性和隐私性保证,但Record类型(type)和长度(length)是公开传输的Record Protocol有三个连接状态(Connection State),连接状态定义了压缩,加密和MAC算法 。所有的Record都是被当前状态(Current State)确定的算法处理的 。
TLS Handshake Protocol和Change Ciper Spec Protocol会导致Record Protocol状态切换 。
empty state -------------------> pending state ------------------> current stateHandshake ProtocolChange Cipher Spec
初始当前状态(Current State)没有指定加密,压缩和MAC算法,因而在完成TLS Handshaking Protocols一系列动作之前,客户端和服务端的数据都是明文传输的;当TLS完成握手过程后,客户端和服务端确定了加密,压缩和MAC算法及其参数,数据(Record)会通过指定算法处理 。其中,Record首先被加密,然后添加MAC(message authentication code)以保证数据完整性 。TLS Handshaking ProtocolsHandshakeing protocols包括Alert Protocol,Change Ciper Spec Protocol和Handshake protocol 。本文不会详细介绍Alert Protocol和Change Ciper Spec Protocol 。
使用RSA算法的握手过程是这样的(已在总览中提到)
文章插图
Source: Keyless SSL: The Nitty Gritty Technical Details客户端和服务端在握手hello消息中明文交换了client_random和server_random ,使用RSA公钥加密传输premaster secret ,最后通过算法,客户端和服务端分别计算master secret 。其中,不直接使用premaster secret 的原因是:保证secret的随机性不受任意一方的影响 。
除了使用RSA算法在公共信道交换密钥,还可以通过Diffie–Hellman算法 。Diffie–Hellman算法的原理是这样的
文章插图
By Original schema: A.J. Han Vinck, University of Duisburg-Essen SVG version: Flugaal [Public domain], via Wikimedia Commons使用Diffie–Hellman算法交换premaster secret 的流程
文章插图
Source: Keyless SSL: The Nitty Gritty Technical Details小结TLS Handshaking Protocols协商了TLS Record Protocol使用的算法和所需参数,并验证了服务端身份;TLS Record Protocol在协商后保证应用层数据的完整性和隐私性 。
TLS Handshaking Protocol的核心是在公开信道上传递premaster secret 。
Q&A为什么传输内容不直接使用非对称加密?性能
HTTPS能保证正常连接?no
There are a number of ways in which a man-in-the-middle attacker can attempt to make two entities drop down to the least secure method they support.攻击者甚至可以直接丢弃双方的数据包
服务端如何验证客户端身份?通过Client Certificate
This message conveys the client’s certificate chain to the server; the server will use it when verifying the CertificateVerify message (when the client authentication is based on signing) or calculating the premaster secret (for non-ephemeral Diffie- Hellman). The certificate MUST be appropriate for the negotiated cipher suite’s key exchange algorithm, and any negotiated extensions.Alert protocol有什么作用?【HTTPS工作原理】Closure Alerts:防止Truncation Attack
In a truncation attack, an attacker inserts into a message a TCP code indicating the message has finished, thus preventing the recipient picking up the rest of the message. To prevent this, SSL from version v3 onward has a closing handshake, so the recipient knows the message has not ended until this has been performed.Error Alerts:错误处理
master secret是如何计算的
master_secret = PRF(pre_master_secret, "master secret",ClientHello.random + ServerHello.random)[0..47];
加密,压缩和MAC算法参数是如何计算的Handshaking Protocols使得客户端和服务端交换了三个参数:client_random,server_random 和master_secret,通过以下算法生成算法所需要的参数
推荐阅读
- 普洱生茶制作过程,普洱生茶和普洱熟茶减肥的原理不同
- |想找一份好工作,除了学历外,你知道还有什么是重要的吗?
- 小学语文教师教学工作计划 语文教学工作计划
- 试用期工作总结800字范文 实习期个人工作总结
- Tomcat-远程代码执行漏洞
- 公司生产部年度总结 生产部工作总结
- 小学语文教研组工作总结 小学语文教研总结
- 氢弹和原子弹的区别是什么?
- 窨花茶和熏花茶的区别是什么,花茶的窨制原理和程序
- 详解磁盘阵列RAID原理、种类及性能优缺点