




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章认证与数字签名(下)信息安全系jlsxm@第3章认证与数字签名(下)信息安全系主要内容认证基本概念
身份认证消息认证数字签名主要内容认证基本概念没有消息认证的通信系统是极为危险的
没有消息认证的通信系统是极为危险的需求泄密:将消息透露给没有合法秘密钥的任何人或程序。传输分析:分析通信双方的通信模式,如连接频率,时间等伪装:攻击者产生一条消息并声称来自某合法实体内容修改:对消息进行插入、删除、转化、修改顺序修改:对消息顺序进行插入、删除、重新排序计时修改:对消息的延时和重放发送方否认接受方否认对付1、2可用加密;对付3、4、5、6可用消息认证;对付7、8可用数字签名需求泄密:将消息透露给没有合法秘密钥的任何人或程序。消息认证(MessageAuthentication)
消息认证用于抗击主动攻击验证接收消息的真实性和完整性真实性的确是由所声称的实体发过来的完整性未被篡改、插入和删除验证消息的顺序性和时间性(未重排、重放和延迟)消息认证(MessageAuthentication)消消息认证的基本概念认证符:一个用来认证消息的值。由消息的发送方产生认证符,并传递给接收方。认证函数:产生认证符的函数,认证函数实际上代表了一种产生认证符的方法。消息加密函数消息认证码Hash函数消息认证的基本概念认证符:一个用来认证消息的值。由消息的发送消息加密函数对消息的自身加密所得到的密文,可以作为一个认证的度量。消息认证符:用完整信息的密文作为对信息鉴别的认证符。既可以使用对称加密模式,也可以使用公钥加密模式作为消息加密函数,两者有所不同。消息加密函数对消息的自身加密所得到的密文,可以作为一个认证的消息加密函数---在对称加密体制下在对称加密体制下,发送者A和接收者B双方共同拥有密钥,A把加密过的信息传送给B,如上图所示。由于攻击者不知道密钥K,他也就不知道如何改变密文中的信息位才能在明文中产生预期的改变。因此,接收方B只要能顺利解出明文,就知道信息在中途没有被人更改过。可以根据解密后的明文是否具有合理的语法结构来进行消息认证。MEKEK(M)DKM消息加密函数---在对称加密体制下在对称加密体制下,发送者A消息加密函数---在对称加密体制下问题:但有时发送的明文本身并没有明显的语法结构或特征,例如二进制文件,因此很难确定解密后的消息就是明文本身。为了解决这个问题,要求明文具有某种易于识别的结构,并且不通过加密函数是无法重复这个结构的。最简单的办法是在加密前对消息附加一个错误检测码FCS,或称帧校验序列、校验和。MEKEK(M)DKM消息加密函数---在对称加密体制下问题:但有时发送的明文本身①根据明文M和公开的函数F产生FCS。②把M和FCS合在一起加密,并传输。③接收端把密文解密,得到M。④根据得到的M,按照F计算FCS,并与接收到的FCS比较是否相等。注:如果攻击者修改了密文,则接收者计算出来的FCS与其收到的FCS将无法匹配。MFFMFCS比较EKDKMFCS内部错误控制①根据明文M和公开的函数F产生FCS。MFFMFCS比较EK这里,加密函数和F函数的执行顺序非常重要。由于函数F是公开的,若先加密再计算FCS,则攻击者可以构造具有正确错误控制码的消息,虽然攻击者不知道解密后的明文,但可以造成混淆并破坏通信。MFFCSEKDKM外部错误控制F比较这里,加密函数和F函数的执行顺序非常重要。MFFCSEKDK消息加密---在公钥加密体制下发送方A用接收方B的公钥对消息加密,然后传输给B。B用自己的私钥解密。MEKUbEKUb(M)DKRbMAB消息加密---在公钥加密体制下发送方A用接收方B的公钥对消息消息加密---在公钥加密体制下由于大家都知道B的公钥,任何人都可以向B发送消息,所以B无法确认消息的来源和内容的真实性。因此,这种方式不提供认证,只提供加密。MEKUbEKUb(M)DKRbMI.普通加密AB消息加密---在公钥加密体制下由于大家都知道B的公钥,任何人消息加密---在公钥加密体制下发送方A用自己的私钥进行加密,然后传输给接收方B。B用A的公钥解密。如果B能够用A的公钥解密,则说明该消息的确是由A发送的,且消息内容没有被篡改。MEKRaEKRa(M)DKUaMAB消息加密---在公钥加密体制下发送方A用自己的私钥进行加密,消息加密---在公钥加密体制下由于只有A有用于产生EKRa(M)的密钥,所以此方法提供认证。由于大家都有KUa
,所以此方法不提供加密。MEKRaEKRa(M)DKUaMII.认证和签名AB消息加密---在公钥加密体制下由于只有A有用于产生EKRa消息加密---在公钥加密体制下提供认证和加密。一次通信中要执行四次复杂的公钥算法,计算代价非常高。所以,第二、三两种方法一般在认证时极少应用。MEKRaEKRa(M)DKUaMIII.加密认证和签名ABEKUbEKUb(EKRa(M))DKRbEKRa(M)消息加密---在公钥加密体制下提供认证和加密。MEKRaEK消息认证码(MAC)MessageAuthenticaionCode,也称为报文鉴别码或是消息鉴别码。消息认证码是消息和密钥的公开函数,它产生定长的值,以该值作为认证符。这种机制的核心是一个类似于加密的算法CK。该算法需要使用一个密钥,并以需要认证的消息作为输入,算法的输出值是一个较短的定长数据分组,也就是MAC,即:MAC=CK(M)消息认证码(MAC)MessageAuthenticaio消息认证码用于认证A和B共享密钥KA计算MAC=Ck(M),M和MAC一起发送到BB对收到的M,计算MAC,比较两个MAC是否相同。MCMACKC比较KMAC如果两个MAC相等,则:接收方可以相信消息未被修改,因为如果攻击者改变了消息,由于不知道k,无法生成正确的MAC。接收方可以相信消息的确来自确定的发送方。因为其他人不能生成和原始消息相应的MAC。消息认证码用于认证A和B共享密钥KMCMACKC比较KMACMAC函数与加密函数的区别MAC函数与加密函数类似,都需要明文、密钥和算法的参与。而两者的差别在于:加密算法必须是可逆的,对其结果能够解密;而MAC算法不要求可逆性,甚至可以是一个单向函数。例如:使用100比特的消息和10比特的MAC,那么总共有2100个不同的消息,但仅有210个不同的MAC。也就是说,平均每290个消息使用的MAC是相同的。MAC函数与加密函数的区别MAC函数与加密函数类似,都需要明消息认证码的基本用途消息认证码只提供消息认证,不提供保密性。若要提供保密性,可以结合加密体制,从而同时提供消息认证和保密性:M||CK1CMCK(M)K1比较EK2DK2ABA和B共享K1和K2K1:用于生成MACK2:用于加密与明文有关的认证消息认证码的基本用途消息认证码只提供消息认证,不提供保密性。消息认证码的基本用途提供消息认证和保密性:ABA和B共享K1和K2K1:用于生成MACK2:用于加密与密文有关的认证M||CK1CK1比较EK2DK2消息认证码的基本用途提供消息认证和保密性:ABA和B共享K1消息认证码的基本用途
问题:为什么要专门找MAC函数来提供认证,而不直接使用加密方法来提供认证呢?原因有三:(1)信息加密主要是提供机密性而非真实性。(2)加密计算的代价大,特别是当信息内容比较长的时候,加密所占用的资源太多。(3)认证函数与加密函数的分离能提供功能上的灵活性。有时只需提供机密性,而不需要提供真实性;有时只需要真实性,不需要机密性。消息认证码的基本用途问题:为什么要专门找MAC函数来提供基于DES的消息认证码使用最广泛的MAC算法之一:数据认证算法算法基于密文块链接(CBC)模式的DES算法,计算数据认证码DAC的过程如下:①把需要认证的数据分成连续的64位的分组。②若最后一个分组不是64位,则填0③利用DES加密算法E和密钥K,计算认证码。基于DES的消息认证码使用最广泛的MAC算法之一:数据认证算DAC可以取整个ON块,或者取为ON的最左M个比特。DACM-bits(16to64bits)DAC可以取整个ON块,或者取为ON的最左M个比特。DACHash函数(杂凑函数、散列函数)Hash的特点:与消息认证码一样,hash函数的输入是长度可变的消息M,输出是固定大小的hash码H(M),或称消息摘要(MessageDigest)、hash值。与消息认证码不同的是,hash码的产生过程中并不使用密钥。Hash码是所有消息的函数,改变消息的任何一位或多位,都会导致hash码的改变。Hash算法通常是公开的。又称为:哈希函数、数字指纹(Digitalfingerprint)、压缩(Compression)函数、紧缩(Contraction)函数、数据鉴别码DAC(Dataauthenticationcode)、篡改检验码MDC(Manipulationdetectioncode)Hash函数(杂凑函数、散列函数)Hash的特点:h=H(M)
假定两次输入同样的数据,那么散列函数应该能够生成相同的散列值。输入数据中的一位发生了变化,会导致生成的散列值完全不一样。散列函数有个非常重要的特性为单向性,也就是从M计算h容易,而从h计算M不可能。
h=H(M)假定两次输入同样的数据,那么散列函数应该能够生网络信息安全-第3章认证与数字签名(下)课件网络信息安全-第3章认证与数字签名(下)课件网络信息安全-第3章认证与数字签名(下)课件网络信息安全-第3章认证与数字签名(下)课件迭代型hash函数的一般结构fffY0Y1YL-1bbbnnnnnIV=CV0CV1CVL-1CVL明文M被分为L个分组Y0,Y1,…,YL-1b:明文分组长度n:输出hash长度CV:各级输出,最后一个输出值是hash值无碰撞压缩函数f是设计的关键迭代型hash函数的一般结构fffY0Y1YL-1bbbnn迭代型hash函数这种结构的hash函数已被证明是合理的,如果采用其他结构,不一定安全。设计新的hash函数只是改进这种结构,或者增加hash码长。算法的核心技术是设计无碰撞的压缩函数f,而敌手对算法的攻击重点是f的内部结构,由于f和分组密码一样是由若干轮处理过程组成,所以对f的攻击需通过对各轮之间的位模式的分析来进行,分析过程常常需要先找出f的碰撞。由于f是压缩函数,其碰撞是不可避免的,因此在设计f时就应保证找出其碰撞在计算上是不可行的。迭代型hash函数这种结构的hash函数已被证明是合理的,如MD5hash算法
MD5HashAlgorithm
MD4是MD5杂凑算法的前身,由RonRivest于1990年10月作为RFC提出,1992年4月公布的MD4的改进(RFC1320,1321)称为MD5。MD5hash算法
MD5HashAlgorithm
MD5的算法框图输入消息可任意长,压缩后输出为128bits。MD5的算法框图输入消息可任意长,压缩后输出为128bits算法步骤(1)-分组填充
消息100…064bit消息长度填充图样L×512bitKbit如果消息长度大于264,则取其对264的模。执行完后,消息的长度为512的倍数(设为L倍),则可将消息表示为分组长为512的一系列分组Y0,Y1,…,YL-1,而每一分组又可表示为16个32比特长的字,这样消息中的总字数为N=L×16,因此消息又可按字表示为M[0,…,N-1]。算法步骤(1)-分组填充消息100…064bit消息长度填算法步骤(2)-缓冲区初始化
hash函数的中间结果和最终结果保存于128位的缓冲区中,缓冲区用32位的寄存器表示。可用4个32bits字表示:A,B,C,D。初始存数以十六进制表示为A=01234567B=89ABCDEFC=FEDCBA98D=76543210算法步骤(2)-缓冲区初始化hash函数的中间结果和算法步骤(3)-HMD5运算以分组为单位对消息进行处理每一分组Yq(q=0,…,L-1)都经一压缩函数HMD5处理。HMD5是算法的核心,其中又有4轮处理过程。HMD5的4轮处理过程结构一样,但所用的逻辑函数不同,分别表示为F、G、H、I。每轮的输入为当前处理的消息分组Yq和缓冲区的当前值A、B、C、D,输出仍放在缓冲区中以产生新的A、B、C、D。每轮又要进行16步迭代运算,4轮共需64步完成。第四轮的输出与第一轮的输入相加得到最后的输出。算法步骤(3)-HMD5运算以分组为单位对消息进行处理每一网络信息安全-第3章认证与数字签名(下)课件算法步骤(4)–输出所有的L个512位分组都处理完后,最后一个分组的输出即为128位的消息摘要。算法步骤(4)–输出所有的L个512位分组都处理完后,最后MD5的压缩函数在压缩算法的4次循环处理中,每一循环均需要一个原始逻辑函数:F,G,H,L。所有原始逻辑函数的输入都是3个字长为32位的字(分别用b,c,d表示),并产生一个字长32位的字作为输出。原始逻辑函数执行的是一组按位逻辑操作,定义如后表。MD5的压缩函数在压缩算法的4次循环处理中,每一循环均需要一基本逻辑函数定义
轮基本函数gg(b,c,d)fFF(b,c,d)(b^c)V(b¯^d)fGG(b,c,d)(b^d)V(c^d¯)fHH(b,c,d)bÅcÅdfII(b,c,d)cÅ(bV
d¯)其中,b,c,d分别表示寄存器B、C、D中的内容;运算∧、∨、⊕、¯分别表示逻辑操作AND、OR、XOR、NOT。基本逻辑函数定义轮基本函数gg(b,c,d)fFF(b,压缩函数处理过程为了实现对数据的压缩,正在处理的512位数据分组Yq被进一步划分成16个32位的小段,用X[k]表示(k=0,1,…,15).在算法的每一个循环中,需要对缓存器A、B、C、D进行16步操作;每步操作的通用形式为:b=b+(a+g(b,c,d)+X[k]+T[i]<<<s)其中:a,b,c,d分别代表缓冲区A、B、C、D中的内容;g()代表原始逻辑函数F、G、H、I中的一个;<<<s表示对32位字进行循环左移位;X[k]表示Yq中的第k个32位字;T[i]表示常数表中的第i个元素。其中的加法均为32位的加法。压缩函数处理过程为了实现对数据的压缩,正在处理的512位数据压缩函数中的一步迭代压缩函数中的一步迭代X[k]当前分组的第k个32位的字。在一个循环中,16个32比特的分段X[k]均被使用一次;但在不同的循环中,X[k]被使用的顺序是不同的。如下表所示:第1轮x[0]x[1]x[2]x[3]x[4]x[5]x[6]x[7]x[8]x[9]x[10]x[11]x[12]x[13]x[14]x[15]第2轮x[1]x[6]x[11]x[0]x[5]x[10]x[15]x[4]x[9]x[14]x[3]x[8]x[13]x[2]x[7]x[12]第3轮x[5]x[8]x[11]x[14]x[1]x[4]x[7]x[10]x[13]x[0]x[3]x[6]x[9]x[12]x[15]x[2]第4轮x[0]x[7]x[14]x[5]x[12]x[3]x[10]x[1]x[8]x[15]x[6]x[13]x[4]x[11]x[2]x[9]X[k]当前分组的第k个32位的字。第1轮x[0]x[1]xT[i]常数表T的作用是对算法的每一个操作步骤增加不同的附加限制。T[1,…,64]为64个元素表,分四组参与不同轮的计算。常数表是采用正弦函数构建的。T[i]为232×abs(Sin(i))的整数部分,i是弧度。T[i]可用32bit二元数表示,T是32bit随机数源。T[i]常数表T的作用是对算法的每一个操作步骤增加不同的附加T[1]=d76aa478T[17]=f61e2562T[33]=fffa3942T[49]=f4292244T[2]=e8c7b756T[18]=c040b340T[34]=8771f681T[50]=432aff97T[3]=242070dbT[19]=265e5a51T[35]=6d9d6122T[51]=ab9423a7T[4]=c1bdceeeT[20]=e9b6c7aaT[36]=fde5380cT[52]=fc93a039T[5]=f57c0fafT[21]=d62f105dT[37]=a4beea44T[53]=655b59c3T[6]=4787c62aT[22]=02441453T[38]=4bdecfa9T[54]=8f0ccc92T[7]=a8304613T[23]=d8a1e681T[39]=f6bb4b60T[55]=ffeff47dT[8]=fd469501T[24]=e7d3fbc8T[40]=bebfbc70T[56]=85845dd1T[9]=698098d8T[25]=21e1cde6T[41]=289b7ec6T[57]=6fa87e4fT[10]=8b44f7afT[26]=c33707d6T[42]=eaa127faT[58]=fe2ce6e0T[11]=ffff5bb1T[27]=f4d50d87T[43]=d4ef3085T[59]=a3014314T[12]=895cd7beT[28]=455a14edT[44]=04881d05T[60]=4e0811a1T[13]=6b901122T[29]=a9e3e905T[45]=d9d4d039T[61]=f7537e82T[14]=fd987193T[30]=fcefa3f8T[46]=e6db99e5T[62]=bd3af235T[15]=a679438eT[31]=676f02d9T[47]=1fa27cf8T[63]=2ad7d2bbT[16]=49b40821T[32]=8d2a4c8aT[48]=c4ac5665T[64]=eb86d391T[1]=d76aa478T[17]=f61e2562TCLSs:循环左移s位第一轮:7、12、17、22第二轮:5、9、14、20第三轮:4、11、16、23第四轮:6、10、15、21CLSs:循环左移s位第一轮:7、12、17、22MD-5的安全性MD-5的输出为128-bit,若采用纯强力攻击寻找一个消息具有给定Hash值的计算困难性为2128,用每秒可试验1000000000个消息的计算机需时1.07×1022年。采用生日攻击法,找出具有相同散列值的两个消息需执行264次运算。MD-5的安全性MD-5的输出为128-bit,若采用纯强力主要内容认证基本概念
身份认证消息认证数字签名主要内容认证基本概念消息认证码的不足可以保护通信双方以防止第3者攻击,不能保护通信双方中一方防止另一方的欺骗和伪造。B伪造一个消息并使用与A共享的密钥产生该消息的认证码,然后生成该消息来自于AB有可能伪造A发来的消息,所以A就可以对自己发过的消息予以否认消息认证码的不足可以保护通信双方以防止第3者攻击,不能保护通数字签名的基本概念数字签名由公钥密码发展而来,它在网络安全,包括身份认证、数据完整性、不可否认性以及匿名性等方面有着重要应用。数字签名的基本概念数字签名由公钥密码发展而来,它在网络安全,手写签名的特征签名是可信的签名是不可伪造的签名不可重用签名后的文件是不可变的签名是不可抵赖的手写签名的特征签名是可信的简单扫描手写签名不能满足要求
对数字签名的要求
要保证能够验证作者及其签名的日期时间必须能够认证签名时刻的内容签名必须能够由第三方验证,以解决争议。简单扫描手写签名不能满足要求对数字签名的要求更进一步的要求依赖性:签名必须是依赖于被签名信息来产生;唯一性:签名必须使用某些对发送者是唯一的信息,以防止双方的伪造与否认;可验性:必须相对容易识别和验证该数字签名;抗伪造:伪造该数字签名在计算上是不可行的,根据一个已有的数字签名来构造消息是不可行的;对一个给定消息伪造数字签名是不可行的;可用性:在存储器中保存一个数字签名副本是现实可行的。更进一步的要求依赖性:签名必须是依赖于被签名信息来产生;签名方法直接数字签名方法仲裁数字签名方法签名方法直接数字签名方法直接数字签名AB消息加密后的摘要消息散列函数A的私钥摘要加密算法消息加密后的摘要A的公钥解密算法解密后的摘要散列函数摘要比较加密后的摘要直接数字签名AB消息加密后的摘要消息散列A的私钥摘要加密消息直接数字签名的缺点直接数字签名的执行过程只有通信的双方参与,并假定双方有共享的秘密密钥或者接收一方知道发送方的公开钥。缺点:方案的有效性取决于发方密钥的安全性。发方可声称秘密钥丢失或被窃直接数字签名的缺点直接数字签名的执行过程只有通信的双方参与,仲裁数字签名具有仲裁方式的数字签名发方X对发往收方Y的消息签名将消息和签名先发往仲裁者AA对消息和签名验证完后,再连同一个表示已通过验证的指令一起发给Y.仲裁数字签名具有仲裁方式的数字签名具有仲裁方式的数字签名例1:XA:AY:E:单钥加密算法KXA,KAY:A与X和Y的共享密钥M:消息T:时戳IDX:X的身份H(M):M的杂凑值具有仲裁方式的数字签名例1:E:单钥加密算法在1中,X以EKXA[IDX‖H(M)]作为自己对M的签名,将M及签名发往A。在2中,A将从X收到的内容和IDX、T一起加密后发往Y,其中的T用于向Y表示所发的消息不是旧消息的重放。Y对收到的内容解密后,将解密结果存储起来以备出现争议时使用。如果出现争议,Y可声称自己收到的M的确来自X,并将EKAY[IDX‖M‖EKXA[IDX‖H(M)]]发给A,由A仲裁,A由KAY解密后,再用KXA对EKXA[IDX‖H(M)]解密,并对H(M)加以验证,从而验证了X的签名。在1中,X以EKXA[IDX‖H(M)]作为自己对M的签名,具有仲裁方式的数字签名例2XA:IDX||AY:X对M的签名X和Y的共享密钥此方案提供了对M的保密性和前一方案相同,仲裁者可和发方共谋否认发方曾发过的消息,也可和收方共谋产生发方的签名具有仲裁方式的数字签名例2X对M的签名X和Y的共享密钥此方案具有仲裁方式的数字签名例3X的私钥Y的公钥具有仲裁方式的数字签名例3X的私钥Y的公钥第1步中,X用自己的秘密钥SKX和Y的公开钥PKY对消息加密后作为对M的签名,以这种方式使得任何第3方(包括A)都不能得到M的明文消息。A收到X发来的内容后,用X的公开钥可对ESKX[IDX‖EPKY[ESKX[M]]]解密,并将解密得到的IDX与收到的IDX加以比较,从而可确信这一消息是来自于X的(因只有X有SKX)。第2步,A将X的身份IDX和X对M的签名加上一时戳后,再用自己的秘密钥加密发往Y。第1步中,X用自己的秘密钥SKX和Y的公开钥PKY对消息加密与前两种方案相比,第3种方案有很多优点:在协议执行以前,各方都不必有共享的信息,从而可防止共谋。只要仲裁者的秘密钥不被泄露,任何人包括发方就不能发送重放的消息。对任何第三方(包括A)来说,X发往Y的消息都是保密的。与前两种方案相比,第3种方案有很多优点:RSA签名体制体制参数大素数p,q,n=p×q,y(n)=(p-1)(q-1)。选整数1<e<y(n),且gcd(e,y(n))=1;计算d满足de≡1mody(n).{e,n}为公开密钥,{d,n}为秘密密钥。签名过程S=Mdmodn验证过程M=Semodn实际应用中加密是对H(M)进行的。RSA签名体制体制参数RSA签名方案
M||HESKAMHDPKA比较RSA签名方案M||HESKAMHDPKA比较本章小结主要内容:介绍了认证与数字签名相关内容。阐述了身份认证、消息认证以及数字签名的作用;列举了三种技术的实现方案;并且给出MD5算法的操作过程。需要掌握的内容:(1)身份认证、消息认证及数字签名技术各自适用的领域(2)消息认证符的三种生成方法(3)S/KEY口令工作过程(4)数字签名技术本章小结主要内容:本章作业作业题:(1)举例说明身份认证、消息认证及数字签名技术各自适用的场合。(2)基于消息认证码的消息认证方法与基于散列函数的消息认证方法有什么区别?(3)简述S/KEY口令的工作过程。思考题:(1)数字签名技术可以实现身份认证和消息认证吗?(2)伪代码设计或编程实现MD5算法。本章作业作业题:第3章认证与数字签名(下)信息安全系jlsxm@第3章认证与数字签名(下)信息安全系主要内容认证基本概念
身份认证消息认证数字签名主要内容认证基本概念没有消息认证的通信系统是极为危险的
没有消息认证的通信系统是极为危险的需求泄密:将消息透露给没有合法秘密钥的任何人或程序。传输分析:分析通信双方的通信模式,如连接频率,时间等伪装:攻击者产生一条消息并声称来自某合法实体内容修改:对消息进行插入、删除、转化、修改顺序修改:对消息顺序进行插入、删除、重新排序计时修改:对消息的延时和重放发送方否认接受方否认对付1、2可用加密;对付3、4、5、6可用消息认证;对付7、8可用数字签名需求泄密:将消息透露给没有合法秘密钥的任何人或程序。消息认证(MessageAuthentication)
消息认证用于抗击主动攻击验证接收消息的真实性和完整性真实性的确是由所声称的实体发过来的完整性未被篡改、插入和删除验证消息的顺序性和时间性(未重排、重放和延迟)消息认证(MessageAuthentication)消消息认证的基本概念认证符:一个用来认证消息的值。由消息的发送方产生认证符,并传递给接收方。认证函数:产生认证符的函数,认证函数实际上代表了一种产生认证符的方法。消息加密函数消息认证码Hash函数消息认证的基本概念认证符:一个用来认证消息的值。由消息的发送消息加密函数对消息的自身加密所得到的密文,可以作为一个认证的度量。消息认证符:用完整信息的密文作为对信息鉴别的认证符。既可以使用对称加密模式,也可以使用公钥加密模式作为消息加密函数,两者有所不同。消息加密函数对消息的自身加密所得到的密文,可以作为一个认证的消息加密函数---在对称加密体制下在对称加密体制下,发送者A和接收者B双方共同拥有密钥,A把加密过的信息传送给B,如上图所示。由于攻击者不知道密钥K,他也就不知道如何改变密文中的信息位才能在明文中产生预期的改变。因此,接收方B只要能顺利解出明文,就知道信息在中途没有被人更改过。可以根据解密后的明文是否具有合理的语法结构来进行消息认证。MEKEK(M)DKM消息加密函数---在对称加密体制下在对称加密体制下,发送者A消息加密函数---在对称加密体制下问题:但有时发送的明文本身并没有明显的语法结构或特征,例如二进制文件,因此很难确定解密后的消息就是明文本身。为了解决这个问题,要求明文具有某种易于识别的结构,并且不通过加密函数是无法重复这个结构的。最简单的办法是在加密前对消息附加一个错误检测码FCS,或称帧校验序列、校验和。MEKEK(M)DKM消息加密函数---在对称加密体制下问题:但有时发送的明文本身①根据明文M和公开的函数F产生FCS。②把M和FCS合在一起加密,并传输。③接收端把密文解密,得到M。④根据得到的M,按照F计算FCS,并与接收到的FCS比较是否相等。注:如果攻击者修改了密文,则接收者计算出来的FCS与其收到的FCS将无法匹配。MFFMFCS比较EKDKMFCS内部错误控制①根据明文M和公开的函数F产生FCS。MFFMFCS比较EK这里,加密函数和F函数的执行顺序非常重要。由于函数F是公开的,若先加密再计算FCS,则攻击者可以构造具有正确错误控制码的消息,虽然攻击者不知道解密后的明文,但可以造成混淆并破坏通信。MFFCSEKDKM外部错误控制F比较这里,加密函数和F函数的执行顺序非常重要。MFFCSEKDK消息加密---在公钥加密体制下发送方A用接收方B的公钥对消息加密,然后传输给B。B用自己的私钥解密。MEKUbEKUb(M)DKRbMAB消息加密---在公钥加密体制下发送方A用接收方B的公钥对消息消息加密---在公钥加密体制下由于大家都知道B的公钥,任何人都可以向B发送消息,所以B无法确认消息的来源和内容的真实性。因此,这种方式不提供认证,只提供加密。MEKUbEKUb(M)DKRbMI.普通加密AB消息加密---在公钥加密体制下由于大家都知道B的公钥,任何人消息加密---在公钥加密体制下发送方A用自己的私钥进行加密,然后传输给接收方B。B用A的公钥解密。如果B能够用A的公钥解密,则说明该消息的确是由A发送的,且消息内容没有被篡改。MEKRaEKRa(M)DKUaMAB消息加密---在公钥加密体制下发送方A用自己的私钥进行加密,消息加密---在公钥加密体制下由于只有A有用于产生EKRa(M)的密钥,所以此方法提供认证。由于大家都有KUa
,所以此方法不提供加密。MEKRaEKRa(M)DKUaMII.认证和签名AB消息加密---在公钥加密体制下由于只有A有用于产生EKRa消息加密---在公钥加密体制下提供认证和加密。一次通信中要执行四次复杂的公钥算法,计算代价非常高。所以,第二、三两种方法一般在认证时极少应用。MEKRaEKRa(M)DKUaMIII.加密认证和签名ABEKUbEKUb(EKRa(M))DKRbEKRa(M)消息加密---在公钥加密体制下提供认证和加密。MEKRaEK消息认证码(MAC)MessageAuthenticaionCode,也称为报文鉴别码或是消息鉴别码。消息认证码是消息和密钥的公开函数,它产生定长的值,以该值作为认证符。这种机制的核心是一个类似于加密的算法CK。该算法需要使用一个密钥,并以需要认证的消息作为输入,算法的输出值是一个较短的定长数据分组,也就是MAC,即:MAC=CK(M)消息认证码(MAC)MessageAuthenticaio消息认证码用于认证A和B共享密钥KA计算MAC=Ck(M),M和MAC一起发送到BB对收到的M,计算MAC,比较两个MAC是否相同。MCMACKC比较KMAC如果两个MAC相等,则:接收方可以相信消息未被修改,因为如果攻击者改变了消息,由于不知道k,无法生成正确的MAC。接收方可以相信消息的确来自确定的发送方。因为其他人不能生成和原始消息相应的MAC。消息认证码用于认证A和B共享密钥KMCMACKC比较KMACMAC函数与加密函数的区别MAC函数与加密函数类似,都需要明文、密钥和算法的参与。而两者的差别在于:加密算法必须是可逆的,对其结果能够解密;而MAC算法不要求可逆性,甚至可以是一个单向函数。例如:使用100比特的消息和10比特的MAC,那么总共有2100个不同的消息,但仅有210个不同的MAC。也就是说,平均每290个消息使用的MAC是相同的。MAC函数与加密函数的区别MAC函数与加密函数类似,都需要明消息认证码的基本用途消息认证码只提供消息认证,不提供保密性。若要提供保密性,可以结合加密体制,从而同时提供消息认证和保密性:M||CK1CMCK(M)K1比较EK2DK2ABA和B共享K1和K2K1:用于生成MACK2:用于加密与明文有关的认证消息认证码的基本用途消息认证码只提供消息认证,不提供保密性。消息认证码的基本用途提供消息认证和保密性:ABA和B共享K1和K2K1:用于生成MACK2:用于加密与密文有关的认证M||CK1CK1比较EK2DK2消息认证码的基本用途提供消息认证和保密性:ABA和B共享K1消息认证码的基本用途
问题:为什么要专门找MAC函数来提供认证,而不直接使用加密方法来提供认证呢?原因有三:(1)信息加密主要是提供机密性而非真实性。(2)加密计算的代价大,特别是当信息内容比较长的时候,加密所占用的资源太多。(3)认证函数与加密函数的分离能提供功能上的灵活性。有时只需提供机密性,而不需要提供真实性;有时只需要真实性,不需要机密性。消息认证码的基本用途问题:为什么要专门找MAC函数来提供基于DES的消息认证码使用最广泛的MAC算法之一:数据认证算法算法基于密文块链接(CBC)模式的DES算法,计算数据认证码DAC的过程如下:①把需要认证的数据分成连续的64位的分组。②若最后一个分组不是64位,则填0③利用DES加密算法E和密钥K,计算认证码。基于DES的消息认证码使用最广泛的MAC算法之一:数据认证算DAC可以取整个ON块,或者取为ON的最左M个比特。DACM-bits(16to64bits)DAC可以取整个ON块,或者取为ON的最左M个比特。DACHash函数(杂凑函数、散列函数)Hash的特点:与消息认证码一样,hash函数的输入是长度可变的消息M,输出是固定大小的hash码H(M),或称消息摘要(MessageDigest)、hash值。与消息认证码不同的是,hash码的产生过程中并不使用密钥。Hash码是所有消息的函数,改变消息的任何一位或多位,都会导致hash码的改变。Hash算法通常是公开的。又称为:哈希函数、数字指纹(Digitalfingerprint)、压缩(Compression)函数、紧缩(Contraction)函数、数据鉴别码DAC(Dataauthenticationcode)、篡改检验码MDC(Manipulationdetectioncode)Hash函数(杂凑函数、散列函数)Hash的特点:h=H(M)
假定两次输入同样的数据,那么散列函数应该能够生成相同的散列值。输入数据中的一位发生了变化,会导致生成的散列值完全不一样。散列函数有个非常重要的特性为单向性,也就是从M计算h容易,而从h计算M不可能。
h=H(M)假定两次输入同样的数据,那么散列函数应该能够生网络信息安全-第3章认证与数字签名(下)课件网络信息安全-第3章认证与数字签名(下)课件网络信息安全-第3章认证与数字签名(下)课件网络信息安全-第3章认证与数字签名(下)课件迭代型hash函数的一般结构fffY0Y1YL-1bbbnnnnnIV=CV0CV1CVL-1CVL明文M被分为L个分组Y0,Y1,…,YL-1b:明文分组长度n:输出hash长度CV:各级输出,最后一个输出值是hash值无碰撞压缩函数f是设计的关键迭代型hash函数的一般结构fffY0Y1YL-1bbbnn迭代型hash函数这种结构的hash函数已被证明是合理的,如果采用其他结构,不一定安全。设计新的hash函数只是改进这种结构,或者增加hash码长。算法的核心技术是设计无碰撞的压缩函数f,而敌手对算法的攻击重点是f的内部结构,由于f和分组密码一样是由若干轮处理过程组成,所以对f的攻击需通过对各轮之间的位模式的分析来进行,分析过程常常需要先找出f的碰撞。由于f是压缩函数,其碰撞是不可避免的,因此在设计f时就应保证找出其碰撞在计算上是不可行的。迭代型hash函数这种结构的hash函数已被证明是合理的,如MD5hash算法
MD5HashAlgorithm
MD4是MD5杂凑算法的前身,由RonRivest于1990年10月作为RFC提出,1992年4月公布的MD4的改进(RFC1320,1321)称为MD5。MD5hash算法
MD5HashAlgorithm
MD5的算法框图输入消息可任意长,压缩后输出为128bits。MD5的算法框图输入消息可任意长,压缩后输出为128bits算法步骤(1)-分组填充
消息100…064bit消息长度填充图样L×512bitKbit如果消息长度大于264,则取其对264的模。执行完后,消息的长度为512的倍数(设为L倍),则可将消息表示为分组长为512的一系列分组Y0,Y1,…,YL-1,而每一分组又可表示为16个32比特长的字,这样消息中的总字数为N=L×16,因此消息又可按字表示为M[0,…,N-1]。算法步骤(1)-分组填充消息100…064bit消息长度填算法步骤(2)-缓冲区初始化
hash函数的中间结果和最终结果保存于128位的缓冲区中,缓冲区用32位的寄存器表示。可用4个32bits字表示:A,B,C,D。初始存数以十六进制表示为A=01234567B=89ABCDEFC=FEDCBA98D=76543210算法步骤(2)-缓冲区初始化hash函数的中间结果和算法步骤(3)-HMD5运算以分组为单位对消息进行处理每一分组Yq(q=0,…,L-1)都经一压缩函数HMD5处理。HMD5是算法的核心,其中又有4轮处理过程。HMD5的4轮处理过程结构一样,但所用的逻辑函数不同,分别表示为F、G、H、I。每轮的输入为当前处理的消息分组Yq和缓冲区的当前值A、B、C、D,输出仍放在缓冲区中以产生新的A、B、C、D。每轮又要进行16步迭代运算,4轮共需64步完成。第四轮的输出与第一轮的输入相加得到最后的输出。算法步骤(3)-HMD5运算以分组为单位对消息进行处理每一网络信息安全-第3章认证与数字签名(下)课件算法步骤(4)–输出所有的L个512位分组都处理完后,最后一个分组的输出即为128位的消息摘要。算法步骤(4)–输出所有的L个512位分组都处理完后,最后MD5的压缩函数在压缩算法的4次循环处理中,每一循环均需要一个原始逻辑函数:F,G,H,L。所有原始逻辑函数的输入都是3个字长为32位的字(分别用b,c,d表示),并产生一个字长32位的字作为输出。原始逻辑函数执行的是一组按位逻辑操作,定义如后表。MD5的压缩函数在压缩算法的4次循环处理中,每一循环均需要一基本逻辑函数定义
轮基本函数gg(b,c,d)fFF(b,c,d)(b^c)V(b¯^d)fGG(b,c,d)(b^d)V(c^d¯)fHH(b,c,d)bÅcÅdfII(b,c,d)cÅ(bV
d¯)其中,b,c,d分别表示寄存器B、C、D中的内容;运算∧、∨、⊕、¯分别表示逻辑操作AND、OR、XOR、NOT。基本逻辑函数定义轮基本函数gg(b,c,d)fFF(b,压缩函数处理过程为了实现对数据的压缩,正在处理的512位数据分组Yq被进一步划分成16个32位的小段,用X[k]表示(k=0,1,…,15).在算法的每一个循环中,需要对缓存器A、B、C、D进行16步操作;每步操作的通用形式为:b=b+(a+g(b,c,d)+X[k]+T[i]<<<s)其中:a,b,c,d分别代表缓冲区A、B、C、D中的内容;g()代表原始逻辑函数F、G、H、I中的一个;<<<s表示对32位字进行循环左移位;X[k]表示Yq中的第k个32位字;T[i]表示常数表中的第i个元素。其中的加法均为32位的加法。压缩函数处理过程为了实现对数据的压缩,正在处理的512位数据压缩函数中的一步迭代压缩函数中的一步迭代X[k]当前分组的第k个32位的字。在一个循环中,16个32比特的分段X[k]均被使用一次;但在不同的循环中,X[k]被使用的顺序是不同的。如下表所示:第1轮x[0]x[1]x[2]x[3]x[4]x[5]x[6]x[7]x[8]x[9]x[10]x[11]x[12]x[13]x[14]x[15]第2轮x[1]x[6]x[11]x[0]x[5]x[10]x[15]x[4]x[9]x[14]x[3]x[8]x[13]x[2]x[7]x[12]第3轮x[5]x[8]x[11]x[14]x[1]x[4]x[7]x[10]x[13]x[0]x[3]x[6]x[9]x[12]x[15]x[2]第4轮x[0]x[7]x[14]x[5]x[12]x[3]x[10]x[1]x[8]x[15]x[6]x[13]x[4]x[11]x[2]x[9]X[k]当前分组的第k个32位的字。第1轮x[0]x[1]xT[i]常数表T的作用是对算法的每一个操作步骤增加不同的附加限制。T[1,…,64]为64个元素表,分四组参与不同轮的计算。常数表是采用正弦函数构建的。T[i]为232×abs(Sin(i))的整数部分,i是弧度。T[i]可用32bit二元数表示,T是32bit随机数源。T[i]常数表T的作用是对算法的每一个操作步骤增加不同的附加T[1]=d76aa478T[17]=f61e2562T[33]=fffa3942T[49]=f4292244T[2]=e8c7b756T[18]=c040b340T[34]=8771f681T[50]=432aff97T[3]=242070dbT[19]=265e5a51T[35]=6d9d6122T[51]=ab9423a7T[4]=c1bdceeeT[20]=e9b6c7aaT[36]=fde5380cT[52]=fc93a039T[5]=f57c0fafT[21]=d62f105dT[37]=a4beea44T[53]=655b59c3T[6]=4787c62aT[22]=02441453T[38]=4bdecfa9T[54]=8f0ccc92T[7]=a8304613T[23]=d8a1e681T[39]=f6bb4b60T[55]=ffeff47dT[8]=fd469501T[24]=e7d3fbc8T[40]=bebfbc70T[56]=85845dd1T[9]=698098d8T[25]=21e1cde6T[41]=289b7ec6T[57]=6fa87e4fT[10]=8b44f7afT[26]=c33707d6T[42]=eaa127faT[58]=fe2ce6e0T[11]=ffff5bb1T[27]=f4d50d87T[43]=d4ef3085T[59]=a3014314T[12]=895cd7beT[28]=455a14edT[44]=04881d05T[60]=4e0811a1T[13]=6b901122T[29]=a9e3e905T[45]=d9d4d039T[61]=f7537e82T[14]=fd987193T[30]=fcefa3f8T[46]=e6db99e5T[62]=bd3af235T[15]=a679438eT[31]=676f02d9T[47]=1fa27cf8T[63]=2ad7d2bbT[16]=49b40821T[32]=8d2a4c8aT[48]=c4ac5665T[64]=eb86d391T[1]=d76aa478T[17]=f61e2562TCLSs:循环左移s位第一轮:7、12、17、22第二轮:5、9、14、20第三轮:4、11、16、23第四轮:6、10、15、21CLSs:循环左移s位第一轮:7、12、17、22MD-5的安全性MD-5的输出为128-bit,若采用纯强力攻击寻找一个消息具有给定Hash值的计算困难性为2128,用每秒可试验1000000000个消息的计算机需时1.07×1022年。采用生日攻击法,找出具有相同散列值的两个消息需执行264次运算。MD-5的安全性MD-5的输出为128-bit,若采用纯强力主要内容认证基本概念
身份认证消息认证数字签名主要内容认证基本概念消息认证码的不足可以保护通信双方以防止第3者攻击,不能保护通信双方中一方防止另一方的欺骗和伪造。B伪造一个消息并使用与A共享的密钥产生该消息的认证码,然后生成该消息来自于AB有可能伪造A发来的消息,所以A就可以对自己发过的消息予以否认消息认证码的不足可以保护通信双方以防止第3者攻击,不能保护通数字签名的基本概念数字签名由公钥密码发展而来,它在网络安全,包括身份认证、数据完整性、不可否认性以及匿名性等方面有着重要应用。数字签名的基本概念数字签名由公钥密码发展而来,它在网络安全,手写签名的特征签名是可信的签名是不可伪造的签名不可重用签名后的文件是不可变的签名是不可抵赖的手写签名的特征签名是可信的简单扫描手写签名不能满足要求
对数字签名的要求
要保证能够验证作者及其签名的日期时间必须能够认证签名时刻的内
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 咨询居间协议书范本
- 品牌授权场景详尽主播代言合作协议
- 战略合作协议书粮油范本
- 高端酒店厨师团队聘用与职业培训协议
- 夜间出租车营运承包合作协议
- 常州二手房租赁合同书(含交易税费)
- 项目收回协议书范本
- 住宅小区配套教育设施拆迁协议书
- 防水材料员专项聘用合同
- 防灾设备采购委托代理服务合同模板
- 2024年 黄冈市法院系统招聘审判辅助人员考试真题试题含答案
- 荆州中学2024-2025学年高二下学期6月月考历史试题答案
- 公司消防网格化管理制度
- 外科换药拆线技术规范
- 2025至2030中国氧化铝纤维行业供需趋势及投资风险报告
- 2025年四川泸州市中考数学试卷真题及答案详解(精校打印)
- 2025年中考考前最后一卷化学(武汉卷)(全解全析)
- 2026届高考语文复习:直击2025年语文高考阅读客观题关键词比对
- 电子政务概论-形考任务5(在线测试权重20%)-国开-参考资料
- 19S406建筑排水管道安装-塑料管道
- 国家开放大学《病理生理学》形考任务1-4参考答案
评论
0/150
提交评论