在当今数字化的世界中,保障通信安全显得尤为重要,而使用最广泛的协议莫过于SSL/TLS。
关于SSL的概述
在这个场景中,涉及到的通信协议有:
- HTTP(超文本传输协议)用于浏览器请求页面以及解析服务器的响应。HTTP使用人类可读的格式来包裹实际的信息内容,使人们无需工具即可查看和解读HTTP消息。
- HTTP消息则是由TCP(传输控制协议)进行封装。TCP是一个二进制协议,其内容对于人类来说并非可读,通常需要借助其他工具来理解每个字节的含义。
- 而TCP消息又进一步被IP(互联网协议)所封装。在这个通信过程中,任何处于浏览器和Web服务器之间的人都有可能被动地观察并读取你的请求及服务器的响应。我们称这种人为中间人(MITM)。更糟糕的是,这种MITM攻击者还可能主动篡改、重新排序消息。
为了解决这一问题,网景公司在90年发了SSL(接层)协议。随后,HTTPS(超文本传输安全协议)应运而生,它通过结合HTTP和SSL协议来确保浏览器与网站之间的通信安全。
通过使用HTTPS协议,上述场景中的MITM攻击者将无法看到加密后的信息,并且也无法、篡改、重放或重新排序信息。
那么TLS究竟是什么呢?
从SSL的第一个版本到其最新的3.0版本,经历了许多变革。由于设计和算法组合的问题,所有的SSL版本都不再兼容。
在SSL 3.0发布后,该协议被交由IETF(互联网工程任务组)接管,该主要负责发布RFCs(请求评议)标准。SSL这个名称便被弃用,转而使用TLS(传输层安全性)。TLS 1.0于1999年作为RFC 2246发布。
目前最新的TLS版本为TLS v1.3,其在RFC 8446中描述,并于2018年发布。
现在,如果网站使用的是HTTP而非HTTPS,浏览器会显示一个“不安全”的提示。
相反,如果采用HTTPS,则会在网址前显示一个锁的图标,表示通信已被加密保护。
如今,TLS不仅仅用于保护Web安全,它已在不同场景、不同类型的应用和设备中广泛用作通信安全协议。
TLS客户端详解
在TLS术语中,希望保护通信安全的两个参与者被称为Client(客户端)和Server(服务器)。而通信的初始化必须由客户端发起。例如在HTTPS协议中,浏览器就充当了客户端的角色。
客户端必须被正确配置,并提供足够的信息以便连接到服务器。这通常包括IP地址和端口号。如此一来,客户端才能建立一个安全的连接。
TLS客户端的接口
TLS客户端的接口包含了多种配置信息。如客户端支持的SSL/TLS版本、客户端愿意使用的保护连接的算法、客户端认证服务器的方式等。还包括了关于客户端想要连接的服务器的信息,至少应包含IP地址和端口号,对于网站而言,通常还包括域名。
一旦这些参数被确定,客户端接口便能产生一个安话。这个安话能保护通信的安全。会话是有状态的,除非持续保持连接,否则它会有时效性。若安话无法成功建立,可能是因为攻击者试图篡改连接或服务器的配置与客户端不匹配。
TLS服务器端详解