安徽工程大学信息安全原理及应用第6讲报文鉴别技术.ppt

上传人:本田雅阁 文档编号:2903054 上传时间:2019-06-03 格式:PPT 页数:102 大小:898.02KB
返回 下载 相关 举报
安徽工程大学信息安全原理及应用第6讲报文鉴别技术.ppt_第1页
第1页 / 共102页
安徽工程大学信息安全原理及应用第6讲报文鉴别技术.ppt_第2页
第2页 / 共102页
安徽工程大学信息安全原理及应用第6讲报文鉴别技术.ppt_第3页
第3页 / 共102页
安徽工程大学信息安全原理及应用第6讲报文鉴别技术.ppt_第4页
第4页 / 共102页
安徽工程大学信息安全原理及应用第6讲报文鉴别技术.ppt_第5页
第5页 / 共102页
点击查看更多>>
资源描述

《安徽工程大学信息安全原理及应用第6讲报文鉴别技术.ppt》由会员分享,可在线阅读,更多相关《安徽工程大学信息安全原理及应用第6讲报文鉴别技术.ppt(102页珍藏版)》请在三一文库上搜索。

1、1,第6讲 报文鉴别技术,1. 报文鉴别(消息认证)的概念,报文鉴别(Message Authentication) Message:消息、报文。 Authentication: 鉴别、认证。 鉴别:消息的接收者对消息进行的验证。 真实性:消息确实来自于其真正的发送者,而非假冒; 完整性:消息的内容没有被篡改。,6.1 概述,2.消息鉴别的必要性,网络通信的安全威胁 泄漏 消息的内容被泄漏没有合法权限的人或程序。 伪造 以假冒源点的身份向网络中插入报文; 例如,攻击者伪造消息发送给目的端,却声称该消息源来自一个已授权的实体。,6.1 概述,2.消息鉴别的必要性,消息篡改 内容篡改:以插入、删除

2、、调换或修改等方式篡改消息; 序号篡改:在依赖序号的通信协议中(如 TCP )等,对通信双方报文序号的进行篡改,包括插入、删除和重排序等; 时间篡改:对报文进行延迟或回放,破坏其时间上的完整性。 行为抵赖 接收端否认收到某报文; 源点否认发过某报文。,6.1 概述,3.鉴别与保密的关系,是构成信息系统安全的两个方面,但属于两个不同属性上的问题: 鉴别不能自动提供保密性; 保密性也不能自然提供鉴别功能。,6.1 概述,4. 报文鉴别系统的功能,从层次角度上来看,报文鉴别系统的功能一般可以划分成两个基本的层次。 鉴别算法:在较低的层次上,系统需要提供某种报文鉴别函数 f 来产生一个用于实现报文鉴别

3、的鉴别符或鉴别码; 鉴别协议:消息的接收者通过鉴别协议完成对报文合法性的鉴别,底层的鉴别函数通常作为一个原语,为高层鉴别协议的各项功能提供服务; 鉴别函数 f 是决定鉴别系统特性的主要因素。,6.1 概述,5. 鉴别函数的分类,根据鉴别符的生成方式,鉴别函数可以分为以下几类: 基于报文加密方式的鉴别: 以整个报文的密文作为鉴别符。 报文鉴别码(MAC)方式。 散列函数方式: 采用一个公共散列函数,将任意长度的报文映射为一个定长的散列值,并以散列值作为鉴别符。,6.1 概述,6.2 基于报文加密方式的鉴别,1. 对称密钥加密方式 :加密的同时提供保密和鉴别。,对称密钥加密方式,问题:B如何判断收

4、到的密文X的合法性? 如果消息M是具有某种语法特征的文本,或者M本身具有一定的结构 :B可通过分析Y的语法或结构特征。 如果消息M是完全随机的二进制比特序列: B无法判断是否正确恢复密文。 解决办法:强制明文使其具有某种结构。 这种结构易于识别、不能被复制,同明文相关,并且不依赖于加密。,解决办法例子:附加报文鉴别结构,对称密钥加密方式,附加报文鉴别结构,源点A 对消息明文M首先利用校验函数F 计算出消息的校验码 C=F(M); 校验码 C=F(M)被附加到原始消息明文上,生成新的明文 MC; 利用密钥K对明文 MC进行加密,得到密文 X=EK MC; 将密文X发送给接收端 B,附加报文鉴别结

