情報セキュリティ

情報セキュリティ
第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)