信息安全概论 第4章 消息认证与数字签名
- 格式:pdf
- 大小:668.20 KB
- 文档页数:26
(十三)消息认证与数字签名作者:山石1.消息认证消息认证(MAC,Message Authentication Code),用来保护通信双方免受第三方的攻击,验证消息的完整性。
接收方能够验证收到的报文是真实的未被篡改的。
(1)认证方案如下:●发方将消息和认证密钥输入认证算法,得到消息的认证标签,一起发送消息和认证标签●收方将同样的认证密钥和收到的消息输入认证算法。
检验计算结果是否与收到的认证标签相同,若相同,则认为消息未经篡改,否则认为消息被入侵者篡改。
(2)对安全认证方案的要求:●通信双方能有效(容易)地产生任意消息的认证标签●通信双方能有效(容易)地验证一给定的数字串是否是一给定消息的认证标签●入侵者不能有效(容易)地产生通信双方没发送消息的认证标签。
2.数字签名(1)概念消息认证用以保护双方之间的数据交换不被第三方侵犯;但它无法防止通信双方的相互攻击(欺骗、抵赖等)。
假定A发送一个认证的信息给B,双方之间的争议可能有多种形式:●B伪造一个不同的消息,但声称是从A收到的。
●A可以否认发过该消息,B无法证明A确实发了该消息。
数字签名的基本功能,就是将消息与发起实体相关联,由签名算法和相应验证算法组成。
●数字签名过程:发送方用其私钥对报文进行加密●验证签名过程:利用发送方公钥解密签名,再与发送方出示的明文或明文摘要进行比较。
●签名算法:RSA、E1Gamal、DSS●签名方案:一次签名、群签名、盲签名等。
(2)数字签名的性质:●用户能有效(容易)地在他选择的文件上产生自己的签名。
●用户能有效(容易)地验证一给定的数字是否是另一特定用户在某特定文件上的签名。
●没人能在其他用户没签名的文件上有效(容易)地产生他们的签名。
(3)数字签名算法的分类:无仲裁数字签名:●仅涉及通信方,假定接受方知道发送方的公钥●优点:无仲裁,不需要与第三方通信,比较方便。
●缺点:方案的有效性依赖于发送方私钥的安全性。
如果私钥被窃取,他人就会冒充发送方进行签名。
电子商务信息安全技术消息认证与数字签名曹健消息认证与数字签名•消息认证•数字签名•复合型加密体制PGP消息认证与数字签名传输介质transmission medium 传送给B 的信息B 收到信息截取伪造攻击篡改中断入侵者C消息认证消息认证(Message Authentication)•消息认证用于抗击主动攻击•验证接收消息的真实性和完整性–真实性——的确是由所声称的实体发过来的–完整性——未被篡改、插入和删除消息认证(消息鉴别)是一个证实收到的消息认证(消息鉴别)是个证实收到的消息来自可信的源点且未被篡改的过程。
消息认证消息加密认证M ED M用户A 用户K eE (M)K d K ()•由于攻击者不知道密钥K ,也就不知道如何改变密文中的信息位才能在明文中产生预期的改变中的信息位才能在明文中产生预期的改变。
•接收方可以根据解密后的明文是否具有合理的语法结构来进行消息认证。
消息认证发送的明文本身并没有明显的语法结构或特征,例如二进制文件,很难确定解密后的消息就是明文本身。
二进制文件很难确定解密后的消息就是明文本身消息认证消息认证码(Message Authenticaion Code ,MAC )KMAC 用户A用户BMAC M C C 比较KMAC •A 和B 共享密钥K •A 计算MAC=C k (M),•和一起发送到M MAC 起发B •B 对收到的M ,计算MAC ,比较两个MAC 是否相同。
消息认证消息认证码•消息认证码是消息和密钥的公开函数,它产生消息认证码是消息和密钥的数它产生定长的值,以该值作为认证符。
•利用密钥和消息生成一个固定长度的短数据块,并将其附加在消息之后。
认证符:一个用来认证消息的值。
由消息的发送方产生认证符,并传递给接收方。
认证函数:产生认证符的函数,认证函数实际上代表了一种产生认证符的方法。
种产生认证符的方法消息认证消息认证码MAC函数与加密函数类似都需要明文密钥和•函数与加密函数类似,都需要明文、密钥和算法的参与。
1消息认证5数字签名4.1 消息认证41消息认证4.1.1 基本概念单向函数、单向Hash函数以及单向陷门函数单向函数单向H h非对称密码算法以及数字签名的基石。
本节将对这些基础概念一一作介绍。
顾名思义单向函数的计算是不可逆的即顾名思义,单向函数的计算是不可逆的。
即在计算机科学领域中,Hash函数是使用得最3.单向陷门函数单向陷门函数是一类特殊的单向函数,它包含一个秘密陷门。
4.1.1 基本概念4.1.2消息认证系统MAC f (K,M )MACAlice 发送方Alice接收方BobM KM密4.1.2消息认证系统用Hash 函数进行消息认证则不需要密钥的参与。
同消息认证码一样,Hash 函数也有多种使用方式:可以只进行H h 摘要也可以配合加密算法起使用类比图41图43Hash 摘要,也可以配合加密算法一起使用。
类比图4-1~图4-3,可以得到图4-4~图4-6的Hash 函数使用方式。
接收H=H (M )()M 发送方Alice 接收方Bob图4-6Hash M级联解密C 得到C 相等?H(C)加4-6 Hash 使用方式示意图——加密整个消息示意图——只加密M4.1.2 消息认证系统Hash函数相当于为需要认证的数据产生一个“数字指纹”。
为了能够实现对数据的认证,Hash函数应满足以下条件:(1)函数的输入可以是任意长。
(2)函数的输出是固定长。
)函数的输出是固定长(3)已知x,求H(x)较为容易,可用硬件或软件实现。
()已知,求使得()的在计算上是不可行的,这性4h H(x)=h x在计算上是不可行的,这一性质称为函数的单向性,称H(x)为单向Hash函数。
(5)对于给定的x,找出y(y≠x)使得H(y)=H(x)在计算上是不可行的。
如果单向Hash函数满足这一性质,则称其为弱无碰撞。
行的如果单向函数满足这性质则称其为弱无碰撞(6)找出任意两个不同的输入x、y,使得H(y)=H(x)在计算上是不可行的。
如果单向Hash函数满足这一性质,则称其为强无碰撞。
4.1.3MD5算法MD5是密码学家Ron Rivest 提出来的算法,MD5根源于一系列消息摘要算法,从最初很脆弱的MD 到现在广泛使用的MD5 R Ri t 做出了卓越的贡献(包括未发表的MD3),Ron Rivest 做出了卓越的贡献。
MD5是一种速度非常快的消息摘要算法。
MD5的输入可以是任意长,以512位为单位分成块,输出是128位的消息摘要。
大体上说,MD5算法总共分为以下五步:第一步:填充字节原始消息填充位长度:1~51264位长度值第步:填充字节第二步:分块第三步:初始化寄存器第四步处理每个分块第四步:处理每一个分块第五步:输出结果128位初始变量4.1.4 SHA算法SHA (Secure Hash Algorithm)算法最初是于1993年由美国国家标准与技术学会NIST和NSA联合发布的。
1995年作了一SHA--1。
SHASHA--1算法过程如图4-8所示。
些修订,后来正式更名为SHA些修订后来正式更名为所示始变量摘要4.1.4SHA 算法同MD5一样,SHA 是在MD4的基础上修改而成的。
因此,SHA 和MD5有很多的相同点。
SHA 大体也是由五步构成:第二步分块B第二步:分块第步第三步:要求CA第一步:填充初始化寄存器第四步:处理每ED第五步:输出结果一个分块4.1.5HMAC 算法下面将详细说明密钥变换k’S 1M密钥k HMAC 的七步操作过程。
第一步:密钥变换(MD5,SHA-1…)第二步:异或第三步:消息级联第四步计算消息摘消息摘要算法(MD5,SHA 1…)第四步:计算消息摘要第五步:异或第六步:消息级联第七步:输出最终结果数字名 4.2 数字签名4.2.1 数字签名的基本概念伪造一个消息并使用与(1)Bob伪造个消息并使用与Alice共享的密钥K产生该消息(2)既然Bob有可能伪造Alice发来的消息,那么Alice就可以发来的消息那么这两种欺骗在实际应用中都有可能发生。
双方争执不下而对簿公4.2.1 数字签名的基本概念①发送方必然产生自己独有的信息来签名以防止伪造和否认。
②这种签名很容易产生。
②这种签名很容易产生以下特点③对于接收方,应该很容易验证签名的真伪。
④对于给定的x,找出y(y≠x)使得签名S(y)=S(x)在计算上是不可行的。
⑤找出任意两个不同的输入x、y,使得S(y)=S(x)在计算上是不可行的。
4.2.2 DSA 签名算法DSA签名算法利用单向Hash函数产生消息的一个Hash值,H h值连同个随机数起作s s验Hash值连同一个随机数r一起作为签名函数的输入,签名函数还需使用发送方的秘密密钥和供所验证比较是否相等比较是否相等证有用户使用的公开密钥。
签名函数的两个输出s和t就构成了消息(s,t)。
接收方收到消息后的签名()接收方收到消息后再产生消息的Hash值,将Hash值与收到的签名一起输入验证函数,验证函数还需输入发送方的公开密钥。
如果验证函数的输出与收到的签名成分t相等,则验证了签名是有效的了签名是有效的。
4.2.3RSA 签名算法MMM MK 解密pri签名数据解密签名数据K pri签程名过程:(1)首先利用摘要算法计算消息的摘要H (M );(2)用私有密钥(n,d )加密消息摘要得到:。
下步骤进行验证:①利用摘要算法计算消息的摘要;②用公密n,e )加密消息摘要得到:。
如果,那么验证通过②开钥(,)得,验,否则拒绝接收该签名。
因为当且仅当M =时,。
4.2.4 Elgamal签名算法在上一章曾经介绍Elgamal非对称密码算法,这里将介绍Elgamal 签名算法。
Elgamal签名算法由T.Elgamal于1985年提出。
它的安全性g基于求解离散对数的困难性。
Elgamal签名算法的修正版已被美国NIST 作为数字签名的标准,即前面我们所介绍的DSA算法。
4.2.4 Elgamal签名算法4.2.5 其他数字签名方案还有很多其他的数字签名算法,比如Rabin签名算法、Rabin签名算法的安全性是建立在大数分解这难题签名算法的安全性是建立在大数分解这一难题上求解离散对数的困难。
它们统称为离散对数签名体上求解离散对数的困难它们统称为离散对数签名体T.Okamoto等设计的。
OSS签名算法于1984年由Ong,O等设计的O4.2.6 多重数字签名在很多情况下,需要两个或多个人员同时对一份文件进行签名,例如共同签署协议的Alice、Bob、Carlos甚至更多人员。
为描述方便起见,不妨假设Alice和Bob需要同时对文件进行签名。
那么,签名方案有三种:(1)Alice和Bob分别对文件的副本签名,如图4-12 所示(a)所示。
(2)Alice首先对文件进行签名,然后Bob对Alice的签名再进行签名,如图412 (b)所示。
-12(b)(3)利用单向Hash函数实现多重签名,如图4-12(c)所示。
4.2.6 多重数字签名两份文件和签名一起给起发送给CarlosBob的签名文件(a)Alice的签名(b)Alice签名进行文件发送给Carlos()Alice对文件Hash值签名文件发送给CarlosBob对文件Hash值签名12(c)图4-12 多重签名方案4.2.7 不可抵赖数字签名不可抵赖数字签名的思想非常简单,大致过程如下所述:所述(1)Alice向Bob出示一个签名。
(2)Bob产生一个随机数并送给Alice。
利用随机数和其私人密钥进行计算并将计(3)Alice利用随机数和其私人密钥进行计算,并将计算结果发送给Bob。
Alice只能计算该签名是否有效。
(4)Bob确认这个结果。
确认这个结果4.2.8 盲签名方案通常情况下,签名方需要了解他所要签署的文件的内容,否则他不会轻易签名。
完全盲签名并不真正实用,因为Alice可以让Bob签署任意份对签署任意一份对她有利的文件,比如“Bob欠Alice 100万美元”……实际应用中都采用“分割-选择”技术,可使Bob知道他所签署文件的大体内容,但是并不准确。
件的大体内容但是并不准确利用RSA算法,D.Chaum最初于1985年提出了第一个盲签名算法。
该算法原理如下:计算则么1.算机安全四大原是什?2.什么是机密性?什么是认证性?什么是完整性?什么是不可抵赖?请分别予以阐述。
3.什么是单向函数?请利用你所学过的数学知识,寻找一个函数y=f(x),使其具有以下要求:(1)x,y之间是一一对应的;(2)已知x,计算y很容易;(3)已知y,计算x相对比较复杂。
4.什么是消息认证?认证的内容包括哪些?4什5.消息认证的方法有哪两种?请阐述它们之间的区别。
6.什么是数字签名?有哪些比较著名的数6什字签名的算法?7.请用图表示RSA签名算法和DSA签名算法过程。
法的8.什么是多重数字签名?什么是不可抵赖数字签名?什么是盲签名?请举例说明它们分别用于什么场合。