27
08/05/17 IISEC オープンキャンパス模擬授業 08/06/18改訂) 暗号理論への招待 擬似乱数擬似乱数情報セキュリティ大学院大学 有田正剛 0

暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

08/05/17 IISECオープンキャンパス模擬授業 (08/06/18改訂)

暗号理論への招待

擬似乱数の話擬似乱数の話

情報セキュリティ大学院大学 有田正剛

0

Page 2: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

はじめに

暗号理論の対象•擬似乱数、擬似ランダム関数、一方向性関数•共通鍵暗号、公開鍵暗号• MAC、デジタル署名暗号プロトコル(鍵共有 コミットメント )•暗号プロトコル(鍵共有、コミットメント、・・・)

•セキュアシステム/サービス(電子投票、オークション、・・・)

暗号理論の目標システム/サービスを安全なものにコンパイル(自動変換)することシステム/サ ビスを安全なものにコンパイル(自動変換)すること

安全 = 「悪意ある環境でも正しく動作すること」•正当な利用者に対する完全性•正当な利用者に対する完全性•悪意ある利用者に対する頑強性•悪意あるシステムに対する健全性

1

悪意あるシステムに対する健全性

Page 3: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

約束ごと

• すべての情報はビット列で表す。

整数 17 2進表現 10001整数 17               2進表現 10001          IISEC                     ISO/IEC 8859‐1        01001001, 01001001, 01010011,

01000101, 01000011音楽データ MP3音楽デ タ MP3画像データ JPEG {0,1}n : nビットの文字列全体

{0,1}* : 全ての有限長の文字列全体

• すべての関数/アルゴリズムはビット列操作とみなす。す ての関数/アルゴリズムはビット列操作とみなす。

101  100 101  100

0 + 0 0 1 + 0 1

+ (排他的論理和)

0 + 0 = 0,   1 + 0 = 10 + 1 = 1,   1+ 1 = 0

1001 2/* 5 + 4 = 9 */ 001

Page 4: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

ワンタイムパッドメ セ ジ ( )と同じ長さのランダムなビ ト列 kを選ぶ• メッセージm=(m1,m2,m3,・・・)と同じ長さのランダムなビット列 k を選ぶ。

• ビット列 k は送信者と受信者の間だけの秘密とする。

k k

送信者(暗号化) 受信者(復号)送信者(暗号化) 受信者(復号)

(k1, k2, k3, ・・・) = k (k1, k2, k3, ・・・) = k

mi mi

ki ki

ci

Eve?

(m + k) + k = m

3どのような Eve にもmi  はわからない。

(m + k) + k   m

Page 5: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

ワンタイムパッドの実行例

m=(01001001, 01001001, 01010011, 01000101, 01000011) /* IISEC */k = (00100001, 11101010, 01000101, 11001111, 10000011)    /* ランダムに生成 */( , , , , ) / ランダ 成 /

暗号化暗

m=(01001001, 01001001, 01010011, 01000101, 01000011)k = (00100001, 11101010, 01000101, 11001111, 10000011)

(01101000 10100011 00010110 10001010 11000000)c = (01101000, 10100011, 00010110, 10001010, 11000000)

復号

c = (01101000, 10100011, 00010110, 10001010, 11000000)

Eve  ?

復号

c = (01101000, 10100011, 00010110, 10001010, 11000000)k = (00100001, 11101010, 01000101, 11001111, 10000011)

m=(01001001, 01001001, 01010011, 01000101, 01000011)

4

Page 6: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

擬似乱数生成器

擬似乱数生成器G: {0,1}n → {0,1}n+w

nビット乱数

n

乱数

擬似乱数生成器G

w

生成器G

(n+w) ビット擬似乱数

w

Page 7: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

ストリーム暗号メッセージm=(m0,m1,m2,・・・)より(ずっと)短い鍵 k をランダムに選ぶ。擬似乱数生成器G(・)を用意する。擬似乱数 成器 ( )を用意する。

k k

暗号化 復号

k k k ← G(k) k k k ← G(k)k0, k1, k2, ・・・← G(k) k0, k1, k2, ・・・← G(k)

ki ki

mi

ci

mi

i

本当にこれで安全なのか?6

