カテゴリー
blockchain

ブロックチェーン(6)

暗号の方法について。一般的に、中学校の数学で学ぶが、関数というものがある。関数というのは、すでに中学校で学んだように、たとえば、xという数字を関数に代入すると、yという数字が答えとなるといったものである。たとえば、y=f(x)と書く。ところで、このfは関数、英語ではfunctionなのだが、そのfの中身を決めないといけない。たとえば、fの中身を2*x + 1(2かけるx 足す1)とする。xが1の時には、f(x)つまりこの場合、f(1)は、2*1 + 1なので、3になる。簡単な一次関数なのでわかると思うので、これ以上の説明は不要かと思う。

さて、上記の関数の場合、xが1の場合、yが3になるわけだが、yが3の場合、xは1になるのだろうか。答えは、必ずそうなる。この関数においては、xとyの組み合わせは必ず1対1になる。

これを暗号に応用すると、もちろん実際には簡単すぎて暗号には使えないわけだが説明のために使うと、もともとの平分が1という数字とする。そうすると、この関数を使って暗号化すると、暗号は3となる。暗号の送信者はこの3を受信者に送る。受信者は、y=f(x)=2*x+1という関数が暗号に使われたことを送信者から教わって知っているとする。するとyに3を代入して、3=f(x)=2*x+1であるから、それを解いて、x=1となるので、受信者は、そのように暗号を復号することで、もともとの平文が1であったことが分かる。

この場合、暗号のための鍵は、 y=f(x)=2*x+1という関数 であるわけだが、この関数を第三者に教えることはできない。yという暗号とこの関数をもっていると、中学校一年生の教育を受けた人間であれば、誰でも暗号を解読できてしまうからだ。

それは困る。どうすればよいか。

コメントを残す