文章目录
序:
Encryption一般并不能解决Message Integrity问题,对于这个问题最常用的工具是Message Authentication Code, MAC,MAC的目标就是检测message是否被敌手篡改。
The Syntax of a Message Authtication Code
这部分主要讲述MAC的定义以及如何使用。在对称加密中,通信双方首先共享密钥
k
k
k,sender发送
(
m
,
t
)
(m,t)
(m,t)给接收方,其中
t
t
t是MAC tag,计算方法为
t
←
M
a
c
k
(
m
)
t \leftarrow Mac_k(m)
t←Mack(m);receiver接收
(
m
,
t
)
(m,t)
(m,t),并通过Vrfy验证
t
t
t是否有效,即
m
m
m是否被敌手篡改。
正式描述如DEFINITION 4.1所示。
Canonical verification
Canonical verification的基本思想是再计算一遍 m m m的Mac值,计算出的 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方案,其中敌手并没有请求过对应message的valid tag。因此,Replay Attack并没有破坏MAC,但其在安全方面仍然备受关注。
故定义Message Authentication实验如下:其中
Π
=
(
G
e
n
,
M
a
c
,
V
r
f
y
)
Π=(Gen,Mac,Vrfy)
Π=(Gen,Mac,Vrfy)
如果不存在Efficient Adversary在MAC-forge实验中以Non-negligible的概率成功,则称MAC是安全的。正式描述如下:
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 T∥m 计算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。
很容易得出,Mac-forge在canonical 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的应对措施就是:再进行验证时比较tag的all bytes。