一方向性と離散対数問題
2つの素数からその積を作ることは簡単だが、その積だけを示されて 元になっている2つの素数を求めるのは、原理的に不可能ではないが、 実際問題きわめて手間がかかる。このような関係にある2つの数学的処 理を、一方向性がある、といいます。
手計算レベルの軽い一方向性ということでいえば、例えば1.64950873 の二乗を有効数字9桁で求めるのは、多少の面倒さに目をつぶって実行 すれば、2.72087905という答を得るのはそう大変ではありません。しか し逆に2.72087905の平方根を有効数字9桁で求めるのは、たとえ平方根 の計算方法を知っていても、単なる掛け算よりは大変です。
より一般的にいえば、例えばf(x)=x**3 + x**2 + xという関数 (**3は3乗、**2は2乗を表わす)は、xがマイナス無限大の時にマイ ナス無限大の値を取り、xがプラス無限大の時にプラス無限大の値を取 ります。しかもxの値により単調に増加する関数です。従ってある実数 が与えられると、f(x)がその値になるような実数xは一意に決まるの ですが、実際問題f(x)の値からxを求めるのは、三次方程式を解くこ とに相当しますから、xの値からf(x)を求めるよりはるかに大変です。
これらは実数に対する一方向性の例ですが、整数に対する一方向性が 公開鍵暗号の基礎となります。
素因数分解以外の例としては、離散対数問題というのがあります。こ れは、与えられたある素数pを法(図6参照)として考えた時、与えら れたある整数qとaに対して、b=q**aとなるbを求めるのは簡単だ が、与えられたある整数qとbに対して、b=q**aとなるaを求める のは難しい、ということです(実際にはqは何でも良いという訳ではな い)。法を考えない問題では、b=q**aというaはqを底とするbの 対数ですので、こういった名前がつけられました。
例を示しましょう。p=17とします。この時、例えばq=4とすると、 q**4もq**8もともに1(pを法として)になってしまうので失敗で す。q=5ならそういったことはないので、ここではq=5とします。 この時、例えばa=12と与えられれば、q**aが4となることは、12回 の掛け算を行えばすぐにわかります(実際には12回の掛け算というより、 例えば3乗したものを4乗すればよい)。しかし逆に、q**aが4だよ と教えられても、そこからa=12というのは、aが1なら、aが2なら、 aが3なら、...とすべてチェックしない限り、わからないのです。
sponsored link
このページ
のTOPへ