5、构,终点B 接收密文 X; 用密钥K解密得到明文Y=DK(X),其中Y被视为附加校验码的消息,即 Y= MC; 利用校验函数F 计算明文Y中消息部分的校验码F(M)。若校验码相匹配,即F(M)=C,则可确认报文是可信的,M就是原始消息M,并且可以确认该报文就是来自A的,因为任何随机的比特序列是不可能具有这种期望的数学关系的。,2 .公开密钥加密方式 :提供报文鉴别和签名功能 ,不提供保密功能。,M,E,M,M,M,E,D,D,EKUb(M),EKRa(M),M,E,E,D,D,M,EKRa(M),EKRa(M),EKUb(EKRa(M),6.3 报文鉴别码(消息认证码),另一种可行的消息鉴别技

6、术是使用报文或消息鉴别码(message authentication code,MAC):核心是一个类似于加密的算法CK( )。 CK( ) 在密钥的作用下,以报文内容作为输入,其输出值是一个较短的定长数据分组,也就是MAC,即: MAC CK(M) MAC被附加在报文中传输,用于消息的合法性鉴别。,1. 采用报文鉴别码的鉴别方式,报文鉴别码的功能,如果B端通过比较发现MAC匹配,则可确信报文M没有被篡改过 (完整性) 若攻击者更改报文内容而未更改MAC,则接收者计算出的MAC将不同于接收到的MAC; 由于攻击者不知道密钥K,故他不可能计算出一个与更改后报文相对应MAC值。 接收者B也能够确

7、信报文M是来自发送者A的 (真实性) 只有A了解密钥K,也只有A能够计算出报文M所对应的正确的MAC值。,报文认证码的基本用法1 AB:MCk(M) 提供认证,因仅A和B共享K;,M,M,C,C,报文鉴别码的功能,报文认证码的基本用法2 AB:Ek2(MCk(M) 提供认证,因仅A和B共享K1;提供保密,因仅A和B共享K2;,M,C,C,E,D,报文鉴别码的功能,报文认证码的基本用法3 AB:Ek2(M)Ck1(Ek2(M) 提供认证,因仅A和B共享K1;提供保密,因仅A和B共享K2;,M,C,C,E,D,报文鉴别码的功能,2. MAC函数 Vs 加密函数,两者类似,都需要密钥。 MAC函数可

8、以是一个单向函数,而加密函数必须是可逆的。 MAC鉴别函数的这个数学性质使得它比加密函数更不易被破解。 MAC算法不能提供信息的保密性 ,保密性可以通过对消息加密来提供。 两种方式: 1.先计算 MAC 再加密; 2.先加密再计算 MAC。 需要两个独立的密钥。,基于MAC消息鉴别方式其鉴别过程独立于加密和解密过程。 与基于加密的鉴别方式是不同的; 鉴别函数与保密函数的分离能提供结构上的灵活性。 MAC方式更适合不需要加密保护的数据的鉴别。 在某些应用中,鉴别报文的真实性比报文的保密性更重要。,2. MAC函数 Vs 加密函数,3. 一种实用的MAC算法,十进制移位加MAC算法 Sievi于1

9、980年向ISO提出一项消息认证法的建议,Davies等1984 这种认证法称为十进制移位加算法(Decimal Shift and Add Algorithm) 简记为DSAA,它特别适用于金融支付中的数值消息交换业务,消息按十位十进制数字分段处理不足十位时在右边以0补齐。下面举例说明,令: x1=1583492637是要认证的第一组消息, b1=5236179902和b2=4893524771为认证用的密钥 DSAA算法是以b1和b2并行对x1进行运算,先算x1+b1, x1+b2(mod 1010), 接着根据b2的第一位数值4对x1+b1循环右移4位记作R(4)(x1+b1),再与(x

10、1+b1)相加得 R(4)(x1+b1)+(x1+b1)P1(mod 1010) 类似地右路在b1的第一位数值5控制下运算结果为 R(5)(x1+b2)+(x1+b2)=Q1(mod 1010),十进制移位加MAC算法,表 左路 右路 第 b1=5236179902 b2=4893224771 一 + x1=1583492637 + x1=1583492637 轮 b1+x1=6819672539 b2+x1=6477017408 +R(4)(b1+x1)=2539681967 +R(5)(b2+x1)=1740864770 P1=9359354506 Q1=8217882178,十进制移位加

11、MAC算法,第 P1=9359354506 Q1=8217882178 + x2=5283586900 + x2=5283586900 二 P1+x2=4642941406 Q1+x2=3501469078 轮 +R(8)(P1+x2)=4294140646 +R(9)(Q1+x2)=5014690783 P2=8937082052 Q2=8516159861 . .,十进制移位加MAC算法,第 P10=7869031447 Q10=3408472104 十 P10+Q10=1277403551 (mod 1010) 轮 403551 + 1277 认证符404828 (mod 1010) 将

12、第二组消息x2=528358586900分别与P1和Q1相加其结果又分别以P1和Q1的第一位控制循环移位后进行相加得到P2和Q2 依此类推直至进行十轮后得P10和Q10计算P10+Q10 (mod 1010),并将结果的后6位数与前4位数在(mod 1010)下相加得6位认证符。,十进制移位加MAC算法,设计MAC函数的要点,如果攻击者得到一个 M 及其对应的 MAC,那么他试图构造一个消息 M 使得 MAC = MAC 在计算上应该是不可行的。 MAC 函数应是均匀分布的,即随机选择消息 M 和 M,MAC = MAC 的概率应是 2-n,其中 n 是 MAC 的位数。 令 M 为 M 的某

13、些已知变换,即:M = f (M),应保证在这种情况下,MAC = MAC 的概率为 2-n。,4. 基于DES的报文鉴别码,有两种基于DES的认证算法,一种按CFB模式,一种按CBC模式运行。在CBC模式下,消息按64bit分组,不足时以0补齐,送入DES系统加密,但不输入密文,只取加密结果最左边的r位作为认证符。,基于DES的报文鉴别码,采用密码分组链接(CBC)方式的DES迭代算法,以0为初始化值。 具体过程: 被鉴别的报文数据被划分为连续的64比特的分段:X1,X2,XN 。若必要,需用 0来填充XN的右边,以形成 64 比特的数据块。 数据鉴别代码(DAC)的计算方式如下: Y0 =

14、 0 Yi = EK ( Xi + Yi-1 ) i = 1, 2, , N ,K为56位的密钥 数据鉴别代码(DAC)就可用算法的最终输出YN或YN最左边的r比特构成(16r64)。,r取大小可由通信双方约定。美国联邦电信建议采用24bit见FTSC-1026,而美国金融系统采用32bit ABA,1986,1. 散列函数,散列函数(Hash Function):哈希函数、摘要函数 若对相当长的文件通过签名认证怎么办?如一个合法文件有数兆字节长,若按160比特分划成一块一块用相同的密钥独立地签每一个块然而这样太慢。 解决办法引入可公开的密码散列函数(Hash function) 。它将取任意

15、长度的消息做自变量,结果产生规定长度的消息摘要,如使用数字签名标准DSS 消息摘要为160比特, 然后签名消息摘要。,6.3 散列函数报文鉴别,对数字签名来说,散列函数h是这样使用的: 消息: x 任意长 消息摘要: Z=h(x) 160bits 签名:y=sigk(Z) 320 bits (签名一个消息摘要) 验证签名:(x,y),其中y= sigk(h(x) 使用公开的散列函数h, 重构Z=h(x) 然后检验Verk(Z,y),来看Z?=Z 消息摘要是报文中所有比特的函数值。 散列函数是单向函数,是消息认证码的一种变形。,Hash码用于消息认证的各种方法,用对称密码对消息及附加在其后的ha

16、sh码加密。由于只有A和B共享密钥,所以消息一定是来自A且未被修改过。hash码提供了认证所需的结构或冗余,并且由于该方法是对整个消息和hash码加密,所以也提供了保密性。,Hash码用于消息认证的各种方法,用对称密码仅对hash加密。hash函数和加密函数的合成函数即是MAC。也就是说EKH(M)是变长消息M和密钥K的函数,它产生定长的输出值,若攻击者不知道密钥,则他无法得出这个值。,Hash码用于消息认证的各种方法,用公钥密码和发送方的私钥仅对hash码加密,这种方法可提供认证,由于只有发送方可以产生加密后的hash码,所以也提供了数字签名。,若既希望保证保密性又希望有数字签名,则先用发送

17、方的私钥对hash码加密,再用对称密码中的密钥对消息和上述加密结果进行加密。这种技术比较常用。,Hash码用于消息认证的各种方法,该方法使用hash函数但不使用加密函数。假定通信双方共享公共的秘密值S,A将M和S联结后 再计算hash值,并将其附于M后。由于B也知道S,所以B可以计算hash值,并验证其正确性。,Hash码用于消息认证的各种方法,如果对整个消息和hash码加密,则(e)中的方法可提供保密性。,Hash码用于消息认证的各种方法,2. 基本的散列函数报文鉴别,3. 仅对散列码进行加密的鉴别方案,4.散列函数的特性,散列函数H( ) 的输入可以是任意大小的数据块。 散列函数H( )

18、的输出是定长。 计算需要相对简单,易于用软件或硬件实现。 单向性:对任意散列码值 h,要寻找一个M,使 H(M) = h在计算上是不可行的。 弱抗冲突性(weak collision resistance):对任何给定的报文M,若要寻找不等于M的报文M1 使H( M1 ) H(M) 在计算上是不可行的。该性质能够防止伪造 。,4.散列函数的特性,强抗冲突性(stronge collision resistance):要找到两个报文M和N使H(M)H(N)在计算上是不可行的。该性质指出了散列算法对“生日攻击”的抵抗能力。 前三个条件是hash函数实际应用于消息认证中所必须满足的;第四个条件是指由

19、消息很容易计算出hash码,但由hash码不能计算出相应的消息。第五条消息可以保证,不能找到与给定消息具有相同hash值的另一消息,因此可以在使用对hash码加密的方法中防止伪造。第六条性质涉及hash函数抗生日攻击这类攻击的能力强弱问题。,Hash函数应用,在线投标:先提交h(A)、h(B)、h(C),避免对手提前知道价格,当都收到再公开A、B、C; 清理垃圾邮件:h(M,R,T),5.简单散列函数的构造,1. 纵向冗余检验 把报文数据划分为若干n比特定长分组的B1,B2, ,Bm 。 散列函数值C的每一个位实际上是各数据分组对应位的一个简单的奇偶检验 ,即 其中, i = 1,2,n ,

20、m为n位输入块的个数,C(i) 为C的第i位。bij为第j块的第i位。,5.简单散列函数的构造,2. 循环移位 C0 = 0 初始值。 Ci = ROR(Ci-1) Mi i = (1 . n) ROR( ) 表示循环右移 1 位。 H(M) = Cn。 将输入数据完全随机化,掩盖了数据中规则化的信息。,5. 简单散列函数的构造,3. 密码分组链接(CBC) ,不用密钥 算法过程: 将报文 M划分成固定长度的分组 M1,M2, MN ; 采用类似DES加密的算法来计算散列码C: H0 为初始值 Hi = EMi ( H i-1 ) C = HN (散列码),6.安全散列函数的一般结构,一个迭代

21、的散列函数。 将输入报文分为 L个定长b比特的分组Y0, Y1, ,YL-1 。 最后一个分组需要填充至b 比特。最后一个分组包含了散列函数H( ) 的输入总长度。 散列算法中重复使用了一个压缩函数f ,f ( ) 的输人是前一轮的n比特输出(称为链接变量)以及当前的b比特分组,输出为n比特的链接变量值。,6.安全散列函数的一般结构,CV0 n比特的链接变量初始值 CVi f (CVi-1, Y i-1) 1 i L H(M) CVL,6.4 典型的散列算法MD5消息摘要算法,MD表示消息摘要(Message Digest),单向散列函数输入: 给定一任意长度的消息 输出: 长为m的散列值。

22、压缩函数的输入: 消息分组和前一分组的输出(对第一个函数需初始化向量IV); 输出: 到该点的所有分组的散列,即分组Mi的散列为 hi=f (Mi, hi1) 循环: 该散列值和下一轮的消息分组一起作为压缩函数下一轮的输入,最后一分组的散列就是整个消息的散列。,1. MD5消息摘要算法,6.4 典型的散列算法,MD5算法五个步骤: 1) 附加填充位 2) 附加长度 3) 初始化MD缓冲区 4) 按512位的分组处理 5) 输出,1. 1 安全散列函数 MD5,填充:填充后使报文长度加上64比特是512比特的整数倍,即填充后的报文长度K对512取模等于448(K mod 512 = 448)。填

