计算机网络 第 7 章 计算机网络的安全
第 7 章 计算机网络的安全 学习内容及要求: 常规加密体制 公开密钥体制 防火墙 了解计算机网络面临的安全问题,攻击类型及特点,掌握对称密钥体制和公开密钥体制的主要特点,理解防火墙的功能。
7.1 网络安全问题概述 7.1.1 计算机网络面临的安全性威胁 7.1 网络安全问题概述 7.1.1 计算机网络面临的安全性威胁 计算机网络上的通信面临以下的四种威胁: (1) 截获——从网络上窃听他人的通信内容。 (2) 中断——有意中断他人在网络上的通信。 (3) 篡改——故意篡改网络上传送的报文。 (4) 伪造——伪造信息在网络上传送。 截获信息的攻击称为被动攻击,而更改信息和拒绝用户使用资源的攻击称为主动攻击。
对网络的被动攻击和主动攻击 源站 目的站 源站 目的站 源站 目的站 源站 目的站 截获 中断 篡改 伪造 被动攻击 主 动 攻 击
恶意程序(rogue program) (1) 计算机病毒——会“传染”其他程序的程序,“传染”是通过修改其他程序来把自身或其变种复制进去完成的。 (2) 计算机蠕虫——通过网络的通信功能将自身从一个结点发送到另一个结点并启动运行的程序。 (3) 特洛伊木马——一种程序,它执行的功能超出所声称的功能。 (4) 逻辑炸弹——一种当运行环境满足某种特定条件时执行其他特殊功能的程序。
7.1.2 计算机网络安全的内容 保密性 安全协议的设计 接入控制
7.1.3 一般的数据加密模型 截获 篡改 截取者 明文 X 明文 X E 加密算法 D 解密算法 密文 Y = EK(X) 加密密钥 K 7.1.3 一般的数据加密模型 截获 篡改 截取者 明文 X 明文 X E 加密算法 D 解密算法 密文 Y = EK(X) 加密密钥 K 解密密钥 K 安全信道 密钥源
7.1.4 密码不神秘:小游戏
藏头诗 拉大旗来作虎皮, 登徒小子和珅戾, 死于非命是忠臣, 于是帝王看吾戏。 劳者多得民生计, 动摇民心官为己, 节俭清廉难再有, 时不我待看天气!
古代藏头诗 《水浒传》中梁山为了拉卢俊义入伙,“智多星”吴用和宋江便生出一段“吴用智赚玉麒麟”的故事来,利用卢俊义正为躲避“血光之灾”的惶恐心理,口占四句卦歌: 芦花丛中一扁舟,俊杰俄从此地游。 义士若能知此理,反躬难逃可无忧。 暗藏“卢俊义反”四字,广为传播。结果,成了官府治罪的证据,终于把卢俊义“逼”上了梁山。
爱情藏头诗 庐剧《无双缘》中,双写也以藏头诗表明心志: “早妆未罢暗凝眉, 迎户愁看紫燕飞, 无力回天春已老, 双栖画栋不如归。
7.2 常规密钥密码体制 所谓常规密钥密码体制,即加密密钥与解密密钥是相同的密码体制。 7.2 常规密钥密码体制 所谓常规密钥密码体制,即加密密钥与解密密钥是相同的密码体制。 这种加密系统又称为对称密钥系统。我们先介绍在常规密钥密码体制中的两种最基本的密码。
7.2.1 替代密码与置换密码 abcdefghijklmnopqrstuvwxyz DEFGHIJKLMNOPQRSTUVWXYZABC 替代密码(substitution cipher)的原理可用一个例子来说明。(密钥是 3) abcdefghijklmnopqrstuvwxyz DEFGHIJKLMNOPQRSTUVWXYZABC 明文 密文 caesar cipher FDHVDU FLSKHU 明文 c 变成了密文 F
置换密码 密钥 CIPHER 顺序 145326 attack 明文 begins atfour 置换密码(transposition cipher)则是按照某一规则重新排列消息中的比特或字符顺序。 密钥 顺序 明文 CIPHER 145326 attack begins atfour 根据英文字母在 26 个字母中的先后顺序,我们可以得出密钥中的每一个字母的相对先后顺序。因为密钥中没有 A 和 B,因此 C 为第 1。同理,E 为第 2,H 为第 3,……,R 为第 6。于是得出密钥字母的相对先后顺序为 145326。
置换密码 密钥 CIPHER 顺序 145326 attack 明文 begins atfour 置换密码(transposition cipher)则是按照某一规则重新排列消息中的比特或字符顺序。 密钥 顺序 明文 CIPHER 145326 attack begins atfour 根据英文字母在 26 个字母中的先后顺序,我们可以得出密钥中的每一个字母的相对先后顺序。因为密钥中没有 A 和 B,因此 C 为第 1。同理,E 为第 2,H 为第 3,……,R 为第 6。于是得出密钥字母的相对先后顺序为 145326。
置换密码 密钥 CIPHER 顺序 145326 attack 明文 begins atfour 置换密码(transposition cipher)则是按照某一规则重新排列消息中的比特或字符顺序。 密钥 顺序 明文 CIPHER 145326 attack begins atfour 根据英文字母在 26 个字母中的先后顺序,我们可以得出密钥中的每一个字母的相对先后顺序。因为密钥中没有 A 和 B,因此 C 为第 1。同理,E 为第 2,H 为第 3,……,R 为第 6。于是得出密钥字母的相对先后顺序为 145326。
置换密码 密钥 CIPHER 顺序 145326 attack 明文 begins atfour 置换密码(transposition cipher)则是按照某一规则重新排列消息中的比特或字符顺序。 密钥 顺序 明文 CIPHER 145326 attack begins atfour 根据英文字母在 26 个字母中的先后顺序,我们可以得出密钥中的每一个字母的相对先后顺序。因为密钥中没有 A 和 B,因此 C 为第 1。同理,E 为第 2,H 为第 3,……,R 为第 6。于是得出密钥字母的相对先后顺序为 145326。
置换密码 密钥 CIPHER 顺序 145326 attack 明文 begins atfour 置换密码(transposition cipher)则是按照某一规则重新排列消息中的比特或字符顺序。 密钥 顺序 明文 CIPHER 145326 attack begins atfour 根据英文字母在 26 个字母中的先后顺序,我们可以得出密钥中的每一个字母的相对先后顺序。因为密钥中没有 A 和 B,因此 C 为第 1。同理,E 为第 2,H 为第 3,……,R 为第 6。于是得出密钥字母的相对先后顺序为 145326。
置换密码 密钥 CIPHER 顺序 145326 attack 明文 begins atfour 置换密码(transposition cipher)则是按照某一规则重新排列消息中的比特或字符顺序。 密钥 顺序 明文 CIPHER 145326 attack begins atfour 根据英文字母在 26 个字母中的先后顺序,我们可以得出密钥中的每一个字母的相对先后顺序。因为密钥中没有 A 和 B,因此 C 为第 1。同理,E 为第 2,H 为第 3,……,R 为第 6。于是得出密钥字母的相对先后顺序为 145326。
密文的得出 密钥 顺序 明文 CIPHER 145326 attack begins atfour
接收端收到密文后按列写下 密钥 CIPHER 顺序 145326 attack 明文 begins atfour 收到的密文:abacnuaiotettgfksr 密钥 顺序 明文 CIPHER 145326 attack begins atfour 先写下第 1 列密文 aba
接收端收到密文后按列写下 密钥 CIPHER 顺序 145326 attack 明文 begins atfour 收到的密文:abacnuaiotettgfksr 密钥 顺序 明文 CIPHER 145326 attack begins atfour 最后写下第 6 列密文 ksr
接收端从密文解出明文 密钥 CIPHER 顺序 145326 attack 明文 begins atfour 收到的密文:abacnuaiotettgfksr 密钥 顺序 明文 CIPHER 145326 attack begins atfour 最后按行读出明文 得出明文:attackbeginsatfour
序列密码与分组密码 序列码体制是将明文 X 看成是连续的比特流(或字符流)x1x2…,并且用密钥序列 K k1k2…中的第 i 个元素 ki 对明文中的 xi 进行加密,即
分组密码体制 明文 密文 输入 输入 n bit n bit 密钥 密钥 加密 算法 解密 算法 n bit n bit 明文 密文 输出
7.2.2 数据加密标准 DES 数据加密标准 DES 属于常规密钥密码体制,是一种分组密码。 在加密前,先对整个明文进行分组。每一个组长为 64 bit。 然后对每一个 64 bit 二进制数据进行加密处理,产生一组 64 bit 密文数据。 最后将各组密文串接起来,即得出整个的密文。 使用的密钥为 64 bit(实际密钥长度为 56 bit,有 8 bit 用于奇偶校验)。
DES 加密标准 f f f IP L0 R0 L1 = R0 R1 = L0 f (R0, K1) L2 = R1 输入 明文 X (64 bit) DES 加密标准 IP X0 的左半边 (32 bit) X0 (64 bit) X0 的右半边 (32 bit) L0 R0 f K1 (48 bit) L1 = R0 R1 = L0 f (R0, K1) f K2 (48 bit) L2 = R1 R2 = L1 f (R1, K2) L15 = R14 R15 = L14 f (R14, K15) K16 (48 bit) f R16 = L15 f (R15, K16) L16 = R15 R16L16 (64 bit) IP1 输出 密文 Y (64 bit)
7.3 公开密钥密码体制 7.3.1 公开密钥密码体制的特点 公开密钥密码体制使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。 公开密钥密码体制的产生主要是因为两个方面的原因,一是由于常规密钥密码体制的密钥分配问题,另一是由于对数字签名的需求。 现有三种公开密钥密码体制,其中最著名的是RSA 体制,它基于数论中大数分解问题的体制,由美国三位科学家 Rivest, Shamir 和 Adleman 于 1976 年提出并在 1978 年正式发表的。
公开密钥密码体制 发送者 接收者 明文 X E 加密算法 密文 Y = EPK(X) D 解密算法 明文 X = DSK(EPK(X)) 密钥对 产生源
RSA举例 设选择了两个素数,p 7, q 17。 计算出 n pq 7 17 119。 从[0, 95]中选择一个与 96 互素的数e。 选 e 5。然后根据(9-10)式, 5d 1 mod 96 解出 d。不难得出,d 77, 因为 ed 5 77 385 4 96 1 1 mod 96。 于是,公开密钥 PK (e, n) {5, 119}, 秘密密钥 SK {77, 119}。
(3) 正确性的例子说明(续) 对明文进行加密。先把明文划分为分组,使每个 明文分组的二进制值不超过 n, 即不超过 119。 设明文 X 19。用公开密钥加密时,先计算 Xe 195 2476099。 再除以 119,得出商为 20807,余数为 66。这就是对应于明文 19 的密文 Y 的值。 在用秘密密钥 SK {77, 119}进行解密时,先计算 Yd 6677 1.27... 10140。 再除以 119,得出商为 1.06... 10138,余数为 19。 此余数即解密后应得出的明文 X。
RSA 算法举例 加密 解密 密文 66 明文 19 明文 19 2476099 1.27... 10 19 = = 20807 140 19 = = 20807 5 66 = = 1.0610 77 138 119 119 及余数 66 及余数 19 公开密钥 = {5, 119} 秘密密钥 = {77, 119}
7.3.3 数字签名 数字签名必须保证以下三点: (1) 接收者能够核实发送者对报文的签名; (2) 发送者事后不能抵赖对报文的签名; (3) 接收者不能伪造对报文的签名。 现在已有多种实现各种数字签名的方法。但采用公开密钥算法要比采用常规密钥算法更容易实现。
数字签名的实现 发送者 A 接收者 B DSK(X) X D E X SK PK 用秘密密钥 进行签名 用公开密钥 核实签名
数字签名的实现 B 用已知的 A 的公开加密密钥得出 EPKA(DSKA(X)) X。因为除 A 外没有别人能具有 A 的解密密钥 SKA,所以除 A 外没有别人能产生密文 DSKA(X)。这样,B 相信报文 X 是 A 签名发送的。 若 A 要抵赖曾发送报文给 B,B 可将 X 及DSKA(X)出示给第三者。第三者很容易用 PKA去证实 A 确实发送 X 给 B。反之,若 B 将 X 伪造成 X‘,则 B 不能在第三者前出示DSKA (X’)。这样就证明了 B 伪造了报文。
具有保密性的数字签名 发送者 A 接收者 B 密文 EPKB(DSKA(X)) X DSKA(X) DSKA(X) X D E D E SKB PKA 用秘密密钥 签名 用公开密钥 加密 用秘密密钥 解密 用公开密钥 核实签名
7.4 报文鉴别 (message authentication) 在信息的安全领域中,对付被动攻击的重要措施是加密,而对付主动攻击中的篡改和伪造则要用报文鉴别。 报文鉴别使得通信的接收方能够验证所收到的报文(发送者和报文内容、发送时间、序列等)的真伪。 使用加密就可达到报文鉴别的目的。但在网络的应用中,许多报文并不需要加密。应当使接收者能用很简单的方法鉴别报文的真伪。
报文摘要 MD (Message Digest) 发送端将报文 m 经过报文摘要算法运算后得出固定长度的报文摘要 H(m)。然后对 H(m) 进行加密,得出EK(H(m)),并将其追加在报文 m 后面发送出去。 接收端将 EK(H(m)) 解密还原为 H(m),再将收到的报文进行报文摘要运算,看得出的是否为此 H(m)。 如不一样,则可断定收到的报文不是发送端产生的。 报文摘要的优点就是:仅对短得多的定长报文摘要 H(m)进行加密比对整个长报文 m 进行加密要简单得多。 M 和 EK(H(m)) 合在一起是不可伪造的,是可检验的和不可抵赖的。
报文摘要算法必须满足 以下两个条件 任给一个报文摘要值 x,若想找到一个报文 y 使得 H(y) = x,则在计算上是不可行的。 H(x) = H(y),则在计算上是不可行的。
报文摘要的实现 发端 收端 明 文 M 明 文 M 明 文 M 收端算出的 报文摘要 发送 H 密钥 K 密钥 K 比较 (是否一致?) 经过报文 摘要运算 H 加密的报文摘要 附加在明文后面 MD MD 得出解密的报文摘要 得出报文摘要 加密的报文摘要
7.5 密钥分配 密钥管理包括:密钥的产生、分配、注入、验证和使用。本节只讨论密钥的分配。 7.5 密钥分配 密钥管理包括:密钥的产生、分配、注入、验证和使用。本节只讨论密钥的分配。 密钥分配是密钥管理中最大的问题。密钥必须通过最安全的通路进行分配。 目前常用的密钥分配方式是设立密钥分配中心 KDC (Key Distribution),通过 KDC 来分配密钥。
常规密钥分配协议 … … 用户A 用户B KDC 用户私有主密钥文件 ① EKA(A, B) 用户 主密钥 A KA B KB 用户 主密钥 A KA B KB ② EKA (R1, EKB(A, R1)) A 知道了 密钥 R1 ③ EKB(A, R1) B 知道了 密钥 R1 … … A 和 B 用密钥 R1 通信
7.6 电子邮件的加密 7.6.1 PGP (Pretty Good Privacy) PGP 并没有使用什么新的概念,它只是将现有的一些算法如 MD5,RSA,以及 IDEA 等综合在一起而已。 虽然 PGP 已被广泛使用,但 PGP 并不是因特网的正式标准。
PGP 的加密过程 KM:IDEA 的加密密钥(一次一密) B 的 RSA 公开密钥 EB :拼接 A 的 RSA 秘密密钥 DA RSA KM ASCII 文本 A 的 明文 P P1.Z H P1 MD5 RSA ZIP IDEA base 64 至因特网 P 压缩后的 P1 P 与 H 拼接 用密钥 KM 加密后的 P1.Z 与 用密钥 EB 加密后的 KM 拼接
7.6.2 PEM (Privacy Enhanced Mail) PEM 是因特网的邮件加密建议标准,由四个 RFC 文档来描述: (1) RFC 1421:报文加密与鉴别过程 (2) RFC 1422:基于证书的密钥管理 (3) RFC 1423:PEM 的算法、工作方式和 标识符 (4) RFC 1424:密钥证书和相关的服务
PEM 的主要特点 PEM 的功能和 PGP 的差不多,都是对基于[RFC 822]的电子邮件进行加密和鉴别。 每个报文都是使用一次一密的方法进行加密,并且密钥也是放在报文中一起在网络上传送。对密钥还必须加密。可以使用 RSA 或三重 DES。 PEM 有比 PGP 更完善的密钥管理机制。由证书管理机构(Certificate Authority)发布证书。
7.7 链路加密与端到端加密 7.7.1 链路加密 在采用链路加密的网络中,每条通信链路上的加密是独立实现的。通常对每条链路使用不同的加密密钥。 用户 A 结点 1 结点 2 用户 B 明文 X 明文 X 明文 X 明文 X E1(X) 链路 1 E2(X) 链路 2 E3(X) En(X) 链路 n E1 D1 E2 D2 E3 Dn 密文 密文 密文 密文 相邻结点之间具有相同的密钥,因而密钥管理易于实现。链路加密对用户来说是透明的,因为加密的功能是由通信子网提供的。
链路加密 由于报文是以明文形式在各结点内加密的,所以结点本身必须是安全的。 所有的中间结点(包括可能经过的路由器)未必都是安全的。因此必须采取有效措施。 链路加密的最大缺点是在中间结点暴露了信息的内容。 在网络互连的情况下,仅采用链路加密是不能实现通信安全的。
7.7.2 端到端加密 端到端加密是在源结点和目的结点中对传送的 PDU 进行加密和解密,报文的安全性不会因中间结点的不可靠而受到影响。 7.7.2 端到端加密 端到端加密是在源结点和目的结点中对传送的 PDU 进行加密和解密,报文的安全性不会因中间结点的不可靠而受到影响。 结点 0 结点 1 结点 2 结点 n 明文 X 明文 X EK(X) 链路 1 EK(X) 链路 2 EK(X) 链路 n EK DK 端到端链路传送的都是密文 在端到端加密的情况下,PDU 的控制信息部分(如源结点地址、目的结点地址、路由信息等)不能被加密,否则中间结点就不能正确选择路由。
7.8 因特网商务中的加密 7.8.1 安全插口层 SSL SSL 又称为安全套接层 (Secure Socket Layer),可对万维网客户与服务器之间传送的数据进行加密和鉴别。 SSL 在双方的联络阶段协商将使用的加密算法和密钥,以及客户与服务器之间的鉴别。 在联络阶段完成之后,所有传送的数据都使用在联络阶段商定的会话密钥。 SSL 不仅被所有常用的浏览器和万维网服务器所支持,而且也是运输层安全协议 TLS (Transport Layer Security)的基础。
安全插口层 SSL 的位置 应用层 HTTP IMAP 安全插口层 SSL 功能 标准插口 运输层 TCP 在发送方,SSL 接收应用层的数据(如 HTTP 或 IMAP 报文),对数据进行加密,然后将加了密的数据送往 TCP 插口。 在接收方,SSL 从 TCP 插口读取数据,解密后将数据交给应用层。
SSL 提供以下三个功能 (1) SSL 服务器鉴别 允许用户证实服务器的身份。具有 SS L功能的浏览器维持一个表,上面有一些可信赖的认证中心 CA (Certificate Authority)和它们的公开密钥。 (2) 加密的 SSL 会话 客户和服务器交互的所有数据都在发送方加密,在接收方解密。 (3) SSL 客户鉴别 允许服务器证实客户的身份。
7.8.2 安全电子交易 SET (Secure Electronic Transaction) (3) SET 要求这三方都有证书。在 SET 交易中,商家看不见顾客传送给商业银行的信用卡号码。
7.9 因特网的网络层安全协议族 IPsec 1. IPsec 与安全关联 SA IPsec 就是“IP安全(Security)协议”的缩写。 网络层保密是指所有在 IP 数据报中的数据都是加密的。此外,网络层还应提供源站鉴别,即当目的站收到 IP 数据报时,能确信这是从该数据报的源IP地址的主机发来的。
IPsec 中最主要的两个部分 鉴别首部 AH (Authentication Header): AH提供源站鉴别和数据完整性,但不能保密。 封装安全有效载荷 ESP (Encapsulation Security Payload):ESP 比 AH 复杂得多,它提供源站鉴别、数据完整性和保密。
安全关联 SA (Security Association) 在使用 AH 或 ESP 之前,先要从源主机到目的主机建立一条网络层的逻辑连接。此逻辑连接叫做安全关联 SA。 IPsec 就将传统的因特网无连接的网络层转换为具有逻辑连接的层。
7.10 防火墙(firewall) 防火墙是由软件、硬件构成的系统,用来在两个网络之间实施接入控制策略。接入控制策略是由使用防火墙的单位自行制订的,为的是可以最适合本单位的需要。 防火墙内的网络称为“可信赖的网络”(trusted network),而将外部的因特网称为“不可信赖的网络”(untrusted network)。 防火墙可用来解决内联网和外联网的安全问题。
防火墙在互连网络中的位置 G 因特网 内联网 防火墙 不可信赖的网络 分组过滤 路由器 R 分组过滤 路由器 R 可信赖的网络 应用网关 外局域网 内局域网
防火墙的功能 防火墙的功能有两个:阻止和允许。 “阻止”就是阻止某种类型的通信量通过防火墙(从外部网络到内部网络,或反过来)。 “允许”的功能与“阻止”恰好相反。 防火墙必须能够识别通信量的各种类型。不过在大多数情况下防火墙的主要功能是“阻止”。
防火墙技术一般分为两类 (1) 网络级防火墙——用来防止整个网络出现外来非法的入侵。属于这类的有分组过滤和授权服务器。前者检查所有流入本网络的信息,然后拒绝不符合事先制订好的一套准则的数据,而后者则是检查用户的登录是否合法。 (2) 应用级防火墙——从应用程序来进行接入控制。通常使用应用网关或代理服务器来区分各种应用。例如,可以只允许通过访问万维网的应用,而阻止 FTP 应用的通过。