O C B 2 \bf OCB2 OCB2伪造攻击: m i n i m a l e x a m p l e o f f o r g e r y 部 分 minimal\ example\ of \ forgery 部分 minimal example of forgery部分
A L i c e ALice ALice与 B o b Bob Bob进行认证加密:
A
L
i
c
e
ALice
ALice的认证加密:
E
n
c
r
y
p
t
(
N
,
A
,
M
)
Encrypt(N,A,M)
Encrypt(N,A,M)
N
N
N表示
128
b
i
t
128bit
128bit随机数,
A
A
A表示空相关数据,
M
M
M表示长度为2
n
n
n(
n
=
128
n=128
n=128)的消息
M
=
M
[
1
]
∣
∣
M
[
2
]
M=M[1]||M[2]
M=M[1]∣∣M[2]:
M
[
1
]
=
l
e
n
(
0
n
)
M[1]=len(0^n)
M[1]=len(0n),
M
[
2
]
M[2]
M[2]的值可以是任意的
n
b
i
t
n_{bit}
nbit。例如:
M
[
2
]
=
0
128
M[2]=0^{128}
M[2]=0128。
认证加密的结果: 密文
C
=
C
[
1
]
∣
∣
C
[
2
]
C=C[1]||C[2]
C=C[1]∣∣C[2],标签
T
a
g
Tag
Tag 。
B o b Bob Bob进行认证解密: D e c r y p t ( N , A , C , T a g ) Decrypt(N,A,C,Tag) Decrypt(N,A,C,Tag):
B o b Bob Bob对接收到 A l i c e Alice Alice的密文 C = C [ 1 ] ∣ ∣ C [ 2 ] C=C[1]||C[2] C=C[1]∣∣C[2],标签 T a g Tag Tag ,进行认证解密。解密之后的 T a g d e c Tag_{dec} Tagdec与 A l i c e Alice Alice的 T a g Tag Tag相等,则认证成功,解密出来的明文即 M M M( A l i c e 真 正 发 送 的 明 文 Alice真正发送的明文 Alice真正发送的明文)。
B
o
b
Bob
Bob本应该接收到
A
l
i
c
e
Alice
Alice发送过来的认证加密结果,进行如上的认证解密。然而此时
E
v
a
Eva
Eva从中作怪,
E
v
a
Eva
Eva对
A
i
c
e
Aice
Aice认证加密的结果进行伪造,并把伪造结果发送给
B
o
b
Bob
Bob。
E
v
a
Eva
Eva伪造:
N
′
N'
N′=
N
N
N //使解密认证的
N
N
N与加密认证的
N
N
N相同
A
′
=
ε
A'=\varepsilon
A′=ε //
A
′
A'
A′为空
C
′
=
C
[
1
]
⊕
l
e
n
(
0
n
)
C'=C[1]\oplus len(0^n)
C′=C[1]⊕len(0n) //把
2
n
b
i
t
的
2n_{bit}的
2nbit的
C
C
C伪造成
n
b
i
t
n_{bit}
nbit
C
′
C'
C′
T
′
=
M
[
2
]
⊕
C
[
2
]
T'=M[2]\oplus C[2]
T′=M[2]⊕C[2] //把
T
a
g
Tag
Tag伪造成
T
′
T'
T′
B
o
b
Bob
Bob对
E
v
a
Eva
Eva伪造过的认证加密结果进行认证解密:
D
e
c
r
y
p
t
(
N
′
,
A
′
,
C
′
,
T
′
)
Decrypt(N',A',C',T')
Decrypt(N′,A′,C′,T′): 其中
∣
C
′
∣
=
n
|C'|=n
∣C′∣=n
解密之后的
T
a
g
d
e
c
−
e
v
a
Tag_{dec-eva}
Tagdec−eva与
E
v
a
Eva
Eva伪造的
T
′
T'
T′相同,此时
B
o
b
Bob
Bob认为自己认证成功,则认为自己解密出来的明文就是
A
l
i
c
e
Alice
Alice发送的明文
M
M
M。事实上:解密之后的密文
M
d
e
c
−
e
v
a
M_{dec-eva}
Mdec−eva并不是
A
l
i
c
e
Alice
Alice发送的密文。
这就是
E
v
a
Eva
Eva伪造成功了!!!!!!