4.2 Message Authentication Codes – Definitions

文章目录

    • 序:
    • The Syntax of a Message Authtication Code
      • Canonical verification
    • Security of Message Authentication Codes
      • Is the definition too strong?
      • Replay attacks
      • Strong MACs
    • Verification Queries
      • A potential timing attack

序:

Encryption一般并不能解决Message Integrity问题,对于这个问题最常用的工具是Message Authentication Code, MACMAC的目标就是检测message是否被敌手篡改。

The Syntax of a Message Authtication Code

 这部分主要讲述MAC的定义以及如何使用。在对称加密中,通信双方首先共享密钥 k k ksender发送 ( m , t ) (m,t) (m,t)给接收方,其中 t t tMAC tag,计算方法为 t ← M a c k ( m ) t \leftarrow Mac_k(m) tMack(m)receiver接收 ( m , t ) (m,t) (m,t),并通过Vrfy验证 t t t是否有效,即 m m m是否被敌手篡改。
正式描述如DEFINITION 4.1所示。
4.2 Message Authentication Codes – Definitions_第1张图片

Canonical verification

Canonical verification的基本思想是再计算一遍 m m mMac值,计算出的 t ~ \tilde{t} t~和接收到的 t t t相等则通过验证。该方法隐含着 M a c k ( ) Mac_k() Mack()是一个确定算法

Security of Message Authentication Codes

MAC安全最直观的定义是:不存在Efficient Adversary任何未经发送或者验证的信息生成Valid tag
 对于正式的模型来说允许敌手选择任意的message通过访问MAC o r a c l e oracle oracle M a c k ( ⋅ ) Mac_k(·) Mack()获得有效的tag。如果敌手能够对任意message都输出valid tag则称敌手可以破坏MAC方案,其中敌手并没有请求过对应messagevalid tag。因此,Replay Attack并没有破坏MAC,但其在安全方面仍然备受关注。
 故定义Message Authentication实验如下:其中 Π = ( G e n , M a c , V r f y ) Π=(Gen,Mac,Vrfy) Π=(Gen,Mac,Vrfy)4.2 Message Authentication Codes – Definitions_第2张图片
 如果不存在Efficient AdversaryMAC-forge实验中以Non-negligible的概率成功,则称MAC是安全的。正式描述如下:
4.2 Message Authentication Codes – Definitions_第3张图片

Is the definition too strong?

 上述定义强在两个方面:
  1.敌手被允许可以向oracle请求其选择的任意信息并获得tag;在现实中,敌手能够获得的相关信息的有效tag往往是受限的,并不是任意的。
  2.如果敌手能够输入任意未经验证信息的有效tag,则称敌手就破坏了MAC安全;在现实中,敌手应该是能够输入未验证的有用信息的有效tag,而不是任意未验证信息的有效tag。

Replay attacks

 正如前面所述,MAC并不能抵抗Replay attack,因为Replay attack并没有破坏MAC的安全性。
 那么如何抵抗Replay attack呢?

方法 sequence numbers (or counters) time-stamps
描述 序列号(计数),详细描述在4.5.3节 sender发送当前时间 T T T,并通过 T ∥ m T\|m Tm 计算tag t t t
条件 通信双方保持同步状态 通信双方保持相近的同步时钟
缺点 概率性的丢包可能会产生一些问题 Replay attack足够快时也有可能攻击成功

Strong MACs

secure MAC保证敌手不能对New Message伪造有效的tag,但并没有限制敌手不能够对验证过的message伪造有效的tag:假设 M a c k ( ) Mac_k() Mack()是一个随机函数,即 M a c k ( m i ) Mac_k(m_i) Mack(mi)可能存在多个有效的tag t i t_i ti,那么敌手就能够对验证过得message m i m_i mi求得一个新的有效tag t i ~ ! = t i \tilde{t_i} != t_i ti~!=ti,这种情况在现实中可能会对通信双方造成某些损害。为了排除这种情况,需要定义Strong MAC
 首先定义Mac-sforge实验,和Mac-forge唯一的区别就在于:验证集合由 { m 1 , . . . , m n } \{m_1,...,m_n\} {m1,...,mn}变成 { ( m 1 , t 1 ) , . . . , ( m n , t n ) } \{(m_1,t_1),...,(m_n,t_n)\} {(m1,t1),...,(mn,tn)};这样定义后Mac-sforge就避免了敌手对已验证message伪造新的有效tag
4.2 Message Authentication Codes – Definitions_第4张图片
 很容易得出,Mac-forgecanonical verification条件下和Mac-sforge是等价的。
在这里插入图片描述

Verification Queries

 Definition4.2和4.3中都允许敌手去访问verification oracle

A potential timing attack

 上面没有提到的一个问题是对MAC verification进行timing attack。敌手发送 ( m , t ) (m,t) (m,t)给接收方,不仅能够了解到是accepts或者rejects的状态,还能了解到接收方作出这个决定花费了多长的时间;由这一特性,提出了timing attack:已知敌手伪造的前 i i i位的tag是对的,现在需要验证第 i + 1 i+1 i+1位是否正确;如果第 i + 1 i+1 i+1位正确,那么rejects的时间会稍长,否则和前 i i i位正确时所花费的时间一样。
 对于timing attack的应对措施就是:再进行验证时比较tagall bytes

你可能感兴趣的:(密码学)