暗号化と認証に同じ鍵を使用
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2017/02/28 05:38 UTC 版)
「CBC-MAC」の記事における「暗号化と認証に同じ鍵を使用」の解説
よくある間違いの一つは、CBCモードでの暗号化とCBC-MACに同じ鍵を使用することである。違う目的に鍵を使いまわすことは一般的に好ましくないが、CBC-MACにおいては攻撃を招く要因となる。 アリスがボブに暗号化したテキストブロック C = C 1 | | C 2 | | … | | C n {\displaystyle C=C_{1}\ ||\ C_{2}\ ||\ \dots \ ||\ C_{n}} およびタグ t {\displaystyle t} を送った。通信経路上において、イブは任意の C 1 , … , C n − 1 {\displaystyle C_{1},\dots ,C_{n-1}} を改変可能であり、最終ブロックが元と同じになるようにビット列を調節し、 C ′ = C 1 ′ | | … | | C n − 1 ′ | | C n {\displaystyle C'=C_{1}'\ ||\ \dots \ ||\ C_{n-1}'\ ||\ C_{n}} とすることができる。説明を簡略化するために、暗号化における初期化ベクトルは0とする。 ボブはまず、イブによって改変された暗号化メッセージ C ′ {\displaystyle C'} を共有した秘密鍵 K {\displaystyle K} を用いて復号する。得られる平文は、アリスが送った P n {\displaystyle P_{n}} ではなくイブによって改変された P n ′ {\displaystyle P_{n}'} となる。このとき P n ′ = C n − 1 ′ ⊕ E K − 1 ( C n ) {\displaystyle P_{n}'=C_{n-1}'\oplus E_{K}^{-1}(C_{n})} となる。 続いてボブは得られた P n ′ {\displaystyle P_{n}'} についてCBC-MACタグを計算する。タグ t ′ {\displaystyle t'} は以下のように求められる。 t ′ = E K ( P n ′ ⊕ E K ( P n − 1 ′ ⊕ E K ( ⋯ ⊕ E K ( P 1 ′ ) ) ) ) {\displaystyle t'=E_{K}(P_{n}'\oplus E_{K}(P_{n-1}'\oplus E_{K}(\dots \oplus E_{K}(P_{1}'))))} この式は以下と等しく t ′ = E K ( P n ′ ⊕ C n − 1 ′ ) {\displaystyle t'=E_{K}(P_{n}'\oplus C_{n-1}')} この結果は C n {\displaystyle C_{n}} と等しくなる。 t ′ = E K ( C n − 1 ′ ⊕ E K − 1 ( C n ) ⊕ C n − 1 ′ ) = E K ( E K − 1 ( C n ) ) = C n {\displaystyle t'=E_{K}(C_{n-1}'\oplus E_{K}^{-1}(C_{n})\oplus C_{n-1}')=E_{K}(E_{K}^{-1}(C_{n}))=C_{n}} ゆえに t ′ = C n = t {\displaystyle t'=C_{n}=t} となる。 このように、イブは通信経路上において、元の平文を知ることなく暗号文を改変することができ、そのCBC-MACタグも元のタグと等しいため、ボブは通信経路上でコンテンツが改変されたことを検知することができない。すなわち、メッセージ認証符号として破綻している。 暗号化と認証に異なる鍵 K 1 {\displaystyle K_{1}} および K 2 {\displaystyle K_{2}} を用いた場合には、この攻撃は成功しない。 この例は、CBC-MACを衝突耐性のある一方向関数として用いることができないことも示している。
※この「暗号化と認証に同じ鍵を使用」の解説は、「CBC-MAC」の解説の一部です。
「暗号化と認証に同じ鍵を使用」を含む「CBC-MAC」の記事については、「CBC-MAC」の概要を参照ください。
- 暗号化と認証に同じ鍵を使用のページへのリンク