1 / 81

第 7 章 计算机网络安全基础 随着计算机网络的发展,网络中的安全问题日趋严重。它是一个涉及面很广的综合性问题,广义的网络安全所关注的领域包括:

第 7 章 计算机网络安全基础 随着计算机网络的发展,网络中的安全问题日趋严重。它是一个涉及面很广的综合性问题,广义的网络安全所关注的领域包括:  环境安全:涉及到管理体制、用户心理、社会环境、法律法规等因素。  系统安全:涉及系统管理、资源管理、用户管理、防侵犯措施、系统恢复等各种手段。  信息安全:主要涉及信息的存储安全和传送安全。 信息安全只是网络安全的一个方面,本章仅就网络安全的策略、机制和主要技术进行初步的讨论。. 7.1 概述 本节讨论计算机网络面临的安全性威胁、网络安全的目标和一般的数据加密模型。 7.1.1 计算机网络面临的安全性威胁

john
Télécharger la présentation

第 7 章 计算机网络安全基础 随着计算机网络的发展,网络中的安全问题日趋严重。它是一个涉及面很广的综合性问题,广义的网络安全所关注的领域包括:

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第7章 计算机网络安全基础 随着计算机网络的发展,网络中的安全问题日趋严重。它是一个涉及面很广的综合性问题,广义的网络安全所关注的领域包括:  环境安全:涉及到管理体制、用户心理、社会环境、法律法规等因素。  系统安全:涉及系统管理、资源管理、用户管理、防侵犯措施、系统恢复等各种手段。  信息安全:主要涉及信息的存储安全和传送安全。 信息安全只是网络安全的一个方面,本章仅就网络安全的策略、机制和主要技术进行初步的讨论。

  2. 7.1 概述 本节讨论计算机网络面临的安全性威胁、网络安全的目标和一般的数据加密模型。 7.1.1 计算机网络面临的安全性威胁 网络安全主要涉及网络自身的安全和网络中信息的安全两方面的内容。 一、网络自身安全的问题 在Internet中,对网络的攻击可分为两种类型,即服务攻击与非服务攻击。

  3. 1、服务攻击的特点 服务攻击是指对网络提供某种服务的服务器发起攻击,造成该网络的“拒绝服务”。例如,黑客利用TCP/IP协议缺乏认证、保密措施,通过TCP的23端口所提供的远端连接,发起对Telnet服务器的攻击;又如通过HTTP的80端口等待客户的浏览请求,对WWW服务器进行攻击;还有利用邮件传送的SMTP的25端口对邮件服务器进行攻击等等。 2、非服务攻击的特点 非服务攻击是指针对低层协议或网络通信设备发起的攻击。与服务攻击相比,非服务攻击与特定服务无关,它往往利用操作系统或协议漏洞达到攻击的目的,具有更强的隐蔽性。

  4. 二、网络中的信息安全问题 网络中的信息安全主要面临三个方面的威胁:信息存储安全与信息传输安全。 1、信息存储安全 信息存储安全是指如何防止网络中静态存储的信息被未受权的网络用户非法使用。 信息存储安全一般是由操作系统、数据库管理系统、应用软件和防火墙来共同保障,常用方法如用户口令加密、用户身份认证、数据及用户访问权限设置、信息加密、结点地址过滤等。攻击者常见的攻击手段如绕开网络安全认证系统、猜测或截取用户口令、伪造和冒充合法用户、使用无须授权的网络服务等。

  5. 2、信息传输安全 计算机网络上的通信主要包括以下3种安全威胁: (1)对信息“表征”功能的攻击威胁,主要表现为: • 窃取信息 • 篡改信息 • 破坏信息 • 伪造信息 (2)对信息“控制”功能的攻击威胁 通过控制和利用信息的“控制”功能达到攻击的目的。如未来战争中,信息战主要目的之一就是摧毁、控制或利用对方的指挥、通信、情报、控制、监视、以及侦察系统的控制功能。

  6. 受害机 攻击者 Echo帧 Ping帧 : 大的网络 : 目的地址:广播地址源地址:受害机地址 (3)对消息载体的攻击 针对信息的存储、处理和传输系统的攻击。如拒绝服务攻击——通过删除或延迟某一连接上传输的PDU,使被攻击的服务器始终处于“忙”状态。从而拒绝客户服务请求。例如 保证信息传输安全的主要技术是数据的加密与解密、身份确认、数字签名、第三方确认等。

  7. 7.1.2 计算机网络安全的目标: 1、信息的存储及传输安全,包括: (1) 防止析出报文内容; (2) 防止信息量分析; (3) 检测更改报文流; (4) 检测拒绝报文服务。 2、实体的身份认证,包括: (1) 口令、密钥的管理及分发; (2) 检测伪造初始化连接。

  8. 3.接入控制,主要策略包括: (1) 最小特权策略:即无需共享的信息绝不公开; (2) 最大共享策略:即除需保密的信息外,公开所有可以共享的信息; (3) 开放系统和封闭系统:开放系统——用户可以访问除明确禁止以外的任何信息,封闭系统——用户只能访问明确授权的信息; (4) 基于名字的访问控制策略:即按数据的名字(属性)进行访问控制; (5) 基于内容的访问控制策略:即按数据属性的性质进行分类并进行访问控制; (6) 基于访问类型的访问控制策略:根据用户对数据的操作类型(读、写、修改、删除、移动等)实施访问控制。

  9. 4、行为审计、抗抵赖、可控性 (1) 审计:对实体的行为进行记录,以便事后追查; (2) 抗抵赖:实体不能对已发生的行为进行抵赖; (3) 可控性:能够对实体的行为和内容进行监控。 5、可用性 包括访问控制机制的可用性和信息载体(网络、资源、存储空间等)的可用性。 对付各类攻击通常采用数据加密技术,或将加密技术与适当的鉴别技术相结合。

  10. 7.1.3 一般的数据加密模型 密码技术是网络与信息安全的核心技术之一,它包括加密技术和解密技术两个部分。加密/解密算法的操作通常是在一组密钥的控制下进行的,算法和密钥构成了密码技术的两个基本要素。加密密钥和解密密钥可以是相同的,称为对称密钥体制,也可以是不相同的,称为非对称密钥体制。 在设计加密系统时,加密算法——作为加密的数学函数,可以是公开的,而密钥——密码算法的可变参数则通常是保密的。一个算法的强度(被破译的难度)除了依赖于算法本身以外,还往往与密钥的长度有关。 一般的数据加密模型如图7-1所示。

  11. 入侵者 窃听 篡改 明文x 明文x D 解密算法 E 加密算法 密文Y=EK(x) 加密密钥K 解密密钥K 安全信道 密钥源 图7-1 一般的数据加密模型 其中,明文X用加密算法E和加密密钥K得到密文Y=EK(X)。到了接收端,利用解密算法D和解密密钥K,解出明文为: DK(Y)=DK(EK(X))=X。 在这里我们假定加密密钥和解密密钥都是一样的,密钥通常是由一个密钥源提供。当密钥需要向远地传送时,一定要通过另一个安全信道。

  12. 7.2 对称密钥密码体制 常规密钥密码体制是指加密密钥与解密密钥相同的密码体制,替代密码和置换密码是早期常用的两种常规密钥密码体制。以下仅就对称密钥密码体制中最基本的加/解密方法进行介绍。 7.2.1 恺撒密码(Caesar cipher):恺撒密码又称替换密码,是一种将明文平移的替换技术,其原理可用一个例子来说明:从表7-1可以看出,如果在保持字母序列a、b、c、……、x、y、z不变的情况下,建立与另一个序列D、E、F、……、A、B、C的对应关系(相应位置的字符相差29个字符)。 表7-1 字母a、b、c、……与D、E、F、……对应关系 a b c d e f g h i j k l m n o p q r s t u v w x y z D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

  13. 若明文为小写字母caesar cipher,则对应的密文为大写字母FDHVDU FLSKHU(此时密钥K=29,因为对应的小写字母向左位移了29个字母的位置),接收方利用密钥做相反的平移操作即可获得原文。 恺撒密码由于容易破译而很少单独使用,通常作为复杂的编码过程中的一个中间步骤,常见的攻击方法有: (1) 穷举法:对密钥空间的所有可能取值逐一测试; (2) 频率试探法:已知英文中使用频率最高的字母依次是e、t、o、a、n等,再根据密文中各字母出现的频率进行试探,求出密钥k。

  14. 一种改变字母出现频率和顺序的方法是使用多字母密码(polyalphabetic cipher),它对明文中不同位置的字母采用不同的密文字母进行替换。例如,假设数组P和C分别代表明文和密文,K为整数密钥,算法描述为: for (int i=0; i<length of P; i++) C[i]=P[i]+K+(i mod 3); 假设选取密钥K=1,则密文的第0、3、6……位为明文对应位的ASCII码值加1,而第1、4、7……位为对应位的ASCII码值加2,位置为2、5、8……时,字符的值加3。 如明文THEMTHENTHEY采用密钥1对其进行多字母密码加密后,密文为UJHNVKFPWIG\。 这种方法可有效减少相同字符反复出现的频率。

  15. 7.2.2 置换密码(transposition cipher):是按照某一规则重新排列消息中的比特或字符的顺序,实现加密目的的方法。与替代密码不同,密文中的各个比特或字符只是进行重排,而没有被替换。 一种方法是将明文采用一个m列的二维矩阵进行存储,然后以某种约定或随机的顺序分别传送各列字符。接收方只要知道列数及列变换方法,即可重构信息。 例如,以CIPHER这个字作为密钥。在此密钥中的各个字符在英文字母表中出现的顺序依次是:C为第1,E为第2,……,R为第6。于是得出密钥的顺序为145326。这就表示在形成密文时,首先读取第1列的字符(因为密钥中的1位位于第1列),然后读取第5列(因为密钥中的2位于第5列) 、第4列、第2列、第3列和第6列。明文也以6个字符为一组写在密钥下。如:假设明文为attack begings at four,密钥为CIPHER,则

  16. 密钥 C I P H E R 顺序 1 4 5 3 2 6 明文 a t t a c k b e g i n s a t f o u r 这样得出密文为abacnuaiotettgfksr。接收者按密钥中的字母顺序按列写下,按行读出即得明文。 例如,已知收到的密文为FHWRLKLBAOEOLYRDTO WLCOEI ,密钥为COMPUTER,则密文矩阵为 按行重构原文为:FOLLOW THE YELLOW BRICK ROAD。 这种密码很容易破译,主要用于作为加密过程中的中间步骤。

  17. + + 发送端 接收端 密钥序列产生器 密钥序列产生器 种子I0 种子I0 ki ki yi xi xi 明文序列 密文序列 明文序列 图7-2 序列密码体制 7.2.3 序列密码 序列密码体制是将明文x看成是连续的比特流(或字符流)x1x2…,并且用密钥序列K=k1k2…中的第1个元素k1对明文中的x1进行加密,第2个元素k2对明文中的x2进行加密,……,即 Ek(X)=Ek1(x1)Ek2(x2)… 序列密码又称为密钥流密码。这种体制的保密性完全在于密钥的随机性。如果密钥是真正的随机数,则这种体制就是理论上不可破的。这也可称为一次一密乱码本体制。图7-2给出了序列密码的框图。

  18. 图中ki、xi和yi均为 1bit,并按模2进行异或运算: 在发送端,密文比特 yi=Eki(xi)= xiki 在接收端,明文比特 xi=Dki(yi)= yiki=(xiki)ki 从上述算法可以看出,解密过程不像前面介绍过的方法:解密是加密步骤的逆过程。在序列密码体制中,加密算法、加密密钥和解密算法以及解密密钥完全一样,或者说,解密过程是加密过程的重复。 严格的一次一密乱码本体制所需的密钥量不存在上限,极端情况下,密钥长度与待发送的信息长度一致,由于需要将密钥传给对方,且只使用一次,故很难实用化。目前常使用伪随机序列作为密钥序列。关键是序列的周期要足够长,且序列要有很好的随机性,满足这一要求的算法很难寻找。另一个缺点是一个比特的丢失会影响消息的正确解密。

  19. 长 明 文 固定长度明文分组 解密算法 加密算法 密钥 固定长度密文分组 7.2.4 分组密码 另一种密码体制将明文划分成固定的n比特的数据组,然后以组为单位,在密钥的控制下进行一系列的线性或非线性的变化而得到密文,称为分组密码(block cipher)。图7-3为分组密码体制的框图。分组密码一次变换一组数据。分组密码算法的一个重要特点就是:当给定一个密钥后,若明文分组相同,那么所变换出密文分组也相同。 图7-3分组密码体制

  20. 例如,假设银行前台与结算中心数据库交换数据格式为例如,假设银行前台与结算中心数据库交换数据格式为 帐号名称 取款/存款:0-取款。1-存款 资金数额 其中每个数据项占用一个分组(64bit),每次对一个分组进行加密传输。 假设攻击者预先侦听到如下密文: c1 c2 c3 c4 c5 c6 密文分组 明文含义 帐号A 存入 1000元 帐号B 取出 2000元 攻击者用自己的帐号C取出10000元,其明文及其对应的密文为 帐号C 帐号C 存款 取款 10000元 10000元 C7 C8 C9 比较各个密文分组可知,密文C8=C5,表示取款,C2即为存款。攻击者只需以C2替换C8,解密后的明文为 分组加密算法存在如下攻击危险: • 密文挪用攻击

  21. 攻击者用帐号C存入一笔钱(如10元),若其收到一个密文序列攻击者用帐号C存入一笔钱(如10元),若其收到一个密文序列 对应明文 攻击者将密文分组重新排列为 c1 c2 c3 c4 c5 c6 c7 c8 c9 帐号C 帐号A 存款 存款 1000 1000 帐号B 帐号B 取款 取款 200 200 帐号C 帐号A 存款 存款 10 10 2. 篡改密文攻击 攻击者在银行存入1元钱,将密文分组中对应的存款金额一栏进行任意更改,虽然攻击者在篡改时未必知道其值及含义,但一般而言,解密后的值都将超过1元。 3. 分组重排攻击

  22. P1 P2 P3 P4 P5 + + + + + E E E E E C1 图7-4 密文分组链接技术的实现过程 C2 C3 C4 C5 IV 图中IV为初始向量(密钥)。上述过程可描述为: E(P1⊕IV) i=1 D(C1 )⊕IV i=1 加密:Ci= 解密:Pi= E(Pi⊕Ci-1) i=2,3,﹍,n D(Ci )⊕Ci-1 i=2,3,﹍,n 避免上述攻击危险的方法是采用密文分组链接技术,以克服各分组独立加密,对某一个分组的攻击可能影响整个报文合法性的问题。其基本思想是将当前要加密的分组与上一个分组加密后得到的密文异或后再进行加密,而解密时得到的结果与上一个密文分组异或即可获得明文。图7-4显示了这一过程

  23. 密文分组链接技术的优点是: ⑴ 相同的明文分组加密后得到的密文分组不一样; ⑵ 任何一个密文分组都与前面的所有分组有联系,对任意一个密文分组的修改都将影响到其后的分组,便于进行攻击检测; ⑶ 无法对任意一个密文分组进行单独解密。 缺点是若有分组丢失,则其后的加密将是无效的。

  24. fK(L) L R L R⊕fK(L) 图7-5 DES基本操作 7.2.5 数据加密标准DES(Data Encryption Standard) 分组密码的一个重要优点是不需要同步,因而在分组交换网中有着广泛的用途。分组密码中最有名的就是由IBM公司于1970年作为试验加密系统开发的分组加密算法DES,1977年被美国国家标准局制订为国家标准。它被植入VLSI芯片,在银行转账、自动柜员机、美国司法部、能源部、联邦储备银行等部门均有广泛应用。 DES将信息分解为64 bit/块,其中每个字节占用1bit用于奇偶校验,实际加密信息为56 bit/块,密钥长度也为64 bit。分别对每个块加密,最后得到64比特的加密数据。基本思想描述如下: 1. DES的基本操作: 将64 bit的数据块分为两半,左半即记为L,右半记为R。首先将L和密钥K进行f变换得到fK(L),然后用fK(L)与R异或,并将其替代R。如图7-5所示。

  25. fK(R) L⊕fK(R) R 图7-6 XLK(M)操作 L R 若原始数据块为M,密钥为K,运算过程为XR,即: M=(L,R), M’= XRK(M)=(L’,R’) 则 L’= L, R’=R⊕fK(L) 相同的运算也可用于将数据块的右半部分经变换异或到左半部分。如图7-6所示,这个过程记为XLK(M)。 2. DES的基本结构 DES算法的基本结构就是经过16轮XR和XL交叉运算,实现数据的充分混合,达到加密的目的。这一过程描述为: P→XR →XL →XR →XL →XR →XL →XR →XL →XR →XL →XR →XL →XR →XL →XR →C 其中P是数据块明文,C是对应密文。每一步运算使用不同的密钥,上一步的输出作为下一步的输入。

  26. 3. 密钥的产生 64 bit的密钥除去奇偶校验位,实际长度为56 bit。在16轮DES基本运算中,每一轮使用不同的子密钥Ki(i=1,2, …,16),通过密钥的循环移动产生新的密钥,每一轮所使用的子密钥是从56 bit的密钥中挑选其中的48 bit构成的,挑选过程从略。 4. f函数的运算过程 f函数用于将数据分组的一半(32 bit)与48 bit的子密钥进行异或运算,为此需要将32 bit的数据扩展成48 bit。扩展的方法是将32 bit数据首尾相连,6位一组,下一组的头两位与上一组的后两位相同,由此产生的48 bit数据中有16 bit是重复数据。如 32 1 2 3 4 54 5 6 7 8 98 9 10 11 12 1312 13 14 15 16 1716 17 18 19 20 2120 21 22 23 24 2524 25 26 27 28 2928 29 30 31 32 1 这一过程称为扩展置换。扩展置换后的数据再与48 bit的子密钥异或,然后将异或结果通过S盒查表压缩成32 bit数据作为f函数的输出结果,S box的实现原理从略。

  27. 明文 密文 IP置换 IP置换 fki Fk17-i L L R R fki+1 Fk17-i 16轮 16轮 R L L R IP-1置换 IP-1置换 密文 明文 图7-7 DES算法的加解密过程 DES算法规定:数据在做16轮运算之前,预先对数据块的左、右部分进行一次置换,称为初始置换(IP置换),在完成运算输出前再做一次末置换(IP-1置换)。 数据块的解密过程,即XR的逆过程XR-1就是XR,因为:若记 M’’=XRK(M’)=(L’’,R ’’), 则有 L’’=L’=L R’’=R’⊕fk(L)=R⊕fk(L)⊕fk(L)=R 这意味着XR运算和XR运算互相抵消。 同理可知XLK(XLK(M))=M。 图7-7为DES算法的加解密过程。

  28. DES算法的设计技巧主要体现在以下几个方面: • 多次重复同一算法,使数据与密钥充分混合,且采用“左右互博”的结构,保证了算法的可逆性 • 混淆和扩展原理使输入的每一bit都将对两个替换操作产生影响,从而使得输出对输入的依赖性更快传播,这种机制称为“雪崩效应”,这是衡量一个密码学替换是否为一个好的替换的重要指标 • 算法设计采用分组链接技术,使得明文和密文之间具有统计独立性(即相同的明文,加密后的密文不相同),以保证攻击者不能通过统计特性破解算法。 DES算法的设计原理(尤其是S box)始终未予公开。其主要缺陷是56 bit的密钥远远不能满足现实需要,其安全性能不能简单地下一个定性的结论(256≈ 7.2×1016个可能的密钥)。

  29. 明文 用K1加密 用K2解密 用K1加密 密文 1999年美国政府颁布了新的DES标准—3DES,即3倍DES算法。 3DES算法的基本原理是使用两个密钥K1和K2,对数据进行两次加密和一次解密。图7-8显示了3DES的加密过程。 图7-8 3DES加密原理 通过这种组合得到的3DES算法的密钥长度为112 bit,基本能够满足需要

  30. 除此之外,还有其他的一些对称密钥算法,最常见的有:除此之外,还有其他的一些对称密钥算法,最常见的有: • 国际数据加密算法IDEA(International Data Encryption Algorithm):类似于DES加密算法,密钥长度为128 bit,分组长度为64 bit,通过连续8轮迭代和一个输出变换实现加密。特点是易于通过硬件或软件实现(而DES难以用软件实现);运算速度是DES算法的2倍;无法通过穷举法实施攻击。但因专利问题未能广泛使用。 • 高级加密标准算法AES(Advanced Encryption Sdandard):分组长度为128 bit,密钥长度可以是128 bit、192 bit或256 bit,分别称为AES-128、AES-192和AES-256。AES的数学原理是基于椭圆曲线上的点的运算,是一种高强度的免费加密算法。 • RC4算法:属于序列密码算法,通过伪随机数生成器产生长度为1 byte至256 byte的密钥序列,初始密钥经计算得出,其后生成的随机序列的每一字节的状态均发生变化。在使用RC4时通常抛弃随机序列最初的一些字节,以保证算法的安全性。

  31. 7.3 非对称密钥密码体制 7.3.1 公开密钥密码体制的特点 非对称密码体制又称公钥密码体制或双钥密码体制,其特点是使用不同的加密密钥与解密密钥,是一种不能由己知加密密钥推导出解密密钥的密码体制,即解密密钥是加密密钥的一个单向陷门函数,这一特点在数学上描述为: 若函数f是单向陷门,则f满足: ⑴给定定义域内的任意x,计算y=f(x)是容易的; ⑵给定y,计算x,使x=f-1(y)在计算上是不可行的; ⑶存在某个δ,当它已知时,对任何给定的y,若相应的x存在,则计算x,使y=f(x)是容易的。 满足前两项条件的函数f(x)称为单向函数,第⑶个条件称为陷门性,δ称为陷门信息。

  32. B的公钥PK B的私钥SK y=EPK(x) 明文x 明文x 加密算法E 解密算法D 发送方A 接收方B 图7-9 非对称密码体制的加密模型 当用陷门函数f作为加密函数时可将f公开,这相当于公开加密密钥,此时加密密钥称为公钥,记为PK,δ作为设计者个人使用的解密密钥,称为私钥,记为SK。由于加密函数和加密密钥是公开的,任何人都可以利用它将明文x加密成y=f(x)在网上传输,密文y只能由持有私钥SK的设计者容易地解出x=f-1(y)。 加密模型如图7-9所示。 非对称密码体制的产生主要是因为两个方面的原因,一是由于常规密钥密码体制的密钥分配(distrilbution)问题,另一个是由于对数字签名的需求。

  33. 发送端 接收端 发送端 接收端 E 加密算法 E 加密算法 D 加密算法 D 加密算法 明文x y=EPk(x) 明文x 密文Ek(x) 明文x 明文x 公钥PK 私钥SK 加密密钥K 安全通道 密钥对产生源 密钥源 在对称密码体制中,密钥的产生、管理、更新和分配是安全体系中最薄弱的部分。此外,当多个用户对一个用户进行加密通信时,需要多对不同的密钥,这进一步增加了密钥管理的难度。与之相比,非对称密码具有如下特点: ⑴ 它使用单向陷门函数,而不是简单的替代、置换算法,增加了破解难度; ⑵ 它使用相互分离的两个密钥,提高了密钥分配的可靠性;图7-10显示了两种密码体制的密钥分配模型。 图7-10两种密码体制的密钥分配模型

  34. A的私钥 A的公钥 明文 密文 明文 B解密 A加密 发送方A 接收方B 图7-11 认证模型 ⑶ 在多对一加密传输时,无需增加密钥对; ⑷ 适用于数字签名、鉴别、防抵赖等认证系统的应用;认证模型如图7-11所示。 ⑸ 加密运算E(Encryption)与解密运算D(Dicryption)可以对调;即:DSK(EPK(x))=EPK(DSK(x))=x ⑹加密密钥是公开的,但不能用于解密。即:DPK(EPK))≠x 虽然非对称密码体制有很多优点,且具有广泛用途,但从抗击密码分析的角度来说,它并不比对称密码体制更具优越性,也不能取代后者。

  35. 7.3.2 RSA公开密钥密码体制 RSA公开密钥密码体制是由Receive、Shamir、Adelman于1978年提出的一种可逆的非对称密码体制,其算法的数学基础是数论中的费马定理和欧拉定理,并建立在数论中关于分解两个大素数的乘积极其困难的结论之上。 在RSA体制中,每个用户使用两个密钥:加密密钥 PK={e,n} 和解密密钥 SK={d,n}。用户把加密密钥e公开,使得系统中的任何其他用户都可以使用,而对解密密钥中的d则保密。这里,n为两个大素数p和q的乘积(素数p和q一般为100位以上的十进数),e和d 满足一定的关系。即便已知e和n,但仍不能求出d,从而达到加密的目的。 1、加密算法 假设整数X表示明文,用整数Y表示密文(X和Y均小于n),则加密和解密运算分别为:

  36. 加密运算为:Y=Xe mod n(7-1) 解密运算为:X=Yd mod n(7-2) 为什么由(7-1)式产生的密文Y可通过(7-2)式使明文还原?为此需要证明: Yd mod n=(Xe mod n)d mod n=x (7-3) 由模运算法则: [(a mod n)×(b mod n)]mod n=(a×b)mod n 知:(Xe mod n)d mod n=[(xe)d mod n]mod n=xed mod n 设p、q均为素数,n=pq,计算n的欧拉函数: φ(n)=(p-1)×(q-1) 它表示不超过n并与n互素的数的个数,当ed<φ(n)时,根据数论中的有关结论有:xed mod n=x(ed mod φ(n)) mod n 由欧拉定理知:ed mod φ(n)=1 (7-4) ∴ xed mod n=x(ed mod φ(n)) mod n=x mod n=x (7-3)式得证,即(7-2)式成立,这正是我们需要的结论。

  37. 2、密钥的产生 现在讨论RSA算法中每个参数如何选择和计算: ① 计算n:用户秘密地选择两个大素数p和q,计算出 n=p×q ② 计算φ(n): φ(n)=(p-1)×(q-1) ③ 选择 e:用户从[0,φ(n)-1]中选择一个与φ(n)互素的数e作为公开的加密指数。 ④ 计算d:用户计算出满足(7-5)式的d e×d=1 mod φ(n) (7-5) (7-5)式称为欧拉公式,它等价于 e×d-1=0 mod φ(n) (7-6) (7-6)式意味着e×d-1可被φ(n)整除,d即为解密指数。 ⑤ 得出所需要的公开密钥和秘密密钥: 公开密钥(即加密密钥) PK={e,n} 秘密密钥(即解密密钥) SK={d,n}

  38. 例:设选择了两个素数p=7,q=17 (这里仅就原理进行说明,没有选取大于100位的素数)。 计算出n=p×q=7×17=119。 计算出φ(n)=(P-1)×(q-1)=6×16=96。 从[0,95]中选择一个与96互素的数e。我们选e=5。然后根据(7-6)式,有: 5×d-1=0 mod 96 解出 d=77 由此可得: 公开密钥PK={5,119} 秘密密钥SK={77,119}。

  39. 下面对明文进行加密。已知n=119,e=5,d=77,首先将明文划分为一个个分组,使得每个明文分组的二进制值不超过n,即不超过119。现在设明文x=19。下面对明文进行加密。已知n=119,e=5,d=77,首先将明文划分为一个个分组,使得每个明文分组的二进制值不超过n,即不超过119。现在设明文x=19。 用公开密钥加密时,先计算Xe=195=2476099。 再计算Y=Xe mod n,即以2476099除以119,得出商为20807,余数为66。这就是对应于明文19的密文Y的值。 在用秘密密钥SK={77,119}进行解密时,先计算Yd=6677=1.27…×10140。再除以119,得出商为1.06…×10138,余数为19。此余数即解密后应得出的明文X。 若选p和q为大于100位十进制数,则n为大于200位十进制数或大于664位二进制数。这样就可一次对83个字符(每字符8 bit编码)进行加密。

  40. 7.4 报文鉴别 在信息的安全领域中,对付被动攻击的重要措施是加密,而对付主动攻击中的篡改和伪造则要用报文鉴别(message authentication)的方法。报文鉴别是使接收方能够验证所收到的报文(包括发送者和报文内容、发送时间、序列等)的真伪的过程。 使用加密可以达到报文鉴别的目的。但在网络的应用中,许多报文并不需要加密。例如,通知网络上所有的用户有关网络的一些情况。对于不需要加密的报文进行加密和解密,会使计算机增加很多不必要的负担。报文鉴别在传送明文时应使接收者能用很简单的方法鉴别报文的真伪。

  41. 近年来,广泛使用报文摘要MD(Message Digest)来进行报文鉴别。发送端将可变长度的报文m经过报文摘要算法运算后得出固定长度的报文摘要H(m)。然后对H(m)进行加密,得出EK(H(m)),井将其追加在报文m后面发送出去。接收端将EK(H(m))解密还原为H(m),再将收到的报文进行报文摘要运算,看得出的是否为此H(m)。如不一样,则可断定收到的报文不是发送端产生的。报文摘要的优点是:仅对短的定长报文摘要H(m)进行加密比对整个长报文m进行加密简单,但对鉴别报文m来说,效果是一样的。也就是说,m和EK(H(m))合在一起是不可伪造的,是可检验的和不可抵赖的。

  42. 要做到不可伪造,报文摘要算法必须满足以下两个条件:要做到不可伪造,报文摘要算法必须满足以下两个条件: (1) 任给一个报文摘要值x,若想找到一个报文y使得H(y)=x,则在计算上是不可行的。 即不能从一个已知摘要推导出报文。 (2) 若想找到任意两个报文x和y,使得H(x)=H(y),则在计算上是不可行的。即不同的报文不能得到相同的摘要。 上述的两个条件表明:若(m,H(m))是发送者产生的报文和报文摘要对,则攻击者不可能伪造出另一个报文y,使得y与x具有同样的报文摘要。发送者可以对H(m)进行数字签名,使报文成为可检验的和不可抵赖的。 报文经过散列函数运算可以看成是没有密钥的加密运算。在接收端不需要(也无法)将报文摘要解密还原为明文报文。满足上述条件的散列函数称为单向散列函数(one-way hash function)或数字指纹、密码校验和等,它是现代密码学的核心。

  43. 报文摘要算法的一种改进算法MD5具有广泛的应用。它可对任意长的报文进行运算,然后得出128 bit的MD报文摘要代码。MD5的算法大致的过程如下: (1) 先将任意长的报文按模264计算其余数(64 bit)追加在报文的后面。即最后得出的MD代码已包含了报文长度的信息。 (2) 在报文和余数之间填充0—511 bit,使得填充后的总长度是512的整数倍。填充比特的首位是1,后面都是0。 (3) 将追加和填充后的报文分割为一个个512 bit 的数据块,512 bit 的报文数据分成4个128 bit 的数据块依次送到不同的散列函数进行4轮计算。每一轮又都按32 bit 的小数据块进行复杂的运算。一直到最后计算出MD5报文摘要代码。 这样得出的MD5代码中的每一个比特,都与原来报文中的每一个比特有关。 MD5已在因特网上大量使用。

  44. 7.5 数字签名 数字签名是为了解决电文传送者的真实性和可靠性所采用的一种数字技术手段。数字签名必须保证以下三点: ① 接收者能够核实发送者对报文的签名; ② 发送者事后不能抵赖对报文的签名; ③ 接收者不能伪造对报文的签名。 现在已有多种实现各种数字签名的方法。但采用公开密钥算法要比采用常规密钥算法更容易实现。发送者A用秘密密钥SKA对报文X进行签名运算,将结果DSKA(X)传送给接收者B。B用已知的A的公开密钥PKA进行解密,得出EPKA(DSKA(X))=X。因为解密密钥PKA为A独有,所以除A外没有别人能产生密文DSKA(X),这样,B就相信报文X是A签名发送的,如图7-12所示。

  45. 发送者A 接收者B DSK(X) EPK(DSK(X))=X X D E SK 用私钥进行签名 PK 用公钥核实签名 图7-12 数字签名的实现 发送者A用私钥SK对明文X进行加密,称为数字签名,然后将签名后的报文DKS(X)传送给接收者B,B用已知的A的公钥PK进行解密运算,使报文还原,称签名核实。若A要抵赖曾发送报文给B,B可将X及DSKA(X)向第三者出示,第三者利用PKA可以很容易地证实A确实向B发送过报文X。反之,若B将X伪造成X’,则发送者也可以通过DSKA(X’)≠X对原文X进行鉴别。 在实际应用中,经常将报文摘要与数字签名配合使用,这样可以高效实现对传送消息及发送人的认证。其工作原理如图7-13所示。

  46. 单向散列函数 单向散列函数 明文 明文 接收方 发送方 明文 发送方私钥 信息摘要 身份认证 生成摘要  比较 解密过程 信息摘要 信息摘要 信息摘要 信息摘要   生成摘要 加密过程  公开密钥 图7-13 数字签名工作原理 ① 发送方对要发送的信息生成信息摘要; ② 发送方使用秘密密钥对摘要进行数字签名; ③ 发送方将信息连同签名后的摘要一起发送给接收方; ④ 接收方根据收到的信息重构信息摘要; ⑤ 使用公钥对接收到的经过签名的摘要进行解密; ⑥ 将解密后的摘要与重新生成的摘要进行比较,以判断信息在传送过程中是否被篡改。

  47. 发送者A 接收者B X DASK (X) DSKA(X) EBPK (DASK (X)) X E D E D APK 用A的公钥 核实签名 ASK 用A的私钥 签名 BPK 用B的公钥 加密 BSK 用B的私钥 解密 图7-14 具有保密性的数字签名 上述过程仅对报文进行了签名,对报文X本身并未加密。若采用图7-14所示的方法,则可同时实现秘密通信和数字签名。图中ASK和BSK分别为A和B的秘密密钥,而APK和BPK分别为A和B的公开密钥。这一过程称为数字信封。

  48. 7.6 密钥分配 由于密码算法是公开的,网络的安全性就完全基于密钥的安全保护上。因此在密码学中出现了一个重要的分支——密钥管理。密钥管理包括:密钥的产生、分配、注入、验证和使用,属于公钥基础设施PKI(Public Key Infrastructure)应用范畴。本节只讨论密钥的分配。 密钥分配是密钥管理中最大的问题。密钥必须通过最安全的通路进行分配。例如,可以派非常可靠的信使携带密钥分配给互相通信的各用户。这种方法称为网外分配方式。但随着用户的增多和通信量的增大,密钥更换频繁(密钥必须定期更换才能做到可靠),派信使的办法将不再适用。这时应采用网内分配方式,即对密钥自动分配。常见的密钥分配方法有:

  49. 一、Sharmir密钥共享 基本思想是:由k个人分别持有密钥的一部分,仅当k个人均出示各自所持部分时,密钥才能唯一确定。为了实现密钥的安全共享,必须保证即使k-1个人联合起来也无法破解密钥。为此,Sharmir提出了一种通过n维空间中点的表述方法,这是一种基于拉格朗日多项式插值的巧妙方法:假设密钥是k维空间上的一个点,将这个点在k个坐标轴上映射的值作为k个子密钥。根据这k个子密钥可以计算出坐标点,而缺少任何一个坐标值都无法得到坐标点——密钥。 更一般地,Sharmir算法把密钥看成是k维空间的一条曲线,增加了密钥破解的难度。 密钥共享的思想在具体实现方案中,还有基于映射几何、线性代数、孙子定理等多种解决方案。

  50. 二、Diffie-Hellman密钥交换 Diffie-Hellman密钥交换算法是由W.Diffie和M.Hellman于1976年提出的第一个公钥密码算法,其目的是使不同的用户对之间能够安全地交换密钥,以获得一个共享的会话密钥。算法本身不能用于加、解密。 算法的基本思想是:发送方和接收方各自独立秘密地选择一个数,如x和y,并公开确定两个充分大的数,如g和n;利用公开的数和秘密选定的数,分别通过一个函数求出不同的函数值,并相互交换;双方使用交换得到的函数值经再一次计算得出相同的密钥。即使第三方获取了公开的g、n以及相互交换的函数值,仍不能求出密钥。算法的安全性正是建立在求离散对数的困难性上。

More Related