橋本裕の日記
DiaryINDEX|past|will


2004年06月27日(日) 素数が作る魔法の鍵

 素数の性質を使うと、暗号化する鍵を一般に公開しながら、しかもこれを解く鍵がなければだれも解けないという理想の暗号がはじめて可能になる。そのしくみを、「数あてクイズ」を使って、できるだけやさしく説明してみよう。

まず、友人に1〜32までのなかで、好きな数をひとつきめてもらう。いま仮に、それをx1としよう。つぎに、その数を二乗してもらう。もし二乗した数が<33>より小さかったらその数を、<33>より大きかったら33で割ったあまりをx2とする。さらにこの操作をもう二回繰り返して、x4を求めてもらい、それを発表して貰う。

 たとえば、x1=6だとしよう。そうすると、6×6=36、36−33=3なので、x2=3である。さらに、3×6=18なので、x3=18。18×6=108、108−99=9なので、x4=9ということになる。だから、友人は、「得た数字は9です」と告げるだろう。

 そうすると、私は<x4=9>という情報をもとに、もとの数であるx1を求めなければならないわけだ。そのためには、このあと、同じ操作をあと7回(11−4=7)繰り返してx11を求めればよい。なぜなら、x1=x11が成り立つことが分かっているからだ。つまり、次のようにして、x1=6が得られる。

 x5=21、x6=27、x7=30、x8=15、x9=24、x10=12、x11=x1=6

 この計算はなかなか面倒だが、コンピュータなら一瞬だろう。そしてこの「数あてクイズ」こそ、現代行われている暗号技術のエッセンスである。少し整理すると次のようになる。

�仝曲牽�1を(33、4)で暗号化して、x4を求める。x4が得られた暗号文である。
��暗号文x4を解読鍵<33=3×11、x11=x1>で解読して、原文x1を得る。

 ここで大切なのは、暗号化する手続き(暗号化キー)と、解読する手続き(解読キー)が別々なことだ。そして、さらに重要なのは、x4からx11を求めることはできても、x4から、x3,x2と遡ってx1を求めることは不可能に近いということである。この不可逆性によって、暗号文の安全性がまず保障されている。

 それでは、<x11=x1>という解読キーは大丈夫だろうか。実は、素数の性質について詳しい人なら、このくらいのことはたちどころに見破ることができる。次のような簡単な計算から、この式が導かれるからだ。

 まず、<33>という数字が、3×11という素数の積であることに注目する。そして、3と11から、それぞれ1を引いて、3−1=2、11−1=10という二つの数字を得る。さらに、2と10の(最小)公倍数を求めると10。これに1を足して11という数字が得られる。この11を使って、x11=x1を導く。

 つまり途中を省略して言えば、<33>が<3>と<11>に素因数分解できれば、この暗号はだれにでも解けるということだ。式であらわすと、次のようになる。

  n=(s−1)(v−1)+1
   =(3−1)(11−1)+1
   =(2×10)+1
   =21(2と10の最小公倍数10を使うと11)

 しかし、これは<33>という数が小さいからである。昨日の日記に書いたように、これが100桁を超えるような大きな数字だと、<あらかじめその答えを知っている者>以外、これを二つの素数に分解することはむつかしい。つまり、巨大な素数をつかうことで、この暗号文の安全性はいくらでも高めることができる。

 さて、以上の議論を一般化しておこう。暗号制作者は、まずsとvという二個の素数を考え、これの積w=svを求め、wで公開用の暗号鍵を作る。この暗号鍵を渡された人は、これによって、文x1をxmへと暗号化する。ここでmはwの値によって導かれる適当な整数である。「数あてクイズ」ではw=33,m=4であった。つまり公開鍵は(w、m)=(33,4)である。

 こうして作られた暗号文xmを解読するには解読鍵<w=sv、x1=xn>を使えばよい。ここで整数nはどうして求めるかといえば、s−1とv−1の2数の最小公倍数を求め、これに1を加える。「数あてクイズでは、<w=sv、x1=xn>=<33=3×11、x1=x11>であった。暗号の安全性はw=svの素因数分解が容易でないことである。

 素数を使ったこのすばらしい暗号化の理論は1977年に生まれた。MIT (マサチューセッツ工科大学) に勤務していた Rivest, Shamir, Adleman という三人の研究者によって発明されたので、これは、「RSA暗号」と呼ばれている。その後、Rabin 暗号、ナップザック暗号、ElGamal 暗号、楕円暗号などが発明されたが、現在まで実際に広く実用化されているのはRSA暗号 だけだ。

 RSA暗号はインターネットのセキュリティや軍事情報などの国家機密にも使われている。したがって、重要な戦略物資として、技術の輸出が厳しく規制されている。暗号技術先進国のアメリカの場合、政府は自国で素因数分解可能な桁数の「暗号」しか流通を認めようとしないのではないかといわれている。ときおり暗号の基準が高度なものにまで緩和されることがあるが、これはアメリカ政府のセキュリティ機関NSA でその長さの暗号の解読が可能となっていることの証拠だという。

 情報化した世界を根底で支えているRSA暗号の安全性は、素因数分解の困難性によって厳重に保障されている。しかし、素因数分解を効率的に行う方法が奇跡的に発見されたら、一挙に世界の安全性は崩れ去る。

 こんな物騒な研究をしていたら、命がいくつあってもたりない。日本の民間企業は世界一の高速コンピュータを作ることに熱心だが、これはアメリカにとって原子爆弾以上に危険なことだ。いまに「年次改革要望書」で、政府は改善を要求されるに違いない。いや、しっかり読めば、もうどこかに書かれているのだろう。

(参考サイト)
http://www.maitou.gr.jp/rsa/index.html


橋本裕 |MAIL |HomePage

My追加