情報セキュリティ 第4回 メッセージ認証コード 脅威と暗号技術 セキュリティに対する脅威 脅かされる特性 暗号技術 共通鍵暗号 盗聴 (秘密が漏れる) 機密性 公開鍵暗号 改竄 (情報が書き換えられる) 正真性 一方向ハッシュ関数 なりすまし (正しい送信者のふりをする) 認証 メッセージ認証コード 否認 (後から私じゃないと言う) 否認不可能性 デジタル署名 メッセージ認証コード(MAC) 目的 送信者を認証する。 メッセージ改竄を防ぐ。 モデル 鍵Kを知っているのは送信者と 受信者だけであることが前提 送信者と受信者は鍵Kを共有 送信者は鍵KとメッセージMから 認証子(Tag)を作成し、 MとTag の組を送信する。 受信者は、 受信したMと鍵Kから Tag’を再計算する。 Tag=Tag’ならばMを受理する。 Tag≠Tag’ならばMを廃棄する。 Tag=Tag’によって、平文Mは改 竄がなく、鍵Kを知っている人か ら来たことが確認できる。 アルゴリズム 鍵生成アルゴリズムG:鍵Kを作 成する。 認証子生成アルゴリズムS:認証 子Tagを作成する。Tag=S(M,K) 鍵KでTag作成 平 文 M 再度、鍵KでTag’作成 送 信 者 (M,Tag) 敵は平文Mを 途中で改竄す るかもしれない 平 文 M 敵 受 信 者 Tag=Tag’ の場合だ け受理 Mが改竄され るとTag≠Tag’ 鍵生成 アルゴリズムG 鍵K 認証子生成 アルゴリズムS 認証子 Tag 鍵K MACの安全性 選択メッセージ攻撃 敵は自由に選んだメッセージ M1,..,Mqに対する認証子から (M,Tag)を偽造する。 偽造とは: 受信者が受理する(M,Tag)を 作成することを「偽造」と言う。 鍵Kを知らなくても偽造できる 場合がある。 MACが「安全である」とは: 敵が偽造に成功する確率が 無視できる程小さいならば、 安全である。 MACはブロック暗号方式 ブロック暗号で使われる暗号 化アルゴリズムEkは擬似ラン ダム置換族に属する。 選択メッセージ攻撃 認証子生成 アルゴリズムS 平文 M1,..,Mq 認証子 Tag1,..,Tagq 敵 平文を自由に 選択出来る 偽造 (M,Tag) 偽造とは、受信者が受理する 組(M,Tag)を作ること CBC-MAC CBCモードを 使ったMAC 認証子生成アルゴリズムS メッセージM=(m1,..,mt)、 |mi|=n、i=1,..,t C1=EK(m1) C2=EK(C1 m2) ... Ct=EK(Ct-1 mt) Tag=Ct 安全性 メッセージ長tが固定ならば CBC-MACは安全である。 メッセージ長tが可変ならば、 偽造できる。 偽造例 1. m∈{0,1}nのTagを得る。 2. このTagは、メッセージ M=(m,m Tag)の正しい識 選択メッセージ 別子である。 攻撃 認証子生成アルゴリズムS m1 m2 … mt EK EK EK Tag 偽造例 手順2 手順1 m M=(m, m Tag) Tag =m EK Tag EK Tag EK Tag m Tag 偽造出来ないように CBC-MACを改良する CBC-MACの改良 EMAC(Encrypted MAC) 新しい鍵k2を使って、CBC-MAC の認証子CBCk1(M)を暗号化して 認証子Tag作成する。 Tag=Ek2(CBCk1(M)) 可変長メッセージに対して安全 OMAC(one-key MAC) |mt|=n(ブロック長)の場合 Tag=Ek(Ct-1 mt (L・u)) |mt|<nの場合 Tag=Ek(Ct-1 (mto1o0i) (L・u2)) メッセージ長がブロック長n の整数倍でない場合 EMAC方式 … m1 m2 EK1 EK1 鍵k2による暗号化 EK1 EK2 Tag oはビット列の連結 OMAC方式 m2 … 0n m1 mt iは|mto1o0i|=nとなるように選ぶ mtまたはmto1o0i L・uまたはL・u2 鍵が1つだから one-key EK L EK EK EK Tag uは拡大体GF(2n)上の要素 ・は拡大体GF(2n)上の乗算 拡大体GF(2n) 有限体(ガロア体) 体とは、0 で割ることを除いて四則演算 が自由にできる系。 有限体とは、要素数が有限個の体。 例えば、GF(2)では要素数2(0と1)の体。 GF(2n) GF(2)の拡大体(nビットに拡大) 多項式表示: an-1un-1+・・+a1u+a0 ベクトル表示: (an-1,..,a1,a0) 足算は排他的論理和をビット毎に行う。 掛算は、通常の掛算の後にn次の既約 多項式f(u)で割った余りである。 既約多項式とは、これ以上因数分 解できない多項式である。 既約多項式f(u)は1つに固定される。 掛算は多項式表示で行う GF(2)の加法 y 0 1 x 0 0 1 1 1 0 1 0 1 GF(2n)の加法 GF(22)の要素 (0,0) (1,1) {0, 1, u, u+1} (0,1) ・(1,1) = 1・(u+1) = u+1 (0,1) mod u2+u+1 f(u)で割った余り u+1 = (1,1) ベクトル表示 a b=(an-1 bn-1,..,a0 b0) 但し、a=(an-1,..,a1,a0)、b=(bn-1,..,b1,b0) 通常の掛算。但し、 係数はmod 2 GF(22)の乗法 GF(2)の乗法(・) y 0 1 x 0 0 0 既約多項式f(u) (1,0) 乗算(L・u)のアルゴリズム ブロック長n=128の場合の 既約多項式f(u) L・uのアルゴリズム Lは128ビット f(u)=u128+u7+u2+u+1 以下にL・uを計算する。但し、L=(L127,..,L1,L0) 1ビット左シフトと L127=0ならば、L・u=(L126,..,L0,0)=L<<1 同じ結果になる 128+L 127+..+L u2+L uをf(u)で割った余り。 L127=1ならば、 L・uはu 126u 1 0 L・uをf(u)で割る(但し、 L127=1) GF(2)の加法 y 0 1 x 0 0 1 1 u128+u7+u2+1 u128+L126u127+・・+L1u2+L0u u128+u7+u2+u+1 余り L126u127+・・+L1u2+L0u -u7-u2-u-1 =(L<<1) (u7+u2+u+1) 1ビット左シフトするとキャリー・ビット(L127)が消える -1とは、1 つまり、x=1 1 1 0 x=0を満たすx MACの標準化 EMAC 2003年ヨーロッパの暗号技術評価プロジェクト OMAC 2003年米国の推奨MAC方式 その他のMAC UMAC(universal-hash MAC) HMAC(hash MAC)
© Copyright 2024 ExpyDoc