信息安全概论消息认证与数字签名
信息安全概论 第4章 消息认证与数字签名

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)在计算上是不可行的。
第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.两个不同的报文极难生成相同的摘要。
第7章 消息认证与数字签名

第7章 消息认证与数字签名
11
数字签名的概念
• 数字签名是对以数字形式存储的电子信息进行处 理,产生一种类似于传统手写签名功能的信息处 理过程。
• 它通常将某个算法作用于需要签名的消息,产生 一种带有操作者身份信息的编码。
22
(3)公钥加密提供保密、认证和数字签名
ePU (ePR (m)) A→B:
b a
A
B
m
e
PRa
ePRa (m)
e
PUb
ePUb (ePRa (m))
d
PRb
ePRa (m)
d
PUa
m
• 提供保密:只有接收方B拥有私钥PRb,才能正确解密得 到明文。 • 提供认证:只有A拥有私钥PRa,只能发自A。 • 提供数字签名:只有A拥有私钥PRa,任何人包括B都不能 伪造密文,发送方不可否认发送消息。 第7章 消息认证与数字签名
– 底层的认证函数对消息生成某种认证标 志; – 上层的认证协议基于认证标志提供一种 分析、鉴别、验证消息真实性的机制。
第7章 消息认证与数字签名
17
认证函数
• 消息加密:将整个需要认证的消息加密, 加密的密文作为认证标志。
• 消息认证码(MAC):将需要认证的消息 及密钥通过MAC函数得到一个固定长度的 MAC值,将其作为认证标志。 • Hash函数:将需要认证的消息通过Hash函 数得到一个固定长度的消息摘要值,将其 作为认证标志。
第7章 消息认证与数字签名
2
第7章 消息认证与数字签名
• 认证可分为实体认证和消息认证两大类。 –实体认证即证实某个人是否是他所声称 的那个实体,也称为身份认证 ; –消息认证即消息接收者证实接收到的消 息是否真实、完整。 • 数字签名是一种取代手写签名的电子签名 技术,它也是一种特殊的认证技术,在身 份认证、数据完整性和不可否认性等方面 有着不可替代的作用。
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,其实也是可以实现签名效果的。
第六章 消息认证与数字签名

不同消息产生不同指纹
M
h=hash(M) H h
Mh
M` h H
比较
h`
26
任意长度数据块,产生固定长度散列值;
任意给定m ,计算H(m)相对容易; 对任意给定h,找到m满足H(m)=h在计算
上不可行;(单向性)
对任意给定的消息m1,找到m2≠m1满足 H(m2)=H(m1)在计算上不可行;
标识的方法呢? hash
24
消息摘要、哈希函数、数字指纹、杂凑函数— —消息标识 h = H(M)
输入/输出:
◦ 任意长度的消息M,产生向计算困难
不同消息不同指纹,消息M的所有位的函数:
◦ 消息中的任何一位或多位的变化都将导致该散列值 的变化。
D
K2
K1
Alice C
比较
2019/6/23
K2
Ek2(M)
D
M
M
E
M
|| M C
K2
C
CK1(Ek2(M))
K1
比较
K1
Bob
提供认证 提供保密
2019/6/23
Alice
MAC中使用了密钥,这点和对称密钥加密
一样,如果密钥泄漏了或者被攻击了,则 MAC的安全性则无法保证。
穷举攻击
22
2019/6/23
K(56位)
D1(64位)
D2(64位)
D1(64位)
D2(64位)
+
+
+
DES加密 K DES加密 … K DES加密 K DES加密
O1(64位)
O2(64位)
ON-1
ON
2019/6/23
信息安全概论第五章消息认证与数字签名

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
消息认证与数字签名

最后一次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)))
消息认证与数字签名

