运行安全性(operational security)。几乎所有的机构(公司、大学等)今天都有了与公共因特网相连接的网络。这些网络都因此潜在地能够被危及安全。攻击者能够试图在网络主机中安放蠕虫,获取公司秘密,勘察内部网络配置并发起 DoS 攻击。我们将看到诸如防火墙和入侵检测系统等运行设备正被用于反制对机构网络的攻击。防火墙位于机构网络和公共网络之间,控制接入和来自网络的分组。入侵检测系统执行“深度分组检查“任务,向网络管理员发出有关可疑活动的警告。
在计算机网络应用中,通常需要加密长报文(或长数据流)。如果使用前面描述的块密码,通过直接将报文切割成 K 比特块并独立地加密每块,将出现一个微妙而重要的问题。为了理解这个问题,注意到两个或更多个明文块可能是相同的。例如,两个或更多块中的明文可能是 HHTTP/1.1 。对于这些相同的块,块密码当然将产生相同的密文。当攻击者看到相同的密文块时,它可能潜在地猜出其明文,并且通过识别相同的密文块和利用支撑协议结构的知识,甚至能够解密整个报文。为了解决这个问题,可以在密文中混合某些随机性,使得相同的明文块产生不同的密文块。
Bob 让他的初始长报文通过一个散列函数。然后他用自己的私钥对得到的散列进行数字签名。明文形式的初始报文连同已经数字签名的报文摘要(从此以后可称为数字签名)一道被发送给 Alice。 Alice 先把发送方的公钥应用于报文获得一个散列结果。然后她再把该散列函数应用于明文报文以得到第二个散列结果。如果这两个散列匹配,则 Alice 可以确信报文的完整性及其发送方 。
Alice 使用她与 Bob 共享的对称秘密密钥 \(K_{A-B}\) 来加密这个不重数,然后把加密的不 重数 \(K_{A-B}(R)\) 发回给 Bob。与在协议 ap3.1 中一样,由于 Alice 知道 \(K_{A-B}\) 并用它加密一个值,就使得 Bob 知道收到的报文是由 Alice 产生的。这个不重数用于确定 Alice 是活跃的 。
Bob 解密接收到的报文。如果解密得到的不重数等于他发送给 Alice 的那个不重数,则可鉴别 Alice 的身份 。
使用相同的密钥导出函数(就像 SSL 标准定义的那样),客户和服务器独立地从 PMS 和不重数中计算出主密钥(Master Secret,MS)。然后该 MS 被切片以生成两个密码和两个 MAC 密钥。此外,当选择的对称密码应用于 CBC(例如 3DES 或 AES),则两个初始化向量(Initialization Vector,IV)也从该 MS 获得,这两个 IV 分别用于该连接的两端。自此以后,客户和服务器之间发送的所有报文均被加密和鉴别(使用 MAC)。
客户发送所有握手报文的一个 MAC 。
服务器发送所有握手报文的一个 MAC 。
关闭连接
在某个时刻,Bob 或者 Alice 将要终止 SSL 会话。一个方法是让 Bob 通过直接终止底层的 TCP 连接来结束该 SSL 会话,这就是说,通过让 Bob 向 Alice 发送一个 TCP FIN 报文段。但是这种幼稚设计为截断攻击(truncation attack)创造了条件,Trudy 再一次介入一个进行中的 SSL 会话中,并用 TCP FIN 过早地结束了该会话。如果 Trudy 这样做的话,Alice 将会认为她收到了 Bob 的所有数据,而实际上她仅收到了其中的一部分。对这个问题的解决方法是,在类型字段中指出该记录是否是用于终止该 SSL 会话的。(尽管 SSL 类型是以明文形式发送的,但在接收方使用了记录的 MAC 对它进行了鉴别。)通过包括这样一个字段,如果 Alice 在收到一个关闭 SSL 记录之前突然收到了一个 TCP FIN,她可能知道正在进行着某些耍花招的事情。
IP 安全(IP Security)协议更常被称为 IPsec,它为网络层提供了安全性。IPsec 为任意两个网络层实体(包括主机和路由器)之间的 IP 数据报提供了安全。如我们很快要描述的那样,许多机构(公司、政府部门、非营利组织等等)使用 IPsec 创建了运行在公共因特网之上的虚拟专用网 (Vir1ual Private, Network, VPN) 。
除了机密性,网络层安全协议潜在地能够提供其他安全性服务。例如,它能提供源鉴别,使得接收实体能够验证安全数据报的源。网络层安全协议能够提供数据完整性,使得接收实体能够核对在数据报传输过程中可能出现的任何篡改。网络层安全服务也能提供防止重放攻击功能,这意味着 Bob 能够检测任何攻击者可能插入的任何冗余数据报。我们将很快看到 IPsec 的确提供了用于些安全服务的机制,即机密性、源鉴别、数据完整性和重放攻击防护。