公開鍵と秘密鍵

● 鍵(かぎ) ●

 私は仕事をしている部屋にたどりつくまでに、
なんと3個の鍵(かぎ)を開けて入ります。

 ちょっとおおげさですね〜。
 だいたい、なあ〜んにも大事なものなんてないのに・・・。

 もちろん、開けるときの鍵と閉めるときの鍵は同じです。
 (暗号のお話では、これがちがっているのがミソです。)

 でも、よ〜く考えると、開けるときと閉めるときでは
鍵は同じでも、鍵をまわす方向が反対です。

 そりゃ〜、そうですよね。
 逆(ぎゃく)にしないと、もとにもどらないよね。

 90度まわして鍵を閉めたのなら
−90度まわして鍵を開けないとね。
(−90度って、反対向きに90度 のことです。)

 この逆にするってことは、さんすう・数学では
しょっちゅう使っているのです。

 


● 逆元(ぎゃくげん) ●

 <たし算の場合>

 たとえば、たし算で考えてみましょう。

 3 に  をたすと 10 になります。
 では、これをもとの 3 にもどすには、何をたしたらいいのでしょうか。
 そうですね。 −7 をたすといいですね。

   3+7+(−7) = 3

 7 のたし算における 逆の数は −7 です。
 そして、

   7+(−7)=0 

となるのがポイントです。0 は たし算において、

   3+0 = 3

のように、たしてもかわらない(もとどおり)という、とくべつな数です。

 

 <かけ算の場合>

 今度は、かけ算で考えてみましょう。

 3 に  をかけると 21 になります。
 では、これをもとの 3 にもどすには、何をかけたらいいのでしょうか。
 そうですね。 (1/7) (7分の1) をかけるといいですね。

   3×7×(1/7) = 3

 7 のかけ算における 逆の数は 1/7 です。
 そして、

   7×(1/7)=1 

となるのがポイントです。1 は かけ算において、

   3×1 = 3

のように、かけてもかわらない(もとどおり)という、とくべつな数です。

 あらっ、でもちょっとまって!

 3 に  をかけると 0 になるけど・・・。
 でも、これをもとの 3 にもどすには、何をかけたらいいのでしょうか。
 そうですね。そんな数はありません。
 0 に 何をかけたって 0 です。3 にはなりません。

 けっきょく、かけ算でもとにもどしたいようなときは、
さいしょから 0 はのぞいておかなくては・・・。

 


● 剰余(じょうよ) ●

 剰余(じょうよ)って、あまりのことでした。

 <お勉強>の「剰余」で、こんな表を作りましたね。

 

     Y   0   5   2   7   4   1   6   3
     ○  0   1   2   3   4   5   6   7
  X □ −−−−−−−−−−−−−−−−−−−−−−
  0 |  0  25  10  35  20   5  30  15
     |
  2 | 16   1  26  11  36  21   6  31
     |
  4 | 32  17   2  27  12  37  22   7
     |
  1 |  8  33  18   3  28  13  38  23
     |
  3 | 24   9  34  19   4  29  14  39

 

 表の見方ですが、もう一度くりかえすと
 たとえば、5でわるとあまり、8でわるとあまる数は
表の2の行5の列の交わったところの数が 37 ですから、

  37 , 37+40 , 37+40×2 , 37+40×3 , ・・・

つまり、

  37 , 77 , 117 , 157 , ・・・

などでした。

 まとめると、5でわるとあまり、8でわるとあまる数は
40でわると 37 あまる数です。

 

 さて、これからは、このせまい表の中で考えてみることにしましょう。
 つまり、40でわったあまりがいくらになるかで考えるのです。

 さらに、たし算とかけ算のうち、今回はかけ算を考えてみます。

 3 に  をかけると 21 になります。
 では、これをもとの 3 にもどすには、何をかけたらいいのでしょうか。

 だれですか。
 (1/7)
 (7分の1) をかけるといいなんて・・・。
 そうでなくって、この表にある数、
つまり 40でわって何あまる数をかけたらいいのでしょうか?
って聞いているのです。つまり、

   3×7×□ を40でわったあまりが もとの 3 になるような□は何かな?

っていうのです。そうすると、

   7×□ を40でわったあまりが 1 になるような□は何かな?

ということになってきますね。

 40でわった商を○にすると

   7×□ = 40×○ + 1

ですから、移項して

   7×□ − 40×○ = 1  ・・・ (1)