23、充的比特模式为第一位为1其余各位为0,即1000。 附加长度值:将原报文长度的64比特表示附加在填充后的报文最后。报文长度是填充前原始报文的长度。若报文长度大于264,则使用该长度的低64位。报文被划分成L个成512比特的分组Y0,Y1, YL-1 。扩展后报文长度等于 512L位。,初始化消息摘要(MD)缓存器。MD5使用128 比特的缓存来存放算法的中间结果和最终的散列值。这个缓存由4个32 比特的寄存器A,B,C,D构成。MD5寄存器的初始值为: A 0x67452301 B 0xefcdab89 C 0x98badcfe D 0x10325476,1. 1 安全散列函数 MD5,1.1

24、 安全散列函数 MD5,处理每一个512 比特的报文分组。处理算法的核心MD5的压缩函数HMD5。HMD5压缩函数由4个结构相似循环组成。每次循环由一个不同的原始逻辑函数(分别以F,G,H和I表示)处理一个512比特的分组Yq 。每个循环都以当前的正在处理的512比特分组Yq和128比特缓冲值ABCD为输入,然后更新缓冲内容。在循环时还需要使用一个64位元素的常数表T。,1.1 安全散列函数 MD5,四轮的操作类似,每轮16次: 用到一个有64个元素的表T164,Ti=232abs(sin(i),i的单位为弧度。,16次,1.1 安全散列函数 MD5,四轮操作的不同之处在于每轮使用的非线性函数

25、不同,分别为(其输入/输出均为32位字): F(X,Y,Z) = (XY) (X) Z) G(X,Y,Z) = (XZ)(Y (Z) H(X,Y,Z) = XYZ I(X,Y,Z) = Y(X (Z) 其中,表示按位与; 表示按位或; 表示按位反; 表示按位异或。,1.1 安全散列函数 MD5,MD5中每一轮要对缓冲区ABCD进行16步迭代,每步迭代形为: ab+(a+g(b,c,d)+Xk+Tis 其中: a,b,c,d:缓冲区的四个字,它按一定次序随迭代步变化; g:基本逻辑函数F,G,H,I之一 s :32位的变量循环左移s位 Xk:Mq*16+k(消息第q个512位分组的第k个32位字

26、) Ti:矩阵中T的第i个32位字 +:模232加法,1.1 安全散列函数 MD5,输出:最后第 L个阶段产生的输出就是 128比特的报文摘要,结果保存在缓冲器ABCD中。第L个分组的输出即是128位的消息摘要。 特点: MD5算法的运算均为基本运算,比较容易实现且速度很快。,1.1 安全散列函数 MD5,MD5还广泛用于加密和解密技术上,在很多操作系统中,用户的密码是以MD5值(或类似的其它算法)的方式保存的, 用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不“知道”用户的密码是什么。,Ron Rivest的贡献,MD2、MD4

27、和 MD5 都是由 Ron Rivest开发的: MD2 是为 8 位计算机系统设计的; MD4 开始是为 32 位计算机系统开发的,适合小数在前的系统(80x86和pentium),1990 开发,简单易于编程,现在被认为是不安全的: 用3轮每轮16步,用了三个非线性函数, 没有Ti常量加 每轮没有叠加上轮的结果; RSA 实验室将 MD5 描述为“系有安全带的 MD4”,虽然比 MD4 慢, 但却被认为是安全的,对大数在前的系统性能较好。 SHA也是以MD4以基础设计的。,举例:求字符串“abc”的MD5散列值: abc的二进制表示为01100001 01100010 01100011。

28、(1) 填充消息(补位):消息长l=24,先填充1位1,然后填充423位0。 原始信息: 01100001 01100010 01100011 补位第一步:01100001 01100010 01100011 1 首先补一个“1” 补位第二步:01100001 01100010 01100011 100 然后补423个“0”,MD5算法实例,(2)补充长度:所谓的补长度是将原始数据的长度补到已经进行了补位操作的消息后面。通常用一个64位的数据来表示原始消息的长度。如果消息长度不大于264,那么第一个字就是0。在进行了补长度的操作以后,整个消息就变成下面这样了(16进制格式) 。 用消息长24,

29、即0x00000000 00000018填充,则: M0=61626380 M1=00000000 M2=00000000 M3=00000000 M4=00000000 M5=00000000 M6=00000000 M7=00000000 M8=00000000 M9=00000000 M10=00000000 M11=00000000 M12=00000000 M13=00000000 M14=00000000 M15=00000018,MD5算法实例,(3) 初始化: A: 01 23 45 67 B: 89 ab cd ef C: fe dc ba 98 D: 76 54 32 10

30、 (4) 主循环:本例只有一个字块,进行处理。 (5) 输出(128位): 消息摘要=90015098 3cd24fb0 d6963f7d 28e17f72,MD5算法实例,2. 安全散列函数 SHA-1,安全散列算法(SHA)是由美国国家标准和技术协会(NIST)提出的。 1993年作为美国联邦信息标准; 1995年又发布了其修订版 SHA-1; SHA 算法也是基于 MD4 的,其设计也是在MD4基础上改进而成的; SHA-1算法允许的最大输入报文的长度不超过264比特; 输出160比特的报文摘要。,图 SHA1算法,2.1 SHA-1算法的处理步骤,2) 初始化缓冲区 SHA要用到两个缓

31、冲区,均有五个32位的寄存器。 第一个缓冲区:A、B、C、D、E; 第二个缓冲区:H0、H1、H2、H3、H4。 运算过程中还用到一个标记为W0、W1、W79的80个32位字序列和一个单字的缓冲区TEMP。 在运算之前,初始化Hj:,H0 = 0x67452301 H1 = 0xEFCDAB89 H2 = 0x98BADCFE H3 = 0x10325476 H4 = 0xC3D2E1F0,1) 填充消息 将消息填充为512位的整数倍,填充方法和MD5完全相同。,2.1 SHA-1算法的处理步骤,3) 按512位的分组处理输入消息 SHA运算主循环包括四轮,每轮20次操作。 逻辑函数序列f0、

