信息安全概论第五章消息认证与数字签名
信息安全原理及应用第5章消息认证
重复攻击
• Step 1:
– 给定M1和MAC1 = C k1 (M1)
– 对所有2k个密钥,判断MACi = C ki (M1) – 匹配数约为: 2k-n
• Step 2:
– 给定M2和MAC2 = C k1 (M1)
– 对所有2k-n个密钥,判断MACi = C ki (M2) – 匹配数约为: 2k-2n
• 平均来讲,若k=x*n,则需x次循环才能找到正确的密钥。 • 所以,用穷举法攻破MAC比攻破加密算法要困难得多。
对MAC的攻击—攻击算法
• 考虑下面的算法:
消息M=(X1‖X2‖…‖Xm)是由64比特长的分组Xi(i=1,…,m)链接而成 MAC算法是:
(M ) X1 X2 Xm
CK (M ) EK (M )
填充图样
消息长度
消息
Kbit L×512bit
100…0 64bit
• 如果消息长度大于264,则取其对264的模。
• 执行完后,消息的长度为512的倍数(设为L倍),则可将消 息表示为分组长为512的一系列分组Y0,Y1,…,YL-1,而 每一分组又可表示为16个32比特长的字,这样消息中的总字 数为N=L×16,因此消息又可按字表示为M[0,…,N-1]。
• 因此,认证函数比加密函数更不易被攻破,因为即 便攻破也无法验证其正确性。关键就在于加密函数 是一对一的,而认证函数是多对一的。
消息认证码的基本用途
• 只提供消息认证,不提供保密性。(见前) • 提供消息认证和保密性:
A
B
MKC||KE KDCM KC 比较 1
2 2 EK2[M || CK1 (M )]
Hash与MAC的区别
• MAC需要对全部数据进行加密 • MAC速度慢 • Hash是一种直接产生鉴别码的方法 • Hash可用于数字签名
第5章-消息认证、数字签名和密钥管理-网络10
5
图5-2 认证性
6
(1)发送方将消息M和MAC一起发送给接收方。 (2)接收方受到消息后,假设为M‘,使用相同的 密钥K,计算新的MAC’= C(K,M‘),比较MAC’和 所收到的MAC。如果计算得出的MAC'和收到的 MAC是相同的,则可认为:
接收方可以相信消息未被修改。因为若攻击者 篡改了消息,他必须同时相应地修改MAC值, 但攻击者不知道密钥,因此他不能在篡改消息 后相应地篡改MAC,而如果仅篡改消息,则接 收方计算的新MAC'将与收到的不同。
填充的方法是在消息后面添加一位“1”,后续 都是“0”。(如果消息长度正好为448位,则 仍需要填充512位,填充后的消息长度为 448+512=960位。)
(2)添加原始消息长度:在填充后的消息后面再 添加一个64位的二进制整数,表示填充前原始消 息的长度L。这时经过处理后的消息长度正好是 512位的倍数。
因此,HMAC使用的Hash函数并不局限于某一种 Hash函数,使用不同的Hash函数,就可得到不 同的HMAC算法。
24
2、HMAC算法
图5-6 HMAC 的总体结构
25
H:嵌入的Hash函数(如MD5); M:HMAC的消息输入(包括Hash函数所添加的填 充位); IV:作为Hash函数输入的初始值; Yi:M中的第i个分组,0≤i≤ L-1; L:是M的分组数; b:每一分组所含的位数; n:使用的Hash函数所产生的散列值的位长; K:密钥,建议密钥长度大于n。若密钥长度大于b, 则将密钥输入作为Hash函数的输入,产生一个n位 的密钥。 K+:为使K为b位长而在K左边填充0后的结果; ipad:为重复b/8次 00110110(十六进制数36)的 结果; opad:为重复b/8次01011100(十六进制数5C) 的结果;
信息安全第五章
(3)签名者B每次只能签[log2 n]比特长的消息, 获得同样长的签名。一般来说,所要签的消息都很 长,如果直接对消息进行签名只能先把所要签的消 息分成若干门。[log2 n]比特长的组,远分组进行 签名。因为RSA数字签名算法所涉及的是模2乘法 运算或模2指数运算,所以这样做带来的缺陷是速 度慢,而且签名太长。克服该缺陷的办法之一是在 对消息进行签名之前作一个压缩变换,这种变换称 作杂凑(Hash)变换,亦称杂凑函数。
2.EIGamal数字签名方案 EIGamal于1985年基于离散对数问题提出了一 个既可用于公钥密码体制又可用于数字签名方案的 密码体制。这个数字签名方案的一个变形已被美国 国家标准技术研究所(NIST)采纳为数字签名标准。 EIGamal数字签名方案像EIGamal公钥密码体制一 样是非确定性的。这意味着对给定的消息有许多合 法的签名。 EIGamal密码体制是基于Zp(p为素数) 上的离散对数问题计算上是难的这一假设。
RSA数字签名方案(或算法)基于RSA公钥密码 体制。该方案中,p=A=Zn,其中n;pq,p和q 是两个素数,定义K={(n,p,q,a,b)|n=pq,p, q为素数,ab=1 mod φ(n)}。密钥K=(n,p,q, a,b)中值n和b是公开的,值p,q和a是保密的。 对K=(n,p,q,a,b),定义Sig k(x)=xa mod n,x属于Zn。Ver k(x,y)=真<=>yb(mod n)=x,y属于Zn。
由于明文中加如了收,发时间等一些附加信息, 就使得第一个漏洞给堵住了,即A,B都无法拿以前的 报文来冒充当前的报文。其次B收到A的签名报文 后,只要用A的公开密钥验证A的签名并恢复出正确 的附加信息(A,B,i),便可以判定M是正确的(因为 (A,B,i)已知) 。
信息安全学习总结13-消息认证与数字签名
(十三)消息认证与数字签名作者:山石1.消息认证消息认证(MAC,Message Authentication Code),用来保护通信双方免受第三方的攻击,验证消息的完整性。
接收方能够验证收到的报文是真实的未被篡改的。
(1)认证方案如下:●发方将消息和认证密钥输入认证算法,得到消息的认证标签,一起发送消息和认证标签●收方将同样的认证密钥和收到的消息输入认证算法。
检验计算结果是否与收到的认证标签相同,若相同,则认为消息未经篡改,否则认为消息被入侵者篡改。
(2)对安全认证方案的要求:●通信双方能有效(容易)地产生任意消息的认证标签●通信双方能有效(容易)地验证一给定的数字串是否是一给定消息的认证标签●入侵者不能有效(容易)地产生通信双方没发送消息的认证标签。
2.数字签名(1)概念消息认证用以保护双方之间的数据交换不被第三方侵犯;但它无法防止通信双方的相互攻击(欺骗、抵赖等)。
假定A发送一个认证的信息给B,双方之间的争议可能有多种形式:●B伪造一个不同的消息,但声称是从A收到的。
●A可以否认发过该消息,B无法证明A确实发了该消息。
数字签名的基本功能,就是将消息与发起实体相关联,由签名算法和相应验证算法组成。
●数字签名过程:发送方用其私钥对报文进行加密●验证签名过程:利用发送方公钥解密签名,再与发送方出示的明文或明文摘要进行比较。
●签名算法:RSA、E1Gamal、DSS●签名方案:一次签名、群签名、盲签名等。
(2)数字签名的性质:●用户能有效(容易)地在他选择的文件上产生自己的签名。
●用户能有效(容易)地验证一给定的数字是否是另一特定用户在某特定文件上的签名。
●没人能在其他用户没签名的文件上有效(容易)地产生他们的签名。
(3)数字签名算法的分类:无仲裁数字签名:●仅涉及通信方,假定接受方知道发送方的公钥●优点:无仲裁,不需要与第三方通信,比较方便。
●缺点:方案的有效性依赖于发送方私钥的安全性。
如果私钥被窃取,他人就会冒充发送方进行签名。
05、消息认证与数字签名
消息认证与数字签名
21
5.2.2 散列函数旳使用方式
❖ 散列函数旳基本使用方法(a、b)
Provides confidentiality -- only A and B share K Provides authentication -- H(M) is cryptographically protected
❖ 问题:经过加密得到信息真实性?
保密性与真实性是两个不同旳概念。根本上,信息加密提供旳是保密 性而非真实性。
加密代价大(公钥算法代价更大)。 鉴别函数与保密函数旳分离能提供功能上旳灵活性。
广播旳信息难以使用加密(信息量大) 某些信息只需要真实性,不需要保密性
消息认证与数字签名
12
5.1.2 消息认证码
散列函数H是公开旳,散列值在信源处被附加在消息上,接受方经过 重新计算散列值来确保消息未被篡改。
因为函数本身公开,传送过程中对散列值需要另外旳加密保护(假如 没有对散列值旳保护,篡改者能够在修改消息旳同步修改散列值, 从而使散列值旳认证功能失效)。
消息认证与数字签名
19Biblioteka 5.2 散列(Hash)函数
息验证码 MAC=CK(M) 。发送给接受方B时,将它附加在报文中。
❖ 接受方收到报文使用相同旳密钥K执行相同旳计算,得到新旳MAC。接受
方将收到旳MAC与计算得到MAC进行比较,假如相匹配,那么能够确保报
文在传播过程中维持了完整性:
❖
(1)报文未被更改正
❖
(2)接受者确信报文来自真实旳发送者。(无人知晓密钥)
因为收发双方共享相同旳密钥,上述过程只提供认证而不提供保密, 也不能提供数字署名
消息认证与数字签名
14
第05章消息认证与数字签名
第五章 消息认证与数字签名
数字信封
数字信封(DIGITAL ENVELOPE) : 对数据进行加密的密钥必须经常更换。 数字信封解决两个难题:取长补短 单钥体制:密钥分发困难;高效;数据的加密 公钥体制:加解密时间长;灵活;密钥的加密 目的:利用数据接收者的公钥来封装保护加密 数据的密钥。
9
第五章 消息认证与数字签名
5
第五章 消息认证与数字签名
公开密钥算法的主要特点如下: 1)用加密密钥PK对明文A加密后得到密文,再用解 密 密 钥 SK 对 密 文 解 密 , 即 可 恢 复 出 明 文 A。 DSK(EPK(A))=A 2)加密密钥不能用来解密,即: DPK(EPK(A))≠A ;DSK(ESK(A))≠A 3)用 SK 加密的信息只能用 PK 解密;用 PK 加密的信 息只能用SK解密。 4)从已知的PK不可能推导出SK。
主要内容
数字信封 数字指纹 数字证书 数字签名 数字水印 密码管理
1
第五章 消息认证与数字签名
一、密码学通常的作用
公钥密码 ( 双钥密码、非对称密码),是 1976 年由 Diffie和Hellman在其“密码学新方向”一文中提出的 单向陷门函数是满足下列条件的函数f: (1)给定x,计算y=f(x)是容易的; (2)给定y, 计算x使y=f(x)是非常困难的,无实际意义。 (3)存在δ,已知δ 时,对给定的任何y,若相应的x存在, 则计算x使y=f(x)是容易的。 注:1*. 仅满足(1)、(2)两条的称为单向函数;第(3) 条称为陷门性,δ 称为陷门信息。
17
第五章 消息认证与数字签名
二、数字指纹
数字指纹是通过一类特殊的散列函数(HASH函 数)生成的,对这类HASH函数的特殊要求是: 1.输入报文的长度没有限制; 2.对输入任何报文,能生成固定长度的摘要 (数字指纹); 3.从报文能方便地算出摘要; 4.极难从指定的摘要生成一个报文,而由该 报文又反推算出该指定的摘要; 5.两个不同的报文极难生成相同的摘要。
MD(消息摘要)、MAC(消息认证码)、数字签名的区别
MD(消息摘要)、MAC(消息认证码)、数字签名的区别
MD(消息摘要)、MAC(消息认证码)、数字签名的区别
1.MD(消息摘要)
1.1摘要含义
摘要
摘要是哈希值,我们通过散列算法⽐如MD5算法就可以得到这个哈希值。
摘要只是⽤于验证数据完整性和唯⼀性的哈希值,不管原始数据是什么样的,得到的哈希值都是固定长度的。
不管原始数据是什么样的,得到的哈希值都是固定长度的,也就是说摘要并不是原始数据加密后的密⽂,只是⼀个验证⾝份的令牌。
所以我们⽆法通过摘要解密得到原始数据。
2.MAC(消息认证码)
hash算法只能验证数据的完整性,不能防⽌数据被篡改。
⽐如:遇见中间⼈攻击,你会发现攻击者对消息进⾏篡改了,但是通过hash算法计算摘要值,你是⽆法知道消息被改动过的。
因此这个时候就需要MAC算法了。
MAC值 = mac(消息+密钥)
2.2MAC的特点
跟hash算法⼀样,可以验证数据的完整性。
可以验证数据确实是由原始发送⽅发出的。
MAC值⼀般和原始消息⼀起传输,原始消息可以选择加密,也可以选择不加密,通信双⽅会以相同的⽅式⽣成MAC值,然后进⾏⽐较,⼀旦两个MAC值相同表⽰MAC验证正确,否则验证失败。
3.数字签名
MAC不能保证消息的不可抵赖性,⽽数字签名可以保证。
因为数字签名使⽤的是公钥密码体制,私钥只有你⾃⼰才知道;⽽MAC使⽤对称加密,既然⼀⽅能够验证你的MAC,就能够伪造你的MAC,因为发送⽅和接收⽅的秘钥是⼀样的。
当然如果你在MAC中绑定⼀些关键信息,并通过某些⼿段,让⼀⽅只能⽣成MAC,另⼀⽅只能验证MAC,其实也是可以实现签名效果的。
消息认证与数字签名
最后一次i循环得到的ABCD级联起来 (共4*32=128位 )就是报文摘要。
说明:常数组T[1…64]:T[i]为32位整 数,第i步中, T[i]取232*abs(sin(i))的整数 部分,用十六进制表示,i的单位是弧度。 有的算法中直接给出了常数。如第1轮:
[ABCD 0 7 oxd76aa478] [ABCD 0 7 oxe8c7b756] [ABCD 0 7 ox242070db] [ABCD 0 7 oxc1bdceee] ………
(3)报文分组
按照每组512位,将报文分成n+1组:Y0、 Y1…Yn。每一分组又可表示为16个32位的子 分组。
(4)初始化MD5参数
MD5中有4个32位的链接变量,用于存 储中间结构和最终散列值。初始值用十六进 制表示,分别为:
A=ox01234567 C=oxfedcba98 B=ox89abcdef D=ox76543210
第一个人的生日为特定生日; 第二个人不在该日生的概率为(1-1/365) ; 第三个人与前二人不同生日的概率为(1-2/365) ; ……………. 第t个人与前t-1人不同生日的概率为(1-(t-1)/365) ; 所以t个人都不同生日的概率为
1* (1-1/365) * (1-2/365) *…*(1-(t-1)/365)
没被改变。
5.使用Hash函数提供消息鉴别
①对称加密 提供保密与鉴别
A→B:EK(M‖H(M))
②对称加密
提供鉴别
A→B:M‖EK(H(M))
③公钥加密
提供鉴别与数字签名
A→B:M‖EKa(H(M))
④在③的基础上 对称加密 提供鉴别、数
字签名与保密 A→B:EK (M‖EKa(H(M)))
第05章 消息摘要与数字签名(2)
第6章
消息摘要与数字签名
(3)具有数据完整性的数字签名方法
–(5)接收方(B)收到消息(M)和加密的数字签名 (DE)后,使用自己的私钥解密加密过的数字签名 (DE) ,得数字签名。 –(6)接收方(B) 使用与A相同的消息摘要算法计算 消息摘要(MD2)。 –(7)接收方(B)用发送方的公钥解密数字签名。注 意A用私钥加密消息摘要,得到数字签名,因此只能 用A的公钥解密。这个过程得到原先的消息摘要(MDl )。
应的答复,李四的答复是用K王加密的,以为这是张三的公 钥。
(8)王五截获这个消息,用自己的私钥解密,非法获得信
息,并用张三的公钥K张重新加密信息,然后转发给张三, 张三用自己的私钥解密发过来的信息。
(9)这个过程不断重复,张三和李四发送的信息都被王五
看到,而他们两个还以为是直接进行通信呢。
第6章
第6章
消息摘要与数字签名
数字签名作用
用发送方的私钥加密消息有什么用? A的公钥是公开的,谁都可以访问,任何人都可以用其解
密消息,了解消息内容,因而无法实现保密。那么它的作 用是什么?它的作用是:
(1)身份认证:
–如果接收方B收到用A的私钥加密的消息,则可以用A 的公钥解密。如果解密成功,则B可以肯定这个消息是A 发来的。这是因为,如果B能够用A的公钥解密消息,则 表明最初消息用A的私钥加密(记住,用一个公钥加密的 消息只能用相应私钥解密,反过来,用一个私钥加密的 消息只能用相应公钥解密),而且只有A知道他的私钥 。 因此发送方A用私钥加密消息即是他自己的数字签名。
消息摘要与数字签名
李四提供自己的公钥K张,并请求李四也把他的公钥K李给张
三(相互要交换公钥)。
(2)中间攻击者王五截获张三的公钥K张,并用自己的公
计算机安全保密2008-05消息认证与数字签名
1 消息认证
2013-8-19
6
1 消息认证
即: 确定消息是否被篡改; 确定发送者身份。
2013-8-19
7
1 消息认证
消息机密性保证: A -> B: Ek2(M || Tk1(M)) A -> B: Ek2(M || Tk1(Ek2(M))) K1,K2均为共享密钥。
24
1 消息认证
md5中需用4个32位链接变量(整数参数),他们 分别为: A=0x01234567 B=0x89abcdef C=0xfedcba98 D=0x76543210 设臵好这四个链接变量后,开始进入四轮、循 环运算,循环的次数是信息中512位信息分组 的数目。
2013-8-19 25
2013-8-19
10
1 消息认证
2. 散列函数,哈希函数。 单向的哈希函数可以接受可变长度的输 入,输入可以是任意长的消息, 产生固 定长度的输出; 哈希函数保证如果输入信息发生改变, 输出的结果会完全不同。 “1+8=9”的结果后,无法由9逆推出 “9=8+1”。
2013-8-19 11
第1轮16步操作 [ABCD 0 7 1] [DABC 1 12 [BCDA 3 22 4] [ABCD 4 7 5] [DABC 5 12 [BCDA 7 22 8] [ABCD 8 7 9] [DABC 9 12 [BCDA 11 22 12] [ABCD 12 7 13] [DABC 13 15] [BCDA 15 22[CDAB 2 17 3]
6] [CDAB 6 17 7]
10] [CDAB 10 17 11] 12 14] [CDAB 14 17
06密码学基础(五)消息认证和数字签名PPT课件
MAC算法的要求
条件:
➢ 攻击者知道MAC函数但不知道密钥K
要求:
➢ 已知M和CK(M),要想构造M使得CK(M)=CK(M)在 计算上不可行 (计算上无碰撞)
➢ CK(M)均匀分布:随机选择M和M, Pr[CK(M) = CK(M)]=2-|MAC|
➢ f是M的一个变换(例如对某些位取反),那么, Pr[CK(M)= CK(f(M))]=2-|MAC|
对于任何选定的编码规则,则(相应于某一特定密钥) :发方从Y中选出用来代表消息的许用序列,即码字
收方根据编码规则唯一地确定出发方按此规则向他传 来的消息。
窜扰者由于不知道密钥,因而所伪造的假码字多是Y 中的禁用序列,收方将以很高的概率将其检测出来, 而被拒绝认证
系统设计者的任务是构造好的认证码 (Authentication Code),使接收者受骗概率极小化
y得*∈到A一k个, 以合使法接的收消者息收x*到,y*这后样,窜可扰用者密欺钥诈k解成密功 。 窜扰者虽然知道X,Y,y,A(.,.),但不知具体密码k
关于MAC算法
MAC不等于数字签名
➢ 因为通讯双方共享同一个密钥
MAC有固定的长度
MAC结构的重要性,例如,密钥足够长+加密 算法足够好安全
通信双方是用户A为发信方,用户B为接收方, 用户B接收到信息后,通过解密来判决信息是 否来自A、 信息是否是完整的、有无窜扰。
常规加密
公钥加密
私钥加密
公私钥加密
公(私d)公钥私加钥密加密:机:机密密性性,,可可认认证和证签和名签名
消息认证码(MAC)
简介: 设S为通信中的发方A发送的所有可能的信源集
保密和认证同时是信息系统安全的两个方面,但它们 是两个不同属性的问题。认证不能自动提供保密性, 而保密性也不能自然提供认证功能(能同时实现吗)
信息安全原理与技术之消息认证与数字签名
顺序修改:对通信双方消息顺序的修改,包括插入、 删除和重新排序。
计时修改:对消息的延迟和重放。在面向连接的应用 中,攻击者可能延迟或重放以前某合法会话中的消息 序列,也可能会延迟或重放是消息序列中的某一条消 息。
2020/4/21
2
认证的目的
9
对MAC的攻击
•第一轮
·给定M1, MAC1=CK(M1) ·对所有2k个密钥判断MACi=CKi(M1)
·匹配数2(k-n) 。
•第二轮
·给定M2, MAC2=CK(M2) ·对循环1中找到的2(k-n)个密钥判断MACi=CKi (M2)
·匹配数2(k-2n) 。
❖ 攻击者可以按此方法不断对密钥进行测试,直到 将匹配数缩写到足够小的范围。平均来讲,若
23
Yuval的生日攻击(续)
❖ (3) 攻击者在上述两个消息集合中找出可以产生相同 散列值的一对消息。根据“生日悖论”理论,能找 到这样一对消息的概率是非常大的。如果找不到这 样的消息,攻击者再产生一条有效的消息和伪造的 消息,并增加每组中的明文数目,直至成功为止。
❖ (4) 攻击者用第一组中找到的明文提供给签名方要求 签名,这样,这个签名就可以被用来伪造第二组中 找到的明文的数字签名。这样,即使攻击者不知道 签名私钥也能伪造签名。
ON-1
ON
2020/4/21
13
Hash函数
❖ Hash函数(也称散列函数或杂凑函数)是将 任意长的输入消息作为输入生成一个固定 长的输出串的函数,即h=H(M)。这个输 出串h称为该消息的散列值(或消息摘要, 或杂凑值)。
2020/4/21
14
安全的Hash函数的要求
第5章 消息认证与数字签名
②:有保密功能的认证系统与无保密功能的认证系统
有保密功能的认证系统能够同时提 供认证和保密两种功能;
无保密功能的认证系统只是纯粹的 认证系统。
7
③:有仲裁认证系统与无仲裁认证系统。
传统的认证系统只考虑了通信双方互相信任, 共同抵御敌 方的主动攻击的情形, 此时系统中只有参与通信的发方和接收 方及发起攻击的敌方, 而不需要裁决方。因此, 称之为无仲裁 人的认证系统。
但在现实生活中, 常常遇到的情形是通信双方并不互相信 任,比如,发信方发送了一个消息后, 否认曾发送过该消息; 或者收信方接收到发方发送的消息后,否认曾接收到该消息或 宣称接收到了自己伪造的不同于接收到的消息的另一个消息。 一旦这种情况发生, 就需要一个仲裁方来解决争端。这就是有 仲裁人认证系统的含义。有仲裁人认证系统又可分为单个仲裁 人认证系统和多仲裁人认证系统。
第五章 消息认证与数字签名
1
保证信息的完整性主要通过信息认证和 数字签名来实现。
公钥密码体制最重要的一种应用是 数字签名。而数字签名通常需要与散列 函数结合起来使用。
本章先介绍信息认证,然后介绍散 列函数,最后介绍数字签名。
2
5.1消息认证
• 消息认证主要是用来保证信息的完整性当接 收方收到发送方的报文时,接收方能够验证 收到的报文是真实的未被篡改的。 • 检验内容应包括: (1)证实报文的源和宿 (2)报文内容是否曾受到偶然的或有意的 篡改 (3)报文的序号和时间栏 总之,消息认证使接收者能识别消息的 源,内容的真伪,时间性和意定的信宿.
14
散列函数的性质
• H能用于任何大小的数据分组,都能产生定长的输出 • 对于任何给定的x,H(x)要相对易于计算 • 对任何给定的散列码h,寻找x使H(x)=h在计算上不可行 • 对任何给定的分组x,寻找不等于x的y,使得H(x)=H(y)在计 算上不可行(弱抗冲突)
第五章 消息认证与数字签名
签名者不能否认自己的签名 签名不能被伪造 容易被自动验证
数字签名应具有的性质
必须能够验证作者及其签名的日期时间; 必须能够认证签名时刻的内容; 签名必须能够由第三方验证,以解决争议; 因此,数字签名功能包含了鉴别的功能
数字签名的设计要求
签名必须是依赖于被签名信息的一个位串模式; 签名必须使用某些对发送者是唯一的信息,以防止双方的 伪造与否认; 必须相对容易生成该数字签名; 必须相对容易识别和验证该数字签名; 伪造该数字签名在计算复杂性意义上具有不可行性,既包 括对一个已有的数字签名构造新的消息,也包括对一个给 定消息伪造一个数字签名; 在存储器中保存一个数字签名副本是现实可行的。
Hash函数的分类
根据是否使用密钥 带秘密密钥的Hash函数:消息的散列值由只 有通信双方知道的秘密密钥K来控制。此时, 散列值称作MAC。 不带秘密密钥的Hash函数:消息的散列值 的产生无需使用密钥。此时,散列值称作 MDC。
Hash与MAC的区别
MAC需要对全部数据进行加密 MAC速度慢 Hash是一种直接产生鉴别码的方法
HASH 函数h = H(M)
满足: 1、H可以作用于一个任意长度的数据块; 2、H产生一个固定长度的输出; 3、对任意给定的x ,H(x) 计算相对容易,无论是软件还是硬件实现。 4、对任意给定码h,找到x满足H(x)=h具有计算不可行性;(单向性) 5、对任意给定的数据块x,找到满足H(y)=H(x)的y≠x具有计算不可行 性。 6、找到任意数据对(x,y),满足H(x) = H(y)是计算不可行的。 前三条要求具有实用性,第4条是单向性质,即给定消息可以产生一 个散列码,而给定散列码不可能产生对应的消息。第5条性质是保证 一个给定的消息的散列码不能找到与之相同的另外的消息。即防止伪 造。第6条是对已知的生日攻击方法的防御能力。
3消息认证和数字签名(武汉大学国际软件学院信息安全课程)
MAC举例:基于DES的消息认证码
基于DES的消息认证码
建立在DES上的数据认证算法(FIPS PUB 113) 是使用最广泛的MAC算法之一,也是一个 ANSI标准(X9.17) 数据认证算法采用DES运算的密文块链接 (CBC)方式,其初始向量为0,需要认证的 数据分成连续的64位的分组D1, D2, … , DN, 若最后分组不足64位,则在其后填0直至成为 64位的分组。利用DES加密算法E和密钥K, 计算数据认证码(DAC)的过程如图11.6所示。
Hash函数的安全性
Hash函数的安全性:Hash函数的安全性 取决于其抗击各种攻击的能力,对手的 目标是找到两个不同消息映射为同一 Hash值。 一般假定对手知道Hash算法,采用选择 明文攻击法。
HASH算法
MD5消息摘要算法(RFC 1321)
输出128b的消息摘要 输出160b的消息摘要
K
对HASH函数的要求
对HASH函数的要求
1. 2. 3. 4. H可应用于任意大小的数据块 应用于消息认 H产生定长的输出 证必须满足的 对任意给定的x,计算H(x)容易 对于给定的hash值h,找到满足H(x)=h的x在计算上 是不可行的——单向性 5. 对于给定的分组x,找到满足yx且H(y)=H(x)的y在计 算上是不可行的——抗弱碰撞性 6. 找到任何满足H(x)=H(y)的偶对(x,y)在计算上是不可 行的——抗强碰撞性
消息认证码的基本用法
提供认证
(a)消息认证 (b)消息认证和保密性:与明文有关的认证 (c)消息认证和保密性:与密文有关的认证
提供认证和保密性
(a)消息认证
信息安全第五章119页
验证方法:
对上述两个问题,只要合理设计明文格式便可 以解决。一种可行的格式如下:
明文=<发方标示符><收方标示符><报文序号><时 间><数据正文><纠错码>
形式上可将A发给B的第i份报文表示为: M=(A,B,i,T,D,C)
将报头附加信息记为: M1=(A,B,i)
A发给B的最终报文为(M1,M),其中M1为明文格 式,M为密文形式。
由于明文中加如了收,发时间等一些附加信息, 就使得第一个漏洞给堵住了,即A,B都无法拿以前的 报文来冒充当前的报文。其次B收到A的签名报文 后,只要用A的公开密钥验证A的签名并恢复出正确 的附加信息(A,B,i),便可以判定M是正确的(因为 (A,B,i)已知) 。
RSA数字签名方案(或算法)基于RSA公钥密码 体制。该方案中,p=A=Zn,其中n;pq,p和q 是两个素数,定义K={(n,p,q,a,b)|n=pq,p, q为素数,ab=1 mod φ(n)}。密钥K=(n,p,q, a,b)中值n和b是公开的,值p,q和a是保密的。
对K=(n,p,q,a,b),定义Sig k(x)=xa mod n,x属于Zn。Ver k(x,y)=真<=>yb(mod n)=x,y属于Zn。
鉴定中心是一个政府参与管理的第三方成员, 以便保证信息的安全和集中管理。用户在获取公开 密钥时,首先向鉴定中心请求数字确认,鉴定中心 确认用户身份后,发出数字确认,同时鉴定中心向 数据库发送确认信息。然后用户使用私有密钥对所 传信息签名,保证信息的完整性、真实性,也使发 送方无法否认信息的发送,之后发向接收方;接收 方接收到信息后,使用公开密钥确认数字签名,进 入数据库检查用户确认信息的状况和可信度;最后 数据库向接收方返回用户确认状态信息。不过,在 使用这种技术时,签名者必须注意保护好私有密钥, 因为它是公开密钥体系安全的重要基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.1.1 信息加密认证
信息加密函数分两种,一种是常规的对称密钥加密函数, 另一种是公开密钥的双密钥加密函数。下图的通信双方 是,用户A为发信方,用户B为接收方。用户B接收到信 息后,通过解密来判决信息是否来自A, 信息是否是完 整的,有无窜扰。
1.对称密码体制加密: 对称加密:具有机密性,可认证,不提供签名
通常b>n
24
5.2.3
MD5算法
Ron Rivest于1990年提出了一个称为MD4的散列函数。 他的设计没有基于任何假设和密码体制,不久,他的 一些缺点也被提出。为了增强安全性和克服MD4的缺 陷, Rivest于1991年对MD4作了六点改进,并将改进 后的算法称为MD5. MD5算法:将明文按512比特进行分组,即MD5中的 b=512bit,经填充后信息长度为512的倍数(包括64 比特的消息长度)。 填充:首位为1,其余补0至满足要求,即填充后的比 特数为512的整数倍减去64,或使得填充后的数据长 度与448模512同余。
18
通过以下方式使用散列函数常提供消息认证
(1)使用对称加密算法对附加消息摘要的报文进行加密 A B: EK(M||H(M)) 提供保密、认证 (2)使用对称加密方法对消息摘要加密 A B: M||EK(H(M)) 提供认证 (3)使用发方的私钥对消息摘要进行加密 A B: M||EKRa(H(M)) 提供数字签名、认证 (4)在(3)的基础上,使用对称加密方法进行加密 A B: EK(M||EKa(H(M)) ) 提供数字签名、认证和保密 (5)假定双方共享一个秘密值S,与消息M串接,计算散 列值 A B: M||(H(M||S)) 提供认证 (6)假定双方共享一个秘密值S,使用散列函数,对称加 密方法 A B: EK(M||H(M||S)) 提供数字签名、认证和保密19
3
信息认证检验的内容:证实报文的信源和信宿、 报文内容是否遭到偶然或有意地篡改、报文的 序号是否正确,报文到达的时间是否在指定的 期限内。这种认证只在通信的双方之间进行, 而不允许第三者进行上述认证。认证不一定实 时的。 保密和认证同时是信息系统安全的两个方面, 但它们是两个不同属性的问题,认证不能自动 提供保密性,而保密性也不能自然提供认证功 能。一个纯认证系统的模型如下图所示:
17
注意:前两个性质使得散列函数用于消息认证成为可 能。 第二和第三个性质保证H的单向性,保证攻击者无法 通过散列值恢复消息。 第四个性质保证了攻击者无法在不修改散列值的情况 下替换消息而不被察觉。 第五个性质比第四个更强。保证了一种被称为生日攻 击的方法无法凑效。 生日问题:一个教室中,最少应有多少学生,才使至 少有两人具有相同生日的概率不小于1/2? 实际上只需23人,即任找23人,从中总能选出两人具 有相同生日的概率至少为1/2。
7
• 如何自动确定是否收到的明文可解密为可懂的明文?
• 一种解决办法是强制明文有某种结构.
差错控制:Error Control
8
2. 公钥密码体制加密认证: (1)公钥加密:具有机密性,不能提供认证(任何人 都可以得到公钥)
(2)私钥加密:认证和签名,没有保密性
9
(3)公钥加密体制:机密性,可认证和签名
10
5.1.2 消息认证码(MAC)
消息认证码(MAC)是在密钥的控制下将任 意长的消息映射到一个简短的定长数据分组, 并将它附加在消息后。MAC进行消息的认证 过程如图:
MAC的基本用法(a)
消 息 K 认证算法 消 息
MAC
消 息
MAC
K
比较
认证算法
MAC
认证码的使用
11
A B: M||CK(M) 即A使用双方共享的密钥K对明文进行计算,产生一个 短小的数据块,即消息验证码 MAC=CK(M) 。发送给 接收方B时,将它附加在报文中。 接收方收到报文使用相同的密钥K执行相同的计算, 得到新的MAC。接收方将收到的MAC与计算得到 MAC进行比较,如果相匹配,那么可以保证报文在 传输过程中维持了完整性: (1)报文未被更改过 (2)接收者确信报文来自真实的发送者。(无 人知晓密钥) 注意:上述认证过程只提供认证、不提供保密性。
15
5.2 散列(Hash)函数
散列函数(又称杂凑函数)是对不定长的输入产生定 长输出的一种特殊函数:h=H(M) M: 变长消息 h=H(M)是定长的散列值(或称消息摘要) H:散列函数,是公开的; H(M)又称为:哈希函数、数字指纹(Digital finger print)、压缩(Compression)函数、数据鉴别码 (Dataauthentication code)等 散列值在信源处被附加在消息上,接收方重新计算散 列值来确认消息未被篡改。由于函数本身公开,传送 过程中需要对散列值加密保护(如果没有对散列值的 保护,篡改者可以在修改消息的同时修改散列值,从 而使散列值的认证功能失效)。
23
Y0 b n Vi=CV0
Y1 b b n n
YL-1
f
n CV1
f
CV2 CVL-1 迭代型散列函数的结构
f
n CVL
MD4算法如下: CV0=Vi CVi=f(CVi-1,Yi-1) h=H(M)=CVL=f(CVL-1,YL-1) Vi:初始链接变量
CVi-1:连接变量;f:压缩函数(由若干轮处理组成);
12
MAC的基本用法(b)
A
ห้องสมุดไป่ตู้
B:
EK2(M||CK1(M))
提供消息认证与保密,认证码与明文连接 Provides authentication -- only A and B share K1 Provides confidentiality -- only A and B share KK2 2
认证 和保密
认证
认证和 数字签名
20
认证 保密和 数字签名
认证
S:双方共享的秘密值
认证 保密和
21
Hash vs MAC
MAC需要对全部数据进行加密 MAC速度慢 Hash是一种直接产生认证码的方法
22
5.2.2 散列函数的结构
为了对不定长的输入产生定长的输出,并且最后的 结果要与所有的字节有关,大多数的散列函数的结 构都采用了分块填充链接的模式,其结构是迭代型 的。 以MD4为例讲解散列函数的结构 MD4散列函数将输入数据分为L个固定长度为b比特 的分组。 输入数据包括:消息、填充数据和消息的长度值 (消息长度值用64比特表示)。 说明:填充数据的目的是使输入数据为b比特的倍 数;增加消息长度值将增加攻击者攻击的难度。 散列函数的结构如图所示:
第五章 消息认证与数字签名
5.1 5.2
5.3
信息认证 散列(Hash)函数
数字签名体制
1
问题的提出
通信威胁 1. 泄露:把消息内容发布给任何人或没有合法密 钥的进程。 2. 伪造:从一个假冒信息源向网络中插入消息。 3. 内容修改:消息内容被插入删除变换修改。 4. 顺序修改:插入删除或重组消息序列。 5. 时间修改:消息延迟或重放。 6. 否认:接受者否认收到消息,发送者否认发送过 消息。
2
5.1 信息认证
回顾:前面讲述的对称密码(如DES和AES)和公 钥密码体制(RSA)都是围绕信息的保密性,即防 止第三方获取明文消息而展开的,但信息的完整性 和抗否认性也是信息安全内容的重要特征。保证信 息的完整性和抗否认性是通过信息认证和数字签名 来实现的。 信息认证(消息认证)验证信息的完整性,当接收 方收到发送方的报文时,接收方能够验证收到的报 文时真实的未被篡改的。 (包括顺序和及时性) 它包含两方面的含义: (1)验证信息的发送者是真正的而不是冒充的,即数 据起源验证; (2)验证信息在传递过程中未被篡改、重放或延迟等。
29
Hash 函数
MD5 :对输入消息(任意长)按照 512 位进行分组处理,输出128位消息摘要 SHA-1:输入长度小于2^64位消息,按 512位进行分组处理,输出160位消息摘 要。 RIPEMD-160:对输入消息(任意长) 按照 512位进行分组处理,输出160位消 息摘要
30
5.3 数字签名体制
25
1到512 比特的填充 Lx512比特 K比特 消息
消息长度
100…0
512bit
512bit
512bit
512bit
Y0
128 512 128
Y1
512
…
128
Yq
512
…
YL-1
512 128
CV0=VI
HMD5
CV1
HMD5
CVq
HMD5
CVlL-1
HMD5
MD5的框图
消息摘要 128bit
13
MAC的基本用法(c)
A
B:
EK2(EK2(M) ||CK1(EK2(M)))
提供消息认证与保密,认证码与密文连接 Provides authentication -- Using K1 Provides confidentiality -- Using K2
14
消息认证 VS 常规加密
MAC函数类似于加密函数,主要区别在于MAC函 数不需要可逆而加密函数必须是可逆的,因此,认 证函数比加密函数更不易破解。 保密性与真实性是两个不同的概念 根本上,信息加密提供的是保密性而非真实性 加密代价大(公钥算法代价更大) 认证函数与保密函数的分离能提供功能上的灵活性 某些信息只需要真实性,不需要保密性 – 广播的信息难以使用加密(信息量大) – 网络管理信息等只需要真实性 – 政府/权威部门的公告
数字签名是电子商务安全的一个非常重要的分支,在 大型网络安全通信中的密钥分配、安全认证、防否认 等方面具有重要作用。 1999年美国参议院已通过了立法,规定数字签名与 手写签名的文件、邮件在美国具有同等的法律效力。 前面我们讲述的消息认证是保护通信双方之间不受第 三方的攻击,但却无法防止通信双方中一方对另一方 的欺骗。如A伪造一个消息并使用与B共享的密钥产 生该消息的认证码,然后声称该消息来自于B,同样, B也可以对自己给A发送的消息予以否认。因此,除 了认证之外还需要其他机制来防止通信双方的抵赖行 为,最常见的是数字签名技术。