Page 8: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

暗号理論における安全性の捉え方

安全であるとは理想的に安全であることと識別できないこと

1. 理想を明確に。

2 ただし システムは完全に理想的でなくてもよい 現実的な2. ただし、システムは完全に理想的でなくてもよい。現実的な敵(効率的な敵)に理想との差を識別されなければよい(計算論的安全性) 。算論的安全性) 。

3. しかし、どの様なタイプの敵に識別されたくないのかは明確にする。• 敵の計算能力• 敵が入手しうる情報、敵が取りうる立場

「オラクル」と「識別者」を用いてモデル化「オラクル」と「識別者」を用いてモデル化

7

Page 9: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

オラクルと識別者を用いた安全性定義(の形)

System 0 :System 0 : 理想のシステムオラクル

which?

System 1 : 現実のシステム

問い合わせ答え

System 1が安全

答え

定義

識別者

System 1 が安全⇔

どのような効率的な識別者もオラクルの実体がSystem 0なのかオラクルの実体がSystem 0なのかSystem 1なのか、わからない。

⇔どのような効率的な識別者に対しても

b ( = 0 or  1)どのような効率的な識別者に対しても

Pr[  オラクルの実体 = System b ] – 1/2 が無視できるほど小さい。 8

Page 10: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

擬似乱数生成器の安全性定義擬似乱数生成器

x擬似乱数生成器G: {0,1}n → {0,1}n+w

zG w

System 0 (理想) : z を {0,1}n+wからランダムに選択オラクル

hi h?

System 1 (現実) : x を {0,1}nからランダムに選択

which?

z = G(x)ε z

定義

識別者

Gが安全な擬似乱数生成器⇔

どのような効率的な識別者に対しても識別者 どのような効率的な識別者に対してもPr[ オラクルの実体 =  System b] – 1/2 

が無視できるほど小さい。

b ( = 0 or  1)9

Page 11: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

安全な擬似乱数生成器を用いれば・・・

G: {0,1}n → {0,1}n+w が安全な擬似乱数生成器ならば、

定理

Gを用いたストリーム暗号は効率的なEveに対して安全である。(ただし、メッセージ長はn+w以下とする。)

オラクル

z (∈ {0,1}n+w)

なぜならば、もしもGを用いたストリーム暗号を破る効率的なEveがいたとすると、

識別者Dz

Eveを用いてGを破る効率的な識別者Dを構成できるから。

c = m + zEve

m を解読できたら:“疑似”

l

10

else:“真” or “疑似”

(ランダムに選択)

Page 12: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

安全な擬似乱数生成器を作るには?

まず、w=1 とする:関数G: {0,1}n → {0,1}n+1関数 { , } → { , }

System 1 System 0

x ←$ {0,1}n, z = G(x)     z ←$ {0,1}n+1

と は を通して従属 と は完全に独立

(y,σ)  = z   (y ∈ {0,1}n, σ∈{0,1} )

yとσはxを通して従属 yとσは完全に独立

違いを見分けられないためには、は と の関連を隠さなければならないGは y とσの関連を隠さなければならない。

11

Page 13: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

関数G: {0 1}5 → {0 1}6 :関数G: {0,1}5 → {0,1}6  :  G(x0,x1,x2,x3,x4)  = (x0,x1,x2,x3,x4, x2)

System 1 System 0

11011 0 00010 1 

00100 1 01101 1 

01000 0 00110 0 01111 1

01111 1 10010 0 11011 0 01111 111011 0 

12

どちらが System 1?

Page 14: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

ハードコア述語関数 f: {0 1}n → {0 1}n :効率的に計算可能 x関数 f: {0,1}n → {0,1}n : 効率的に計算可能述語 h: {0,1}n → {0,1} :           〃 y

f hσ

x  ←$ {0,1}n

y = f(x) σ = h(x)オラクル

y = f(x) ,  σ = h(x)return y

ε y

述語 が関数fのハ ドコア述語

定義

述語σ が関数fのハードコア述語⇔

y=f(x)はσ=h(x)を隠す⇔

インバータ⇔

どのような効率的なインバータに対してもPr[ σ^ = σ ]  ‐ 1/2

