1.44k likes | 1.62k Views
情報セキュリティ特論( 3 ). 黒澤 馨 (茨城大学) kurosawa@mx.ibaraki.ac.jp. 演習 (1). One-time pad について考える。 鍵 K=(001101) で、平文 M=(111111) を 暗号化せよ。 C=K+M =(001101)+(111111) =(110010). 演習 (1). One-time pad について考える。 鍵 K=(001101) で、暗号文 C=(101101) を 復号せよ。 M=K+C =(001101)+(101101)
E N D
情報セキュリティ特論(3) 黒澤 馨 (茨城大学) kurosawa@mx.ibaraki.ac.jp
演習 (1) One-time padについて考える。 • 鍵K=(001101)で、平文M=(111111)を 暗号化せよ。 • C=K+M =(001101)+(111111) =(110010)
演習 (1) One-time padについて考える。 • 鍵K=(001101)で、暗号文C=(101101)を 復号せよ。 • M=K+C =(001101)+(101101) =(100000)
演習 (2) • One-Time Padが無条件に安全であることを、 n=1ビットの場合と同様に、 n=2ビットに対し、証明せよ。
証明 (n=2の場合) • 敵が暗号文C=(00)を入手した。 • このとき、 Pr(M=00 | C=00)=Pr(M=00) を証明する。
C=M+K mod 2より、C=00となる(M,K)は、 K 11 10 01 00 1 M 11 00 01 10
C=00という条件の下で、M=00となる事象は、 K 11 10 01 00 1 M 11 00 01 10
K 11 10 01 00 1 M 11 00 01 10 Pr( M=00, K=00) Pr(M=00 | C=00) = Pr( M=00, K=00)+…+Pr( M=11, K=11)
K 11 10 01 00 1 M 11 00 01 10 Pr( M=00) ・1/4 Pr(M=00 | C=00) = Pr( M=00) ・1/4+…+Pr( M=11) ・1/4
K 11 10 01 00 1 M 11 00 01 10 Pr( M=00) Pr(M=00 | C=00) = Pr( M=00) +…+Pr( M=11)
K 11 10 01 00 1 M 11 00 01 10 Pr(M=00 | C=00) = Pr( M=00)
Pr(M=00 | C=00)=Pr(M=00) • 同様にして、 Pr(M=01 | C=00) = Pr(M=01) … Pr(M=11 | C=11) = Pr(M=11)
演習 (3) 共通鍵暗号系(G,E,D)が無条件に安全 であるための必要十分条件は、 ・ M上の任意の確率関数 PM ・ ∀m ∈ M に対し、 ・ ∀C ∈ C Pr( = c | = m ) = Pr( = c ) であることを証明せよ。
順方向の証明 • Pr(C=c | M=m)=Pr(C=c) と仮定する。 • このとき、無条件に安全、すなわち、 Pr(M=m | C=c) =Pr(M=m) を示す。
証明 • Pr(C=c | M=m)=Pr(C=c)と仮定。
証明 • Pr(C=c | M=m)=Pr(C=c)と仮定。 • 両辺に、Pr(M=m) / Pr(C=c)を掛けると、
証明 • Pr(C=c | M=m)=Pr(C=c)と仮定。 • 両辺に、Pr(M=m) / Pr(C=c)を掛けると、 • 右辺=Pr(M=m)
証明 • Pr(C=c | M=m)=Pr(C=c)と仮定。 • 両辺に、Pr(M=m) / Pr(C=c)を掛けると、 • 右辺=Pr(M=m) • 左辺= Pr(C=c | M=m) Pr(M=m) / Pr(C=c)
証明 • Pr(C=c | M=m)=Pr(C=c)と仮定。 • 両辺に、Pr(M=m) / Pr(C=c)を掛けると、 • 右辺=Pr(M=m) • 左辺= Pr(C=c | M=m) Pr(M=m) / Pr(C=c) = Pr(C=c, M=m) / Pr(C=c)
証明 • Pr(C=c | M=m)=Pr(C=c)と仮定。 • 両辺に、Pr(M=m) / Pr(C=c)を掛けると、 • 右辺=Pr(M=m) • 左辺= Pr(C=c | M=m) Pr(M=m) / Pr(C=c) = Pr(C=c, M=m) / Pr(C=c) = Pr(M=m | C=c)
証明 • Pr(C=c | M=m)=Pr(C=c)と仮定。 • 両辺に、Pr(M=m) / Pr(C=c)を掛けると、 • 右辺=Pr(M=m) • 左辺= Pr(C=c | M=m) Pr(M=m) / Pr(C=c) = Pr(C=c, M=m) / Pr(C=c) = Pr(M=m | C=c) よって、Pr(M=m | C=c) =Pr(M=m)
証明 • Pr(C=c | M=m)=Pr(C=c)と仮定。 • 両辺に、Pr(M=m) / Pr(C=c)を掛けると、 • 右辺=Pr(M=m) • 左辺= Pr(C=c | M=m) Pr(M=m) / Pr(C=c) = Pr(C=c, M=m) / Pr(C=c) = Pr(M=m | C=c) よって、Pr(M=m | C=c) =Pr(M=m) ゆえに、無条件に安全。
逆方向の証明 • 無条件に安全と仮定する。 すなわち、 Pr(M=m | C=c) =Pr(M=m) • このとき、 Pr(C=c | M=m)=Pr(C=c) を示す。
逆方向の証明 • Pr(M=m | C=c) =Pr(M=m)と仮定。
逆方向の証明 • Pr(M=m | C=c) =Pr(M=m)と仮定。 • 両辺に、Pr(C=c) / Pr(M=m)を掛けると
逆方向の証明 • Pr(M=m | C=c) =Pr(M=m)と仮定。 • 両辺に、Pr(C=c) / Pr(M=m)を掛けると • 右辺= Pr(C=c)
逆方向の証明 • Pr(M=m | C=c) =Pr(M=m)と仮定。 • 両辺に、Pr(C=c) / Pr(M=m)を掛けると • 右辺= Pr(C=c) • 左辺= Pr(M=m | C=c) Pr(C=c) / Pr(M=m)
逆方向の証明 • Pr(M=m | C=c) =Pr(M=m)と仮定。 • 両辺に、Pr(C=c) / Pr(M=m)を掛けると • 右辺= Pr(C=c) • 左辺= Pr(M=m | C=c) Pr(C=c) / Pr(M=m) = Pr(M=m, C=c) / Pr(M=m)
逆方向の証明 • Pr(M=m | C=c) =Pr(M=m)と仮定。 • 両辺に、Pr(C=c) / Pr(M=m)を掛けると • 右辺= Pr(C=c) • 左辺= Pr(M=m | C=c) Pr(C=c) / Pr(M=m) = Pr(M=m, C=c) / Pr(M=m) = Pr(C=c | M=m)
逆方向の証明 • Pr(M=m | C=c) =Pr(M=m)と仮定。 • 両辺に、Pr(C=c) / Pr(M=m)を掛けると • 右辺= Pr(C=c) • 左辺= Pr(M=m | C=c) Pr(C=c) / Pr(M=m) = Pr(M=m, C=c) / Pr(M=m) = Pr(C=c | M=m) よって、Pr(C=c | M=m)=Pr(C=c)
無条件に安全な暗号系の制限 • 定理 無条件に安全な暗号系においては | K | ≧ | M |
対策 • 擬似乱数生成器、 PseudoRandom Bit Generator (PRBG)、を利用する。
擬似乱数生成器 PRBG 短いシード K 長い擬似乱数 PRBG(K) ただし、 ・ |PRBG(K)| > |K| ・ PRBG(K)と真の乱数は、区別がつかない(indistinguishable)。
D PRBG(K) 0 or 1 P0 = Pr(D=1) Distinguisher D 真の乱数 0 or 1 P1 = Pr(D=1)
定義 • PRBG(K)と真の乱数はindistinguishable if |P0-P1|<ε for 全ての多項式時間のD • 上記が成り立つとき、 PRBG(K)は擬似ランダム
|PRBG(K)|=nビットとする 全てのnビットの集合 PRBG(K)の集合
|PRBG(K)|=nビットとする 全てのnビットの集合 PRBG(K)の集合 {D=1となるnビットの集合}
|PRBG(K)|=nビットとする 全てのnビットの集合 PRBG(K)の集合 {D=1となるnビットの集合} P0= Pr(PRBG(K)が入力のときD=1) = 斜線の面積 / 赤の面積
|PRBG(K)|=nビットとする 全てのnビットの集合 PRBG(K)の集合 {D=1となるnビットの集合} P1= Pr(真の乱数が入力のときD=1) = 黒の面積 / 全面積
定義 • PRBG(K)と真の乱数はindistinguishable if |P0-P1|<ε for 全ての多項式時間のD • 上記が成り立つとき、 PRBG(K)は擬似ランダム
One-Time Padの改良 PRBG 短い鍵 K 長い擬似乱数 PRBG(K) 暗号文 C = M + PRBG(K)
擬似ランダム関数FK(x) • 鍵K ← ランダム のとき、 • Y0=(FK(0…0), …, FK(1…1)) と Y1=(乱数、…、乱数) がindistinguishable
擬似ランダム関数FK(x) • 鍵K ← ランダム のとき、 • Y0=(FK(0…0), …, FK(1…1)) と Y1=(乱数、…、乱数) がindistinguishable しかし、|Y0|=|Y1|=2n
擬似ランダム関数FK(x) • 鍵K ← ランダム のとき、 • Y0=(FK(0…0), …, FK(1…1)) → D → 0 or 1 • |Y0|=2n • Distinguisher Dは、 読み込むだけで指数時間かかってしまう。
In Experiment 0 K ← randam xi FK(x) Distinguisher D 0 or 1 p0= Pr(D=1) yi i=1, 2, …, q, where q=多項式個
In Experiment 1 f ← nビットからnビットへの全ての関数の集合から randamに選んだ関数 xi f Distinguisher D 0 or 1 p1= Pr(D=1) yi i=1, 2, …, q, where q=多項式個
定義 • {FK(x)}は、擬似ランダム関数族 if |p0-p1|<ε for 全ての多項式時間アルゴリズム D
置換 • F:{nビットの集合}→ {nビットの集合} は置換 if Fが1対1の関数.
置換 • F:{nビットの集合}→ {nビットの集合} は置換 if Fが1対1の関数. y=F(x)が置換ならば、 逆関数 x=F-1(y)が存在する
In Experiment 0 K←ランダム xi yj FK Distinguisher D FK-1 yi xj 0 or 1 p0= Pr(D=1)