Sun Yat-sen University
© 广东省信息安全技术重点实验室
消息认证和数字签名
中山大学信息科学与技术学院
王常吉 副教授
2006年11月
Sun Yat-sen University
© 广东省信息安全技术重点实验室
消息认证和数字签名
消息认证(Message Authentication)
验证所收到的消息确实是来自真正的发送方,并且未被
篡改的消息的过程
Hash函数(Hash Function)
散列函数是以变长的报文作为输入,产生一个定长的散
列值(也称消息摘要)作为输出
2 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
认证
信息与网络安全系统一方面需要防范攻击者对系
统进行被动攻击(采用加密机制来保护消息的机密
性,使其不被破译),另一方面需要防范攻击者对
系统进行主动攻击(如伪造,篡改信息等)。认证
(authentication)是防止主动攻击的重要技术,
它对于开放网络中的各种信息系统的安全性有重要
作用,认证的目的:
验证信息的发送者是真正的,而不是冒充的,此为信源
识别;
验证信息的完整性,在传送或存储过程中未被篡改,重
放或延迟等
3 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
消息认证模型
保密和认证是信息系统安全的两个方面,认证不
能自动提供保密性,而保密性也不能自然提供认证
功能。一个纯认证系统认证系统的模型如下图所示:
窜扰者
认证编码器 认证译码器
信道
安全信道
密钥源
信宿信源
4 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
消息认证模型
在这个系统中的发送者通过一个公开的无扰信道将消息
发送给接收者,接收者不仅想收到消息本身,而且还要
验证消息是否来自合法的发送者及消息是否经过篡改。
系统中的密码分析者不仅要截收和破译信道中传送的密
报,而且可伪造密文送给接收者进行欺诈,将其称为系
统的窜扰者(tamper)更加合适。实际认证系统可能还
要防止收方、发方之间的相互欺诈
上述标出的认证编码器和认证译码器可抽象为认证函数
一个安全的认证系统,首先要选好恰当的认证函数,然
后在此基础上,给出合理的认证协议(Authentication
Protocol)
5 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
消息认证模型
消息认证和数字签名方法在功能上分为两层:
下层中有产生认证符(一个用来认证消息的值)的函数,
上层协议中将该函数作原语使接收方可以验证消息的真
实性
可用来产生认证符的函数可分为三类:
消息加密:整个消息的密文作为认证符
消息认证码MAC:它是消息和密钥的公开函数,产生一
个固定长度的值作为认证符,MAC = F(K, M)
Hash函数:将任意长的消息映射为定长的Hash值的公开
函数,以Hash值作为认证符
6 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
消息认证模型
一个安全的消息认证系统,需满足
意定的接收者能够检验和证实消息的合法性、真实性和
完整性
消息的发送者和接收者不能抵赖
除了合法的消息发送者,其它人不能伪造合法的消息
7 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
消息加密(对称)
消息加密本身提供了一种认证手段(消息的自身加密可以
作为一个认证的度量)
对称加密方式
A与B共享密钥K
A→B:EK[M]=C
B:M=DK[C],查看M是否为有意义的明文(如何区分真实的明文和
随机的位串,解决的办法是强制明文具有某种结构)
信源
M E Ek(M)
D M
K K
信宿
8 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
消息加密(对称)
提供保密:仅A与B共享密钥K
提供一定程度的认证
仅来自A
传输中没有被更改
要求明文具有某种易于识别,但不能复制且无需加密的
的结构
不提供签名
接收人可以伪造报文
发送人可以伪造报文
9 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
消息加密(非对称)
KUb(B方的公钥)
M E EKUb(M) D M
KRb
公钥加密:机密性
M E EKRa(M) D M
KRa KUa
公钥加密:认证和签名
10 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
消息加密(非对称)
M E EkRa(M) E EKUb(EkRa(M))
KRa KUb
D EkRa(M) D M
KRb KUa
公钥加密:机密性,可认证和签名
11 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
消息认证码
MAC,也称密码校验和,是利用密钥来生成一个固定长度
的短数据块,并将该数据块附加在消息之后
假定通信双方A与B共享密钥K,A向B发送消息时,计算
MAC=CK(M),然后消息和MAC一起被发送给B,B对收到
的消息用相同的密钥K进行相同的计算,得出新的MAC,
并将接收到的MAC与B计算出的MAC进行对比,如果相等,
则
B可以相信消息未被篡改
B可以相信消息来自真正的发送方A
如果消息中含序列号,B可以相信消息的顺序正确
12 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
消息认证码
MAC函数类似于加密函数,但不需要可逆性,因
此在数学上比加密算法被攻击的弱点要少
MAC的基本用途
13 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
消息认证码
14 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
消息认证码
为什么使用消息认证码
保密性与真实性是两个不同的概念,从根本上讲,信息加密提供的
是保密性而非真实性
加密代价大(公钥算法代价更大)
认证函数与保密函数的分离能提供功能上的灵活性
认证码可延长报文的保护期限,同时能处理报文内容(使用加密,当
报文解密后,保护就失效了)
某些信息只需要真实性,不需要保密性
广播的信息难以使用加密(信息量大)
网络管理信息等只需要真实性
政府/权威部门的公告
15 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
消息认证码
对MAC的安全要求
如果一个攻击者得到M和CK(M),则攻击者构造一个消息
M-,使得CK(M-)= CK(M) 应在计算上不可行
CK(M) 应均匀分布,即随机选择消息M和M- ,CK(M)
=CK(M-) 的概率是2-n,其中n是MAC的位数
MAC值应平等地依赖于消息中的所有位,令M- 为M的某
些变换,即M- =f(M),例如f 可以涉及M中一个或多个给
定位的反转),在这种情况下,Pr[CK(M-)= CK(M) ] = 2-n
16 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
消息认证码
Data Authentication Algorithm
FIPS publication (FIPS PUB 113)
ANSI standard ()
有两种使用广泛的基于DES的MAC,一种按CFB模式,
一种按CBC模式运行。在CBC模式下,消息按64bit分组,
不足时以0补齐,初始向量为0,送入DES系统加密,但
不输出密文,只取加密结果最左边的r位作为认证符,r取
大小可由通信双方约定。美国联邦电信建议采用
24bit[FTSC-1026],而美国金融系统采用32bit
[ABA,1986]
17 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
哈希函数
H(M): 输入为任意长度的消息M,输出为一个
固定长度的散列值,称为消息摘要(Message
Digest),该散列值是消息M的所有位的函数并提
供错误检测能力(消息中的任何一位或多位的变化
都将导致该散列值的变化)
又称为哈希函数、散列函数、数字指纹(Digital finger
print)、压缩(Compression)函数、紧缩
(Contraction )函数、数据认证码DAC(Data
authentication code)、篡改检验码
MDC(Manipulation detection code)
18 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
哈希函数
H可应用于任意大小的数据块
H 产生定长的输出
对于任意给定的x,容易计算出H(x)
H是单向(one-way)函数
给定h,找到满足 h = H(x)的x在计算上是不可行的
complexity of finding x out of h is 2n, where n is the number of bits
in the hash output
抗弱碰撞性(Weak collision resistance)
对于任意给定的 x,找到满足x≠y且H(x)=H(y)的y在计算上是
不可行的
complexity of attack is 2n
19 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
哈希函数
强抗碰撞性(Strong collision resistance)
找到任何满足H(x)=H(y) 的偶对(x,y)在计算上是不可行的
complexity is 2n/2
前三条是Hash函数实际应用于消息认证中所必须满足的,
第四条单向性是指,由消息很容易计算出Hash码,但由
Hash码却不能计算出相应的消息,第五条性质是保证不能
找到与给定消息具有相同Hash值的另一消息,可以在使用
时对Hash值加密的方法中防止伪造,第六条性质涉及Hash
函数抗生日攻击的能力强弱
20 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
哈希函数分类
根据安全水平
弱无碰撞
强无碰撞
注:强无碰撞自然含弱无碰撞!
根据是否使用密钥
带秘密密钥的Hash函数:消息的散列值由只有通信双方
知道的秘密密钥K来控制,此时散列值称作MAC
不带秘密密钥的Hash函数:消息的散列值的产生无需使
用密钥,此时散列值称作MDC
21 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
哈希函数-生日攻击
如果采用传输加密的散列值和不加密的报文M,
攻击者需要找到M-,使得H(M-)=H(M),以便使用
替代报文来欺骗接收者
一种基于生日悖论的攻击可能做到这一点,生日
问题
一个教室中,最少应有多少个学生,才使至少有两人具
有相同生日的概率不小于1/2?
概率结果与人的直觉是相违背的
实际上只需23人,即任找23人,从中总能选出两人具有
相同生日的概率至少为1/2
22 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
生日攻击实例
A准备两份合同M和M-,一份B会同意,一份会取走他的财
产而被拒绝
A对M和M- 各做32处微小变化(保持原意),分别产生232
个64位hash值
根据前面的结论,超过的概率能找到一个M和一个M-
,它们的hash值相同
A提交M,经B审阅后产生64位hash值并对该值签名,返回
给A
A用M- 替换M
Hash必须足够长( 128, 160,224,256,…)
23 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
Hash函数和MAC的安全性
穷举攻击
对MAC的穷举攻击由于需要知道消息-MAC对,穷举攻击更加困难
密码分析
理想的Hash函数和MAC算法要求密码分析供给所需的代价大于或等
于穷举攻击所需的代价
单向性 2n
抗弱碰撞性 2n
抗强碰撞性 2n/2
24 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
哈希函数的构造
Merkle于1989年提出通用的迭代结构构造Hash函
数,几乎被所有hash函数使用
Ron Rivest于1990年提出MD4
具体做法:
把原始消息M分成一些固定长度的块Yi
最后一块padding并使其包含消息M长度
设定初始值CV0
压缩函数f,CVi=f(CVi-1, Yi-1)
最后一个CVi为hash值
25 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
哈希函数的通用结构
26 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
常用的Hash算法
几种重要的Hash函数
MD5
SHA-1
RIPEMD-160
消息认证码
HMAC
27 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
MD5
Merkle于1989年提出hash function模型
Ron Rivest于1990年提出MD4
1992年, Ron Rivest提出MD5(RFC 1321)
在最近数年之前,MD5是最主要的hash算法
现行美国标准SHA-1以MD5的前身MD4为基础
输入:任意长度消息
输出:128bit消息摘要
处理:以512bit输入数据块为单位
28 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
SHA
1992年NIST制定了SHA(128位)
1993年SHA成为标准(FIPS PUB 180)
1994年修改产生SHA-1(160位)
1995年SHA-1成为新的标准,作为SHA-1(FIPS PUB
180-1/RFC 3174),为兼容AES的安全性,NIST发布
FIPS PUB 180-2,标准化SHA-256, SHA-384和SHA-
512
输入:消息长度<264
输出:160bit消息摘要
处理:以512bit输入数据块为单位
基础是MD4
29 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
哈希函数
MD5 SHA-1 RIPEMD-160
Digest length 128 bits 160 bits 160 bits
Basic unit of
processing
512 bits 512 bits 512 bits
Number of steps 64 (4 rounds of
16)
80 (4 rounds
of 20)
160(5 paired
rounds of 16)
Maximum message
size
∞ 264-1 bits ∞
30 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
参考网址
31 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
消息认证的局限性
消息认证可以保护信息交换双方不受第三方的攻
击,但是它不能处理通信双方的相互攻击
信宿方可以伪造消息并称消息发自信源方,信源方产生
一条消息,并用和信源方共享的密钥产生认证码,并将
认证码附于消息之后
信源方可以否认曾发送过某消息,因为信宿方可以伪造
消息,所以无法证明信源方确实发送过该消息
在收发双方不能完全信任的情况下,引入数字签
名来解决上述问题
数字签名的作用相当于手写签名
32 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
数字签名
在公钥体制中,用接受者的公钥加密消息得到密
文,接受者用自己的私钥解密密文得到消息。加密
过程任何人都能完成,解密过程只有接受者能够完
成。
考虑一种相反的过程,发送者用自己的私钥“加
密”消息得到“密文”,然后利用发送者的公钥“
解密”密文得到消息。很显然,加密只有发送者能
够完成,而解密任何人都可以完成。 所以,任何
人都可相信是特定的发送者产生了该消息,这就相
当于“签名”,证明一个消息的所属
33 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
数字签名
随着计算机通信网的发展,人们希望通过电子设
备实现快速、远距离的交易,数字(或电子)签名法
应运而生,并开始用于商业通信系统,如电子邮递、
电子转账和办公自动化等系统。随着计算机网络的
发展,过去依赖于手书签名的各种业务都可用这种
电子数字签名代替,它是实现电子贸易、电子支票、
电子货币、电子购物、电子出版及知识产权保护等
系统安全的重要保证
34 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
数字签名
传统签名的基本特点
与被签的文件在物理上不可分割
签名者不能否认自己的签名
签名不能被伪造
容易被验证
数字签名是传统签名的数字化
能与所签文件“绑定”
签名者不能否认自己的签名
容易被自动验证
签名不能被伪造
35 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
数字签名
数字签名必须具有下述特征
收方能够确认或证实发方的签名,但不能伪造,简记为
R1-条件(unforgeable)
发方发出签名的消息给收方后,就不能再否认他所签发
的消息,简记为S-条件(non-repudiation)
收方对已收到的签名消息不能否认,即有收报认证,简
记作R2-条件
第三者可以确认收发双方之间的消息传送,但不能伪造
这一过程,简记作T-条件
36 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
数字签名
与手书签名的区别:手书签名是模拟的,且因人而异。
数字签名是0和1的数字串,因消息而异
与消息认证的的区别:消息认证使收方能验证消息发送
者及所发消息内容是否被窜改过。当收发者之间没有利
害冲突时,这对于防止第三者的破坏来说是足够了。但
当收者和发者之间有利害冲突时,就无法解决他们之间
的纠纷,此时须借助满足前述要求的数字签名技术
与消息加密区别:消息加密和解密可能是一次性的,它
要求在解密之前是安全的;而一个签名的消息可能作为
一个法律上的文件,如合同等,很可能在对消息签署多
年之后才验证其签名,且可能需要多次验证此签名。因
此,签名的安全性和防伪造的要求更高些,且要求证实
速度比签名速度还要快,特别是联机在线实时验证
37 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
数字签名
根据签名的内容分
对整体消息的签名
对压缩消息的签名
按明、密文的对应关系划分
确定性(Deterministic)数字签名,其明文与密文一一对应,
它对一特定消息的签名不变化,如RSA、Rabin等签名;
随机化的(Randomized)或概率式数字签名
38 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
数字签名算法
普通数字签名算法
RSA
ElGamal /DSS/DSA
ECDSA
盲签名算法
群签名算法
39 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
RSA签名方案
密钥的生成(同加密系统)
公钥Pk={e, n};私钥Sk={d, n}
签名过程 (用私钥d, n)
明文:M<n 密文:S=Md mod n
验证过程 (用公钥e, n)
给定M,S,Ver (M, S)为真,当且仅当M=Se mod n
安全性
由于只有签名者知道d,其他人不能伪造签名,但可易于证实所给任
意(M,S)对是否是消息M和相应签名构成的合法对
40 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
数字签名标准
美国国家标准与技术研究所NIST发布的联邦信息处理标准FIPS186
,称为数字签名标准DSS (Digital Signature Standard)
于1991年最初提出,1994年12月1日采纳为标准DSS,2000年发布
DSS的扩充版,即FIPS 186-2
DSS为EIGamal和Schnorr签名方案的改进,其使用的算法记为
DSA(Digital Signature Algorithm)。此算法由D. W. Kravitz设计。
DSS使用了SHA,安全性是基于求离散对数的困难性
只能用于数字签名,不能用于加密或密钥分配
安全性基于基于离散对数难题
DSS是一个产生签名比验证签名快得多的方案,验证签名太慢!
41 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
DSA算法描述
全局公钥(p,q,g)
p为512~1024bit的大素数,
q是(q-1)的素因子,为160比特的素数
g = h(p-1)/q mod p,且1< h <(p-1),使得
h(p-1)/q mod p >1
用户私钥x:x为0<x<q内的随机数
用户公钥y:y=gx mod p
42 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
DSA算法描述
用户每个消息用的秘密随机数k:0<k<q
签名过程:对报文M,签名为(r,s)
r = (gk mod p) mod q
s = (k-1(H(M) + xr) ) mod q
验证:
w = s-1 mod q
a = ( H(M)w ) mod q b = rw mod q
v = ( ( ga yb) mod p) mod q
Ver(M,r,s)= 真 iff v = r
43 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
数字签名标准
针对DSS的主要批评意见有:
DSA不能用于加密或密钥分配
DSA由NSA开发的,算法中可能设有陷门
DSA比RSA慢
RSA已是一个实际上标准,DSS与现行国际标准不相容
DSA未经公开选择过程,还没有足够的时间进行分析证
明
DSA可能侵犯了其它专利(Schnorr签名算法,Diffie-
Hellman算法
由512 bit所限定密钥量太小,现已改为512~1 024中可
被64除尽的即可供使用
44 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
盲签名
盲签名
一般数字签名中,总是要先知道文件内容而后才签署,
这正是通常所需要的。但有时需要某人对一个文件签名,
但又不让他知道文件内容,称此为盲签名(Blind
Signature)
Chaum在1983年提出
适应于电子选举、数字货币协议中
45 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
盲签名
Chaum提出第一个实现盲签名的算法,他采用了RSA算法。
令B的公钥为e,秘密钥为d,模为n
A要对消息m进行盲签名,选1<k<m,作
tmke mod n B
B对t签名, td (mke)d mod n A
A计算 Std/k mod n 得 S md mod n,这是B对m按RSA体制的签名
证明
td (mke)d mdk mod n td/kmd k/kmd mod n
46 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
群签名
群签名
群体密码学由Desmedt于1987年提出,群签名是群体密码
学中的课题,1991由Chaum和van Heyst提出,其特点
有:
只有群体成员才能代表群体签名
接收到签名的人可以用公钥验证群签名,但不可能知道
由群体中那个成员所签
发生争议时可由群体中的成员或可信赖机构识别群签名
的签名者
47 | 6/5/2019
Sun Yat-sen University
© 广东省信息安全技术重点实验室
群签名
群签名的应用
例如在电子投标中,所有公司应邀参加投标,这些公司
组成一个群体,且每个公司都匿名地采用群签名对自己
的标书签名。事后当选中了一个满意的标书,就可识别
出签名的公司,而其它标书仍保持匿名。中标者若想反
悔已无济于事,因为在没有他参加下仍可以正确识别出
他的签名。
群签名也可以由可信赖中心协助执行,中心掌握各签名
人与所签名之间的相关信息,并为签名人匿名签名保密;
在有争执时,可以由签名识别出签名人
48 | 6/5/2019