2018年6月12日火曜日

量子コンピュータの話を聞いて書きたくなった暗号の話。

歌うの大好きエンジニア、宮島です。🎵

昨今はコンピュータの進歩が目覚ましいですよね。
少し前には将棋ソフトのポナンザが名人に勝利したってニュースも流れましたし、
更に前にはシンギュラリティって言葉も話題になりましたね。
#え、そこまで一般的じゃないって?



先日、会社のシェアハウスで、他の社員と一緒にテレビを見ていたら、
「量子コンピュータと暗号」が取り上げられていたので、今日はちょっとそれについて書いてみます。
ちょっと長いかも、、、

1.

今や多くの人の生活に密着しているインターネット。
個人情報や商品の購入情報など、プライバシー・セキュリティに関係する様々な情報がやり取りされていますが、
もしこれらの情報を★そのまま★送信したら、悪意のある人にすぐ読み取られてしまうかもしれません。



そのような事態を防ぐために、暗号技術が使われています。
詳細は省きますが、簡単に言えば、
送信前に特殊な方法を使って情報を変換し(暗号化)、
受信後にまた別の方法を使って情報を元に戻す(復号化)事を言います。

よく暗号化の例として、
情報に鍵をかけて(暗号化)から送信し、
受け取ったら鍵を開けて(復号化)取り出す、
なんて言ったりしますね。

2.

しかしこの暗号化復号化、結構悩ましいんです。
なぜなら、この技術は以下のような条件を満たす必要があるからです。

  1. 人によって異なる鍵を使わないといけない(お隣さんと家のカギが同じ、なんて訳にはいかない)
  2. 他の人が知らない、複製できない鍵でないといけない
  3. 情報を送る人と、受け取る人がセットで、暗号化復号化できないといけない

3つ目はちょっと分かりにくいので、単純な例で説明します(実際この通りになっているわけではないですが、イメージとして)。

例えば私がSNSで特別な友人にメッセージを送る時に、それを周りの人に知られたくはないからメッセージを暗号化して送るわけです。
この時、このリクエストを受け取るのは友人ですね。

暗号化するのは私(または私のブラウザ)、
復号化するのは友人。

さて、どうやって私が暗号化した時の鍵🔑を、友人に渡せばよいのでしょうか。










メール✉で送る?
でもメールで送ると誰かに盗み見られてしまうかもしれない、、、

じゃあ、鍵🔑を暗号化して送る?
でも、鍵🔑を暗号化した別の「鍵」🔑をまた相手に知らせないといけない、、、

う~ん、こんがらがってきますね。

3.

そんな問題を解決し、今世界中で使われているのが、RSAという暗号化技術です。
非常に簡単に言うと数学の「素因数分解」がベースになっています。
皆さん一度は学校で勉強しているハズ。

非常に大きな素数2つを掛け合わせた数を元にして、これを元に暗号化・復号化を行います。
詳細は省きますが、これだと上に書いた条件を全て「実質」クリアするんです!イヤーすごい。





4.

皆さんお気づきかと思いますが、上で「実質」と書いたのは理由がありまして、
実はRSAもカンペキ✨な暗号、という訳ではないんですね。

上に書いた条件の2つ目、
 ・他の人が知らない、複製できない鍵でないといけない
を実は完全には満たせていないのです。

でも、「実質」満たしている。

実は、鍵の複製は時間をかければできるんです。
ただしそれに必要な時間がハンパなく長い
世界のスーパーコンピュータでも年単位でかかるくらい。
普通のコンピュータだと一生かかっても終わらないくらいです。


だから、『現実的には』安全、だったのです。
コンピュータの性能が上がっても、ベースとなる素数の大きさを上げれば
更に強度が増していくので、
ずっと使い続けられる、ハズでした、、、

5.

ここでようやく量子コンピュータが登場します。
これも原理は省きますが、ひとことで言うと「超大量に同時並行処理ができる」のが特徴です。

例えて言えば、
普通の原理のコンピュータが小さい素数から順番に因数分解を試すのに対し、
量子コンピュータはいきなり忍者のごとく数百億人同時に影分身して、一斉にバラバラの素数で因数分解できるか計算し始める、
みたいな。

分かりにくいか、、、

とにかく、この特殊な性質により、近い将来、量子コンピュータの性能向上により
RSAの「解くのに時間がかかる=安全」が崩れ去るのではないか?
とも言われているんです。
そうなったら、インターネットでの安全が確保できなくなってしまいます。これはマズい。

6.

そこで、今世界中で「次の暗号化技術」「量子コンピュータにも敗れない暗号化技術」が
盛んに研究されています。

先日のTVで取り上げられていたのは、「格子問題」「格子暗号」などと呼ばれる、数学上の問題を利用した新しい暗号形式でした。
原理は「数百~千次元の空間上のベクトル数百本の組の中から~、、、」という感じ。
うーむ、イメージできませんよね。(^^;


でもこうやって、コンピュータの発展とともに、日々インターネットも進化していくんです。
そう思うと、普段何気なく使っているインターネットもちょっと違って見えてきませんか?

それでは、長文失礼しました~。

人気の投稿