● フェルマーの小定理 ●
フェルマーの小定理って、こんなものでした。 <5でわったあまりの世界> たとえば、5でわったあまりの世界で考えましょう。(5は素数)
5でわったあまりは
0 , 1 , 2 , 3 , 4
だけですから、このあまりの世界には、数はたったの5つしかありません。 たとえば、ふつうの世界の 7 と 12 は、
どちらも 5でわったあまりが 2 ですから、同じ数と考えて 7=12 ではなくて 7≡12 (mod 5) とあらわすことになっています。 そして、 7 も 12 も このあまりの世界では 2 なのです。
そうすると、フェルマーの小定理は、0をのぞくと
1×1×1×1≡1 (mod 5) つまり 14≡1 (mod 5)
2×2×2×2≡1 (mod 5) つまり 24≡1 (mod 5)
3×3×3×3≡1 (mod 5) つまり 34≡1 (mod 5)
4×4×4×4≡1 (mod 5) つまり 44≡1 (mod 5)
となるというものです。 つまり、このあまりの世界では、(0は何回かけても0ですが)
0以外の数は、どれも4回かけると(4乗すると)1になるというのです。 ためしに、計算してみましょう。 1×1×1×1=1 を 5でわったあまりは 1
2×2×2×2=16 を 5でわったあまりは 1
3×3×3×3=81 を 5でわったあまりは 1
4×4×4×4=256 を 5でわったあまりは 1
たしかに、そうなっていますね。
では、どうしてこんなことになるのでしょうか。
たとえば、 24≡1 (mod 5) はこんなふうに考えます。
このあまりの世界の0をのぞいた数にどれも 2をかけます。
2×1 , 2×2 , 2×3 , 2×4
そうすると、これらは順番がいれかわっただけで、
1 , 2 , 3 , 4 とおなじものなのです。じっさい 2×1 , 2×2 , 2×3 , 2×4 は 2 , 4 , 1 , 3 です。 きちんというには、まず 2×1 , 2×2 , 2×3 , 2×4 が
このあまりの世界で全部異なっていることをしめします。
それには、ユークリッドの互除法でもとめる、2の逆の数(逆元)をつかうといいですね。
すると、同じ数だけあって全部異なっているのですから、
順番を入れかえただけということになるのです。 ですから、 (2×1)×(2×2)×(2×3)×(2×4) ≡ 1×2×3×4 (mod 5) つまり、 24×1×2×3×4 ≡ 1×2×3×4 (mod 5) これの両辺に 1×2×3×4 の逆の数(逆元)をかけると 24≡1 (mod 5)
となります。
そして、24≡1 (mod 5) の 4 は、
このあまりの世界の数で、逆の数(逆元)をもつものが、
0 , 1 , 2 , 3 , 4
の 5個のうち 0 をのぞいた 4個 だという 4です。
<11でわったあまりの世界>
同じようにして、今度は 11 でわったあまりの世界で考えましょう。(11は素数)
11でわったあまりは
0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10
ですから、このあまりの世界には、数は 11個 あります。
そして、フェルマーの小定理は、0をのぞくと
110≡1 (mod 11)
210≡1 (mod 11)
310≡1 (mod 11)
410≡1 (mod 11)
510≡1 (mod 11)
610≡1 (mod 11)
710≡1 (mod 11)
810≡1 (mod 11)
910≡1 (mod 11)
1010≡1 (mod 11)
となるというものです。 つまり、このあまりの世界では、(0は何回かけても0ですが)
0以外の数は、どれも10回かけると(10乗すると)1になるというのです。 そして、210≡1 (mod 11) などの 10 は、
このあまりの世界の数で、逆の数(逆元)をもつものが
0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 の 11個のうち 0 をのぞいた 10個 だという 10です。
● 剰余 ●
公開鍵と秘密鍵のお話をおぼえていますか。
公開鍵で90度まわして(じっさいは累乗して)閉めたら、
その逆の数、つまり秘密鍵で−90度まわして(じっさいは累乗して)
開けてもとにもどすのでした。
<55でわったあまりの世界>
では、この鍵を使って、いったい何を開けたり閉めたりするのでしょうか。
じつは、あまりの世界なのです。
それも、2つの素数 たとえば 5 と 11 をかけた 5×11=55
でわったあまりの世界を考えるのです。
もちろん、じっさいには もっと大きな素数をかけ算します。
そして、5×11=55 とかけ算するのはかんたんだけど、
反対に 55=5×11 と素因数分解するのはむずかしいということを、
暗号に利用しているのです。
さて、55でわったあまりを、表にしてみましょう。
Y
0 1 2 3 4
○ 0 1 2 3 4
X □ −−−−−−−−−−−−−−
0 0| 0 11 22 33 44
|
9 1| 45 1 12 23 34
|
7 2| 35 46 2 13 24
|
5 3| 25 36 47 3 14
|
3 4| 15 26 37 48 4
|
1 5| 5 16 27 38 49
|
10 6| 50 6 17 28 39
|
8 7| 40 51 7 18 29
|
6 8| 30 41 52 8 19
|
4 9| 20 31 42 53 9
|
210| 10 21 32 43 54
この表は、X と Y のまじわったところに
5X+11Y
を計算して、55でわったあまりを書きこんだものです。
そして、表の見方ですが、たとえば
11でわると3あまり、5でわると2あまる数は
表の3の行と2の列の交わったところの数が 47 ですから、
55でわると 47 あまる数です。
さて、最初に(素数の場合の)フェルマーの小定理は
合成数55の場合はどうなるかをみてみます。
素数の場合は、0だけのぞきましたが、
今回は、55=5×11 ですから、逆の数をもたないのは、
5や11でわりきれる数全部です。
そうすると、表の赤い数をのぞくことになります。
Y
0 1 2 3 4
○ 0 1 2 3 4
X □ −−−−−−−−−−−−−−
0 0| 0 11 22 33 44
|
9 1| 45 1 12 23 34
|
7 2| 35 46 2 13 24
|
5 3| 25 36 47 3 14
|
3 4| 15 26 37 48 4
|
1 5| 5 16 27 38 49
|
10 6| 50 6 17 28 39
|
8 7| 40 51 7 18 29
|
6 8| 30 41 52 8 19
|
4 9| 20 31 42 53 9
|
210| 10 21 32 43 54
そうすると、のこった数の 1,12,23,34,46,2,・・・は、ぜんぶで
(11−1)×(5−1) = 10×4 = 40 (個)
あります。すると、フェルマーの小定理のように
140≡1 (mod 55)
1240≡1 (mod 55)
2340≡1 (mod 55)
3440≡1 (mod 55)
4640≡1 (mod 55)
240≡1 (mod 55)
・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・
となるというのが、オイラーの定理(の 55の場合)です。
ですから、40をもとにして、公開鍵と秘密鍵を考えることもできます。
その場合の鍵については、<お勉強>の「公開鍵と秘密鍵」を読んでください。
でも、じっさいのRSA暗号では、 40 より小さい 20 、つまり
(11−1)×(5−1) = 10×4 = 40
ではなく、
(11−1)=10 と (5−1)=4 の最小公倍数 20
を使って鍵を作るのです。
10と4の最小公倍数というのは、
10の倍数(何倍かした数)でもあり
4の倍数(何倍かした数)でもあるもの
つまり、
20 , 40 , 60 , ・・・
といった数の最小のもの、つまり 20 です。
じつは、 40 でなくても、 20 で
120≡1 (mod 55)
1220≡1 (mod 55)
2320≡1 (mod 55)
3420≡1 (mod 55)
4620≡1 (mod 55)
220≡1 (mod 55)
・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・
がなりたつというのです。
これから、このことをたしかめていきましょう。
● 累乗(るいじょう) ●
鍵をまわして開けたり閉めたりすることは、
じっさいは鍵となる数だけ累乗(るいじょう)すること、つまり何乗かすること、
ようするにその回数分だけかけ算をくりかえすことです。
そこで、フェルマーの小定理が役立つのです。
公開鍵で閉めて秘密鍵で開けてもとどおりになる、
つまり何乗かしてもかわらない(もとどおり)というとくべつな数が重要なのです。
たし算ならば たしてもかわらない 0
かけ算ならば かけてもかわらない 1
では、この55でわったあまりの世界で、
累乗という計算で、累乗してもかわらない数 は何でしょう。
(累乗するという計算は、たし算やかけ算とはちょっとちがいますが・・・)
Y
0 1 2 3 4
○ 0 1 2 3 4
X □ −−−−−−−−−−−−−−
0 0| 0 11 22 33 44
|
9 1| 45 1 12 23 34
|
7 2| 35 46 2 13 24
|
5 3| 25 36 47 3 14
|
3 4| 15 26 37 48 4
|
1 5| 5 16 27 38 49
|
10 6| 50 6 17 28 39
|
8 7| 40 51 7 18 29
|
6 8| 30 41 52 8 19
|
4 9| 20 31 42 53 9
|
210| 10 21 32 43 54
ためしに 47 を例にとって、これを何乗したら 1 になるか
考えていきます。
まず 47 は 11でわると3あまり、5でわると2あまる 数です。
これを2乗した(2回かけた) 47×47=472 は
11でわると32=9あまり、5でわると22=4あまる 数なので
表の 9の行と4の列の数をみると 9 です。
つまり
472=2209 は 55でわると 9 あまる数です。
472≡9 (mod 55)
そこで、いったい何乗したら、表の 1の行と1の列の数 1 になるかを
最初に行と列に分けてそれぞれで考えて、後で合わせて考えます。
<行>
最初は 3の行にあります。
2乗すると 32=3×3=9の行にうつります。
3乗すると 33=9×3≡5 (mod 11)の行にうつります。
4乗すると 34≡5×3≡4 (mod 11)の行にうつります。
5乗すると 35≡4×3≡1 (mod 11)の行にうつります。
5乗すると 1の行 にうつれました。
35≡1 (mod 11)
そして、6乗からあとは同じことのくりかえしになります。
だから、5乗,10乗,15乗,20乗,・・・ は、1の行になります。
さらに、6乗,11乗,16乗,21乗,・・・ は、もとの 3の行にもどります。
3の場合は 5乗でよかったですが、
3以外の場合にも・・・となると 10乗でいいというのが、
フェルマーの小定理です。
110≡1 (mod 11)
210≡1 (mod 11)
310≡1 (mod 11)
410≡1 (mod 11)
510≡1 (mod 11)
610≡1 (mod 11)
710≡1 (mod 11)
810≡1 (mod 11)
910≡1 (mod 11)
1010≡1 (mod 11)
行に関しては、0以外の行は 10乗,20乗,30乗,・・・すれば 1の行 にうつれます。
そして、0の行は何乗したって0の行ですから、
0の行もふくめて 11乗,21乗,31乗,・・・すれば もとの行 にもどれます。
<列>
最初は 2の列にあります。
2乗すると 22=2×2=4の列にうつります。
3乗すると 23=4×2≡3 (mod 5)の列にうつります。
4乗すると 24=3×2≡1 (mod 5)の列にうつります。
4乗すると 1の行 にうつれました。
24≡1 (mod 5)
そして、5乗からあとは同じことのくりかえしになります。
だから、4乗,8乗,12乗,16乗,・・・ は、1の列になります。
さらに、5乗,9乗,13乗,17乗,・・・ は、もとの 2の列にもどります。
2の場合は 4乗でよかったですが、
2以外の場合にも 4乗でいいというのが、
フェルマーの小定理です。
14≡1 (mod 5)
24≡1 (mod 5)
34≡1 (mod 5)
44≡1 (mod 5)
列に関しては、0以外の列は 4乗,8乗,12乗,・・・すれば 1の列 にうつれます。
そして、0の列は何乗したって0の列ですから、
0の列もふくめて 5乗,9乗,13乗,・・・すれば もとの列 にもどれます。
<行と列>