电子商务信息安全技术消息认证与数字签名曹健消息认证与数字签名•消息认证•数字签名•复合型加密体制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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对称加密:具有机密性,可认证,不提供签名
No Image
• 如何自动确定是否收到的明文可解密为可懂的明文?
• 一种解决办法是强制明文有某种结构.
差错控制:Error Control
No Image
散列码。事实上这是数字签名的本质。
5.2.3 散列函数的使用方式
散列函数的基本用法(d)
(d) AB: EK[M||EKRa[H(M)]] Provides authentication and digital signature Provides confidentiality
5.2.2 散列函数的使用方式
第五章 消息认证与数字签名
问题的提出
通信威胁
1. 泄露:把消息内容发布给任何人或没有合法密钥的进程。
2. 伪造:从一个假冒信息源向网络中插入消息。 3. 内容修改:消息内容被插入删除变换修改。 4. 顺序修改:插入删除或重组消息序列。 5. 时间修改:消息延迟或重放。 6. 否认:接受者否认收到消息,发送者否认发送过消息。
回顾与总结
回顾
对称密码算法
运算速度快、密钥短、多种用途(随机数产生、Hash函数)、历史悠久
密钥管理困难(分发、更换)
非对称密码算法
只需保管私钥、可以相当长的时间保持不变、需要的数目较小 运算速度慢、密钥尺寸大、历史短
信息安全的需求
保密性 (Confidentiality)
Provides authentication -- H(M) is cryptographically protected
5.2.2 散列函数的使用方式
散列函数的基本用法(C)
使用公开密钥加密方法及发方的私有密钥仅对散列码加密。和b一样,这 种方法也提供鉴别。它还提供数字签名,因为只有发方能够生成加密的
HMAC
5.2.4.1 MD5
MD5简介
Merkle于1989年提出hash function模型
广播的信息难以使用加密(信息量大) 某些信息只需要真实性,不需要保密性
5.1.2 消息认证码
消息认证码
消息认证码MAC 或称密码检验和是在一个密钥的控制下将任意长 的消息映射到一个简短的定长数据分组,并将它附加在消息后。
设M是变长的消息,K是仅由收发双方共享的密钥,则M的MAC由
如下的函数C生成:MAC = Ck(M )
散列函数H是公开的,散列值在信源处被附加在消息上,接收方通过 重新计算散列值来保证消息未被篡改。
由于函数本身公开,传送过程中对散列值需要另外的加密保护(如果
没有对散列值的保护,篡改者可以在修改消息的同时修改散列值, 从而使散列值的认证功能失效)。
5.2 散列(Hash)函数
散列(Hash)函者每次将MAC附加到消息中,接 收者通过重新计算MAC来对消息进行认证。
5.1.2 消息认证码
如果收到的MAC与计算得出的MAC相同,则接收者可以认为:
消息未被更改过 消息来自与他共享密钥的发送者
MAC函数类似于加密函数,主要区别在于MAC 函数不需要可逆性, 而加密函数必须是可逆的,因此认证函数比加密函数更不易破解。
安全信道
密钥源
5.1 消息认证
鉴别系统的组成
鉴别编码器和鉴别译码器可抽象为鉴别函数。一个安全的鉴别系统,
需满足
1) 接收者能够检验和证实消息的合法性、真实性和完整性 2) 消息的发送者和接收者不能抵赖 3) 除了合法的消息发送者,其它人不能伪造合法的消息
鉴别系统首先要选好恰当的鉴别函数,该函数产生一个鉴别标识,然
5.2.3 散列函数的结构
散列函数的结构
Y0
b n f b n Y1 b YL-1
IV=CV0
f
n
n
f
n
CVL
CV1
IV = initial value 初始值
CVL-1
CV = chaining value 链接值
Yi = ith input block (第i 个输入数据块) f n = compression algorithm (压缩算法) = length of hash code (散列码的长度)
以一个x开始。首先计算Z=h(x),并企图找到一个x’满足h(x’)=h(x)。
若他做到这一点, x’也将为有效。为防止这一点,要求函数h具有无 碰撞特性。
定义1(弱无碰撞):散列函数h称为是弱无碰撞的,指对给定消息 x∈X,在计算上几乎找不到不等于x的x’∈X,使h(x)=h(x’)。
定义2(强无碰撞),散列函数h被称为是强无碰撞的,是指在计算
上几乎不可能找到任意的相异的x,x’,使得h(x)=h(x’)。
注:强无碰撞自然含弱无碰撞!
5.2.1 散列函数的性质
散列函数的性质
散列函数的目的是为文件、消息或其他的分组数据产生“指纹”。用于
消息认证的散列函数H必须具有如下性质:
1. H能用于任何大小的数据分组,都能产生定长的输出 2. 对于任何给定的x,H(x)要相对易于计算 3. 对任何给定的散列码h,寻找x使得H(x)=h在计算上不可行 4. 对任何给定的分组x,寻找不等于x的y,使得H(x)=H(y)在计算上
是一种防止源点或终点抵赖的鉴别技术。
5.1 消息认证
鉴别的目的
鉴别的主要目的有二:
第一,验证信息的发送者是真正的,而不是冒充的,此为信源识别; 第二,验证信息的完整性,在传送或存储过程中未被篡改,重放或延 迟等。
窜扰者
鉴别模型
一个单纯鉴别系统的模型
信源
鉴别编码器
信道
鉴别译码器
信宿
因为收发双方共享相同的密钥,上述过程只提供认证而不提供保密,
也不能提供数字签名
5.1.2
消息认证码(MAC)
消 息 消 息 认证算法
MAC
MAC的基本用法(a)
消 息
MAC
K
认证算法 K 比较 MAC
A
B: M||CK(M)
认证码的使用
即A使用双方共享的密钥K对明文进行计算,产生一个短小的数据块,即消 息验证码 MAC=CK(M) 。发送给接收方B时,将它附加在报文中。 接收方收到报文使用相同的密钥K执行相同的计算,得到新的MAC。接收 方将收到的MAC与计算得到MAC进行比较,如果相匹配,那么可以保证报 文在传输过程中维持了完整性: (1)报文未被更改过
(2)接收者确信报文来自真实的发送者。(无人知晓密钥)
注意:上述认证过程只提供认证、不提供保密性。
5.1.3 MAC的基本用法
MAC的基本用法(b)
A
B:
EK2(M||CK1(M))
提供消息认证与保密,认证码与明文连接 Provides authentication -- only A and B share K1 Provides confidentiality -- only A and B share K2
讨论议题
定义
消息鉴别 (Message Authentication):是一个证实收到的消息来 自可信的源点且未被篡改的过程。
散列函数 (Hash Functions):一个散列函数以一个变长的报文 作为输入,并产生一个定长的散列码,有时也称报文摘要,作 为输出。
数字签名(Digital Signature)
5.2.3 散列函数的结构
散列函数的结构
由Merkle于1989年提出
Ron Rivest于1990年提出MD4 几乎被所有hash函数使用 具体做法:
把原始消息M分成一些固定长度的块Yi
最后一块padding并使其包含消息M长度
设定初始值CV0 重复使用压缩函数f,CVi = f(CVi-1,Yi-1) 最后一个CVi为hash值
– 广播的信息难以使用加密(信息量大)
– 网络管理信息等只需要真实性 – 政府/权威部门的公告
5.2 散列(Hash)函数
散列(Hash)函数
散列函数(又称杂凑函数)是对不定长的输入产生定长输出的一种特殊
函数:h = H(M)
其中M是变长的消息 h=H(M)是定长的散列值或称为消息摘要。
后在此基础上,给出合理的鉴别协议(Authentication Protocol),使 接收者完成消息的鉴别。
5.1 消息认证
鉴别函数
可用来做鉴别的函数分为三类:
1) 消息加密函数(Message encryption):用完整信息的密文作为对 信息的鉴别。
2) 消息鉴别码MAC(Message Authentication Code):用一个密钥 控制的公开函数作用后,产生固定长度的数值作为认证符,也称密
散列函数的基本用法(e、f)
Provides authentication -- only A and B share S
Provides authentication -- only A and B share S Provides confidentiality -- only A and B share K
完整性 (Integrity)
数据完整性,未被未授权篡改或者损坏 系统完整性,系统未被非授权操纵,按既定的功能运行