32、f1、f79,每个逻辑函数的输入为三个32位字,输出为一个32位字: ft (B,C,D) = (BC) (BD) (0t19) ft (B,C,D) = BCD (20t39) ft (B,C,D) = (BC) (BD) (CD) (40t59) ft (B,C,D) = BCD (60t79),2.1 SHA-1算法的处理步骤,还用到常数字序列K0、K1、K79: Kt = 0x5A827999 (0t19) Kt = 0x6ED9EBA1 (20t39) Kt = 0x8F1BBCDC (40t59) Kt = 0xCA62C1D6 (60t79),2.1 SHA-1算法的处理步骤,S

33、HA算法按如下步骤处理每个字块Mi: (1) 把Mi分为16个字W0、W1、W15,其中,W0为最左边的字。 (2) Wt的前16个值即时当前分组的16个字。Wt=Xt (3) for t =16 to 79 do let Wt =(Wt3 Wt8 Wt14 Wt16)1 (4) Let A =H0,B =H1,C =H2,D =H3,E =H4 (5) for t =0 to 79 do TEMP = (A5)+ft (B, C, D)+E +Wt +Kt ; E =D; D =C; C =(B30); B = A; A = TEMP; (6) Let H0 =H0 +A, H1 =H1 +

34、B, H2 =H2 +C, H3 =H3 +D, H4 =H4 +E,2.1 SHA-1算法的处理步骤,2.1 SHA-1算法的压缩函数,SHA-1压缩函数第t个步骤的操作过程,4) 输出 在处理完Mn后,160位的消息摘要为H0、H1、H2、H3、H4级联的结果。,2.1 SHA-1算法的处理步骤,举例 求字符串“abc”的SHA1散列值: abc的二进制表示为01100001 01100010 01100011。 (1) 填充消息:消息长l=24,先填充1位1,然后填充423位0,再用消息长24,即0x00000000 00000018填充。,(2) 初始化: H0 = 0x6745230

