暗号理論_エンジニア勉強会20140509

817 views

Published on

5月9日のエスキュービズム社内勉強会にて使用された資料になります。

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
817
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

暗号理論_エンジニア勉強会20140509

  1. 1. 暗号理論
  2. 2. おこなったこと  代数学  暗号理論  暗号の脆弱性追求  暗号解読のアルゴリズム解析  解読プログラム作成
  3. 3. 本日の説明  ちょっと数学  暗号紹介  暗号解析 JohannesA. Buchmann(2004) 『 INTRODUCTIONTO CRIPTOGRAPHY』 Springer(281pp) 引用元:自己撮影
  4. 4. 代数学について 代数学は数学の一分野で、「代数」 の名の通り数の代わ りに文字を用いて方程式の解法を研究する学問として始 まった。現代代数学は、一般的に代数系を研究する学 問分野であると捉えられている。以下に示す代数学の諸 分野の名に現れる半群・群・環・多元環(代数)・体・束は 代数系がもつ代表的な代数的構造である。現代ではま た、代数学的な考え方が解析学・幾何学等にも浸透し、 数学の代数化が各方面で進んでいる。ゆえに、代数学 は数学の諸分野に共通言語を提供する役割もあるとい える。
  5. 5. 代数学の基本定理 「次数が1以上の任意の復素係数一変数多項式には複素 根が存在する」というもの。 つまり解は虚数空間に必ず次数個存在する、ということ。
  6. 6. 代数学と言ったら、 方程式を計算したり、 公式を作ったりのイメージだが、 ある数学世界の基盤を定義して、 他の学問と結びつくイメージです。 今から紹介する世界は、 整数のみ存在する世界です。 有理数や、複素数は存在しません。 あとべき乗計算をa^b(aのb乗)のように表します。
  7. 7. 合同 定義:a,b,mに関して次の性質をもつとき、 aはmを法としてbと合同という。 性質:b-aがmを割り切る。 このとき、a≡b mod m とかく。 例:a=3,b=8,m=5 b-a=5 は m=5 を割り切る。 ※mで割ったときの余りが同じということ。
  8. 8. 数学的「同じ」ということ Q、同じとはどうゆうことか?? A、数学では同値といい次の3つの性質を満たすもののこ とをいう。 ある記号~が ①反射律:a~a ②対象律:a~bならb~a ③推移律:a~bかつb~cならa~c
  9. 9. 合同”≡”は同値関係を形成する。 ①a≡a mod m OK! ②a≡b mod m なら b≡a mod m OK! ③a≡b mod m ,b≡c mod m なら a≡c mod m OK! この定義より、”=”や”∽”も同値です。 しかし≧は同値ではありません。 なぜなら②a≧bならb≧a を満たさないから。
  10. 10. Q,合同に関する方程式 ①X≡2 mod 4 ②X≡1mod 3 ③X≡0 mod 5 をすべて満たすxは??
  11. 11. 答えはx=10+60ℤ (X=10、70、130、・・・・) これを解くための定理が 中国剰余定理です。
  12. 12. 中国剰余定理 X≡a1 mod m1 X≡a2 mod m2 X≡a3 mod m3 (m1,m2,m3は互いに素)をみたす 最小のxを求める。 m=m1*m2*m3, M1=m/m1,M2=m/m2,M3=m/m3 とするとき Yi*Mi≡1mod mi (i=1,2,3)となるYiをもとめる。 すると、X=∑ai*yi*Mi mod m (1≦i≦3)となる。
  13. 13. ①X≡2 mod 4 ②X≡1mod 3 ③X≡0 mod 5 に適応させる。 m=4*3*5=60 M1=60/4=15,M2=60/3=20,M3=60/5=12 15Y1≡1mod 4 ⇒Y1= 3 20Y2≡1mod 3 ⇒Y2= 2 12Y3≡1mod 5 ⇒Y3= 3 ∴X=2*3*15+1*2*20+0*3*12=130≡10mod60
  14. 14. まとめ 中国剰余定理は、 今は3つの式で説明しましたが、 N個の式に対応します。 Nこの複雑な式を、N個の独立したY1~Ynの式に 分割して解けることが一番のポイントです。
  15. 15. 証明 Yi*Mi≡1mod mi より両辺にaiをかけて aiYiMi≡ai mod mi ① miはMj(i≠j)の約数になるので Mjの倍数はmiで割り切られます。 つまり、ajYjMj ≡0 mod mi よって、∑ ajYjMj ≡0 mod mi (I≦j≠i≦n) ② ∴x=①+②= aiYiMi+ ∑ ajYjMj (I≦j≠i≦n) = ∑ aiYiMi(I≦i≦n)≡ai mod mi
  16. 16. ユークリッドアルゴリズム aとbの最小公倍数をgcd(a,b)とあらわすとき ユークリッドアルゴリズム b=0ならばgcd(a,b)=a b≠0ならばgcd(a,b)=gcd(|b|,a mod|b|) これをb≠0になるまで 繰り返します。
  17. 17. 暗号系とは 次のすべての性質を満たす(P,C,K,ε、D)を 暗号系という。 ①Pは集合、Plaintext(平文) ②Cは集合、Ciphertext(暗号文) ③Kは集合、鍵空間で元kを鍵という。(k∈K) ④ε={Ek (k∈K) }は集合、暗号化関数 ⑤D= {Dk (k∈K) }は集合、復号化関数 ⑥ ∀e∈K 、 ∃d ∈K s.t. Dd(Ee(p))=p (p∈P) (⑥は暗号化したら、絶対復号できるということ。)
  18. 18. 対称暗号系、非対象暗号系 対称暗号とは、 先ほど定義した鍵に関して 暗号化するための鍵と、復号化するための鍵が 同じような暗号系 非対象暗号系は、 対称暗号系と違って、 使用する鍵が異なること。(RSA暗号とか) しばしば、公開鍵暗号系と呼ばれる。
  19. 19. 対称鍵暗号系の例 ①シーザー暗号: abcdefghijklmnopqrstuvwxyz 01234・・・25 test⇒19,4,18,19 鍵k=3だとすると、 Ek( 19,4,18,19 )=(22,7,21,22)=whvw 25をオーバーしたら0に戻ります。 28 mod 26 = 2 (28≡2 mod 26)
  20. 20. ②ブロック暗号 文字列を任意のブロックに分解してブロックごとに 暗号化するものです。(各ブロックは長さn) 鍵はn!個ある。 N=4ならば、K=1、(1,2)、(1,3)・・・など 計4*3*2*1=24個の鍵がある。 推測の容易さと関係するため鍵の数の把握は必要 K=(1,2,4,3)とすると、ABCD⇒CADB (1番目が2番目、2番目が4番目、4番目が3番目、 3番目が1番目にそれぞれ置換される)
  21. 21. ③アフィン暗号 長さnのブロックに対し、n*n正方行列と、 nベクトルを鍵としてHogeHogeする。 v∈P、k=(A,b) ∈K Ek:ℤm^n → ℤm^n (v↦Av+b mod m) Dk:ℤm^n → ℤm^n (v↦A^(-1)v-b mod m) ※因みに鍵k=Aのみなら、ヒル暗号 k=bのみならヴィジュネル暗号という
  22. 22. 例:n=2、ab(0,1)を暗号化 A= b= →A +b= =dg →A^(-1)( - )= =ab
  23. 23. ③はとても危険です。 なぜならば、1つでも暗号化パターンがばれたら 解読の可能性が生まれます。 HANDがFUSSに暗号化されたとする。 n=2ならば、HA→FU、ND→SSとなる 2つの連立方程式を解くとブレイクされる。 代数的に危険だと解析できる。
  24. 24. アタッカーの攻撃パターン ①暗号文から文字の傾向を読む ②暗号文と平文のペアから鍵を探す。 →アフィン暗号はこのタイプに解読される。 ③さまざまな暗号系をしり、辞書攻撃を行う。 さまざまな平文をさまざまな暗号系で暗号化 ④なりすまし ⑤使用する言語を知る場合、その言語の文字の分布など からなにかを得る。(英語:”e”が全体の12%) ⑥しらみつぶし
  25. 25. 素数とは Aが素数であるとは、 Aが自身と1以外に約数を持たないこと。 2,3,5,7,11,13,17,19,23,29、31,37、・・・ 素数は暗号系のベースとなることが多い!
  26. 26. 公開鍵暗号の例 RSA暗号:素数ベースの暗号系 ある2つの大きな素数p,qがある。 n=pqとする。 1<e<(p-1)(q-1) かつgcd(e,(p-1)(q-1))=1をみたす eを選択する。 ed≡1 mod (p-1)(q-1)) をみたすd(1<e<(p-1)(q-1))を 計算する。 (このようなdの存在は証明できる。(省略)) 公開鍵は、(n,e) 秘密鍵は、dとなる。
  27. 27. 実際に鍵を生成する p=11,q=23を選択する。 n=11*23=253 (p-1)(q-1)=10*22=220 e=3を選択。(gcd(220,3)=1なのでOK) 3*d≡1mod 220 →d=147 よって公開鍵(253,3),秘密鍵147
  28. 28. RSAの暗号化、復号化 ・平文mの暗号化 暗号文c=m^e mod n ・暗号文cの復号化 平文m=c^d mod n c^d=(m^e)^d=m^ed=m(ed≡1より)
  29. 29. RSA暗号の安全性 安全性は素数の強さに依存します。 nを素因数分解できてしまったら もうブレイクされてしまいます。 nの約数pqが分かれば、 秘密鍵dを ed≡1 mod (p-1)(q-1)から計算できる。 (eは公開されています。)
  30. 30. 素数は大切 素数は非常に大切です。 選び方としては、 少なくとも150ケタ以上で、 同じくらいの大きさの2つを選ぶべき。 (2004年時点、だいぶ古いです) また分解アルゴリズムに引っかかりにくいものを選ぶ。 (世界のどこかに素数銀行というものがあるのか否か???)
  31. 31. 鍵の保管 対称鍵暗号の鍵は、 暗号鍵も復号鍵も同じです。 鍵は適切に保管し 相手に解読してもらうには 適切に鍵を知らせる必要があります。 その点公開鍵暗号系は扱いが簡単です。 しかししばしば効率が悪く、 全文の暗号には向きません。 対称鍵のやり取りを公開鍵を使ってやり取りします。
  32. 32. 公開鍵暗号の例 Rabin暗号: これはRSAの効率の悪さを改善したものです。
  33. 33. 離散対数(DL) 素数pを決定する。 またpの原子根gを選ぶ。 あるA(1≦A≦p)に対して、 A≡g^a mod p となるaを離散対数という。 このaの計算は数学的に難しい。 素数についで、暗号の安全性を担うものである。 原子根:p=13の原子根は2,6,7,11 2,4,8,3,6,12,11,9,5,10,7,1,2,4,8…. と巡回するもの。
  34. 34. Diffie-Hellman Key Exchange 離散対数を使った、鍵の交換。 公開しているp,gを使う。 Αさんは、aを決定し A=g^a mod pの結果AをBに贈る。 Bさんは、bを決定し B=g^b mod pの結果BをAに贈る ABの共通の鍵k=g^ab mod p をえる。
  35. 35. 公開鍵暗号の例 ElGamal暗号:離散対数がベース 公開しているp,gを使う。 利用者は、aを決定し A=g^a mod pを計算する。 公開鍵=(A,p,g)、秘密鍵a となります。
  36. 36. 暗号化、復号化 暗号化:平文m、暗号文c 新たにbを決定する。 B=g^b mod p を計算する。 またそのbでc=A^b*m mod p と暗号化する。暗号文は(B,c) 復号化: x=p-1-aとすると m=B^x*c mod p となる。
  37. 37. 例:Aさんの公開鍵(p.q.A)=(23,7,4),秘密鍵a=6 (7の6乗 mod 23 =4 となる。117649÷23 =5115…4) 平文7をBさんはb=3を使い暗号化 B=g^3 mod p =21 c=A^b*m mod p =11 (21,11)をAさんに送信 AさんはB^(p-1-6)*c mod p =7 よってAさんはBさんからの平文を得た。
  38. 38. 離散対数の計算 離散対数の計算はとても難しい。 しかし、踏破したならば 暗号系をブレイクできる。 3=5^x mod 2017 となるxを求める。
  39. 39. ①しらみつぶし 3=5^x mod 2017 x=1、x=2… 等号成立まで繰り返す。 maxで2016回計算する羽目になる。
  40. 40. ②Shanks Baby-Step Giant-Step a = γ^x mod n 3 = 5^x mod 2017 m=floor(sqrt(2017))=45 x=qm+r とする。 Baby-Step Giant-Step は qとrを求める作業である。 B={(aγ^(-r),r)} (0≦r≦m)を計45個計算 Bの元で、(1、r)とあらわせるものがあれば、 x=rとなる。
  41. 41. B={(3,0),(404,1),(1291,3),….} この中にはぞんざいしなかった。 なのでgiantStep計算する。 δ=γ^mとする。 ここでδ^q (q=1,2,3…)を計算する。 すると、q=22のときδ^q=45の22乗≡1553 Bの元の行列の第一要素で、1553となるもの (1553、40)があった。 ∴r=40、q=22 x=22×45+40=1030
  42. 42. ①では1029回の計算が必要だった。 ②ではBabyStepで45回、GiantStepで21回 計66回の計算でよかった。
  43. 43. 御清聴ありがとうございます。

×