となり、またどこかで見た式だな〜って気がしますね。

 そうです。ユークリッドの互除法です。

 ユークリッドの互除法は、最大公約数の見つけ方でしたが、
(1)の式は、7 と 40 の最大公約数が 1 であること、
つまり、7 と 40 は互いに素であることを意味しています。

 さらには、40と互いに素でなければ、(1)のように右辺が 1 にならないので、
さっきのかけ算の 0 のように、もとにもどす数がないことになってしまいます。

 ですから、40=2×2×2×5 なので、2や5でわりきれる数は
さいしょからのぞいておきましょう、となってきます。

 つまり、表でいうと、
   8でわったあまりが 0,2,4,6 の列と
   5でわったあまりが  の行の
赤い数はのぞきましょう、ということです。

 

     Y   0   5   2   7   4   1   6   3
     ○  0   1   2   3   4   5   6   7
  X □ −−−−−−−−−−−−−−−−−−−−−−
  0   0  25  10  35  20   5  30  15
     |
  2 | 16   1  26  11  36  21   6  31
     |
  4 | 32  17   2  27  12  37  22   7
     |
  1 |  8  33  18   3  28  13  38  23
     |
  3 | 24   9  34  19   4  29  14  39

 

 のこった数をあらためて表にしましょう。

 

     Y   5   7   1   3
     ○  1   3   5   7
  X □ −−−−−−−−−−−
     |
  2 |  1  11  21  31
     |
  4 | 17  27  37   
     |
  1 | 33   3  13  23
     |
  3 |  9  19  29  39

 

 じつは、これらの数が公開鍵(になりうるもの)です。

 これらの公開鍵で90度まわして(じっさいは累乗して)閉めたら、
これから求める逆の数、つまり秘密鍵で−90度まわして(じっさいは累乗して)
開けてもとにもどしましょうというのです。

 では、引き続き、公開鍵 のかけ算における逆の数、
