Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo

1

暗号理論

2

おこなったこと
 代数学
 暗号理論
 暗号の脆弱性追求
 暗号解読のアルゴリズム解析
 解読プログラム作成

3

本日の説明
 ちょっと数学
 暗号紹介
 暗号解析
JohannesA. Buchmann(2004)
『 INTRODUCTIONTO CRIPTOGRAPHY』
Springer(281pp)
引用元:自己撮影

4

代数学について
代数学は数学の一分野で、「代数」 の名の通り数の代わ
りに文字を用いて方程式の解法を研究する学問として始
まった。現代代数学は、一般的に代数系を研究する学
問分野であると捉えられている。以下に示す代数学の諸
分野の名に現れる半群・群・環・多元環(代数)・体・束は
代数系がもつ代表的な代数的構造である。現代ではま
た、代数学的な考え方が解析学・幾何学等にも浸透し、
数学の代数化が各方面で進んでいる。ゆえに、代数学
は数学の諸分野に共通言語を提供する役割もあるとい
える。

5

代数学の基本定理
「次数が1以上の任意の復素係数一変数多項式には複素
根が存在する」というもの。
つまり解は虚数空間に必ず次数個存在する、ということ。

6

代数学と言ったら、
方程式を計算したり、
公式を作ったりのイメージだが、
ある数学世界の基盤を定義して、
他の学問と結びつくイメージです。
今から紹介する世界は、
整数のみ存在する世界です。
有理数や、複素数は存在しません。
あとべき乗計算をa^b(aのb乗)のように表します。

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

数学的「同じ」ということ
Q、同じとはどうゆうことか??
A、数学では同値といい次の3つの性質を満たすもののこ
とをいう。
ある記号~が
①反射律:a~a
②対象律:a~bならb~a
③推移律:a~bかつb~cならa~c

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

Q,合同に関する方程式
①X≡2 mod 4
②X≡1mod 3
③X≡0 mod 5 をすべて満たすxは??

11

答えはx=10+60ℤ
(X=10、70、130、・・・・)
これを解くための定理が
中国剰余定理です。

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

①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

まとめ
中国剰余定理は、
今は3つの式で説明しましたが、
N個の式に対応します。
Nこの複雑な式を、N個の独立したY1~Ynの式に
分割して解けることが一番のポイントです。

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

ユークリッドアルゴリズム
aとbの最小公倍数をgcd(a,b)とあらわすとき
ユークリッドアルゴリズム
b=0ならばgcd(a,b)=a
b≠0ならばgcd(a,b)=gcd(|b|,a mod|b|)
これをb≠0になるまで
繰り返します。

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

対称暗号系、非対象暗号系
対称暗号とは、
先ほど定義した鍵に関して
暗号化するための鍵と、復号化するための鍵が
同じような暗号系
非対象暗号系は、
対称暗号系と違って、
使用する鍵が異なること。(RSA暗号とか)
しばしば、公開鍵暗号系と呼ばれる。

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

②ブロック暗号
文字列を任意のブロックに分解してブロックごとに
暗号化するものです。(各ブロックは長さ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

③アフィン暗号
長さ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

例:n=2、ab(0,1)を暗号化
A=
b=
→A +b= =dg
→A^(-1)( - )= =ab

23

③はとても危険です。
なぜならば、1つでも暗号化パターンがばれたら
解読の可能性が生まれます。
HANDがFUSSに暗号化されたとする。
n=2ならば、HA→FU、ND→SSとなる
2つの連立方程式を解くとブレイクされる。
代数的に危険だと解析できる。

24

アタッカーの攻撃パターン
①暗号文から文字の傾向を読む
②暗号文と平文のペアから鍵を探す。
→アフィン暗号はこのタイプに解読される。
③さまざまな暗号系をしり、辞書攻撃を行う。
さまざまな平文をさまざまな暗号系で暗号化
④なりすまし
⑤使用する言語を知る場合、その言語の文字の分布など
からなにかを得る。(英語:”e”が全体の12%)
⑥しらみつぶし

25

素数とは
Aが素数であるとは、
Aが自身と1以外に約数を持たないこと。
2,3,5,7,11,13,17,19,23,29、31,37、・・・
素数は暗号系のベースとなることが多い!

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

実際に鍵を生成する
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

RSAの暗号化、復号化
・平文mの暗号化
暗号文c=m^e mod n
・暗号文cの復号化
平文m=c^d mod n
c^d=(m^e)^d=m^ed=m(ed≡1より)

29

RSA暗号の安全性
安全性は素数の強さに依存します。
nを素因数分解できてしまったら
もうブレイクされてしまいます。
nの約数pqが分かれば、
秘密鍵dを
ed≡1 mod (p-1)(q-1)から計算できる。
(eは公開されています。)

30

素数は大切
素数は非常に大切です。
選び方としては、
少なくとも150ケタ以上で、
同じくらいの大きさの2つを選ぶべき。
(2004年時点、だいぶ古いです)
また分解アルゴリズムに引っかかりにくいものを選ぶ。
(世界のどこかに素数銀行というものがあるのか否か???)

31

鍵の保管
対称鍵暗号の鍵は、
暗号鍵も復号鍵も同じです。
鍵は適切に保管し
相手に解読してもらうには
適切に鍵を知らせる必要があります。
その点公開鍵暗号系は扱いが簡単です。
しかししばしば効率が悪く、
全文の暗号には向きません。
対称鍵のやり取りを公開鍵を使ってやり取りします。

32

公開鍵暗号の例
Rabin暗号:
これはRSAの効率の悪さを改善したものです。

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

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

公開鍵暗号の例
ElGamal暗号:離散対数がベース
公開しているp,gを使う。
利用者は、aを決定し
A=g^a mod pを計算する。
公開鍵=(A,p,g)、秘密鍵a となります。

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

例: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

離散対数の計算
離散対数の計算はとても難しい。
しかし、踏破したならば
暗号系をブレイクできる。
3=5^x mod 2017
となるxを求める。

39

①しらみつぶし
3=5^x mod 2017
x=1、x=2…
等号成立まで繰り返す。
maxで2016回計算する羽目になる。

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

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

①では1029回の計算が必要だった。
②ではBabyStepで45回、GiantStepで21回
計66回の計算でよかった。

43

御清聴ありがとうございます。

More Related Content

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