欠点のない最強の暗号?

この欠点を克服したのが、1976年に数学者のホイットフィールド・ディフィーとマーティン・ヘルマンが開発した「公開鍵暗号」だ。

暗号化に使う鍵(公開鍵)と解読に使う鍵(秘密鍵)の二つを用意し、公開鍵は誰に知られても問題がないというものである。

メッセージを送りたい人は公開鍵を用いて暗号化し、解読には本人しか知らない秘密鍵を用いる。
鍵の開いた南京錠を公開鍵として送り、相手に南京錠を閉めて送り返してもらい、手元にある鍵で開封するという感じだ。

しかしこの仕組みを実現するには、「暗号化は簡単だが、秘密鍵がないと解読は非常に難しい」という一方向性を備えた関数が必要になる。

ここで利用されているのが素因数分解問題だ。
この問題には、二つの素数をかけてできた大きな整数(合成数)を素因数に分解するのは非常に難しいが、答えとなる素数がわかっていれば検証は簡単にできるという特徴がある。

この性質を利用したのが、現在のクレジットカード決済や銀行間取引などにも使われている「RSA暗号」である。
数学者リベスト(Rivest)、シャミア(Shamir)、エーデルマン(Adleman)の頭文字をとって名付けられたこの方式では、公開鍵として大きな合成数を使い、秘密鍵としてその素数を使う。

この一方向性を用いると、秘密鍵(素数)を知らない第三者は膨大な計算をしなければ元のメッセージを解読できない。
一方で、秘密鍵である素数を知っている受信者は容易に解読することができる。

スパコンでも解読できない

素因数分解問題の「答えを見つけることは難しいが、答えの候補が与えられたときは検証が容易にできる」という非対称性が活用されている。

素因数分解は、桁数が増えると計算が爆発的に難しくなることが知られているため充分大きな合成数を用いておけば解読される心配はない。

最近ではRSA暗号で使う整数の桁数は、617桁(2048ビット)以上が推奨されており、ここまで来ると天文学的な計算時間がかかり、スーパーコンピュータでも解読は難しい。

(本稿は『教養としての量子コンピュータ』から一部抜粋・編集したものです。)