消息认证(Message Authentication)
散列函数与消息认证码
第七讲散列函数与消息认证码马春光machunguang@计算机科学与技术学院哈尔滨工程大学1 /•网络安全威胁:–被动攻击(Passive Attack):敌手通过侦听和截获等手段获取数据;–主动攻击(Active Attack):敌手通过伪造、重放、篡改、乱序等手段改变数据;图1 无线网络中的四种通信安全威胁(a)监听;(b)篡改;(c)伪造;(d)阻断2 /•消息认证(Message Authentication)的目的:–验证消息的完整性,确认数据在传送和存储过程中未受到主动攻击。
•消息认证的方式:–消息加密函数:加密整个消息,以消息的密文文件作为认证,可使用对称密码或公钥密码体制进行加密;–散列函数(Hash):将任意长度的消息变换为定长的消息摘要,并加以认证;–消息认证码(MAC):依赖公开的函数(密钥控制下)对消息处理,生成定长的认证标识,并加以认证;3 /提纲•1 散列函数–1.1 散列函数的定义–1.2 散列函数的通用结构–1.3 MD5•2 消息认证码–2.1 MAC函数–2.2 MAC的安全性–2.3 CBC-MAC•作业4 /提纲•1 散列函数–1.1 散列函数的定义–1.2 散列函数的通用结构–1.3 MD5• 2 消息认证码•作业5 /散列函数的定义•散列函数H 是一个公开的函数,它将任意长度的消息M变换为固定长度的散列码h 。
•h=H (M)–M:变长消息,H(M):定长的散列值•散列函数是一种算法,算法的输出内容称为散列码或者消息摘要。
•消息摘要要唯一地对应原始消息,如果原始消息改变并且再次通过散列函数,它将生成不同的消息摘要,因此散列函数能用来检测消息地完整性,保证消息从建立开始到收到为止没有被改变和破坏。
•运行相同算法的接受者应该收到系统的消息摘要,否则保温是不可信的。
•散列函数又称为:哈希(Hash )函数、数字指纹(Digital fingerprint)、压缩(Compression)函数、数据认证码(DataAuthentication Code)等6 /散列函数的要求•H 能用于任意大小的分组;•H 能产生定长的输出;•对任何给定的x,H(x)要相对易于计算,使得硬件和软件实现成为实际可能;•对任何给定的码h ,寻找x 使得H(x)=h 在计算上是不可行的,即单向性(one-way);•对任意给定的分组x,寻找不等于x 的y,使得H(x)=H(y)在计算上是不可行的,即弱抗冲突性(Weak Collision-free);•寻找对任意的(x, y) 对使得H(x)=H (y) 在计算上是不可行的,即强抗冲突性(Strong Collision-free);7 /提纲•1 散列函数–1.1 散列函数的定义–1.2 散列函数的通用结构–1.3 MD5• 2 消息认证码•作业8 /2.2 Hash函数的通用结构•由Ron Rivest于1990年提出MD4•几乎被所有Hash函数使用•具体做法:–把原始消息M分成一些固定长度的块Y i–最后一块padding 并使其包含消息M长度–设定初始值CV0–压缩函数f, CV i=f(CV i-1, Y i-1)–最后一个CV i为Hash值9 //提纲•1 散列函数–1.1 散列函数的定义–1.2 散列函数的通用结构–1.3 MD5• 2 消息认证码•作业11 /MD5 描述•1989年,Merkle提出Hash function模型•1990年,Ron Rivest提出MD4•1992年, Ron Rivest完成MD5 (RFC 1321) –/rfcs/rfc1321.html•在最近数年之前,MD5是最主要的Hash算法•现行美国标准SHA-1以MD5的前身MD4为基础•MD5(Message Digest)–输入:任意长度的消息–输入分组长度:512 bit–输出:128 bit 消息12 /(4)(3)13 /14/MD5 描述-(1)•消息填充•对消息进行填充,使其比特数与448模512同余,即填充长度为512的整数倍减去64,留出64比特在(2)中使用:•填充方法:填充比特串的最高位为1,其余各位均为0。
密码技术模型
密码技术模型
密码技术模型是一种用于描述密码技术的概念性、理论模型,通常包括密码学的基本要素、假设、算法和安全性分析等方面。
以下是几种常见的密码技术模型:
1. 传统密码模型(Classical Cryptography Model):传统密码
模型主要用于描述古典密码技术,如凯撒密码和仿射密码等。
它通常包括明文空间、密文空间、密钥空间、加密算法和解密算法等。
2. 非对称密码模型(Asymmetric Cryptography Model):非对
称密码模型是一种基于两个互相关联、但具有不同的密钥的密码模型,也称为公钥密码模型。
它通常包括公钥空间、私钥空间、加密算法和解密算法等。
3. 对称密码模型(Symmetric Cryptography Model):对称密
码模型是一种基于相同密钥进行加密和解密的密码模型。
它通常包括密钥空间、加密算法和解密算法等。
4. 散列函数模型(Hash Function Model):散列函数模型用于
描述散列函数的基本特性和安全性要求。
它包括散列函数的输入空间、输出空间、安全性要求和安全性分析等。
5. 消息认证码模型(Message Authentication Code Model):消息认证码模型用于描述消息认证码的基本特性和安全性。
它通常包括消息认证码的输入空间、输出空间、密钥空间、安全性要求和安全性分析等。
需要注意的是,以上只是几种常见的密码技术模型,实际上还有其他的密码技术模型,如基于标签的密码模型、公钥基础设施模型等,每种模型都有其特定的应用领域和技术要求。
哈希算法 分类
哈希算法分类“哈希算法分类”哈希算法是计算机科学中常用的一种算法,用于将任意长度的数据映射为固定长度的哈希值。
根据不同的特性和应用场景,哈希算法可以分为以下几类:1.散列函数(Hash Function):这是哈希算法最基本的分类。
散列函数接受输入,并将其映射为固定长度的哈希值。
常见的散列函数有MD5、SHA-1、SHA-256等。
散列函数具有快速计算、哈希值分布均匀等特点,常用于数据校验、密码存储等场景。
2.消息认证码(Message Authentication Code,MAC):MAC是一种基于密钥的哈希算法。
它使用一个密钥将输入数据和哈希值绑定在一起,以实现数据完整性和认证。
常见的MAC算法有HMAC、CMAC 等。
MAC算法广泛应用于数据完整性验证、数字签名等领域。
3.消息摘要(Message Digest):消息摘要是一种单向哈希函数,它将输入数据映射为固定长度的哈希值,但无法从哈希值恢复原始数据。
常见的消息摘要算法有SHA-1、SHA-256等。
消息摘要广泛应用于密码学、数据完整性验证等场景。
4.布隆过滤器(Bloom Filter):布隆过滤器是一种概率型数据结构,用于判断一个元素是否属于一个集合。
它使用多个散列函数将输入数据映射到位图中,并根据位图的结果进行判断。
布隆过滤器具有高效的查询速度和节省内存的特点,常用于缓存、数据去重等场景。
5.跳跃一致性哈希(Jump Consistent Hash):跳跃一致性哈希是一种特殊的哈希算法,用于实现分布式哈希表中的数据分布。
它通过将输入数据映射到一个范围内的整数值,并基于这个整数值选择相应的服务器节点。
跳跃一致性哈希算法具有高效的负载均衡和节点扩缩容特性,被广泛应用于分布式缓存、分布式数据库等场景。
在使用哈希算法时,需要根据具体的应用场景选择适合的算法类型。
同时,为了保障数据的安全性和完整性,还需要注意选择安全性较高的算法,并合理使用密钥和盐值等技术手段。
消息认证算法
消息认证算法一、介绍消息认证算法(Message Authentication Algorithm)是一种用于验证消息完整性和真实性的算法。
在信息传输过程中,为了防止消息被篡改或伪造,需要使用消息认证算法对消息进行保护。
本文将介绍消息认证算法的基本原理、常见的算法以及应用场景。
二、基本原理消息认证算法的基本原理是通过对消息进行加密和生成消息认证码(Message Authentication Code,MAC),然后将消息和MAC一起传输给接收方。
接收方在接收到消息后,使用相同的算法对消息进行解密,并重新生成MAC。
如果接收到的MAC与重新生成的MAC相符,则说明消息没有被篡改或伪造。
三、常见的算法3.1 HMACHMAC(Hash-based Message Authentication Code)是一种基于散列函数的消息认证算法。
它使用一个密钥和一个散列函数来生成MAC。
常用的散列函数有MD5、SHA-1、SHA-256等。
HMAC算法具有高效、安全和可靠的特点,被广泛应用于网络通信、数字签名等领域。
3.2 RSARSA(Rivest-Shamir-Adleman)是一种非对称加密算法,也可以用于消息认证。
RSA算法使用两个密钥,一个公钥和一个私钥。
发送方使用私钥对消息进行签名,接收方使用公钥对签名进行验证。
RSA算法具有较高的安全性,但计算量较大,适用于对安全性要求较高的场景。
3.3 DSADSA(Digital Signature Algorithm)是一种数字签名算法,也可以用于消息认证。
DSA算法使用一个密钥对,包括一个私钥和一个公钥。
发送方使用私钥对消息进行签名,接收方使用公钥对签名进行验证。
DSA算法具有较高的安全性和较快的计算速度,适用于对计算效率要求较高的场景。
3.4 ECDSAECDSA(Elliptic Curve Digital Signature Algorithm)是一种基于椭圆曲线的数字签名算法,也可以用于消息认证。
第5章消息认证087-资料
A
M
E
D
KUb
KRb
EKUb(M)
I. 普通加密
B
M
由于大家都知道B的公钥,所以这种方式不提 供认证,只提供加密。
2019/8/10
12
1 消息加密---在公钥加密体制下
A
M
E
D
KRa
KUa
EKRa (M)
II. 认证和签名
B
M
由于只有A有用于产生EKRa (M)的密钥,所以此方法 提供认证。
2019/8/10
27
3 Hash函数(杂凑函数、散列函数)
Hash的特点:
与消息认证码一样,hash函数的输入是可变的消息M,输 出是固定大小的hash码H(M) ,或称消息摘要(Message Digest) 、hash值。
与消息认证码不同的是, hash码的产生过程中并不使用 密钥。
14
2 消息认证码(MAC)
Message Authenticaion Code 消息认证码是消息和密钥的公开函数,它产
生定长的值,以该值作为认证符。 利用密钥和消息生成一个固定长度的短数据
块,并将其附加在消息之后。 通信双方共享密钥K
2019/8/10
15
2 消息认证码用于认证
认证用以确保报文发送者和接收者的真实性以及 报文的完整性,阻止对手的主动攻击,如冒充、 篡改、重播等。
认证往往是应用系统中安全保护的第一道防 线,极为重要。
2019/8/Байду номын сангаас0
3
基本思想
通过验证称谓者(人或事)的一个或多个参数的 真实性和有效性,来达到验证称谓者是否名 副其实的目的。
06_密码学基础(五)_消息认证和数字签名
密码学基础(五)
内容
消息认证
MAC 散列算法
MD5 SHA/SHA-1
数字签名
问题的提出
通信威胁: 1. 泄露:把消息内容发布给任何人或没有合法密钥的 进程 2. 流量分析:发现团体之间信息流的结构模式。在一 个面向连接的应用中,可以用来确定连接的频率和持 续时间长度 3. 伪造:从一个假冒信息源向网络中插入消息 4. 内容修改:消息内容被插入删除变换修改 5. 顺序修改:插入删除或重组消息序列 6. 时间修改:消息延迟或重放 7. 否认:接受者否认收到消息,发送者否认发送过消 息
认证编码的基本方法
认证编码的基本方法是要在发送的消息中引入多余度 ,使通过信道传送的可能序列集Y大于消息集X。 对于任何选定的编码规则,则(相应于某一特定密钥) :发方从Y中选出用来代表消息的许用序列,即码字 收方根据编码规则唯一地确定出发方按此规则向他传 来的消息。 窜扰者由于不知道密钥,因而所伪造的假码字多是Y 中的禁用序列,收方将以很高的概率将其检测出来, 而被拒绝认证 系统设计者的任务是构造好的认证码 (Authentication Code),使接收者受骗概率极小化
注:若设E=1- e(-(k(k-1)/(2n)) ,可解出k的关于n、E 的函数,有
若略去-k项,有:k≈(n(ln(1/(1-E))×2)0.5; 若取E=0.5,我们估计:k≈1.17 n0.5 ≈n0.5 说明在集合X中,n0.5个随机元素散列的结果产 生一个碰撞的概率为50%!
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|
第5讲 消息认证
十进制移位加MAC算法
第 P1=9359354506
+ x2=5283586900
Q1=8217882178
+ x2=5283586900
二
轮
P1+x2=4642941406
Q1+x2=3501469078
+R(8)(P1+x2)=4294140646 +R(9)(Q1+x2)=5014690783 P2=8937082052 …. …. Q2=8516159861
第5讲
消息认证
1
5.1 基本概念
1. 报文鉴别(消息认证)的概念
消息认证(Message Authentication)
Message:消息、报文。
Authentication: 鉴别、认证。
认证:消息的接收者对消息进行的验证。
真实性:消息确实来自于其真正的发送者,而非假冒;
完整性:消息的内容没有被篡改。
设计MAC函数的要点
如果攻击者得到一个 M 及其对应的 MAC,那么他试图构造 一个消息 M’ 使得 MAC’ = MAC 在计算上应该是不可行的。 MAC 函数应是均匀分布的,即随机选择消息 M 和 M’, MAC = MAC’ 的概率应是 2-n,其中 n 是 MAC 的位数。 令 M’ 为 M 的某些已知变换,即:M’ = f (M),应保证在这 种情况下,MAC = MAC’ 的概率为 2-n。
MAC = CK(M)
MAC被附加在消息中传输,用于消息的合法性鉴别。
消息认证码用于认证
K MAC M C C
A和B共享密钥K A计算MAC=Ck(M),
比较
MAC
网络安全--消息鉴别
功能
接收者可以确信消息M未被改变 接收者可以确信消息来自所声称的发送者
消息鉴别码的基本原理
发送方
接收方MLeabharlann 信道MMAC
f() 密钥K
M MAC
比较
f() 密钥K
认证结果
双方共享鉴别密钥 k
MAC函数的特点
消息篡改 内容篡改:插入、删除、修改等 序号篡改:在依赖序号的协议如TCP中,对消息序号 进行篡改,包括插入、删除、重排等 时间篡改:对消息进行延迟或重放
消息鉴别的作用
保护双方的数据交换不被其他人侵犯
基于双方共享的秘密 但是消息鉴别无法解决双方之间可能存在的争议
B伪造一个消息,声称是A发送的 B否认发送过某个消息,而A无法证明B撒谎
单纯鉴别系统的模型
攻击者
信源
鉴别 编码器
信道 安全信道
鉴别 密钥源
需要鉴别密钥,而且此密 钥一般不同于加密密钥
鉴别 解码器
信宿
消息鉴别系统的构成
认证算法:底层实现的一项基本功能
认证功能要求底层必须实现某种能生成认证标识的算 法
认证标识(鉴别符)是一个用于消息鉴别的特征值 认证标识的生成算法用一个生成函数f来实现,称为鉴
网络安全
消息鉴别
安全的信息交换应满足的性质
机密性( Confidentiality) 完整性(Integrity) 可用性(Availability) 不可否认性( Non-repudiation) ……
消息鉴别的概念
消息鉴别(Message Authentication)
Hash函数(消息认证)
3
应用
由于加密软件慢、硬件费用高、加密算法专利保护 和出口限制等因素, 人们倾向于不使用带有加密的认 证方法,愿意使用方法(3)。 数据源认证方案不能提供数据源的不可拒绝性,因 为任何一方都可以使用共享密钥创建一个消息及其 认证。如果需要解决这种潜在的争执,可以使用可 信第三方或公钥技术。 使用MAC能够确定数据是在过去某个时间由特定一 方生成的,但是不能提供唯一性和时间上的保证, 也不能发现消息是否重用或重发。为了解决这些问 题,必须使用随时间变化的参数,例如时间戳、序 列号和随机数等。
击者也能计算压缩函数的输出。 (2) 即使IV是随机的和秘密的,攻击者也能找到Hash函数的碰 撞。
在目前的计算水平下,使用MD5和SHA-1等作为HMAC 算法所嵌入的Hash函数,HMAC的安全性是可以保证的。
10
3 应用
数据完整性 数据完整性是指数据在生成、传送或存储过程中没有 被非法篡改. 使用Hash函数可以保证数据的完整性 使用MAC
MD5-MAC软件实现比较容易,其运算速度与MD5 大体相近 .
5
2
HMAC算法
消息认证码HMAC(keyed-hashing for message authentication code)是Bellare等人于1996年提出, 1997年作为RFC 2104发表,成为事实上的Internet 标准,包括IPSec协议在内的一些安全协议都使用 了HMAC算法。 HMAC算法利用已有的Hash函数,关键问题是如何 使用密钥。使用不同的Hash函数,就可以得到不同 的HMAC。选用MD5时的HMAC记为HMAC-MD5, 选用SHA-1时的HMAC记为HMAC-SHA1。
发送方 A x hK’ x1 || EK C DK x 接收方B hK’
3消息认证和Hash函数
若要提供认证,则A用其私钥对消息加密,而B用A的 公钥对接收的消息解密。因为只有A拥有PRa,能产 生用PUa可解密的密文,所以该消息一定来自A。 同样,对明文也必须有某种内部结构以使接收方能 区分真实的明文和随机的位串。
源A 宿B D E(PRa, M) PUa M
M
E PRa
(c) 公钥加密:认证和签名
其中:M=输入消息, C=MAC函数 K=共享的密钥,MAC=消息认证
消息认证码
1. 2.
3.
发送方将消息和MAC一起发送给接收方。接收方对 收到的消息用相同的密钥K进行相同的计算得出新 的MAC,并将接收到的MAC与其计算出的MAC进行 比较。 如果我们假定只有收发双方知道密钥K,那么若接 收到的MAC与计算得出的MAC相等,则: 接收方可以相信消息未被修改。 接收方可以相信消息来自真正的发送方。 如果消息中含有序列号,那么接收方可以相信消息 顺序是正确的。
MAC的性质
性质2:C(k,M)应是均匀分布的,即对任何随 机选择的消息M和M’, C(k,M) = C(k,M’)的概率 是2-n,其中n是MAC的位数。
该要求是为了阻止基于选择明文的穷举攻击,也就 是说,假定攻击者不知道K,但是他可以访问MAC 函数,能对消息产生MAC,那么攻击者可以对各种 消息计算MAC,直至找到与给定MAC相同的消息为 止。如果MAC函数具有均匀分布的特征,那么穷举 方法平均需要2n-1步才能找到具有给定MAC的消息。
消息认证码的基本用法
提供认证
(a)消息认证 (b)消息认证和保密性:与明文有关的认证 (c)消息认证和保密性:与密文有关的认证
提供认证和保密性
消息认证(Message Authentication)
的功能
– 电子商务上的应用,如电子付款、电子投票
消息认证的功能(目的)
-验证信息来源的真实性,即信源识别 -验证信息内容的完整性,保证消息不被篡改
如何实现消息认证
• 消息认证码(Message Authentication Code)
• 发送方用双方都知道的密钥计算出
MAC值,并连同消息送給接收方
• Hash Message Authentication Code (HMAC)
– RFC 2104 标准 – 可嵌入多种杂凑函数算法:MD4、MD5 与 SHA-1
– 加入『秘密密钥』
发送方 M 消 息 M MAC 杂凑 算法 密钥 K MAC 接收方 M
HMAC 算法
消 息
HMAC 算法 杂凑 算法
一、Hash 函数(One-way Hash Function)
• 把任意长的消息“压缩”成固定长的消息的算 法 • 数字签名时,常被使用 • 通常,HASH 函数是公开的 • 输出长度应足够大,防止生日攻击 • 64-bits 认为太小 • 通常 128~512bits
1. Hash函数的概念
=
?
密钥 K
HMAC 算法
HMAC 结构
HMACK(M) = H [(K+ ⊕ opad) || H [(K+ ⊕ ipad) || M]]
• 密钥 K 以 0 填满 b bits产生K+ • ipad:將 00110110 重复 b/8 次 • opad:將 01011100重复 b/8 次
K+
如何实现消息认证
•MAC-BCB-AES算法
方法:
1. 消息认证码(Message Authentication Code, MAC)
消息认证码
MAC使用的一个例子
MAC使用的一个例子
在此示例中,消息的发送方通过MAC算法运行它以生成MAC数据标记。然后将消息和MAC标签发送到接收器。 接收器依次使用相同的密钥通过相同的MAC算法运行传输的消息部分,产生第二MAC数据标签。接收器然后将在传 输中接收的第一MAC标签与第二生成的MAC标签进行比较。如果它们相同,则接收器可以安全地假设在传输期间消 息未被改变或篡改(数据完整性)。
MIC
MIC
消息完整性代码(MIC)经常替代术语MAC,尤其是在通信中,其中首字母缩写词MAC传统上代表MAC(媒体 访问控制)。但是,一些作者使用MIC来引用消息摘要,这与MAC不同,消息摘要不使用密钥。这种缺乏安全性意 味着任何旨在用于衡量消息完整性的消息摘要都应加密或以其他方式防止篡改。创建消息摘要算法,使得给定消 息将始终产生相同的消息摘要,假设使用相同的算法来生成两者。相反,MAC算法被设计为仅当相同的消息,秘 密密钥和初始化向量被输入到相同的算法时才产生匹配的MAC。消息摘要不使用密钥,因此,当它们自己使用时, 它们比MAC更不可靠地衡量消息完整性。因为MAC使用密钥,所以它们不一定需要加密以提供相同级别的保证。
另外,MAC算法可以有意地组合两个或更多个加密原语,以便即使后来发现其中一个易受攻击也能保持保护。 例如,在传输层安全性(TLS)中,输入数据被分成两半,每个半部用不同的散列原语(MD5和SHA-1)处理,然 后一起进行异或输出以输出MAC。
标准
标准
存在定义MAC算法的各种标准。这些包括:
ISO / IEC 9797-1和-2定义了可用于任何分组密码或散列函数以及各种不同参数的通用模型和算法。这些 模型和参数允许通过指定参数来定义更具体的算法。例如,FIPS PUB 113算法在功能上等同于具有填充方法1的 ISO / IEC 9797-1 MAC算法1和DES的分组密码算法。
认证、哈希算法PPT课件
T[64] = EB86D391
16 MD5算法描述(Cont.)
• 步骤5:输出结果。所有L个512位数据块处理完毕后,最后的结果 就是128位消息摘要。
CV0 = IV CVq+1 = SUM32(CVq,RFI[Yq,RFH[Yq,RFG[Yq,RFF[Yq,CVq]]]]) MD = CVL
其中:IV = ABCD的初始值(见步骤3) Yq = 消息的第q个512位数据块 L = 消息中数据块数; CVq = 链接变量,用于第q个数据块的处理 RFx = 使用基本逻辑函数x的一轮功能函数。 MD = 最终消息摘要结果 SUM32=分别按32位字计算的模232加法结果。
Yq
512
CVq 128
字
T[i] = 表T中的第i个32位字;
+
= 模 232的加;
ABCD
基本MD5操作(单步)
+
g
X[k] +
T[i] +
CLSs
Function g g(b,c,d) 1 F(b,c,d) (bc)(bd) 2 G(b,c,d) (bd)(cd) 3 H(b,c,d) bcd 4 I(b,c,d) c(bd)
实现都实际可行; – 对任意给定的码h, 寻求x使得H(x)=h在计算上是不
可行的(单向性); – 任意给定分组x, 寻求不等于x的y, 使得H(y)= H(x)
在计算上不可行(弱抗攻击性); – 寻求对任何的(x,y)对使得H(x)=H(y)在计算上不可
行(强抗攻击性);
7 Hash 函数设计原理
• 步骤2: 添加长度。原始消息长度(二进制位的个数 ),用64位表示。
表示为L个512位的数据块:Y0,Y1,…,YL-1。其长度为 L512bits。令N=L16,则长度
信息安全实际原理及具体应用第5章消息认证
消息认证码的基本用途
• 只提供消息认证,不提供保密性。(见前) • 提供消息认证和保密性:
A
B
MKC||KE KDCM KC 比较 1
2 2 EK2[M || CK1 (M )]
– 与消息认证码不同的是, hash码的产生过程中并不使用 密钥。
– Hash码是所有消息的函数,改变消息的任何一位或多位, 都会导致hash码的改变。
– Hash算法通常是公开的。 – 又称为:哈希函数、数字指纹(Digital finger print)、压
缩(Compression)函数、紧缩(Contraction )函数、 数据鉴别码DAC(Data authentication code)、篡改 检验码MDC(Manipulation detection code)
• 平均来讲,若k=x*n,则需x次循环才能找到正确的密钥。 • 所以,用穷举法攻破MAC比攻破加密算法要困难得多。
对MAC的攻击—攻击算法
• 考虑下面的算法:
消息M=(X1‖X2‖…‖Xm)是由64比特长的分组Xi(i=1,…,m)链接而成 MAC算法是:
(M ) X1 X2 Xm
CK (M ) EK (M )
消息认证码用于认证
MMCKA比C 较
• A和B共享密钥K • A计算MAC=Ck(M),
• M和MAC一起发送
到B
• B对收到的M,计算 MAC,比较两个 MAC是否相同。
如果两个MAC相等,则:
1. 接收方可以相信消息未被修改,因为如果攻击者改变了消 息,由于不知道k,无法生成正确的MAC。
第四章消息认证
公钥密码体制加密认证
这种方式既能提供认证, 又能够提供数字签名
A用B的公钥对明文加密 B能用自己的私钥解出明文,说明没有被人更改。
消息认证
(2) 消息认证码
使用一个密钥生成一个固定大小的小数据块,附加在消息 后,称MAC (Message Authentication Code)。 MAC = FK(M) 收到消息后,只需要根据密钥和消息来计算MAC是否等 于传过来的MAC。 接收者可以确信消息M未被改变,也可以确信消息来自所 声称的发送者;
MAC函数类似于加密函数,但不需要可逆性。 因此在数学上比加密算法被攻击的弱点要少。
假设双方共享密钥
消息认证
为何要使用消息认证码? 根本上,信息加密提供的是保密性而非真实性 加密代价大(公钥算法代价更大) 某些信息只需要真实性,不需要保密性
广播的信息难以使用加密(信息量大)
网络管理信息等只需要真实性 政府/权威部门的公告
第四章
数字签名和认证技术
一 二
消息认证
数字签名 身份认证
三
回顾与总结
对称密码算法
– 运算速度快、密钥短、多种用途、历史悠久 – 密钥管理困难
非对称密码算法
– 只需保管私钥、可以相当长的时间保持不变、需要
的数目较小
– 运算速度慢、密钥尺寸大、历史短
信息安全的需求
保密性( Confidentiality)
A->B: E(M || D(H(M),KdA),K)
几种常用的HASH算法
MD5
SHA-1
RIPEMD-160
MD5简介
Merkle于1989年提出hash function模型 Ron Rivest于1990年提出MD4
消息认证码的工作原理
消息认证码的工作原理
消息认证码(Message Authentication Code,MAC)是一种用
于验证消息完整性和真实性的技术。
它采用密码学算法对消息进行处理,并生成一个固定长度的认证码,该认证码用于验证消息是否被篡改。
MAC的工作原理基于对称密钥密码体制,包括生成和验证两
个步骤:
1. 生成认证码:
a. 首先,将消息和一个秘密密钥输入到MAC算法中。
b. MAC算法通过运行一系列加密、哈希和位运算等操作来
加工消息。
c. 最终,MAC算法生成一个固定长度的认证码,它与消息
绑定在一起,用于验证消息完整性和真实性。
2. 验证认证码:
a. 接收者通过使用相同的秘密密钥和相同的MAC算法对接
收到的消息进行处理,生成一个新的认证码。
b. 将生成的认证码与接收到的消息携带的认证码进行比较。
c. 如果两个认证码相同,则说明消息没有被篡改;如果不同,则说明消息可能已经被篡改或被篡改过程中引入了错误。
MAC的安全性依赖于以下两个关键要素:
1. 秘密密钥:发送方和接收方必须共享一个秘密密钥,只有知道该密钥的人才能正确生成和验证认证码。
2. 强大的算法:MAC算法需要具备抗碰撞、抗信息泄露和强
抗击穷举等特性,以确保攻击者无法通过暴力破解或其他手段伪造有效的认证码。
需要注意的是,MAC仅用于验证消息的完整性和真实性,并不提供消息的保密性。
如果需要同时实现消息的完整性、真实性和保密性,可以结合使用MAC和对称密钥加密算法进行操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Message Digest
目标:确保信息的完整性(Integrity) 特色: (1) 不需密钥 (2) 任意长信息输入,固定长摘要输出 (3) 找出两个不同的输入,使输出相同在计算上很难 常用系統: MD5 (RFC 1321) SHA-1 (FIPS 180-1)
Structure of Message Digest
Message authentication code
• Prerequisite: A and B shares a key K
– Can be a session key
• MAC: a short fixed-size data block, depending on the message M and the shared key K • MAC(K,M)=CK(M) • Sender: M||CK(M) • Receiver: on receiving M’|C’
HMAC的设计目标
• Hash函数不使用密钥,不能直接用于MAC • HMAC要求 –可不经修改使用现有hash函数 –其中嵌入的hash函数可易于替换为更快和更安 全的hash函数 –保持嵌入的hash函数的最初性能,不因适用于 HAMC而使其性能降低 –以简单方式使用和处理密钥 –在对嵌入的hash函数合理假设的基础上,易于 分析 HMAC用于认证时的密码强度
MD5不再安全!?
安全的杂凑函数在设计时必须满足两个要求
● ●
找到两个不同输入而得到相同的输出值在计算上是不可行的—— 抗碰撞
给定一输出值找出输入值在計算上是不可行的——单向性
2004年在Crypto會議,來自山東大學的王出一种可以快速找到碰撞的方法 受影响的算法—— MD5、HAVAL-128、MD4、RIPEMD SHA-0及減弱条件下的SHA-1不安全——在任何初始值下 用240次hash运算可以找出SHA-0的碰撞 SHA-1预计至2010年也会被破解
Message Encryption
• message encryption by itself also provides a measure of authentication • if symmetric encryption is used then:
– receiver know sender must have created it – since only sender and receiver know key used – know content cannot of been altered – if message has suitable structure, redundancy or a checksum to detect any changes
●
美国政府5年内将不再使用SHA-1,并计划在2010年改用其他更长 更安全的算法(如SHA-224、SHA-256、SHA-384和SHA-512)来替 代
Recall: Encryption for authentication
Hash function: usage
Hash function: usage (cont.)
1. 消息认证目的
• 消息认证目的包括 – 消息內容认证
– 消息来源认证
– 可信任的通訊密钥建立
消息认证(Message Authentication)
Goal:
A => M => B
1. Guarantee no message changed 2. Confirm the message sent by specified user
– Let F be a public checksum function – Compute C=EK(M||F(M)) – Authentication
• Compute DK(C)=M’||S’ • Check S’=F(M’)
Encryption for authentication (cont.)
如何实现消息认证
2. 数字信封
– 结合对称加密系统和公钥加密系统
– 利用对称加密系统计算量较少优点來加密消息 – 利用公钥加密系统來加密对称密钥,所以不必 事先分享好密钥。
如何实现消息认证
3. 数字签名 – 消息来源认证
– 消息不可否否认性
– 消息的完整性 – 但计算量大
如何实现消息认证
4. hash函数构造—消息认证码
(Message Authentication Code, MAC)
较简单的方法是利用具密钥的杂凑函数
(Keyed Hash Function)产生MAC. 可以实现消
息认证 (Message Authentication)或完整性
(Integrity)
认证的种类–消息认证
• 以MAC為例
– M为发送方要发送给接收方的信息 – K为发送方与接收方事先分享的密钥 – MAC的输入为M与K,输出为digest (只有拥有K的人才能計 算出digest) – 接收方可以利用MAC,对收到的M’或digest’做验证,以确 保消息的完整性
– Compute C’’=CK(M’) – Check whether C’=C’’
MAC: example
• The last block of DES-CBC Cipher block chaining mode
MAC: security
• Only A and B who share a key can create a valid MAC code for a message M • Only the designated receiver A or B can authenticate the received message • An attacker cannot modify M without recalculating the MAC=CK(M’)
• Methods (Important)=> Thinking
Method-1: Message encryption
Method-2: Message authentication code
Method-3: Hash function (Partial properties)
如何实现消息认证
• hash includes a key along with the message • original proposal:
KeyedHash = Hash(Key|Message) – some weaknesses were found with this
• eventually led to development of HMAC
Encryption for authentication
• First symmetric encryption:
– Let M be a message of some bit pattern – Eg. M=X||111110000011111 – Authenticator: V=EK(M) – Authentication
Keyed Hash Functions as MACs
• have desire to create a MAC using a hash function rather than a block cipher
– because hash functions are generally faster – not limited by export controls unlike block ciphers
认证内容
• 认证的种类 • 认证的需求 • 认证的功能
认证的种类
• 消息认证(Message Authentication)
• 身份认证(Identity Authentication)
• 基于身份的身份认证(ID-based Identity
Authentication)
消息认证
• 目的
– 验证消息是否为真正的通讯双方所传送,并
Message Encryption
• if public-key encryption is used:
– encryption provides no confidence of sender – since anyone potentially knows public-key – however if
• sender signs message using their private-key • then encrypts with recipients public key • have both secrecy and authentication
– again need to recognize corrupted messages – but at cost of two public-key uses on message
M4
Ek (x)
…
Mn
Ek (x)
IV
Ek (x)
…
C1
C2
C3
C4
…
Cn MAC
如何实现消息认证
1. 加密 – 消息內容只有加密者和拥有解密密钥者才知道, 确保消息的秘密性。 – 如果明文內容中有可辨别的信息,则可确认消息 的正确性 1) 对称加密系统 – 优点:计算速度快 – 缺点:事先必須分享好共同密钥 2) 公钥加密系统 – 优点:不需要事先必須分享好共同密钥 – 缺点:计算速度慢, 需要认证公钥来源的正确性
– Step2: 比较算出來的MAC值是否
和传送过来的MAC’一样,如果一 样即通过验证
• Authenticator: a short string (value) MAC appended to a message M for authenticating the message