互联网的核心是建立在IP(internet protocol)和TCP(transmission control protocol)协议之上的,这些协议用于将数据分割成小数据包进行传输。这些数据包在全世界范围内历经数千里的传输,在此期间需要跨越许多国家的许多计算机系统(称为跃点,hop)。由于核心协议本身不提供任何安全保障,任何有权访问通信链路的人都可以获得所有数据,并且可以在不被察觉的情况下改变这些数据。 IP和TCP不是唯一易受攻击的协议,还有一系列其他路由协议用于协助发现网络上的其他计算机。DNS和BGP就是这样的两个协议。它们同样是不安全的,可以被他人通过各种方式劫持。如果出现这种情况,发往一台计算机的连接可能由攻击者响应。 如果部署了加密,攻击者也许有能力得到加密数据的访问权限,但是不能解密数据或者篡改数据。为了避免伪装攻击,SSL和TLS依赖另外一项被称为公钥基础设施(public key infrastructure,PKI)的重要技术,确保将流量发送到正确的接收端。 为了理解SSL和TLS的运作,我们需要从描述网络通信的理论模型入手,即开放系统互联(open systems interconnection,OSI)模型,参见表1-1。简单来说,所有功能都被映射到七个层上。最底层是最接近物理通信链路的层,后面的层依次建立在其他层之上,提供更高级别的抽象。最顶层就是应用层,携带着应用数据。 注意 现实中的协议并非总能与OSI模型完全对应。比如SPDY和HTTP/2因为要对连接进行管理,所以被归入会话层协议,但它们却在数据加密以后生效。第五层及更高层的划分经常是模糊的。 表1-1 OSI模型层 层 号 OSI层 描 述 协议示例 7 应用层 应用数据 HTTP、SMTP、IMAP 6 表示层 数据表示、转换和加密 SSL/TLS 5 会话层 多连接管理 - 4 传输层 包或流的可靠传输 TCP、UDP 3 网络层 网络节点间的路由与数据分发 IP、IPSec 2 数据链路层 可靠的本地数据连接(LAN) 以太网 1 物理层 直接物理数据连接(电缆) CAT5 以这种方式安排通信可以清晰地划分概念:高层的协议不必担心在底层实现的功能。进一步说,不同层次的协议可以加入通信或者从通信中删除,一种底层协议可以服务于多种上层协议。 SSL和TLS是这一原则如何在实践中运用的一个重要示例。它用于TCP协议之上,上层协议(如HTTP)之下。当不需要加密时,可以将TLS从模型中去掉,这并不会对上层协议产生影响(它们将直接与TCP协同工作)。当需要加密时,就可以利用TLS加密HTTP,以及其他TCP协议(比如SMTP、IMAP等)。