第8章 计算机网络中的安全
安全通信所具有的特性:机密性(仅发送和接收方能理解报文内容),报文完整性(报文未被篡改),端点鉴别(双方证实另一方身份是真实的),运行安全性(反制攻击者的蠕虫,内部网络结构勘察或 DoS 攻击等针对机构网络的攻击行为)。
密码学原则
对称密钥体系:双方密钥相同并且是秘密的。典型的例子包括凯撒密码、单码替代密码、多码替代密码。攻击方式包括唯密文攻击(入侵者仅截取到密文),已知明文攻击(入侵者知道明文和密文的一些配对),选择明文攻击(入侵者能够选择一种明文报文并得到该明文报文对应的密文形式)。从工作方式上,对称密钥加密可分为两种类型:流密码和块密码。块密码将要加密的报文处理为 k 比特的块,然后作一对一映射,这样就有一个 大小的映射表。由于在现实的机器上存储和更改这样大的表是困难的,所以实际情况是,使用函数模拟随机排序表。例如设 k=64 的情况,将其分成 8 个 8 比特的块,每一个过一层 8-8 映射表,然后根据一定规则将 8 个块重新组装成 64 比特的块,重复上述过程若干次。另外,为了解决加密时相同内容的报文被反复加密成相同的明文(这样容易被攻击者破解),可以在其中加入一些随机因素,比如对每一个块异或一个每块随机的随机数再加密,将密文与该随机数的明文同时发送。在实际中,由于这种方式需要发送两倍的数据,更常见的是采用密码块链接技术,仅在第一个报文发送一个随机值,其后的随机值使用计算的编码块代替。
公开密钥体系:使用一对密钥,其中一个是公开的,而另一个私有。最典型的例子是 RSA 算法。值得注意的是,RSA 算法在软件和硬件实现上均远慢于 DES(涉及指数运算),所以在实际运用中,RSA 通常与对称密钥同时使用,比如加密需要发送的密钥本身,之后再使用对称加密。
报文完整性和数字签名
密码散列函数:对于任意输入 m,计算得到一个固定长度的字符串 H(m),并且找到任意两个不同的报文 x 和 y 使得 H(x)=H(y) 在计算上是不可能的。广泛使用的散列函数有 MD5 和 SHA-1。
如果只是单纯的将报文 m 与其散列 H(m) 组合在一起发送,攻击者仍可以伪装成 m’ 组合 H(m’)。这意味着通信双方还需要共享一个鉴别密钥 s,发送方生成散列 H(m+s) 报文鉴别码,然后发送扩展报文 m, H(m+s)。
数字签名用于保护和识别一个文件的所有者和创作者。这一技术需要结合公开密钥体系和密码散列函数。使用密码散列函数对报文计算其散列,然后使用私钥加密得到数字签名。这样任何人只要使用公钥解密数字签名,与报文的散列计算结果进行对比就可以确定文件是否有被篡改。数字签名的一个重要应用是公钥认证,即确定一个公钥确实属于一个特定的实体。将公钥与特定实体绑定通常由认证中心 CA 完成,其职责就是使识别和发行证书合法化。
网络协议栈各层的安全性保障
应用层 PGP,运输层 SSL,网络层 IPsec 和虚拟专用网。还有无线网络中特有的安全协议。
防火墙和入侵检测系统
分为三类:传统分组过滤器,状态过滤器和应用程序网关。
传统分组过滤器根据每个报文流量的信息,独立地判断允许通过还是丢弃报文。状态过滤器则实际地跟踪 TCP 链接,根据其中得到地信息来作出过滤决定。
入侵检测系统 IDS 执行深度检查,剔除可疑的流量,或者对监控可疑流量并向管理员上报。IDS 系统可分为基于特征和基于异常两种,前者维护了一个攻击特征数据库,后者则会跟踪正常运行的流量并寻找统计上不寻常的分组流。