固定長及び可変長のメッセージにおけるセキュリティ
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2017/02/28 05:38 UTC 版)
「CBC-MAC」の記事における「固定長及び可変長のメッセージにおけるセキュリティ」の解説
ブロック暗号が安全であれば、CBC-MACは固定長のメッセージについては安全であるが、可変長のメッセージについては安全ではない。そのため、ある鍵は固定長かつ既知の長さのメッセージにしか用いることはできない。これは、攻撃者が2組のメッセージ‐CBC-MACのペア ( m , t ) {\displaystyle (m,t)} および ( m ′ , t ′ ) {\displaystyle (m',t')} を知っている場合、CBC-MACが t ′ {\displaystyle t'} となるメッセージ m ″ {\displaystyle m''} を生成することが可能であるためである。メッセージ m ″ {\displaystyle m''} の生成は以下の手順となる。メッセージ m ′ {\displaystyle m'} の最初のブロックと t {\displaystyle t} の排他的論理和をとり、メッセージ m {\displaystyle m} とこの改変したメッセージ m ′ {\displaystyle m'} を連結する: m ″ = m ∥ [ ( m 1 ′ ⊕ t ) ∥ m 2 ′ ∥ … ∥ m x ′ ] {\displaystyle m''=m\|[(m_{1}'\oplus t)\|m_{2}'\|\dots \|m_{x}']} 。メッセージ m ″ {\displaystyle m''} を計算する場合、メッセージ m {\displaystyle m} の場合と同様タグ t {\displaystyle t} までは通常に計算される。しかし、続く E K M A C ( m 1 ′ ⊕ t ) {\displaystyle E_{K_{MAC}}(m_{1}'\oplus t)} の計算において、 t {\displaystyle t} と t {\displaystyle t} の排他的論理和を計算することとなるためこれは打ち消され、本来のメッセージ m {\displaystyle m} はMAC値に寄与しないこととなる( E K M A C ( m 1 ′ ⊕ t ⊕ t ) = E K M A C ( m 1 ′ ) {\displaystyle E_{K_{MAC}}(m_{1}'\oplus t\oplus t)=E_{K_{MAC}}(m_{1}')} であるからメッセージ m ″ {\displaystyle m''} のCBC-MACタグは t ′ {\displaystyle t'} となる)。 この問題は、メッセージ長の情報を最後に追加することでは解決できない。可変長メッセージにおいてもCBC-MACを安全に利用するためには3つの主な改良法が存在する。一つ目は鍵の入力長の分割、2つめはメッセージ長の情報を先頭に追加すること、3つめは最後のブロックを暗号化することである。CMACやHMACのような、可変長メッセージでも安全な他の暗号利用モードを用いることも検討すべきである。
※この「固定長及び可変長のメッセージにおけるセキュリティ」の解説は、「CBC-MAC」の解説の一部です。
「固定長及び可変長のメッセージにおけるセキュリティ」を含む「CBC-MAC」の記事については、「CBC-MAC」の概要を参照ください。
- 固定長及び可変長のメッセージにおけるセキュリティのページへのリンク