文章目录
序
从定理4.6和定理4.8可以得出,可以通过固定长度的伪随机函数构造任意长度message的安全MAC。其基于block ciphers,但效率较低:对于长度为 d n dn dn的message,block ciphers需要计算 4 d 4d 4d次(每个分组的长度为 n n n,但是每个 m i m_i mi的长度为 n / 4 n/4 n/4,故分组的个数为 4 d 4d 4d个);tag t的长度超过 4 d n 4dn 4dn位(每一个block的长度为 n n n,这一点和前面定理中提到的不同)。
4.4.1 The Basic Construction
CBC-MAC是在实践中应用非常广泛的standard message MAC。当message的长度固定时,CBC-MAC是安全的,具体构造方法如下:
Theorem 4.12如下:
Theorem4.12的证明将会在后面详细描述。由Theorem4.12可以得出,construction4.11是可以处理任意长度的message,但只有sender和receiver提前商量好message长度时,MAC方案才会是安全的。
construction4.5 | construction4.7 |
---|---|
construction4.11可以验证更长的固定长度的message | construction4.11更有效,tag仅为 n n n位( n n n是分组的长度),仅需计算 d d d次 |
CBC-MAC vs. CBC-mode encryption
CBC-MAC和CBC操作模式是相似的但还是存在一些重要的区别:
1. CBC操作模式使用的初始化向量
I
V
IV
IV,这是其安全性的主要保证;但是CBC-MAC却没有用到
I
V
IV
IV(使用随机向量
I
V
IV
IV会变得不安全)。
2.在CBC操作模式中所有的中间值
c
i
c_i
ci都被输出作为密文的一部分;而CBC-MAC则只输出最终的tag
t
d
t_d
td(
d
d
d是分组数)。如果CBC-MAC输出每一个
t
i
t_i
ti则就不再安全。
在Exercise 4.14中将会对上面所说的修改进行证明。
Secure CBC-MAC for arbitrary-length messages
接下来将要介绍的是任意长度messages的CBC-MAC,这是基于construction4.11进行的修改(假设所有的messages都是
n
n
n的倍数,
n
n
n是block的长度)。修改主要由以下两点:
1.把初始化随机向量
I
V
IV
IV修改为
∣
m
∣
|m|
∣m∣,具体参考Figure4.2;注:
∣
m
∣
|m|
∣m∣后置会使得CBC-MAC不再安全。(破坏prefix-free这个条件?
m
+
∣
m
∣
m+|m|
m+∣m∣形式中,短的
m
m
m可能是长的
m
m
m的前缀,而
∣
m
∣
+
m
|m|+m
∣m∣+m形式则不会,因为前
n
n
n位就不同)
2.分别定义两个密钥
k
1
,
k
2
,
k_1,k_2,
k1,k2,其中
t
=
M
a
c
k
1
(
m
)
,
t
^
=
F
k
2
(
t
)
t=Mac_{k_1}(m),\hat{t}=F_{k_2}(t)
t=Mack1(m),t^=Fk2(t)。
4.4.2 *Proof of Security