| 关键词: protocol 证书 算法 加密 客户端 TLS 公钥 Record secret 协议 |
理解HTTP协议,对称和非对称加密,想要了解HTTPS协议的工作原理 读完本文,你能明白
简介HTTPS,也称作HTTP over TLS。TLS的前身是SSL,TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。本文着重描述TLS协议的1.2版本 下图描述了在TCP/IP协议栈中TLS(各子协议)和HTTP的关系
其中Handshake protocol,Change Ciper Spec protocol和Alert protocol组成了SSL Handshaking Protocols。 HTTPS和HTTP协议相比提供了
其中,数据完整性和隐私性由TLS Record Protocol保证,身份认证由TLS Handshaking Protocols实现。 总览使用RSA算法的SSL握手过程是这样的
证书(Digital certificate)那么什么是证书呢?
证书中包含什么信息
为什么服务端要发送证书给客户端 互联网有太多的服务需要使用证书来验证身份,以至于客户端(操作系统或浏览器等)无法内置所有证书,需要通过服务端将证书发送给客户端。 客户端为什么要验证接收到的证书 中间人攻击 客户端如何验证接收到的证书 为了回答这个问题,需要引入数字签名(Digital Signature)。
将一段文本通过哈希(hash)和私钥加密处理后生成数字签名。 假设消息传递在Bob,Susan和Pat三人之间发生。Susan将消息连同数字签名一起发送给Bob,Bob接收到消息后,可以这样验证接收到的消息就是Susan发送的
当然,这个前提是Bob知道Susan的公钥。更重要的是,和消息本身一样,公钥不能在不安全的网络中直接发送给Bob。 此时就引入了证书颁发机构(Certificate Authority,简称CA),CA数量并不多,Bob客户端内置了所有受信任CA的证书。CA对Susan的公钥(和其他信息)数字签名后生成证书。 Susan将证书发送给Bob后,Bob通过CA证书的公钥验证证书签名。 Bob信任CA,CA信任Susan 使得 Bob信任Susan,信任链(Chain Of Trust)就是这样形成的。 事实上,Bob客户端内置的是CA的根证书(Root Certificate),HTTPS协议中服务器会发送证书链(Certificate Chain)给客户端。 TLS协议TLS协议包括TLS Record Protocol和TLS Handshake Protocol。总览中的流程图仅涉及到TLS Handshake Protocol。 TLS Record Protocol在TLS协议中,有四种子协议运行于Record protocol之上
Record protocol起到了这样的作用
Record Protocol有三个连接状态(Connection State),连接状态定义了压缩,加密和MAC算法。所有的Record都是被当前状态(Current State)确定的算法处理的。 TLS Handshake Protocol和Change Ciper Spec Protocol会导致Record Protocol状态切换。 初始当前状态(Current State)没有指定加密,压缩和MAC算法,因而在完成TLS Handshaking Protocols一系列动作之前,客户端和服务端的数据都是明文传输的;当TLS完成握手过程后,客户端和服务端确定了加密,压缩和MAC算法及其参数,数据(Record)会通过指定算法处理。
TLS Handshaking ProtocolsHandshakeing protocols包括Alert Protocol,Change Ciper Spec Protocol和Handshake protocol。本文不会详细介绍Alert Protocol和Change Ciper Spec Protocol。 使用RSA算法的握手过程是这样的(已在总览中提到)
客户端和服务端在握手hello消息中明文交换了 除了使用RSA算法在公共信道交换密钥,还可以通过Diffie–Hellman算法。Diffie–Hellman算法的原理是这样的
使用Diffie–Hellman算法交换
小结TLS Handshaking Protocols协商了TLS Record Protocol使用的算法和所需参数,并验证了服务端身份;TLS Record Protocol在协商后保证应用层数据的完整性和隐私性。 TLS Handshaking Protocol的核心是在公开信道上传递 Q&A为什么传输内容不直接使用非对称加密?性能 HTTPS能保证正常连接?no
攻击者甚至可以直接丢弃双方的数据包 服务端如何验证客户端身份?通过Client Certificate
Alert protocol有什么作用?Closure Alerts:防止Truncation Attack
Error Alerts:错误处理 master secret是如何计算的
加密,压缩和MAC算法参数是如何计算的Handshaking Protocols使得客户端和服务端交换了三个参数:
使用Diffie-Hellman算法的TLS握手细节
拓展阅读
参考链接
|