つまり 秘密鍵 をもとめましょう。

   7×□ − 40×○ = 1  ・・・ (1)

 さあ、ユークリッドの互除法でしたね。
 今回は行列の計算でやってみます。
 (ちょっと記号が、ふつうとちがってまっすぐですが・・・)
 (行列なんて知らな〜いという人は、前とおなじようにやってみてね。)

 7 と 40 の最大公約数(40)をもとめることが

                  ,       40           , (40

 おたがいにわり算をすると、次のように
2 と 5 の最大公約数()をもとめることになります。

    ÷=1 あまり   <==  40÷=5 あまり 5  , (
     =1×             40=5×
     −1×             40−5×
     −1×(40−5×)=2      −5×40
     6×−1×40

 

         ||   |6  −1| | 
         | | = |      | |  |  ・・・ (2)
         ||   |−5  1| |40

 

 さらに、おたがいにわり算をすると、次のように
0 と 1 の最大公約数()ということになり 1 になります。

   ÷=2 あまり   <==   ÷=2 あまり 1   , (
     =2×             =2×
     −2×             −2×
     −2×(−2×)=0      −2×
     5×−2×

 

         ||   |5  −2| |
         | | = |      | | |  ・・・ (3)
         ||   |−2  1| |

 

 (2)(3)より

 

         ||   |5  −2| |6  −1| | 
         | | = |      | |      | |  |
         ||   |−2  1| |−5  1| |40

 行列のかけ算をすると

 

         ||   | 40 −7| | 
         | | = |       | |  |  ・・・ (4)
         ||   |−17  3| |40

 

 これから、

           = (−17)× + 3×40  ・・・ (5)

 さて、(1)と(5)をみくらべて、さらに

   (−17+40)×7 + (3−7)×40=1
   23×7 + (−4)×40=1 ・・・ (9)

 これで、□は23、○は4とわかりました。

 つまり公開鍵 の逆の数、つまり 秘密鍵は 23 です。

 しつこくいうと、7 と 23 は かけ算して40でわったあまりが 1 です。

 ですから、3×7×23 を40でわると あまりは もとの 3 にもどります。

 


● 公開鍵と秘密鍵 ●

 さて、表で 公開鍵 の秘密鍵は23 でしたね。

  ×23 を 40 でわると あまりは 1 です。

 このことを、記号で次のようにあらわします。

        7×23≡1 (mod 40)

 40でわったあまりの世界では、7×23 は 1 になるのです。

 ちなみに、1 は かけてももとどおりになる、とくべつな数です。

 もちろん、反対に公開鍵を23 にすると 秘密鍵は です。

  23×7 を 40 でわると あまりは やっぱり 1 ですから・・・。

        23×7≡1 (mod 40)

 

     Y   5   7   1   3
     ○  1   3   5   7
  X □ −−−−−−−−−−−
     |
  2 |  1  11  21  31
     |
  4 | 17  27  37   
     |
  1 | 33   3  13  23
     |
  3 |  9  19  29  39

 

<かけ算>

 せっかくですから、のこりも全部もとめてみましょう。

 え〜っ!ユークリッドの互除法をいちいちやってみるの?

 ごしんぱいなく!そのために、さんすう・数学があるのですから・・・(?)

 

     Y   5   7   1   3
     ○  1   3   5   7
  X □ −−−−−−−−−−−
     |
  2 |  1  11  21  31
     |
  4 | 17  27  37   7
     |
  1 | 33   3  13  23
     |
  3 |  9  19  29  39

 

 まず、この表の2つの数をかけ算したら、
この表のどこにある数になるかなって考えてみます。

 さて、この表は X と Y のまじわったところに

    8X+5Y

を計算して、40でわったあまりを書きこんで作ったものでした。

 そこで、8X+5Y と 8X+5Y2 をかけてみます。

   (8X+5Y)(8X+5Y)=64XX+40XY+40YX+25YY

 40でわりきれる項は、40でわったあまりに関係しないってことで

   (8X+5Y)(8X+5Y)≡64XX+25YY2       (mod 40)
                   ≡8×(8XX)+5×(5YY

 つまり、8X+5Y と 8X+5Y とをかけると

      8×(8XX)+5×(5YY

ですが、ここでこの表をつくったときのように

      8XX を5でわったあまり、 5YY を8でわったあまり

を考えます。

 8 は5でわったあまりが 3 ですから、8 を 3 でおきかえて

      3XX を5でわったあまり、 5YY を8でわったあまり

となります。

 たとえば、

     7≡×8+×5  ,  23≡×8+×5

をかけると、

     3×× を5でわったあまり 2 , 5×× を8でわったあまり 5

ということで、表で Xが2、Yが5 のところを見ると、1 です。

 つまり 7×23≡1 (mod 40) です。

<逆元>

 では、公開鍵 8X+5Y の秘密鍵 ×8+×5 はどうなるでしょう。

 40でわったあまりの世界で、かけて 1 になるのですから

     3×X× を5でわったあまり 2 , 5×Y× を8でわったあまり 5

となる、をもとめます。

 記号であらわすと

    3×X×≡2 (mod 5)  ,  5×Y×≡5 (mod 8)

となる、をもとめます。このことから、

      X×≡4 (mod 5)  ,    Y×≡1 (mod 8)

 さて、それぞれの X や Y で □ や ○ をもとめましょう。

 X=2,4,1,3 では、

      ×≡4 (mod 5)
      ×≡4 (mod 5)
      ×≡4 (mod 5)
      ×≡4 (mod 5)

 Y=1,3,5,7 では

      ×≡1 (mod 8)
      ×≡1 (mod 8)
      ×≡1 (mod 8)
      ×≡1 (mod 8)

 

<公開鍵と秘密鍵>

 これで、表の公開鍵の秘密鍵が全部わかりましたね。

 

公開鍵

秘密鍵

     Y   5   7   1   3
     ○  1   3   5   7
  X □ −−−−−−−−−−−
     |
  2 |  1  11  21  31
     |
  4 | 17  27  37   7
     |
  1 | 33   3  13  23
     |
  3 |  9  19  29  39
     Y   5   7   1   3
     ○  1   3   5   7
  X □ −−−−−−−−−−−
     |
  2 |  1  11  21  31
     |
  4 | 33   3  13  23
     |
  1 | 17  27  37   7
     |
  3 |  9  19  29  39

 表の見方は、公開鍵が17なら、その秘密鍵は33です。

 でも、よく考えてみるまでもなく、
公開鍵と秘密鍵が同じでは、とってもきけんですね。

 ですから、

     1  11  21  31

     9  19  29  39

は、けっきょく公開鍵としては使い物になりませんね。

 

 今回は鍵のお話でした。
 さて、この鍵を使って何を開けたり閉めたりするのでしょう。
 それは次回のおたのしみ。


HOME(もどる)

掲載内容の無断転載、転用、編集を禁じます。(c) 小林吹代
All Rights Reserved, (c)kobayashi fukiyo , 2001