第五章 消息认证与散列函数
K2 D C K1 M
比较
提供认证, 提供认证,提供保密 与秘文有关的认证
Alice
两种改进方案的比较
上述过程中,由于消息本身在发送过程中是明 上述过程中, 文形式, 文形式,所以这一过程只提供认证性而未提供 保密性。 提供保密性可在 可在MAC函数以后 如 函数以后(如 保密性。为提供保密性可在 函数以后 或以前(如图 进行一次加密, 图6.1(b))或以前 如图 或以前 如图6.1(c))进行一次加密, 进行一次加密 而且加密密钥也需被收发双方共享。 而且加密密钥也需被收发双方共享。在图 6.1(b)中,M与MAC链接后再被整体加密,在 链接后再被整体加密, 中 与 链接后再被整体加密 先被加密再与MAC链接后发送。 链接后发送。 图6.1(c)中,M先被加密再与 中 先被加密再与 链接后发送 通常希望直接对明文进行认证,因此图6.1(b) 通常希望直接对明文进行认证,因此图 所示的使用方式更为常用。 所示的使用方式更为常用
预映射 鉴别密钥K 单向散列函数 散列值
基于消息认证码(MAC)的认证 的认证 基于消息认证码
C M C Alice CK(M) Bob || M 比较
特ห้องสมุดไป่ตู้: 特点:
– – –
MAC函数无需可逆 函数无需可逆 收发双方使用相同的密钥, 收发双方使用相同的密钥,MAC不能提供数字签名 不能提供数字签名 只提供消息认证, 只提供消息认证,不能提供机密性
函数(散列 哈希函数) (3)Hash函数 散列 哈希函数 ) 函数 散列,哈希函数
Hash函数 函数
–
–
–
–
Hash函数是将任意长度的报文映射成一个较 函数是将任意长度的报文映射成一个较 短的定长输出报文的函数. 短的定长输出报文的函数 如下形式: 是变长的报文,h是定长 如下形式 h = H(M), M是变长的报文 是定长 是变长的报文 的Hash值. 值 Hash函数的目的是为文件、报文或其它的分 函数的目的是为文件、 函数的目的是为文件 组数据产生“数字指纹”. 组数据产生“数字指纹” Hash函数是一种有损加密,信息有损失 函数是一种有损加密, 函数是一种有损加密
如果仅收发双方知道K, 计算得到的MAC 如果仅收发双方知道 ,且B计算得到的 计算得到的 与接收到的MAC一致,则这一系统就实现了以下 一致, 与接收到的 一致 功能: 功能: 接收方相信发送方发来的消息未被篡改, ① 接收方相信发送方发来的消息未被篡改,这是因 为攻击者不知道密钥, 为攻击者不知道密钥,所以不能够在篡改消息后 相应地篡改MAC,而如果仅篡改消息,则接收方 相应地篡改 ,而如果仅篡改消息, 计算的新MAC将与收到的 将与收到的MAC不同。 不同。 计算的新 将与收到的 不同 接收方相信发送方不是冒充的, ② 接收方相信发送方不是冒充的,这是因为除收发 双方外再无其他人知道密钥, 双方外再无其他人知道密钥,因此其他人不可能 对自己发送的消息计算出正确的MAC。 对自己发送的消息计算出正确的 。
认证函数: 认证函数:Hash函数 函数
Hash Function – 哈希函数、散列函数、摘要函数 哈希函数、散列函数、 – 输入:任意长度的消息报文 M 输入: – 输出:一个固定长度的散列码值 H(M) 输出: – 是报文中所有比特的函数值 – 单向函数(转换过程中信息是有损失的,因 单向函数(转换过程中信息是有损失的, 此无法恢复到明文) 此无法恢复到明文) 散列计算不可能对两条信息求出相同的摘要
Hash函数的分类 函数的分类
根据是否使用密钥
–
–
带秘密密钥的Hash函数 消息的散列值由只有通 函数:消息的散列值由只有通 带秘密密钥的 函数 信双方知道的秘密密钥K来控制 此时, 来控制。 信双方知道的秘密密钥 来控制。此时,散列 值称作MAC。 值称作 。 不带秘密密钥的Hash函数:消息的散列值的产 函数: 不带秘密密钥的 函数 生无需使用密钥。此时,散列值称作MDC 生无需使用密钥。此时,散列值称作 (Manipulation detection code)篡改检验码 。 篡改检验码
•消息认证:这消息真的是他发出来的吗?是不是 消息认证:这消息真的是他发出来的吗? 消息认证 假冒的?有没有被篡改过? 假冒的?有没有被篡改过? •身份的认证:和我通话 信的这个人真的是他吗? 身份的认证: 信的这个人真的是他吗? 身份的认证 和我通话/信的这个人真的是他吗 是不是假冒的?是不是录音重放? 是不是假冒的?是不是录音重放?
消息认证码的定义及使用方式
消息认证码是指消息被一密钥控制的公开散列函 数作用后产生的、用作认证符的、 数作用后产生的、用作认证符的、固定长度的数 也称为密码校验和 密码校验和。 值,也称为密码校验和。 此时需要通信双方A和 共享一密钥 共享一密钥K。 此时需要通信双方 和B共享一密钥 。设A欲发 欲发 送给B的消息是 的消息是M, 首先计算 首先计算MAC=CK(M),其 送给 的消息是 ,A首先计算 , 是密钥控制的公开函数, 中CK(·)是密钥控制的公开函数,然后向 发送 是密钥控制的公开函数 然后向B发送 M‖MAC,B收到后做与 相同的计算,求得一新 收到后做与A相同的计算 ‖ , 收到后做与 相同的计算, MAC,并与收到的 做比较, ,并与收到的MAC做比较,如图 做比较 如图6.1(a)所示 所示
(1)信息加密函数作认证 )
信息加密函数分二种, 信息加密函数分二种,一种是常规的对称密钥 加密函数,另一种是公开密钥的双密钥加密函数。 加密函数,另一种是公开密钥的双密钥加密函数。 下图的通信双方是:用户A为发信方 用户B为接 为发信方, 下图的通信双方是:用户 为发信方,用户 为接 收方。用户B接收到信息后 接收到信息后, 收方。用户 接收到信息后,通过解密来判决信 息是否来自A,信息是否是完整的,有无窜扰。 息是否来自 ,信息是否是完整的,有无窜扰。
Message Authentication:消息认证(报文鉴别, :消息认证(报文鉴别, 消息鉴别) 消息鉴别) – Message:消息、报文。 :消息、报文。 – Authentication: 鉴别、认证。 : 鉴别、认证。 认证: 认证:消息的接收者对消息进行的验证 真实性:消息确实来自于其真正的发送者, 真实性:消息确实来自于其真正的发送者, 而非假冒; 而非假冒; 完整性:消息的内容没有被篡改。 完整性:消息的内容没有被篡改。 信息的序号和时间 是一个证实收到的消息来自可信的源点且未被篡 改的过程。 改的过程。它也可以验证消息的顺序和及时性
2
认证函数
可用来做消息认证的函数分为三类 信息加密函数(Message (1) 信息加密函数(Message encryption) 用完整信息的密文作为对信息的认证 消息认证码MAC(Message (2) 消息认证码MAC(Message Authentication Code) 是对信源消息的一个编码函数 散列函数(Hash (3) 散列函数(Hash Function) 是一个公开的函数 它将任意长的信息映射成 一 个固定长度的信息
杂凑函数的目的是为需认证的数据产生一个“指纹” 杂凑函数的目的是为需认证的数据产生一个“指纹” 为了能够实现对数据的认证, 。为了能够实现对数据的认证,杂凑函数应满足以下 条件: 条件: ① 函数的输入可以是任意长。 函数的输入可以是任意长。 ② 函数的输出是固定长。 函数的输出是固定长。 已知x H(x)较为容易 可用硬件或软件实现。 较为容易, ③ 已知x,求H(x)较为容易,可用硬件或软件实现。 已知h 求使得H(x)=h H(x)=h的 在计算上是不可行的, ④ 已知h,求使得H(x)=h的x在计算上是不可行的, 这一性质称为函数的单向性, H(x)为单向杂凑函数 这一性质称为函数的单向性,称H(x)为单向杂凑函数 。
公开密钥加密与认证的关系
A->B: E(KUb,M)
– –
提供保密(仅 能解密 能解密) 提供保密 仅B能解密 不提供认证 提供认证和签名(仅有 可加密 需要某种结构和冗余, 提供认证和签名 仅有A可加密 需要某种结构和冗余 仅有 可加密,需要某种结构和冗余 任何一方均能验证签名) 任何一方均能验证签名 可提供保密 可提供认证和签名
第五章 消息认证与散列函数
消息认证
章曾介绍过电子商务安全所面临的基本攻击类型, 第1章曾介绍过电子商务安全所面临的基本攻击类型, 章曾介绍过电子商务安全所面临的基本攻击类型 包括被动攻击 窃听、业务流分析) 主动攻击( 被动攻击( 包括被动攻击(窃听、业务流分析)和主动攻击(假 重放、消息的篡改、业务拒绝)。 )。抗击被动攻击 冒、重放、消息的篡改、业务拒绝)。抗击被动攻击 的方法是前面已介绍过的加密 本章介绍的消息认证 加密, 的方法是前面已介绍过的加密,本章介绍的消息认证 则是用来抗击主动攻击的 则是用来抗击主动攻击的。 消息认证是一个过程,用以验证接收消息的真实性 消息认证是一个过程,用以验证接收消息的真实性 的确是由它所声称的实体发来的) 完整性( (的确是由它所声称的实体发来的)和完整性(未被 篡改、插入、删除),同时还用于验证消息的顺序性 ),同时还用于验证消息的 篡改、插入、删除),同时还用于验证消息的顺序性 时间性(未重排、重放、延迟)。 和时间性(未重排、重放、延迟)。 除此之外,在考虑信息安全时还需考虑业务的不可 除此之外,在考虑信息安全时还需考虑业务的不可 否认性, 否认性,即防止通信双方中的某一方对所传输消息的 否认。实现消息的不可否认性可通过数字签名 数字签名, 否认。实现消息的不可否认性可通过数字签名,数字 签名也是一种认证技术, 签名也是一种认证技术,它也可用于抗击主动攻击
A->B: E(KRa,M)
–
A->B: E(KUb,E(KRa, M))
– –
M A方 方 D KRb
E KRa EkRa(M)
EkRa(M)
E KUb
EKUb(EkRa(M))