情報セキュリティ

情報セキュリティ
第2回
現代暗号の基礎数理
脅威と暗号技術
セキュリティに対する脅威
盗聴
(秘密が漏れる)
脅かされる特性
暗号技術
共通鍵暗号
機密性
公開鍵暗号
改竄
(情報が書き換えられる)
正真性
一方向ハッシュ関数
なりすまし
(正しい送信者のふりをする)
認証
メッセージ認証コード
否認
(後から私じゃないと言う)
否認不可能性
デジタル署名
共通鍵暗号系
送信者と同じ
鍵(K)で復号
鍵(K)で暗号化
平文M
送信者
暗号文C
敵
平文M
受信者
暗号アルゴリズムは知っ
ているが鍵は知らない
 共通鍵暗号
ストリーム暗号とブロック暗号
 ビット列
 {0,1}n: 長さnのビット列全てから成る集合
 例: 0101は長さ4のビット列
 演算
: mod 2又は、XOR(排他的論理和)
 0 0=0, 0 1=1, 1 0=1, 1 1=0
 (a1,a2,..,an) (b1,b2,..,bn)=(a1 b1, …,an

bn )
ストリーム暗号
 ストリーム暗号
平文M=(b1,b2,..)、鍵K=(k1,k2,..)
 暗号文=(b1,b2,..)
(k1,k2,…)
 鍵系列K
 平文毎に鍵系列Kを変えれば安全

例 K=0101
復号
暗号化
鍵K=(k1,k2,..)
平文M=(b1,b2,..)
暗号文C=(c1,c2,..)
ci=bi
例 M=1100
鍵K=(k1,k2,..)
ki
例 C=1001
bi=ci
bi
ki
ci
ki
平文M=(b1,b2,..)
ki = bi
例 M=1100
ブロック暗号
 ブロック暗号
平文Mをブロック毎に分割し、ブロック単位で暗号化
 n: ブロック長(ビット)
 κ:鍵長(ビット)
 米国の標準暗号
長い程安全
 1977年 DES暗号 n=64, κ=56
 2001年 AES暗号 n=128, κ=128, 192, 256
 DESとAES暗号アルゴリズムは公開されている

1ブロック(nビット)
平文m
暗号文c
m=DK(c)
c=EK(m)
暗号化
E
鍵K
復 号
D
κビット
1ブロック(nビット)
暗号文c
平文m
敵のモデル
 既知平文攻撃
敵はランダムに与えられ
弱い
た(m1,c1),..,(mk,ck)から
鍵Kなどを求める。
 選択平文攻撃
攻
 敵は平文m1,..,mkを自由
撃
に選び、それらに対する
の
暗号文を入手することが
強
出来る。
さ
 選択暗号文攻撃
 敵は選択平文攻撃に加
え、暗号文c1,..,ckを自由
強い
に選び、それらに対する
平文を入手することが出
来る。

ランダムな平文m1とそ
の暗号文c1の組
敵
(m1,c1),..,(mk,ck)
暗号化
EK
鍵Kなど
選択平文
平文
m1,..,mq
敵
鍵Kなど
暗号文
c1,..,cq
選択平文
平文
暗号化
EK
平文
敵
暗号文
暗号文
鍵Kなど
復 号
DK
選択暗号文
疑似ランダム置換
 ランダム置換族Pn

n: ブロック長
{0,1}n(全てのnビット列の集
合)の要素を並び替える置換
πの集合をPnで表す。
 集合Pnの要素数=2n!
 擬似ランダム置換族
 長さκの鍵によって決まる置換
π( 暗号化アルゴリズムEK)
の集合をENCnで表す。
 ENCn またはPnからランダム