35、1 H1 = 0xEFCDAB89 H2 = 0x98BADCFE H3 = 0x10325476 H4 = 0xC3D2E1F0,SHA-1算法实例,(3) 主循环:处理消息字块1(只有1个),分成16个字计算: W0=61626380 W1=00000000 W2=00000000 W3=00000000 W4=00000000 W5=00000000 W6=00000000 W7=00000000 W8=00000000 W9=00000000 W10=00000000 W11=00000000 W12=00000000 W13=00000000 W14=00000000 W15=000

36、00018,SHA-1算法实例,处理完后,Hi的值为: H0 = 67452301 + 42541B35 = A9993E36 H1 = EFCDAB89 + 5738D5E1 = 4706816A H2 = 98BADCFE + 21834873 = BA3E2571 H3 = 10325476 + 681E6DF6 = 7850C26C H4 = C3D2E1F0 + D8FDF6AD = 9CD0D89D (4) 输出: 消息摘要 = A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D,SHA-1算法实例,SHA1与MD5的比较 SHA1是在MD4的

37、基础上开发的。,表3-1 SHA-1与MD5的比较,2.2 RIPEMD-160散列算法,RIPEMD-160算法是由欧洲的研究人员提出的。 使用两条分支,分别包含5个循环进行并行处理,以便增加在循环间寻找冲突的复杂性。 两条线在本质上采用相同的逻辑,但在两条分支中引入了尽可能多的差异,使两条并行线的组合具有更强的抵御攻击的能力。 允许任意长度的报文的输入,输出160比特的报文摘要。,RIPEMD-160散列算法描述,对报文进行填充,此步骤与MD5的操作相同。 附加长度值,此步骤也与MD5算法相同 初始化消息摘要(MD)缓存器。使用160 比特的缓存来存放算法的中间结果和最终的散列值。这个缓存