が無視できるほど小さい。

σ^

が無視できるほど小さい。

13

Page 15: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

ハードコア述語があれば・・・

述語h: {0,1}n→{0,1} が関数f:{0,1}n→{0,1}nのハード

定理

語 { , } { , } 関数 { , } { , }コア述語ならば、G(x) = (f(x),h(x)) は安全な擬似乱数生成器である。

x

f(x) h(x)f(x) h(x)

G(x)

14

Page 16: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

なぜならば・・・なぜならばなぜならば、ハードコア述語hの性質より、どんな識別者Dも、y=f(x)からσ=h(x)を予測できないから。 オラクルy f(x)からσ h(x)を予測できないから。

じっさい、擬似乱数生成器 G=(f, h) を破る

x  ←$ {0,1}n

y = f(x)(σ=h(x))

インバータ I εy

擬 数 成器 ( , )を識別者Dが存在したとすると、Dを用いてハードコア述語hのインバータ I を構成できる: y

r ←$ {0,1}εz = (y r)z = (y, r)

識別者D

“疑似”:r

“真”:1‐r

σ^ 15

Page 17: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

ハードコア述語を作るには?

1. 何らかの難問を用いて、一方向性関数 f: {0,1}n → {0,1}n 

(の候補)を作る ( f( )を知 ても は分からない)(の候補)を作る。 (y=f(x)を知ってもxは分からない)

2. y=f(x) が完全に隠す、xのビット xi を見つける。y ( ) i

3. h(x) = xi とする。

x

fh

y=f(x) xi

ランダムに選択された xについて

16

ランダムに選択された x についてy(=f(x)) を知っても Pr[h(x)=1] = 1/2

Page 18: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

たとえば・・・

N = pq : 大きな2つの素数の積e: φ(N)=(p 1)(q 1)と互いに素な整数e: φ(N)=(p‐1)(q‐1)と互いに素な整数

y = RSAe N(x) = xe mod N          (x ∈ {0,1,・・・,N‐1})y e,N( ) ( { , , , })

は一方向性関数と信じられている、「RSA仮定」。さらに、

h(x) = LSb(x) (= xの最下位ビット)

は RSAe,N(x)のハードコア述語。(つまり、yを知ってもxが偶数か奇数かまるで分らない。)( y 数 数

d N 整数 を整数Nでわ た余り

17

a mod N: 整数aを整数Nでわった余り。

Page 19: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

RSA 関数とRSA仮定N=0

1N‐1

N1

• xから

• N = pqy = RSAe,N(x) = xe mod N

• x からy = xe mod N となるyを

求めるのは容易

• y からy = xe mod N となる x を求めるのは困難

xy

求めるのは困難

y(=xe mod N)

x から出発して何周して にな たのか?

18

何周してy になったのか?偶数回それとも奇数回?

Page 20: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

Nが素数のときは・・・

y = RSAe,N(x) = xe mod N

• Nが素数pのときは、y から y = xe mod p となる x を求める は容易求めるのは容易。

φ(p) = p – 1d = e‐1 mod (p‐1), x = yd mod p

ときは• N = pqのときはφ(N) = ?

19

Page 21: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

安全な擬似乱数生成器の例

S 仮定のもとで

RSA仮定のもとで、以下の G(・)は安全な擬似乱数生成器である。

←$ {0 1 N 1}x←$ {0,1,...,N‐1}G(x) = (xe mod N, LSb(x))

• w ビット延長したいときは

Gw(x) = (xe^w mod N, LSb(xe^(w‐1) mod N), LSb(xe^(w‐2) mod N), ・・・, LSb(x))

20

Page 22: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

p = 17, q = 23N p * q 391 φ(N) 16*22 352

数値例

N = p * q = 391,  φ(N)=16*22 = 352 

e = 123y = RSA123 391(x) = x123 mod 391 ( x∈{0,1,...,390} )

k = 56  ←$ {0, 1, ..., 390}

y   RSA123,391(x)   x mod 391         ( x  {0,1,...,390} )

y = k = 56                                                              k0 = 0                                                         y = 56123 mod 391   = 130                                  k1 = 0y = 130123 mod 391 = 97                                    k2 = 1y = 97123 mod 391   = 159                                  k3 = 1y = 159123 mod 391 = 226                                  k4 = 0y = 226123 mod 391 = 283                                  k5 = 1y = 283123 mod 391 = 250                                  k6 = 0y = 250123 mod 391 = 244                                  k7 = 0y = 244123 mod 391 = 379                                  k8 = 1

379123 d 391 385 k 1y = 379123 mod 391 = 385                                  k9 = 1y = 385123 mod 391 = 148                                  k10 = 0y = 148123 mod 391 = 176                                  k11 = 0y 176123 mod 391 5 k 1 k 56を知 ていれば確定的y = 176123 mod 391 = 5                                      k12 = 1

21

k=56 を知っていれば確定的。知らなければランダム!

Page 23: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

RSA関数を用いたストリーム暗号

k  (←$ {0,1,・・・,N‐1} )RSA仮定のもとで、

i = 0y = k

効率的なEveに対して安全。(miは知られない。)

y

[ランダムビットの生成]while ( i < w ) {

しかし、遅すぎて実用は(到底)無理。

ki = LSb(y)y = ye mod Ni = i + 1

}}