に選ばれた置換πに対し、選
例えば、解読
択平文攻撃を行う敵が「現実
時間が10億年
的な時間」において、 ENCn と
は現実的な時
Pnを識別出来ないならば、
間でない
ENCn は擬似ランダム置換族。
アルゴリズムが実際に暗号化で使用
する置換πの数は2κ通りしかない。こ
れらを時間をかけずに識別する計算
方法があるならば、このアルゴリズ
ムは悪いアルゴリズムである。
鍵の長さkを増やさないでも、疑似
的にkを大きく見せることが出来る
暗号アルゴリズムを考える。
{0,1}2の場合
00
01
10
11
置換π1(暗号化)
π1
01
10
00
11
π24
置換族P2=
{π1,.., π24}
置換π24(暗号化π1の復号)
2n!通り
Pn
ENCn
平文
敵
π
暗号文
2κ通り
κ:鍵の長さ
置換πをラン
ダムに選択
π∈ENCn ?
or
π∈ Pn ?
置換πがENCnに含
まれるか否をが分
かるまでの時間が
問題
暗号アルゴリズムの置換の数は
非常に少ない: ENCn<<Pn
n=2, k=1の例
P2
π2 ,..,π11, π13 ,..,π24
ENC2
π1, π12
鍵長kのアルゴリズ
ムの置換数2κ
ブロック長nで決
まる置換数2n!
ブロック長nで決ま
n
る関数の数(2n)2
ENCn
Pn
Rn
n=2,k=1
2
24
256
n=5,k=5
25≑101.5
25! ≑1035
1048
DES暗号 n=64 k=54
254≑1016.8
264! ≑(10)10
AES暗号 n=128 k=128
2128≑1038.4
2128! ≑(10)10
スターリングの公式: n! ≑ (2πn)1/2nne-n
210=1024 ≑ 103 e7=1096.63 ≑ 103
1040/3ビットの
平文まで情報
理論的に安全
20
(264)2
64
39
(2128)2
128
観測可能な宇宙の全原子数は、
1079から1081と推定されている。
ランダム関数族
n=2の場合
 ランダム関数族Rn



集合{0,1}nから集合{0,1}nへ
の全ての関数の集合Rnを長
さnのランダム関数族という。
選択平文攻撃を行う敵がFn
(Rnの部分集合)とRnを識別
出来ないならば、Fn は擬似
ランダム関数族と呼ばれる。
Pn は擬似ランダム関数族で
ある。
1対1対応
N対1含む
Rn
置換(暗号化)は1対1
00
01
10
11
00
01
10
11
関数はN対1を含む
00
01
10
11
4対1
00
01
10
11
Pn
ENCn
置換π1
2対1
00
01
10
11
00
01
10
11
利用モード
 利用モード
ECBモード
ブロック長nよりも長い平文
平文=(m1,
…
mt)
M=(m1,..,mt)を暗号化する
モード。但し、 miの長さ(|mi|)
置換
はn。
…
EK
EK
 ECBモード
 暗号化 c1=EK(m1),..,
暗号文=(c1,
…
ct)
ct=EK(mt)
 復号 m1=DK(c1),..,
並列処理
mt=DK(ct)
関数は置換よりも数が多い
が可能
 カウンタモード
カウンタモード
 暗号化
ctr
ctr+1 関数
ctr+t
c1=m1 EK(ctr+1),..,
ct=mt EK(ctr+t)
復号もEK
…
EK
EK
 復号
m1=c1 EK(ctr+1),..,
m1
mt
mt=ct EK(ctr+t)

暗号文=(ctr,
ct
EK(ctr+t)=mt
=mt
EK(ctr+t)
EK(ctr+t)
c 1,
…
c t)
利用モード
メッセージ認証コード
で使われる
 CBCモード
 暗号化
ci+1=EK(ci mi+1)
 復号
mi+1=DK(ci+1) ci
 CFBモード
 暗号化
ci+1=mi+1
 復号
mi+1=ci+1
EK(ci)
CBCモード
IV
m1
m2 …
mt
EK
EK
EK
c1 ,
c2, …
ct)
毎回初期
値を変える
暗号文=(IV,
CFBモード
IV
復号もEK
EK(ci)
関数
EK
m1
暗号文=(IV,
EK
EK
c1,
mt
m2
c2 , …
ct)
利用モード
 OFBモード
暗号化
zi+1=EK(zi),
ci+1=mi+1 zi+1
復号もEK
 復号
zi+1=EK(zi),
mi+1=ci+1 zi+1
 安全性
 {EK}が擬似ランダム
置換族ならば、ECB
以外は選択平文攻
撃に安全

OFBモード
IV
暗号文=(IV,
関数
EK
EK
m1
c1,
m2
c2 , …
EK
mt
ct)