38、由5个32 比特的寄存器A,B,C,D,E构成。,RIPEMD-160散列算法描述,处理报文分组序列。处理算法的核心是一个10个循环的压缩函数模块,其中每个循环由16个处理步骤组成。在每个循环中使用不同的原始逻辑函数,分别表示为f1,f2,f3,f4和f5 。 在最后一个循环结束后,两条路线的计算结果ABCDE、ABCDE以及链接变量的初始值CVq经过一次相加运算产生最终的输出CVq+1,2.3 RIPEMD-160算法的压缩函数,对MD5的攻击,直接攻击 穷举可能的明文去产生一个和 H(m) 相同的散列结果,如果攻击者有一台每秒尝试1,000,000,000条明文的机器需要算约1022年,同

39、时兴许会同时发现m本身。 生日攻击 只是用概率来指导散列冲突的发现,对于MD5来说如果尝试264条明文,那么它们之间至少有一对发生冲突的概率就是 50。一台上面谈到的机器平均需要运行585年才能找到一对,而且并不能马上变成实际的攻击成果。,对MD5的攻击,其他攻击 微分攻击被证明对MD5的一次循环是有效的,但对全部4次循环无效。 (微分攻击是通过比较分析有特定区别的明文在通过加密后的变化传播情况来攻击加密体系的) 还有一种成功的MD5攻击,不过它是对MD5代码本身做了手脚,是一种crack而不是hack更算不上cryptanalysis了。,三种算法的安全性,强行攻击: MD5: 2128 。

