第4章报文鉴别技术沈阳航空航天大学报文鉴别的概念报文鉴别MessageAuthentication鉴别:消息的接收者对消息进行的验证。真实性:消息确实来自于其真正的发送者,而非假冒;完整性:消息的内容没有被篡改。鉴别对防止主动攻击、保护开放网络中信息系统的安全性有重要作用Message消息报文Authentication鉴别认证沈阳航空航天大学消息鉴别的必要性泄漏伪造消息篡改行为抵赖消息的内容被泄漏没有合法权限的人或过程。以假冒源点的身份向网络中插入报文;例如,攻击者伪造消息发送给目的端,却声称该消息源来自一个已授权的实体。内容篡改:以插入、删除、调换或修改等方式篡改消息;序号篡改:在依赖序号的通信协议中(如TCP)等,对通信双方报文序号的进行篡改,包括插入、删除和重排序等;时间篡改:对报文进行延迟或回放,破坏其时间上的完整性。接收端否认收到某报文;源点否认发过某报文。网络通信的安全威胁沈阳航空航天大学安全服务保护传送的信息使其不被破译,不被被动攻击(密码)1防止攻击者对系统进行主动攻击(鉴别)2网络系统安全要考虑两个方面沈阳航空航天大学鉴别与保密的关系鉴别不能自动提供保密性;保密性也不能自然提供鉴别功能。鉴别函数与保密函数的分离能提供功能上的灵活性鉴别和保密构成了信息系统安全的两个方面,但属于两个不同属性上问题某些信息只需要真实性,不需要保密性广播的信息难以使用加密(信息量大)网络管理信息等只需要真实性政府/权威部门的公告沈阳航空航天大学报文鉴别系统模型信源信宿认证编码器密钥源发送者接收者敌手认证译码器安全通道信道沈阳航空航天大学报文鉴别系统的功能层次划分鉴别算法:在较低的层次上,系统需要提供某种报文鉴别函数f来产生一个用于实现报文鉴别的鉴别符或鉴别码;鉴别协议:消息的接收者通过鉴别协议完成对报文合法性的鉴别,底层的鉴别函数通常作为一个原语,为高层鉴别协议的各项功能提供服务;报文鉴别系统的功能一般可以划分成两个基本的层次鉴别函数f是决定鉴别系统特性的主要因素。沈阳航空航天大学鉴别函数的分类123基于报文加密方式的鉴别:以整个报文的密文作为鉴别符。报文鉴别码(MAC)方式。散列函数方式:采用一个公共散列函数,将任意长度的报文映射为一个定长的散列值,并以散列值作为鉴别符。沈阳航空航天大学基于报文加密方式的鉴别报文加密以消息的密文作为鉴别符消息的自身加密密文可以作为一个认证的度量加密模式对称密钥模式公开密钥模式沈阳航空航天大学对称密钥加密方式加密的同时提供保密和鉴别。SourceADestinationBEKCEK(M)DK沈阳航空航天大学使用公钥加密体制1提供认证和签名、无保密性。SourceADestinationBEKRaCEKRa(M)DKUa沈阳航空航天大学公钥加密方式2提供认证和签名、保密性。SourceADestinationBMEKRaCEKUb(EKRa(M))DKUaMC’CEKUbDKRbEKRa(M)EKRa(M)签名保密认证沈阳航空航天大学接收端鉴别的实现假定接收端能够正确地对密文解密,就可确定消息是完整的,从而实现了对消息的认证。问题接收端怎样判断接收到的密文的合法性。接收端如何判断解密的结果是否正确?数学变换原始消息M对接收端来说是未知的。接收端可计算出来的明文M’=DK(C)。接收端但采用什么方法才能判断M’=M?沈阳航空航天大学解决方法情况一:接收端已知消息M具有某种语言的语法结构如英语(或其他语言的文本)文本、程序、文档、具有已如格式的数据或图像文件、…………通过对M’的语法分析来进行判断。解决方法情况二:任意的二进制序列构成的消息在发送端,强制消息明文具有某种结构;这种结构是已知的,接收者能够了解和掌握;易于识别,但难以复制和伪造;这种结构是不依赖于加密手段。沈阳航空航天大学网络附加报文鉴别结构的鉴别附加报文鉴别结构报文M加密E()MF(M)F()密钥KEK[M]F(M)解密D()发送端A接收端B密钥K比较MF()F(M)鉴别结果终点B(1)接收密文X;(2)用密钥K解密得到明文Y=DK(X),其中Y被视为附加校验码的消息,即Y=[M′‖C′];(3)利用校验函数F计算明文Y中消息部分的校验码F(M′)。若校验码相匹配,即F(M′)=C′,则可确认报文是可信的,M′就是原始消息M,并且可以确认该报文就是来自A的,因为任何随机的比特序列是不可能具有这种期望的数学关系的。源点A(1)对消息明文M首先利用校验函数F计算出消息的校验码C=F(M);(2)校验码C=F(M)被附加到原始消息明文上,生成新的明文[M‖C];(3)利用密钥K对明文[M‖C]进行加密,得到密文X=EK[M‖C];(4)将密文X发送给接收端B。沈阳航空航天大学报文鉴别码MAC报文鉴别码或消息鉴别码(messageauthenticationcode,MAC):核心是一个类似于加密的算法CK()。1CK()在密钥的作用下,以报文内容作为输入,其输出值是一个较短的定长数据分组,也就是MAC,即:MAC=CK(M)2MAC被附加在报文中传输,用于消息的合法性鉴别。3沈阳航空航天大学发送端A接收端B采用报文鉴别码的鉴别方式网络报文M比较鉴别结果MMACMMAC算法C()密钥K算法C()密钥K沈阳航空航天大学报文鉴别码的功能如果B端通过比较发现MAC匹配,则可确信报文M没有被篡改过(完整性)若攻击者更改报文内容而末更改MAC,则接收者计算出的MAC将不同于接收到的MAC;由于攻击者不知道密钥K,故他不可能计算出一个与更改后报文相对应MAC值。接收者B也能够确信报文M是来自发送者A的(真实性)只有A了解密钥K,也只有A能够计算出报文M所对应的正确的MAC值。沈阳航空航天大学MAC函数VS加密函数两者类似,都需要密钥MAC函数可以是一个单向函数,而加密函数必须是可逆的。MAC鉴别函数的这个数学性质使得它比加密函数更不易被破解。MAC算法不能提供信息的保密性,保密性可以通过对消息加密来提供两种方式:(1)先计算MAC再加密(2)先加密再计算MAC需要两个独立的密钥基于MAC的消息鉴别方式其鉴别的过程是独立于加密和解密过程。与基于加密的鉴别方式是不同的;鉴别函数与保密函数的分离能提供结构上的灵活性。MAC方式更适合不需要加密保护的数据的鉴别。在某些应用中,鉴别报文的真实性比报文的保密性更重要。TextTextMAC函数加密函数VS沈阳航空航天大学设计MAC函数的要点1如果攻击者得到一个M及其对应的MAC,那么他试图构造一个消息M’使得MAC’=MAC在计算上应该是不可行的。2MAC函数应是均匀分布的,即随机选择消息M和M’,MAC=MAC’的概率应是2-n,其中n是MAC的位数。3令M’为M的某些已知变换,即:M’=f(M),应保证在这种情况下,MAC=MAC’的概率为2-n。沈阳航空航天大学散列函数54321•hashfunction:哈希函数、摘要函数。•输入:任意长度的消息报文M。•输出:一个固定长度的散列码值H(M)。•是报文中所有比特的函数值。•单向函数。沈阳航空航天大学散列函数的特性散列函数H()的输入可以是任意大小的数据块。1散列函数H()的输出是定长。2计算相对简单,易于用软件或硬件实现。3单向性:对任意散列码值单向性,对任意散列码值h,要寻找一个M,使H(M)=h在计算上是不可行的。4弱抗冲突性:对任何给定的报文M,若要寻找不等于M的报文M1使H(M1)=H(M)在计算上是不可行的。该性质能够防止伪造。5强抗冲突性:要找到两个报文M和N使H(M)=H(N)在计算上是不可行。该性质指出了散列算法对“生日攻击”的抵抗能力。6沈阳航空航天大学Hash函数的分类带秘密密钥的Hash函数:消息的散列值由只有通信双方知道的秘密密钥K来控制。可作为MAC函数根据是否使用密钥不带秘密密钥的Hash函数:消息的散列值的产生无需使用密钥。只能保证消息的完整性沈阳航空航天大学简单散列函数的构造-DESDES算法计算散列码将输入报文M划分成若干n比特的固定长度的分组M1,M2,…,MN;必要时需对数据进行填充,使其长度为n比特的整数倍。在计算散列值时,采用迭代方式每次处理一个数据分组Mi,最终产生一个n比特的散列值。采用类似DES加密的算法来计算散列码C:H0为初始值Hi=EMi(Hi-1)C=HN(散列码)沈阳航空航天大学简单散列函数的构造-纵向冗余检验纵向冗余检验把包文数据划分为若干n比特定长分组的B1,B2,…,Bm。散列函数值C的每一个位实际上是各数据分组对应位的一个简单的奇偶检验,即C(i)=B1(i)+B2(i)+…+Bm(i)其中,i=1,2,…,nC(i)为C的第i位。该算法对检验随机数据的完整性十分有效,但对某些类型数据并不十分有效。若数据报文是ASCⅡ文本,其各字节的高位恒为0;那么,若用128位散列值,数据更改但散列值保持不变的概率不是2-128,而是2-112。这是因为,在散列函数的一些固定比特位置上的值是可以预测的。沈阳航空航天大学简单散列函数的构造-循环移位循环移位C0=0初始值。Ci=ROR(Ci-1)Bii=(1...n)ROR()表示循环右移1位。H(M)=Cn。将输入数据完全随机化,掩盖了数据中规则化的信息。经过改进,已经提供了好的方法来检测数据的完整性。但是,在传输过程中仅对散列码加密而以明文形式传输报文时,是不安全的。攻击者能很容易地产生一个与原始报文散列码相同的伪造报文:他可以准备一个内容任意的报文,然后加上一个n比特分段,而分段能迫使新报文产生与原报文相同的散列码。对上述的简单散列函数来说,要想得到安全性,可以在传输中同时对报文和散列码进行加密。沈阳航空航天大学用散列函数进行的鉴别方案网络报文M加密E()MH(M)H()密钥KEK[M]||H(M)解密D()发送端A接收端B密钥KMH()比较H(M)鉴别结果对称加密:源点A和终点B共享该加密密钥散列码提供了报文鉴别所需要的结构和冗余提供了消息的保密功能沈阳航空航天大学仅对散列码进行加密的鉴别方案网络发送端A接收端B报文MH()密钥K加密E()MEK[H(M)]解密D()密钥KH()比较MEK[H(M)]鉴别结果沈阳航空航天大学采用密值的散列码鉴别方案网络发送端A接收端B报文MMH(M||S)比较MH(M||S)鉴别结果H()MS密值SMS密值SH()通信双方共享一个公共的秘密值S计算散列值时S附加到M上一起计算,得到H(M|S)但在传输过程中,密值S并不传输新问题用以鉴别的散列函数,是否减弱认证方案的安全性?签名的对象由完整消息变成消息摘要,这就有可能出现伪造。沈阳航空航天大学散列函数的安全性对散列函数的生日攻击数据基础:生日悖论。生日悖论问题:在一个人群中(人数为k),问其中至少有两个人生日相同的概率有多少?从另一个角度:k为何值可以使人群中至少存在两个人生日相同的概率大于50%?答案是k=23,这个概率要比许多人的直觉猜测的大得多。这个问题可以说明:有时候概率计算的结果是与一般人的直觉相违背的。kkkP365)!365(!3651),365(沈阳航空航天大学散列函数的安全性生日问题的一般数学描述一个整型的随机变量x,在区间[1,n]上均匀分布有k个这样的随机变量构成一个集合{xi}。至少存在两个元素相等的概率用P(n,k)表示。通过推导得:对于较小的y(≥0),有不等式(1-y)≈e–y,故:若要求P(n,k)0.5,可近似解得:(2·ln2·n)1/2=1.18·n1/2knknnknP)!(!1),(nkkeknP2)1(1),(沈阳航空航天大学散列函数的生日攻击散列函数的生日攻击基于生日问题的数学原理假定散列函数H()输出的散列值为m比特并假定散列值在取值区间[0,2m-1]上均匀分布若采用k个随机的报文,计算其散列码,则至少发现一次散列码相等的概率为P(2