mi

kici

22

Page 24: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

ストリーム暗号RC4k

1987 by Ron Rivestfor RSA Data Security, Inc.

[初期化]S 0 S S 2

k

S0 = 0, S1 = 1, ..., S255 = 255K0, K1, ..., K255: 鍵kを繰り返し用いて埋める。j = 0f i 0 t 255for i = 0 to 255:

j = (j + Si + Ki) mod 256swap Si and Sj

i = j = 0

高速。

i = j = 0

[ランダムバイトの生成]while (true) {

安全性の保証は経験的。

while (true) {i = (i+1) mod 256j = (j+Si) mod 256swap Si and Sj

※ K: Si, Sj から作られるi :すべてのSbox Siを用いるp i j

t = (Si + Sj) mod 256K = St

}K

i : すべてのSbox Siを用いるj : ランダムなSbox Sj を用いるこれにより、Kの周期を長くしている。

MiKi Ci

23

Page 25: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

おわりにおわりに

ストリ ム暗号の「セマンテ ク ギ プ• ストリーム暗号の「セマンティック・ギャップ」安全性は証明できるが、遅くて現実には使い難い。

高速だが、安全性の保証は経験的。

• このようなギャップは暗号理論/技術の様々な局面にあり。

暗号理論/技術はまだまだ発展途上 筋縄ではいかない• 暗号理論/技術はまだまだ発展途上、一筋縄ではいかない。

• 色々な個性の研究者・技術者が必要。色々な個性の研究者 技術者が必要。

24

Page 26: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

記号

• {0,1}n : nビットの文字列全体{0,1}* : 全ての有限長の文字列全体

• k ←$ {0,1} n: nビットの文字列kをランダムに選択

• z = x + y : z は x と y との桁ごとの排他的論理和0 + 0 = 1 + 1 = 0, 0 + 1 = 1 + 0 = 10   0   1   1   0, 0   1   1   0   1

• y ← A(x) : 入力xでアルゴリズムAを実行し、出力y を得た。

• Pr[E] : Eがおきる確率Pr[E | C] :条件Cのもとで Eがおきる確率Pr[E | C] : 条件Cのもとで、Eがおきる確率

• a mod N: 整数aを整数Nでわった余り。

25

a mod N:整数aを整数Nでわった余り。

Page 27: 暗号理論への招待 - Institute of Information Securitylab.iisec.ac.jp/~arita/pdf/intro08.pdf暗号理論における安全性の捉え方 安全であるとは 理想的に安全であることと識別できないこと

参考文献

• B. Schneier, “Applied Cryptography”, 2nd edition, John Wiley & Sons, 1996.

• J Katz Y Lindell "Introduction to Modern Cryptography:J. Katz, Y. Lindell,  Introduction to Modern Cryptography: Principles And Protocols", Chapman & Hall/Crc, 2007. 

• D R Stinson "Crptography" 2nd edition CHAPMAN & HALL/CRC 2002• D.R.Stinson,  Crptography , 2nd edition, CHAPMAN & HALL/CRC,  2002.

26