40、 SHA-1: 2160 。 RIPEMD-160:2160 。 密码分析: MD5: 最弱。 SHA-1:比MD5更能抗密码分析。 RIPEMD-160:比MD5更能抵抗对强抗冲突性的生日攻击。,美国Hash函数标准SHA-1的破译,2005年2月14日,王小云、于红波和尹依群等人完成了SHA-1的破译。在SHA-1的破译工作中,王小云等人采用MD5的破译技术,成功解决了SHA-1差分分析中的一种不可能差分问题,这是SHA类算法(SHA-1, SHA-0)分析技术的难点与瓶颈,并解决了难以确定的满足碰撞路线的明文条件以及明文修改技术。这些关键技术的解决最终导致了SHA-1全算法的破译。,美国

41、Hash函数标准SHA-1的破译,2005年2月15日,在美国洛杉矶召开的万人参加的RSA年会上,Rivest、Shamir和Diffie 等5位世界顶级密码学家首次宣布了3位中国研究人员关于SHA-1的破译结果。Shamir评论道:“我相信这将会引起轩然大波,设计新的Hash函数算法极其重要”、“这是近几年密码学领域最美妙的(most wonderful)结果”。Rivest 评论道:“SHA-1的破译令人吃惊”、“数字签名的安全性在降低,这再一次提醒我们需要替换算法”。目前,关于SHA-1被破译的消息又一次引起国际社会的广泛关注,报道日渐增加,NIST再次发表评论,美国华尔街日报、科学杂志

42、上也刊登了专门报道。相信随着分析技术的明朗化,国际密码学家以及信息安全专家将会进一步意识到SHA-1被破译而带来的潜在危机。,6.5 信息隐藏,广义信息隐藏是指为了防止数据泄漏,将该数据嵌入某种载体中。古代主要使用密码术和隐写术,其中密码术是为了让信息无法被看懂,隐写术目的是隐蔽机密信息的存在。信息隐藏应用包括:伪装式隐蔽通信、数字水印和用于数字产品的版权保护(数字版权管理)。,1. 信息隐藏概述,(1)信息隐藏的历史,古代的信息隐藏主要包括技术性的隐写术、语言学中的隐写术和用于版权保护的隐写术。 技术性的隐写术的历史比较久远。公元前440年出现了用头发掩盖信息的方法,将消息写在头皮上,等到头

43、发长出来后消息被遮盖,这样消息可以在各个部落中传递。将信函隐藏在信使的鞋底、衣服的皱褶中,妇女的头饰和首饰中实现信息隐藏。 17世纪出现了,采用无形的墨水在特定字母上制作非常小的斑点来实现信息隐藏。1860年出现了微缩胶片,可以利用信鸽来传递胶片或者将胶片粘贴在无关紧要的杂志等文字材料中的句号或逗号上。,随着化学技术的发展,使用化学方法可以实现比较高级的隐写术,用笔蘸淀粉水在白纸上写字,然后喷上碘水,则淀粉和碘起化学反应后显出棕色字体,化学的进步促使人们开发更加先进的墨水和显影剂。 一些艺术作品中采用隐写术,在一些变形夸张的绘画作品中,从正面看是一种景象,侧面看又是另一种景象,这其中就可以隐含