さて、行と列をあわせると、(0以外の行や列の数は)
いったい何乗したら、表の 1の行と1の列の数 1 に うつれるのでしょうか。
47の場合では、
5乗,10乗,15乗,20乗,・・・ で、1の行にうつれ、
4乗,8乗,12乗,16乗,・・・ で、1の列にうつります。
ですから、5の倍数でもあって、4の倍数でもある数
つまり、5 と 4 の公倍数の 20乗,40乗,60乗,・・・すれば、
表の 1の行と1の列の数 1 に うつれることになります。
じっさいには、次のようになります。
Y
0 1 2 3 4
○ 0 1 2 3 4
X □ −−−−−−−−−−−−−−−−
0 0| 0 11 22 33 44
|
9 1| 45 1 12 23 34
| (20乗)( 5乗)(15乗)(10乗)
7 2| 35 46 2 13 24
|
5 3| 25 36 47 3 14
| (16乗)( 1乗)(11乗)( 6乗)
3 4| 15 26 37 48 4
| ( 4乗)( 9乗)(19乗)(14乗)
1 5| 5 16 27 38 49
| ( 8乗)(13乗)( 3乗)(18乗)
10 6| 50 6 17 28 39
|
8 7| 40 51 7 18 29
|
6 8| 30 41 52 8 19
|
4 9| 20 31 42 53 9
| (12乗)(17乗)( 7乗)( 2乗)
210| 10 21 32 43 54
そして、21乗からあとは、おなじことのくりかえしになります。
つまり、21乗は 1乗と同じ 47、
22乗は 2乗と同じ 9、・・・ です。
47以外の場合にも、
行に関しては、0以外の行は 10乗,20乗,30乗,・・・すれば 1の行 にうつれ、
列に関しては、0以外の列は 4乗,8乗,12乗,・・・すれば 1の列 にうつれます。
ですから、10の倍数でもあって、4の倍数でもある数
つまり、10 と 4 の公倍数の 20乗,40乗,60乗,・・・すれば、
表の 1の行と1の列の数 1 に うつれることになります。
さらに、0の行や0の列もふくめて、
21乗,41乗,61乗,・・・すれば、表の もとの数 に もどれることになります。
ここで、21乗,41乗,61乗,・・・というのは、
20でわったあまりが1という数です。
では、最初にもどりましょう。
この55でわったあまりの世界で、 累乗という計算に関して、
累乗してもかわらない数 は何でしょう、ということでした。
それは、20でわったあまりの世界で 1 という数です。
● 公開鍵と秘密鍵 ●
では、今度は 20でわったあまりの世界で、
公開鍵と秘密鍵をもとめてみましょう。
(くわしくは、<お勉強>の「公開鍵と秘密鍵」を見てね。)
Y 0 1 2 3
○ 0 1 2 3
X □ −−−−−−−−−−−
0 0| 0 5 10 15
|
4 1| 16 1 6 11
|
3 2| 12 17 2 7
|
2 3| 8 13 18 3
|
1 4| 4 9 14 19
この表は、X と Y のまじわったところに
4X+5Y
を計算して、20でわったあまりを書きこんだものです。
そして、表の見方ですが、たとえば
5でわると3あまり、4でわると1あまる数は
表の3の行と1の列の交わったところの数が 17 ですから、
20でわると 17 あまる数です。
この20でわったあまりの世界で、かけ算を考えます。
かけ算を考えるのは、たとえば
2乗してからさらに3乗すると、2×3=6乗することになるからです。
((□)2)3 = □6
そして、20=2×2×5 なので、2や5でわりきれる数、つまり表でいうと赤い数は、
逆の数をもたないので、さいしょからのぞいておきます。
のこった数をあらためて表にしましょう。
Y 1 3
○ 1 3
X □ −−−−−−−
|
4 1| 1 11
|
3 2| 17 7
|
2 3| 13 3
|
1 4| 9 19
さて、これらの数が公開鍵(になりうるもの)でしたね。
では、引き続き、公開鍵 のかけ算における逆の数、
つまり 秘密鍵 をもとめましょう。
今度は、5でわったあまりの 1,2,3,4 と
4でわったあまりの 1,3 で考えると、
(最初から、前もそうすればよかったって・・・?
じつは、これは証明をとばしているのでかんたんなだけです。)
□= 1,2,3,4 では、
1×1≡1 (mod 5)
2×3≡1 (mod 5)
3×2≡1 (mod 5)
4×4≡1 (mod 5)
○=1,3 では
1×1≡1 (mod 4)
3×3≡1 (mod 4)
このことから、次のようにもとまります。
公開鍵 |
秘密鍵 |
Y 1 3
○ 1 3
X □ −−−−−−−
|
4 1| 1 11
|
3 2| 17 7
|
2 3| 13 3
|
1 4| 9 19 |
Y 1 3
○ 1 3
X □ −−−−−−−
|
4 1| 1 11
|
3 2| 13 3
|
2 3| 17 7
|
1 4| 9 19 |
表の見方は、公開鍵が17なら、その秘密鍵は13です。
そして、公開鍵と秘密鍵が同じではきけんなので、
1 11
9 19
は、けっきょく公開鍵としては使い物になりません。
● 暗号(あんごう) ●
さて、いよいよ公開鍵を使って暗号文を作り、
それを秘密鍵を使って解読(かいどく)しましょう。
じつは、1つ1つの文字は、コンピュータ内部で2進法の数におきかえられています。
そして、その2進法の数をてきとうにくぎり直したりして、
それに 55でわったあまりの数を対応させます。
Y
0 1 2 3 4
○ 0 1 2 3 4
X □ −−−−−−−−−−−−−−
0 0| 0 11 22 33 44
|
9 1| 45 1 12 23 34
|
7 2| 35 46 2 13 24
|
5 3| 25 36 47 3 14
|
3 4| 15 26 37 48 4
|
1 5| 5 16 27 38 49
|
10 6| 50 6 17 28 39
|
8 7| 40 51 7 18 29
|
6 8| 30 41 52 8 19
|
4 9| 20 31 42 53 9
|
210| 10 21 32 43 54
そして、その数を公開鍵を使って何乗かします。
たとえば、47 を 公開鍵17を使って、17乗します。
47 は 17乗すると (55でわったあまりが) 42 になります。
Y
0 1 2 3 4
○ 0 1 2 3 4
X □ −−−−−−−−−−−−−−−−
0 0| 0 11 22 33 44
|
9 1| 45 1 12 23 34
| (20乗)( 5乗)(15乗)(10乗)
7 2| 35 46 2 13 24
|
5 3| 25 36 47 3 14
| (16乗)( 1乗)(11乗)( 6乗)
3 4| 15 26 37 48 4
| ( 4乗)( 9乗)(19乗)(14乗)
1 5| 5 16 27 38 49
| ( 8乗)(13乗)( 3乗)(18乗)
10 6| 50 6 17 28 39
|
8 7| 40 51 7 18 29
|
6 8| 30 41 52 8 19
|
4 9| 20 31 42 53 9
| (12乗)(17乗)( 7乗)( 2乗)
210| 10 21 32 43 54
さてこれを、もとの 47 にもどせるのは、
秘密鍵13を持っているあなただけというわけです。
((47)17)13=(47)17×13
=(47)221
=(47)20×11+1
=((47)20)11×(47)1
≡ 1×(47)1 (mod 55)
≡47
上の計算で、17×13≡1 (mod 20) が、じっさいに
17×13=221 で 221=20×11+1
になっており、20乗するごとに1にもどるのでしたから、
11回おなじことをくりかえして 1 になった次の221乗で、
きちんともとにもどることになります。
最後に、くぎり直しの反対をして、もとの文字におきかえなおすと
解読できるというものです。
暗号のお話は、どうでしたか。
きちんと証明すべきところを、かなりとばしたので
ふんいきだけになってしまいましたね。
HOME(もどる)
掲載内容の無断転載、転用、編集を禁じます。(c)
小林吹代
All Rights Reserved, (c)kobayashi fukiyo , 2001
|