数 学 の か た ち 第3講 暗号を作ろう
DESCRIPTION
数 学 の か た ち 第3講 暗号を作ろう. 早苗 雅史 [email protected] 数学とソフトウエア www.nikonet.or.jp/spring/sanae/. 指で数える2進法. 28. ?. 13. 指で数える2進法. 指で数える2進法. 記数法で暗号を作る. 記数法で暗号を作る. cap = 2 , 0 , 15. 2 ×26 2 + 0 ×26 + 15 = 2×676 + 0×26 + 15 = 1367. 記数法で暗号を作る. 26. 1367. ・・・ 15. 52. ・・・ 0. 26. 2. - PowerPoint PPT PresentationTRANSCRIPT
1
数 学 の か た ち 数 学 の か た ち 第3講第3講暗号を作ろう暗号を作ろう
早苗 雅史[email protected]
数学とソフトウエアwww.nikonet.or.jp/spring/sanae/
2
指で数える2進法指で数える2進法
13
28
?
3
指で数える2進法指で数える2進法
4
指で数える2進法指で数える2進法
小指
薬指
中指
人指
親指
(16) (8) (4) (2) (1)× × × × ×
0 1 1 0 1| | | | | | | | | |
0 8 4 0 1 = 13
5
記数法で暗号を作る記数法で暗号を作る
a b c d e f g h i j k l m
0 1 2 3 4 5 6 7 8 9 10
11
12
n o p q r s t u v w x y z
13
14
15
16
17
18
19
20
21
22
23
24
25
6
記数法で暗号を作る記数法で暗号を作る
cap = 2 , 0 , 15 cap = 2 , 0 , 15
2×262 + 0×26 + 15
= 2×676 + 0×26 + 15
= 1367
7
記数法で暗号を作る記数法で暗号を作る
26
26
1367
52
2
・・・15
・・・ 0
8
記数法で暗号を作る記数法で暗号を作る
9
問題問題
① boxを数字に直してみよう。
② “ 13223” は何という文字を表しているか。
10
暗号の重要性暗号の重要性
インターネットや電子メールなどの普及による危険性情報がネットワーク上に流出コンピュータ間のデータを見ることが可能
様々な手口電子メールを知らない人に読まれてしまう(盗聴)情報の内容を勝手に書き換えてしまう(改ざん)正当なユーザーになりすまして悪用(なりすまし)
それらの脅威を防ぐための解決法⇒暗号化 データを第三者に解読できないようにする方法
11
シーザー暗号シーザー暗号
文字をアルファベット順に特定の文字数だけずらす =換字式(かえじしき)暗号
平文 暗号文 「暗号方式(アルゴリズム) 」
「鍵」
12
多文字置換暗号多文字置換暗号
平文 I a m a b o y
鍵 7 3 2 4 7 3 2
暗号文 p d o e i r a
•キーワードが繰り返し使用される•使用頻度の高い文字を元に キーワードが簡単に推測
13
いろいろな暗号いろいろな暗号
★ 円盤式暗号 ★ 転置式暗号
① 行→列② 1列→3列→2列→4列
① 内側の小さい円盤位置決め② 外側の大きい円盤の文字③ 短い方の矢印が指している
小さい円盤の文字が暗号
14
問題問題
① Mathe を鍵“ 3631” で暗号化してみよう。
② HGWW を鍵“ 1234” で複合化してみよう。
15
父へのメール父へのメール
父さんへ
キャッシュカードのパスワードを忘れたので教えてほしい。
他人に知られると困るので次の計算で出た数字をメールで教えてくれ。
『まずパスワードの数字を 37乗する。次に出た数値を 2491で割る。そのときの余りの数字。』
16
いくつかの疑問いくつかの疑問
① 4 桁のパスワードの数字を 37 乗して 2491 で割るなんて計算,どうやってやるのだろう。
② 送られてきた数字から本当にパスワードがわかるのだろうか。
③ このメールを誰かに盗聴されたら,その人にもパスワードを知られてしまわないか。
17
《疑問①》《疑問①》 44 桁の数を桁の数を 3737 乗して乗して 24912491で で 割る計算はどうするのか 割る計算はどうするのか
12342繰り返し 2乗法 = 152275
6≡755
12344 = 7552 = 570025 ≡207712348 = 20772 = 4313929 ≡2008123416 = 20082 = 4032064 ≡1626123432 = 16262 = 2643876 ≡925
123437 = 123432×12344×12341
≡925×2077×1234= 1921225×1234 ≡664×1234= 819376 ≡2328
18
《疑問②》送られてきた数字を《疑問②》送られてきた数字を どのように復元するのかどのように復元するのか
例: 21を余りとする世界では
7乗, 13乗, 19乗,…すると元に戻る
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
2 4 8 16 11 1 2 4 8 16 11 1 2 4 8 16 11 1 2
3 9 6 18 12 15 3 9 6 18 12 15 3 9 6 18 12 15 3
4 16 1 4 16 1 4 16 1 4 16 1 4 16 1 4 16 1 4
5 4 20 16 17 1 5 4 20 16 17 1 5 4 20 16 17 1 5
6 15 6 15 6 15 6 15 6 15 6 15 6 15 6 15 6 15 6
7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8 1 8
9 18 15 9 18 15 9 18 15 9 18 15 9 18 15 9 18 15 9
10 16 13 4 19 1 10 16 13 4 19 1 10 16 13 4 19 1 10
19
3737乗したあと乗したあと 9797乗すると元に戻る乗すると元に戻る
2 3 4 5 6 7 8 9 10 … 36 37 … 1197 … 2393 … 3589
2 4 8 16 32 64 128 256 512 1024 … 672 1344 … 2 … 2 … 2
3 9 27 81 243 729 2187 1579 2246 1756 … 788 2364 … 3 … 3 … 3
4 16 64 256 1024 1605 1438 770 589 2356 … 713 361 … 4 … 4 … 4
5 25 125 625 634 679 904 2029 181 905 … 897 1994 … 5 … 5 … 5
6 36 216 1296 303 1818 944 682 1601 2133 … 1444 1191 … 6 … 6 … 6
7 49 343 2401 1861 572 1513 627 1898 831 … 354 2478 … 7 … 7 … 7
8 64 512 1605 385 589 2221 331 157 1256 … 864 1930 … 8 … 8 … 8
9 81 729 1579 1756 858 249 2241 241 2169 … 685 1183 … 9 … 9 … 9
… … … … … … … … … … … … … … … … … … …
1234 755 36 2077 2270 1296 42 2008 1818 1512 … 664 2328 … 1234 … 1234 … 1234
37乗 97乗A 君だけが知っている
20
23282 = 5419584
≡165923284 = 16592 = 2752281 ≡221723288 = 22172 = 4915089 ≡346232816 = 3462 = 119716 ≡148232832 = 1482 = 21904 ≡1976
232897 = 232864×232832×23281
≡1179×1976×2328= 2329704×2328 ≡619×2328= 1441032 ≡1234
3737乗したあと乗したあと 9797乗すると元に戻る乗すると元に戻る
232864 = 19762 = 3904576 ≡1179
21
共通鍵暗号方式・公開鍵暗号方式共通鍵暗号方式・公開鍵暗号方式
平文 暗号化 暗号文 複合化 平文"apple" → "dssoh" → "apple"
共通鍵暗号方式
公開鍵暗号方式
平文 暗号化 暗号文 複合化 平文“1234" → “2328" → “1234"
共通鍵=3 知られると困る
公開鍵= 37(乗), 2491(で割る) 知られても OK
秘密鍵= 97 自分しか知らない
共通鍵 共通鍵
公開鍵 秘密鍵
22
RSARSA暗号暗号
平文
e 乗して n で割
る 暗号文d 乗 平文
→ →秘密鍵
d=97
公開鍵
n=2491
e=37
23
AA君はどうやって鍵を作ったか君はどうやって鍵を作ったか
①2つの 素数 P=47, Q=53を選択
②N=PQ=2491を余りとする世界を作る(公開鍵N)
③P- 1=46と Q- 1=52の最小公倍数 L=1196を計算
④1196で割った余りの世界で□ ×○≡1となる2つの素数○ =97,□ =37を選ぶ
⑤2つの数字の一つ□ =37を父さんに送る(公開鍵E)
⑥もう一つの数字○ =97で復元する
まず2つの素数を選ぶことから始まった
24
《疑問③》《疑問③》 3737 乗して乗して 24912491 が得られたが得られたことを知られてもパスワードは大丈夫ことを知られてもパスワードは大丈夫かか2つの素数の積は簡単に計算できます
38903 × 60293 = 2345578579
しかしある数を2つの素数の積に分解する のは大変
2250021941 = 40253 × 55897暗号の秘密は「素因数分解の困難性」「素因数分解の困難性」に起因
25
鍵の作成鍵の作成
① 2つの素数を選ぶ p=3 , q=5
② 素数の積 これが余りの世界 n=15
③ p- 1 と q- 1 の最小公倍数 L を計算 L=2
④ L と素な数を選択 e=7
⑤ 7×□=1 となる数を計算 d=13
平文
7 乗して15 で割
る 暗号文13 乗
平文→ →
26
暗号を作ってみよう暗号を作ってみよう
① 3 の累乗を計算 32 = 9 34≡92 = 81≡6
② 37 を計算 37 = 34×32×3≡6×9×3 = 162≡12
③ C=12
メッセージ M=3 ,あまりの世界 n=15 ,累乗 e=737 を計算する
27
暗号を復元してみよう暗号を復元してみよう
d=13 で複合化
① 12 の累乗を計算 122 = 144≡8 124≡82 = 64≡4 128≡42 = 16≡1
② 1212 を計算 1212 = 128×124×12 ≡ 1×4×12 = 48≡3
③ M=3