44、作者的一些政治主张或异教思想。,(1)信息隐藏的历史,语言学中的隐写术也是被广泛使用的一种方法。 具有代表性的是“藏头诗”,又称为“镶嵌诗”或者“嵌字诗”,是把表明真意的字句分别镶嵌在诗句之中。 第二次世界大战期间一位热情的女钢琴家,常为联军作慰问演出,并通过电台播放自己谱写的钢琴曲。由于联军在战场上接连遭到失败,反间谍机关开始怀疑到这位女钢琴家,可一时又因找不到钢琴家传递情报的手段和途径而迟迟不能决断。原来这位德国忠实的女间谍,从联军军官那里获得军事情报后,就按照事先规定的密码巧妙地将其编成乐谱,并在电台演奏时一次次公开将重要情报通过悠扬的琴声传递出去。,(1)信息隐藏的历史,(2) 信息隐

45、藏的研究内容,随着计算机技术和互联网的发展,各种重要信息需要安全的传递,比如:政府信息、商务信息、个人隐私等,因此信息隐藏逐步受到重视。信息隐藏相关术语包括:信息隐藏(Information Hiding)、隐写术(Steganography)和数字水印(Digital Watermarking)。分类如图所示。,信息隐藏技术的分类,伪装式保密通信,利用人类感知系统以及计算机处理系统的冗余,载体可以是任何一种多媒体数据,如音频、视频、图像、甚至文本、数据等,被隐藏的信息也可以是任何形式(全部作为比特流),这种方法主要用于军队和安全部门。 用于版权保护的数字水印将版权所有者的信息,嵌入在要保护的

46、数字多媒体作品中,从而防止其他团体对该作品宣称拥有版权,用于盗版跟踪的数字指纹:同一个作品被不同用户买去,售出时不仅嵌入了版权所有者信息,而且还嵌入了购买者信息,如果市场上发现盗版,可以识别盗版者。 计算机系统中的隐蔽信道:在多级安全水平的系统环境中,那些根本不是专门设计的也不打算用来传输消息的通信路径称为隐蔽信道。这些信道在为某一程序提供服务时,可以被一个不可信的程序用来向它的控制者泄露信息,计算机系统中存在的安全漏洞也可以被利用作为秘密信道传递信息。,(2)信息隐藏的研究内容,2. 信息隐藏基本原理,A打算秘密传递一些信息给B,A需要从一个随机消息源中随机选取一个无关紧要的消息c,当这个消

47、息公开传递时,不会引起怀疑,称这个消息c为载体对象。把需要秘密传递的信息m隐藏到载体对象c中,此时,载体对象c就变为伪装对象c。秘密信息的嵌入过程需要密钥,此密钥称为伪装密钥。 载体对象是正常的,不会引起怀疑,伪装对象与载体对象无法区分,无论从感观上,还是从计算机的分析上,通信的安全性取决于第三方有没有能力将载体对象和伪装对象区别开来,对伪装对象的正常处理,不应破坏隐藏的信息。 信息隐藏可以分为:无密钥信息隐藏、私钥信息隐藏和公钥信息隐藏。,(1)无密钥信息隐藏,无密钥信息隐藏的过程为:映射E:CMC,其中,C:所有可能载体的集合;M:所有可能秘密消息的集合;C:所有伪装对象的集合。提取过程:映射D:CM,双方约定嵌入算法和提取算法,算法要求保密。 定义:对一个五元组=C,M,C,D,E,其中C是所有可能载体的集合,M是所有可能秘密消息的集合,C是所有可能伪装对象的集合。 E:CMC是嵌入函数 D:CM是提取函数 若满足性质:对所有mM和cC,恒有:D(E(c,m)=m,则称该五元组为无密钥信息隐藏系统。不同的嵌入算法,对载体的影响不同。选择最合适的载体,使得信息嵌入后影响最小,即载体对象与伪装对象的相似度最大,(2)私钥信息隐藏,Kerckhoffs准则:密码设计者应该假设对手知道数据加密的方法,数据的安全性必须仅依赖于密钥的安全性。无密钥

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1