网络安全基础精品文稿.ppt
网络安全基础第1页,本讲稿共76页 7.1 7.1 概述概述本节讨论计算机网络面临的安全性威胁、网络安全的目标和一般的数据加密模型。7.1.1 7.1.1 计算机网络面临的安全性威胁计算机网络面临的安全性威胁网络安全主要涉及网络自身的安全和网络中信息的安全两方面的内容。一、网络自身安全的问题一、网络自身安全的问题在Internet中,对网络的攻击可分为两种类型,即服务攻击与非服务攻击。第2页,本讲稿共76页二、网络中的信息安全问题二、网络中的信息安全问题网络中的信息安全主要面临两个方面的威胁:1、信息存储安全、信息存储安全信息存储安全是指如何防止网络中静态存储的信息被未受权的网络用户非法使用。攻击者常见的攻击手段如绕开网络安全认证系统、猜测或截取用户口令、伪造和冒充合法用户、使用无须授权的网络服务等。2、信息传输安全、信息传输安全计算机网络上的通信主要包括以下3种安全威胁:(1)对信息“表征”功能的攻击威胁 (2)对信息“控制”功能的攻击威胁 (3)对信息载体的攻击 第3页,本讲稿共76页7.1.2 7.1.2 计算机网络安全的目标:计算机网络安全的目标:一、信息的存储及传输安全,包括:(1)防止析出报文内容;(2)防止信息量分析;(3)检测更改报文流;(4)检测拒绝报文服务。二、实体的身份认证,包括:(1)口令、密钥的管理及分发;(2)检测伪造初始化连接。三、接入控制四、行为审计、抗抵赖、可控性五、可用性对付各类攻击通常采用数据加密技术,或将加密技术与适当的鉴别技术相结合。第4页,本讲稿共76页7.1.3 7.1.3 一般的数据加密模型一般的数据加密模型密码技术是网络与信息安全的核心技术之一,它包括加密技术和解密技术两个部分。加密/解密算法的操作通常是在一组密钥的控制下进行的,算法和密钥构成了密码技术的两个基本要素。加密密钥和解密密钥可以是相同的,称为对称密钥体制,也可以是不相同的,称为非对称密钥体制。在设计加密系统时,加密算法作为加密的数学函数,可以是公开的,而密钥密码算法的可变参数则通常是保密的。一个算法的强度(被破译的难度)除了依赖于算法本身以外,还往往与密钥的长度有关。一般的数据加密模型如图7-1所示。第5页,本讲稿共76页其中,明文X用加密算法E和加密密钥K得到密文Y=EK(X)。到了接收端,利用解密算法D和解密密钥K,解出明文为:DK(Y)=DK(EK(X)=X。在这里我们假定加密密钥和解密密钥都是一样的,密钥通常是由一个密钥源提供。当密钥需要向远地传送时,一定要通过另一个安全信道。E加密算法D解密算法明文x明文x密文Y=EK(x)密钥源加密密钥K解密密钥K入侵者安全信道图7-1 一般的数据加密模型第6页,本讲稿共76页 7.2 7.2 对称密钥密码体制对称密钥密码体制常规密钥密码体制是指加密密钥与解密密钥相同的密码体制,替代密码和置换密码是早期常用的两种常规密钥密码体制。以下仅就对称密钥密码体制中最基本的加/解密方法进行介绍。7.2.1 7.2.1 恺撒密码(恺撒密码(Caesar cipherCaesar cipher):):恺撒密码又称替换密码,是一种将明文平移的替换技术,其原理可用一个例子来说明:从表7-1可以看出,如果在保持字母序列a、b、c、x、y、z不变的情况下,建立与另一个序列D、E、F、A、B、C的对应关系(相应位置的字符相差35个字符)。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 zD 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表7-1 字母a、b、c、与D、E、F、对应关系第7页,本讲稿共76页 若明文为小写字母caesar cipher,则对应的密文为大写字母FDHVDU FLSKHU(此时密钥K=35,因为对应的小写字母向左位移了35个字母的位置),接收方利用密钥做相反的平移操作即可获得原文。恺撒密码由于容易破译而很少单独使用,通常作为复杂的编码过程中的一个中间步骤,常见的攻击方法有:(1)穷举法:对密钥空间的所有可能取值逐一测试;(2)频率试探法:已知英文中使用频率最高的字母依次是e、t、o、a、n等,再根据密文中各字母出现的频率进行试探,求出密钥k。第8页,本讲稿共76页 一种改变字母出现频率和顺序的方法是使用多字母密码(polyalphabetic cipher),它对明文中不同位置的字母采用不同的密文字母进行替换。例如,假设数组P P和C C分别代表明文和密文,K K为整数密钥,算法描述为:for(int i=0;ilength of P;i+)Ci=Pi+K+(i mod 3);假设选取密钥K=1,则密文的第0、3、6位为明文对应位的ASCII码值加1,而第1、4、7位为对应位的ASCII码值加2,位置为2、5、8时,字符的值加3。如明文THEMTHENTHEY采用密钥K=1对其进行多字母密码加密后,密文为UJHNVKFPWIG。这种方法可有效减少相同字符反复出现的频率。第9页,本讲稿共76页7.2.2 7.2.2 置换密码(置换密码(transposition ciphertransposition cipher):):是按照某一规则重新排列消息中的比特或字符的顺序,实现加密目的的方法。与替代密码不同,密文中的各个比特或字符只是进行重排,而没有被替换。一种方法是将明文采用一个m列的二维矩阵进行存储,然后以某种约定或随机的顺序分别传送各列字符。接收方只要知道列数及列变换方法,即可重构信息。例如,以CIPHER这个字作为密钥。在此密钥中的各个字符在英文字母表中出现的顺序依次是:C为第1,E为第2,R为第6。于是得出密钥的顺序为145326。这就表示在形成密文时,首先读取第1列的字符(因为密钥中的1位位于第1列),然后读取第5列(因为密钥中的2位于第5列)、第4列、第2列、第3列和第6列。明文也以6个字符为一组写在密钥下。如:假设明文为attack begins at four,密钥为CIPHER,则第10页,本讲稿共76页密钥 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密钥密钥C CO OM MP PU UT TE ER R列号列号1 14 43 35 58 87 72 26 6F FO OL LL LO OW WT TH HE EY YE EL LL LO OW WB BR RI IC CK KR RO OA AD D按行重构原文为:FOLLOW THE YELLOW BRICK ROAD。这种密码很容易破译,主要用于作为加密过程中的中间步骤。这样得出密文为abacnuaiotettgfksr。接收者按密钥中的字母顺序按列写下,按行读出即得明文。例如,已知收到的密文为FHWR LK L BAOE OLYRDTO WLC OEI,共32个字符(含空格),密钥为COMPUTER,则密文矩阵为第11页,本讲稿共76页7.2.3 7.2.3 序列密码序列密码序列密码体制是将明文x看成是连续的比特流(或字符流)x1x2,并且用密钥序列 K=k1k2中的第1个元素k1对明文中的x1进行加密,第2个元素k2对明文中的x2进行加密,即 Ek(X)=Ek1(x1)Ek2(x2)序列密码又称为密钥流密码。这种体制的保密性完全在于密钥的随机性。如果密钥是真正的随机数,则这种体制就是理论上不可破的。这也可称为一次一密乱码本体制。图7-2给出了序列密码的框图。+发送端接收端种子I0种子I0 xiyikixiki明文序列明文序列密文序列图7-2 序列密码体制密钥序列产生器密钥序列产生器第12页,本讲稿共76页图中ki、xi和yi均为 1bit,并按模2进行异或运算:在发送端,密文比特 yiEki(xi)xi ki在接收端,明文比特 xiDki(yi)yi ki(xi ki)ki 从上述算法可以看出,解密过程不像前面介绍过的方法:解密是加密步骤的逆过程。在序列密码体制中,加密算法、加密密钥和解密算法以及解密密钥完全一样,或者说,解密过程是加密过程的重复。严格的一次一密乱码本体制所需的密钥量不存在上限,极端情况下,密钥长度与待发送的信息长度一致,由于需要将密钥传给对方,且只使用一次,故很难实用化。目前常使用伪随机序列作为密钥序列。关键是序列的周期要足够长,且序列要有很好的随机性,满足这一要求的算法很难寻找。另一个缺点是一个比特的丢失会影响消息的正确解密。第13页,本讲稿共76页7.2.4 7.2.4 分组密码分组密码另一种密码体制将明文划分成固定的n比特的数据组,然后以组为单位,在密钥的控制下进行一系列的线性或非线性的变化而得到密文,称为分组密码(block cipher)。图7-3为分组密码体制的框图。分组密码一次变换一组数据。分组密码算法的一个重要特点就是:当给定一个密钥后,若明文分组相同,那么所变换出密文分组也相同。图7-3 分组密码体制加密算法解密算法密钥长 明 文固定长度明文分组固定长度密文分组第14页,本讲稿共76页分组加密算法存在如下攻击危险:1.密文挪用攻击例如,假设银行前台与结算中心数据库交换数据格式为帐号名称取款/存款:0取款。1存款资金数额 其中每个数据项占用一个分组(64bit),每次对一个分组进行加密传输。假设攻击者预先侦听到如下密文:密文分组c1c2c3c4c5c6明文含义 帐号A 存入 1000元 帐号B 取出 2000元攻击者用自己的帐号C取出10000元,其明文及其对应的密文为帐号C取款10000元C7C8C9比较各个密文分组可知,密文C8=C5,表示取款,C2即为存款。攻击者只需以C2替换C8,解密后的明文为帐号C存款10000元第15页,本讲稿共76页 攻击者在银行存入1元钱,将密文分组中对应的存款金额一栏进行任意更改,虽然攻击者在篡改时未必知道其值及含义,但一般而言,解密后的值都将超过1元。2.篡改密文攻击3.分组重排攻击 攻击者用帐号C存入一笔钱(如10元),若其收到一个密文序列对应明文 攻击者将密文分组重新排列为c1c2c3c4c5c6c7c8c9帐号A存款1000帐号B取款200帐号C存款10帐号C存款1000帐号B取款200帐号A存款10对应明文c7c2c3c4c5c6c1c8c9密文序列第16页,本讲稿共76页避免上述攻击危险的方法是采用密文分组链接技术,以克服各分组独立加密,对某一个分组的攻击可能影响整个报文合法性的问题。其基本思想是将当前要加密的分组与上一个分组加密后得到的密文异或后再进行加密,而解密时得到的结果与上一个密文分组异或即可获得明文。图74显示了这一过程P1P2P3P4P5C1C2C3C4C5EEEEEIV图74 密文分组链接技术的实现过程图中IV为初始向量(密钥)。上述过程可描述为:加密:Ci=E(P1IV)i=1E(PiCi1)i=2,3,n解密:Pi=D(C1)IV i=1D(Ci)Ci1 i=2,3,n第17页,本讲稿共76页密文分组链接技术的优点是:相同的明文分组加密后得到的密文分组不一样;任何一个密文分组都与前面的所有分组有联系,对任意一个密文分组的修改都将影响到其后的分组,便于进行攻击检测;无法对任意一个密文分组进行单独解密。缺点是若有分组丢失,则其后的加密将是无效的。第18页,本讲稿共76页7.2.5 7.2.5 数据加密标准数据加密标准DESDES(Data Encryption StandardData 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。如图75所示。图75 DES基本操作fK(L)L RL RfK(L)第19页,本讲稿共76页若原始数据块为M,密钥为K,运算过程为XR,即:M=(L,R),M=XRK(M)=(L,R)则 L=L,R=RfK(L)相同的运算也可用于将数据块的右半部分经变换异或到左半部分。如图76所示,这个过程记为XLK(M)。2.DES的基本结构 DES算法的基本结构就是经过16轮XR和XL交叉运算,实现数据的充分混合,达到加密的目的。这一过程描述为:PXR XL XR XL XR XL XR XL XR XL XR XL XR XL XR C其中P是数据块明文,C是对应密文。每一步运算使用不同的密钥,上一步的输出作为下一步的输入。图76 XLK(M)操作fK(R)L R LfK(R)R第20页,本讲稿共76页 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 5 4 5 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17 16 17 18 19 20 21 20 21 22 23 24 25 24 25 26 27 28 29 28 29 30 31 32 1 这一过程称为扩展置换。扩展置换后的数据再与48 bit的子密钥异或,然后将异或结果通过S盒查表压缩成32 bit数据作为f函数的输出结果,S box的实现原理从略。第21页,本讲稿共76页DES算法规定:数据在做16轮运算之前,预先对数据块的左、右部分进行一次置换,称为初始置换(IP置换),在完成运算输出前再做一次末置换(IP-1置换)。数据块的解密过程,即XR的逆过程XR-1就是XR,因为:若记 M=XRK(M)=(L,R),则有 L=L=L R=Rfk(L)=Rfk(L)fk(L)=R这意味着XR运算和XR-1运算互相抵消。同理可知XLK(XLK(M)=M。图77为DES算法的加解密过程。明文IP置换LRfkifki+116轮RLIP-1置换密文密文IP置换LRfk17ifk17-i16轮RLIP-1置换明文图77 DES算法的加解密过程第22页,本讲稿共76页DES算法的设计技巧主要体现在以下几个方面:多次重复同一算法,使数据与密钥充分混合,且采用“左右互博”的结构,保证了算法的可逆性 混淆和扩展原理使输入的每一bit都将对两个替换操作产生影响,从而使得输出对输入的依赖性更快传播,这种机制称为“雪崩效应”,这是衡量一个密码学替换是否为一个好的替换的重要指标 算法设计采用分组链接技术,使得明文和密文之间具有统计独立性(即相同的明文,加密后的密文不相同),以保证攻击者不能通过统计特性破解算法。DES算法的设计原理(尤其是S box)始终未予公开。其主要缺陷是56 bit的密钥远远不能满足现实需要,其安全性能不能简单地下一个定性的结论(256 7.21016个可能的密钥)。第23页,本讲稿共76页1999年美国政府颁布了新的DES标准3DES,即3倍DES算法。3DES算法的基本原理是使用两个密钥K1和K2,对数据进行两次加密和一次解密。图78显示了3DES的加密过程。明文密文用K1加密用K2解密用K1加密图78(a)3DES加密原理加解密过程可以简单描述为E-D-E和D-E-D。通过这种组合得到的3DES算法的密钥长度为112 bit,基本能够满足需要密文明文用K1解密用K2加密用K1解密图78(b)3DES解密原理第24页,本讲稿共76页除此之外,还有其他的一些对称密钥算法,最常见的有:国际数据加密算法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时通常抛弃随机序列最初的一些字节,以保证算法的安全性。第25页,本讲稿共76页7.3 7.3 非对称密钥密码体制非对称密钥密码体制7.3.1 7.3.1 公开密钥密码体制的特点公开密钥密码体制的特点非对称密码体制又称公钥密码体制或双钥密码体制,其特点是使用不同的加密密钥与解密密钥,是一种不能由己知加密密钥推导出解密密钥的密码体制,即解密密钥是加密密钥的一个单向陷门函数,这一特点在数学上描述为:若函数f是单向陷门,则f满足:给定定义域内的任意x,计算y=f(x)是容易的;给定y,计算x,使x=f-1(y)在计算上是不可行的;存在某个,当它已知时,对任何给定的y,若相应的x存在,则计算x,使y=f(x)是容易的。满足前两项条件的函数f(x)称为单向函数,第个条件称为陷门性,称为陷门信息。第26页,本讲稿共76页当用陷门函数f作为加密函数时可将f公开,这相当于公开加密密钥,此时加密密钥称为公钥,记为PK,作为设计者个人使用的解密密钥,称为私钥,记为SK。由于加密函数和加密密钥是公开的,任何人都可以利用它将明文x加密成y=f(x)在网上传输,密文y只能由持有私钥SK的设计者容易地解出x=f-1(y)。加密模型如图79所示。非对称密码体制的产生主要是因为两个方面的原因,一是由于常规密钥密码体制的密钥分配(distrilbution)问题,另一个是由于对数字签名的需求。明文x明文xB的公钥PKB的私钥SK加密算法E解密算法Dy=EPK(x)图79 非对称密码体制的加密模型发送方发送方A A接收方接收方B B第27页,本讲稿共76页在对称密码体制中,密钥的产生、管理、更新和分配是安全体系中最薄弱的部分。此外,当多个用户对一个用户进行加密通信时,需要多对不同的密钥,这进一步增加了密钥管理的难度。与之相比,非对称密码具有如下特点:它使用单向陷门函数,而不是简单的替代、置换算法,增加了破解难度;它使用相互分离的两个密钥,提高了密钥分配的可靠性;图710显示了两种密码体制的密钥分配模型。明文x明文x明文x明文xE加密算法D加密算法密文Ek(x)密钥源加密密钥K安全通道发送端接收端E加密算法D加密算法y=EPk(x)密钥对产生源私钥SK公钥PK发送端接收端图710两种密码体制的密钥分配模型第28页,本讲稿共76页 在多对一加密传输时,无需增加密钥对;适用于数字签名、鉴别、防抵赖等认证系统的应用;认证模型如图711所示。加密运算E(Encryption)与解密运算D(Dicryption)可以对调;即:DSK(EPK(x)=EPK(DSK(x)=x加密密钥是公开的,但不能用于解密。即:DPK(EPK(x)x虽然非对称密码体制有很多优点,且具有广泛用途,但从抗击密码分析的角度来说,它并不比对称密码体制更具优越性,也不能取代后者。明文明文密文A加密B解密A的私钥A的公钥发送方A接收方B图711 认证模型第29页,本讲稿共76页 7.3.2 RSA7.3.2 RSA公开密钥密码体制公开密钥密码体制RSA公开密钥密码体制是由Receive、Shamir、Adelman于1978年提出的一种可逆的非对称密码体制,其算法的数学基础是数论中的费马定理和欧拉定理,并建立在数论中关于分解两个大素数的乘积极其困难的结论之上。在RSA体制中,每个用户使用两个密钥:加密密钥 PK=e,n 和解密密钥 SKd,n。用户把加密密钥e公开,使得系统中的任何其他用户都可以使用,而对解密密钥中的d则保密。这里,n为两个大素数p和q的乘积(素数p和q一般为100位以上的十进数),e和d 满足一定的关系。即便已知e和n,但仍不能求出d,从而达到加密的目的。1、加密算法假设整数X表示明文,用整数Y表示密文(X和Y均小于n),则加密和解密运算分别为:第30页,本讲稿共76页加密运算为:Y YX Xe e mod n mod n (7-1)解密运算为:X XY Yd d mod n mod n (7-2)为什么由(71)式产生的密文Y可通过(72)式使明文还原?为此需要证明:Yd mod n=(Xe mod n)d mod n=x (7-3)由模运算法则:(a mod n)(b mod n)mod n=(ab)mod n知:(Xe mod n)d mod n=(xe)d mod nmod n=xed mod n设p、q均为素数,n=pq,计算n的欧拉函数:(n)=(p-1)(q-1)它表示不超过n并与n互素的数的个数,当ed(n)时,根据数论中的有关结论有:xed mod n=x(ed mod(n)mod n由欧拉定理知:ed mod(n)=1 (74)xed mod n=x(ed mod(n)mod n=x mod n=x(73)式得证,即(7-2)式成立,这正是我们需要的结论。第31页,本讲稿共76页2、密钥的产生现在讨论RSA算法中每个参数如何选择和计算:计算n:用户秘密地选择两个大素数p和q,计算出 npq 计算(n):(n)=(p-1)(q-1)选择 e:用户从0,(n)-1中选择一个与(n)互素的数e作为公开的加密指数。计算d:用户计算出满足(75)式的d ed1 mod(n)(7-5)(75)式称为欧拉公式,它等价于 ed10 mod(n)(7-6)(7-6)式意味着ed1可被(n)整除,d即为解密指数。得出所需要的公开密钥和秘密密钥:公开密钥(即加密密钥)PKe,n 秘密密钥(即解密密钥)SKd,n第32页,本讲稿共76页例:设选择了两个素数p7,q17(这里仅就原理进行说明,没有选取大于100位的素数)。计算出npq717119。计算出(n)=(P-1)(q-1)616=96。从0,95中选择一个与96互素的数e。我们选e5。然后根据(7-6)式,有:5d-10 mod 96解出 d77由此可得:公开密钥PK5,119秘密密钥SK77,119。第33页,本讲稿共76页下面对明文进行加密。已知n=119,e=5,d=77,首先将明文划分为一个个分组,使得每个明文分组的二进制值不超过n,即不超过119。现在设明文x19。用公开密钥加密时,先计算Xe=195=2476099。再计算Y=Xe mod n,即以2476099除以119,得出商为20807,余数为66。这就是对应于明文19的密文Y的值。在用秘密密钥SK=77,119进行解密时,先计算Yd66771.2710140。再除以119,得出商为1.0610138,余数为19。此余数即解密后应得出的明文X。若选p和q为大于100位十进制数,则n为大于200位十进制数或大于664位二进制数。这样就可一次对83个字符(每字符8 bit编码)进行加密。第34页,本讲稿共76页 7.4 7.4 报文鉴别报文鉴别在信息的安全领域中,对付被动攻击的重要措施是加密,而对付主动攻击中的篡改和伪造则要用报文鉴别(message authentication)的方法。报文鉴别是使接收方能够验证所收到的报文(包括发送者和报文内容、发送时间、序列等)的真伪的过程。使用加密可以达到报文鉴别的目的。但在网络的应用中,许多报文并不需要加密。例如,通知网络上所有的用户有关网络的一些情况。对于不需要加密的报文进行加密和解密,会使计算机增加很多不必要的负担。报文鉴别在传送明文时应使接收者能用很简单的方法鉴别报文的真伪。第35页,本讲稿共76页近年来,广泛使用报文摘要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)合在一起是不可伪造的,是可检验的和不可抵赖的。第36页,本讲稿共76页要做到不可伪造,报文摘要算法必须满足以下两个条件:(1)(1)任给一个报文摘要值任给一个报文摘要值x x,若想找到一个报文,若想找到一个报文y y使得使得H(y)=xH(y)=x,则在计,则在计算上是不可行的。算上是不可行的。即不能从一个已知摘要推导出报文。即不能从一个已知摘要推导出报文。(2)(2)若想找到任意两个报文若想找到任意两个报文x x和和y y,使得,使得H(x)H(x)H(y)H(y),则在计算上是不,则在计算上是不可行的。即不同的报文不能得到相同的摘要。可行的。即不同的报文不能得到相同的摘要。上述的两个条件表明:若(m,H(m)是发送者产生的报文和报文摘要对,则攻击者不可能伪造出另一个报文y,使得y与x具有同样的报文摘要。发送者可以对H(m)进行数字签名,使报文成为可检验的和不可抵赖的。报文经过散列函数运算可以看成是没有密钥的加密运算。在接收端不需要(也无法)将报文摘要解密还原为明文报文。满足上述条件的散列函数称为单向散列函数(one-way hash function)或数字指纹、密码校验和等,它是现代密码学的核心。第37页,本讲稿共76页报文摘要算法的一种改进算法MD5具有广泛的应用。它可对任意长的报文进行运算,然后得出128 bit的MD报文摘要代码。MD5的算法大致的过程如下:(1)先将任意长的报文按模264计算其余数(64 bit)追加在报文的后面。即最后得出的MD代码已包含了报文长度的信息。(2)在报文和余数之间填充0511 bit,使得填充后的总长度是512的整数倍。填充比特的首位是1,后面都是0。(3)将追加和填充后的报文分割为一个个512 bit 的数据块,512 bit 的报文数据分成4个128 bit 的数据块依次送到不同的散列函数进行4轮计算。每一轮又都按32 bit 的小数据块进行复杂的运算。一直到最后计算出MD5报文摘要代码。这样得出的MD5代码中的每一个比特,都与原来报文中的每一个比特有关。MD5已在因特网上大量使用。第38页,本讲稿共76页7.5 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所示。第39页,本讲稿共76页发送者A用私钥SK对明文X进行加密,称为数字签名,然后将签名后的报文DKS(X)传送给接收者B,B用已知的A的公钥PK进行解密运算,使报文还原,称签名核实。若A要抵赖曾发送报文给B,B可将X及DSKA(X)向第三者出示,第三者利用PKA可以很容易地证实A确实向B发送过报文X。反之,若B将X伪造成X,则发送者也可以通过EPKA(DSKA(X)X对原文X进行鉴别。在实际应用中,经常将报文摘要与数字签名配合使用,这样可以高效实现对传送消息及发送人的认证。其工作原理如图7-13所示。D DE EXEPK(DSK(X)=XDSK(X)SK用私钥进行签名PK用公钥核实签名图7-12 数字签名的实现发送者A接收者B第40页,本讲稿共76页 发送方对要发送的信息生成信息摘要;图7-13 数字签名工作原理信息摘要生成摘要单向散列函数明文明文发送方发送方信息摘要明文单向散列函数生成摘要信息摘要解密过程比较身份认证接收方接收方加密过程信息摘要信息摘要发送方私钥公开密钥 发送方使用秘密密钥对摘要进行数字签名;发送方将信息连同签名后的摘要一起发送给接收方;接收方根据收到的信息重构信息摘要;使用公钥对接收到的经过签名的摘要进行解密;将解密后的摘要与重新生成的摘要进行比较,以判断信息在传送过程中是否被篡改。第41页,本讲稿共76页上述过程仅对报文X进行了签名,对报文X本身并未加密。若采用图7-14所示的方法,则可同时实现秘密通信和数字签名。图中ASK和BSK分别为A和B的秘密密钥,而APK和BPK分别为A和B的公开密钥。这一过程称为数字信封。D DE EXXEBPK(DASK(X)ASK用A的私钥签名BPK用B的公钥加密D DBSK用B的私钥解密E EDSKA(X)APK用A的公钥核实签名发送者发送者A A接收者接收者B B图7-14 具有保密性的数字签名数字信封DASK(X)第42页,本讲稿共76页 7.6 7.6 密钥分配密钥分配由于密码算法是公开的,网络的安全性就完全基于密钥的安全保护上。因此在密码学中出现了一个重要的分支密钥管理。密钥管理包括:密钥的产生、分配、注入、验证和使用,属于公钥基础设施PKI(Public Key Infrastructure)应用范畴。本节只讨论密钥的分配。密钥分配是密钥管理中最大的问题。密钥必须通过最安全的通路进行分配。例如,可以派非常可靠的信使携带密钥分配给互相通信的各用户。这种方法称为网外分配方式。但随着用户的增多和通信量的增大,密钥更换频繁(密钥必须定期更换才能做到可靠),派信使的办法将不再适用。这时应采用网内分配方式,即对密钥自动分配。常见的密钥分配方法有:第43页,本讲稿共76页一、Sharmir密钥共享基本思想是:由k个人分别持有密钥的一部分,仅当k个人均出示各自所持部分时,密钥才能唯一确定。为了实现密钥的安全共享,必须保证即使k-1个人联合起来也无法破解密钥。为此,Sharmir提出了一种通过n维空间中点的表述方法,这是一种基于拉格朗日多项式插值的巧妙方法:假设密钥是k维空间上的一个点,将这个点在k个坐标轴上映射的值作为k个子密钥。根据这k个子密钥可以计算出坐标点,而缺少任何一个坐标值都无法得到坐标点密钥。更一般地,Sharmir算法把密钥看成是k维空间的一条曲线,增加了密钥破解的难度。密钥共享的思想在具体实现方案中,还有基于映射几何、线性代数、孙子定理等多种解决方案。第44页,本讲稿共76页二、Diffie-Hellman密钥交换Diffie-Hellman密钥交换算法是由W.Diffie和M.Hellman于1976年提出的第一个公钥密码算法,其目的是使不同的用户对之间能够安全地交换密钥,以获得一个共享的会话密钥。算法本身不能用于加、解密。算法的基本思想是:发送方和接收方各自独立秘密地选择一个数,如x和y,并公开确定两个充分大的数,如g和n;利用公开的数和秘密选定的数,分别通过一个函数求出不同的函数值,并相互交换;双方使用交换得到的函数值经再一次计算得出相同的密钥。即使第三方获取了公开的g、n以及相互交换的函数值,仍不能求出密钥。算法的安全性正是建立在求离散对数的困难性上。第45页,本讲稿共76页例如,假设在加密密钥计算过程中,A、B双方共同使用两个整数 g 和 n。首先,A选择一个整数x,计算gx mod n 发送给对方B。类似的,B独立地选择一个整数y,并将gy mod n 的计算结果发送给A。A在收到B送来的值后求出 k1=(gy mod n)x mod n=gyx mod n同理,B依据A送来的值计算出 k2=(gX mod n)Y mod n=gxy mod n根据模运算的性质可知,gyx mod n gxy mod n,即:k1=k2=k,A、B双方以k作为加密/解密密钥。当 g 和 n 的选取足够大时(不小于100个比特),即使窃听者知道了g、n、gy mod n、gX mod n 的值,也很难推导出密钥 k。Diffie-hellman密钥交换过程如图7-15所示第46页,本讲稿共76页Diffie-hellman密钥算法适用于对称加密过程。这种方法虽然不能轻易破译密钥k,但易受入侵者密码替换攻击,达到截获信息的目的。发送g X X mod n 发送g y y mod n 选择x并保密选择y并保密第三方即使知道g、n、g X X mod n、g y y mod n,仍不能轻易得到k?图7-15 Diffie-hellman密钥交换过程AB计算k=g yxyx mod n计算k=g xyxy mod n第47页,本讲稿共76页三、密钥托管常用的密钥托管技术是由政府或相关技术部门设立密钥分配中心KDC(Key Distribution Center),通过KDC来产生和分配密钥。图7-16为一种对常规密钥进行分配的方法,我们假定用户A和B都是KDC的注册用户,他们分别拥有与KDC通信的密钥KA-KDC和KB-KDC。用户A用户B用户专用主密钥文件 K KB-KDCB-KDCB BK KA-KDCA-KDCA A主密钥主密钥用户用户KA-KDC(A,B)KA-KDC(R1,KB-KDC(A,R1)KB-KDC(A,R1)A和B用密钥R1进行通信图7-16 常规密钥分配协议KDC第48页,本讲稿共76页密钥分配可分为三个步骤:用户A向KDC发送用自己的密钥 KA-KDC 加密的报文KA-KDC(A,B),说明想和用户B通信。KDC用随机数产生一个密钥R1供A和B这次的通信使用,然后向A发送回答报文,此报文用A自己的密钥KA-KDC加密,报文中有密钥R1和请A转给B的报文KB-KDC,被转交的报文是用B自己的密钥加密的,因此A无法知道报文内容。当B收到A转来的报文KB-KDC(A,R1)后,就知道A要和他通信,同时也知道应当使用的密钥R1。此后,A和B就可使用密钥R1进行这次通信了。KDC可在报文中加入时间戳,以防止报文的截取者利用以前已记录下的报文进行重放攻击。密钥 R1是一次性的,因此保密性较高。而KDC分配给用户的密钥,如KA-KDC和KB-KDC,都应定期更换以减少攻击者破译密钥的机会。第49页,本讲稿共76页 7.7 7.7 链路加密与端到端加密链路加密与端到端加密 从网络传输的角度看,通常有两种不同的加密策略,即链路加密与端到端加密。本节将分别进行讨论。7.7.1 7.7.1 链路加密链路加密 在采用链路加密的网络中,每条通信链路上的加密是独立实现的。通常对每条链路使用不同的加密密钥。如图7-11所示。明文XE1明文XDKE1(X)链路1E2(X