CAN304 W3
Message authentication code
Message integrity
我们一直关注确保通信的保密性。
Integrity:确保接收到的消息来自预期方,并且未被修改,即使攻击者控制该通道。
保密 (secrecy) 和完整性 (integrity) 是正交的问题 (orthogonal concerns),可以有一个而没有另一个。
加密可以帮助发现信息是否被更改:如果解密的消息毫无意义,不可读,则被更改了;但加密的目的不是为了发现信息是否被更改。
Message authentication code (MAC)
消息身份验证代码由三种算法(Gen、Mac、Vrfy)定义:
-
Gen:生成一个随机密钥 k
-
Mac:将密钥 k 和 message \(m \in \{0, 1\}^*\) 作为输入,输出 tag t
\[t:=Mac_k(m) \] -
Vrfy:将密钥 k、message m 和 tag t 作为输入;输出 1(“accept”)或 0(“reject”)(如果是 Gan 生成的密钥,则接受;如果不是,则拒绝)
\[For \ all \ m \ and \ all \ k \ output \ by \ Genknow \\ Vrfy_k(m, Mac_k(m)) = 1 \]
最后验证主要靠 message m 和 tag t。
Fixed-length MAC
在实践中,block ciphers 具有短的,固定长度块大小。因此,之前的构造仅限于对短的、固定长度的消息进行身份验证。
CBC-MAC
Recall CBC mode
CBC 使用先前块的密文来加密当前块:将先前块的密文和当前块的明文进行异或操作,再加密其结果。这样每个块的加密取决于所有先前块的内容。
CBC-MAC
CBC-MAC 使用 CBC mode,\(m = m_1m_2…m_l\)。
CBC-MAC 主要生成 tag t,用来验证。
CBC-MAC vs. CBC-mode encryption
-
CBC-MAC 是确定性的 (deterministic,没有 IV,initialization vectors),对于相同的输入总是有相同的结果(使用随机向量IV会变得不安全)
-
在 CBC-MAC 中,仅输出最终值 t,通过重新计算结果进行验证
-
可以从其 MAC 的 tag 中恢复原始 message 吗?
- 不行!
CBC-MAC extensions
处理可变长度消息的几种方法
- 其长度不是块长度的倍数
最简单的方法之一:在应用 CBC-MAC 之前预置消息长度
假如块的长度为128 bit,我们把消息分成长度为 128 bit 的块,然后到 m1 的时候,发现 m1 的长度不足 128 bit。我们使用 l 把 m1 的长度补成 128 bit,再进行 CBC-MAC。之后发送方要把 l 也告诉接收方,接收方以相同的操作来进行验证。
Secure communications
在消息传递中,我们希望同时达到 confidentiality 和 integrity。我们用加密来达到 confidentiality,用 MAC 来达到 integrity。
上图中,发送者用 k1 加密消息,用 k2 生成 MAC tag,然后把加密消息和 tag 发给接收方;接收方用 k1 解密消息,用 k2 来验证消息是否被修改过。这样就达成了加密通讯。
不过这里存在一个问题:假如我们发送两次相同的信息,密文会不同,但 tag 会相同 (MAC is deterministic),这会泄露信息。
不过这个问题很好解决:我们不生成明文的 MAC,而是生成密文的 MAC,这样每次密文不同,tag 也不同。而接收方收到消息后,需要先用密文验证,再解密。
Secure sessions
Consider parties who wish to communicate securely over the course of a session
"Securely" = confidentiality and integrity
"Session" = period of time over which parties are willing tomaintain state
Can use authenticated encryption
Attacks in Secure sessions
Replay attack:sender 给 receiver 发送两条消息 (c1, t1) 和 (c2, c2);attacker 截留第二条消息 (c2, c2),并伪装成 sender 再发一遍 (c1, t1)。
Re-ordering attack:sender 给 receiver 发送两条消息 (c1, t1) 和 (c2, c2);attacker 截留两条消息,伪装成 sender 更改顺序后发送两条消息。
Solution:使用 counters 和 identities 来防止这些攻击 (以及其他攻击)。即发送消息时带上自己的标识和消息的数量,如 (”
标签:CBC,hash,collision,MAC,W3,长度,bit,CAN304 From: https://www.cnblogs.com/zz-w/p/17398394.html