現代の暗号化技術

こんばんは、三茶ロボットです。
前回予告しました暗号化のお話をいたします。

現代社会では情報の機密性を保持するため暗号化技術が必須となっています。
まずは暗号化なんぞ?ということを簡単にお話します。
(ボク自身、専門分野ではないので、チョト適当ですが。。)

まず、AさんがBさんに「おなかいたい」という文章を送るとします。
転送中にこれが他者にバレるとやばいので、「えとおあそあ」という意味不明な文字に変換して送ります。
この工程が、暗号化と呼ばれているものです。さて、ここでの暗号化は何をやっているかというと、
「おなかいたい」の各文字を五十音順の一個前のものに置き換えています。
こうした暗号化について、

・「各文字をずらす」が暗号化タイプ
・「一個前」が暗号化の鍵

となります。この鍵は、AさんBさん両方が知っている「共通鍵」というものになります。
「えとおあそあ」を受け取ったBさんは、鍵を使い「おなかいたい」に戻します。
これが複合化という行程になります。

しかし、共通鍵というものはAさんとBさんに同じものを発行するので
漏えいする可能性が大きく、鍵がわかれば誰でも複合出来てしまう危険性があります。
そこで出てくるのが、現代情報セキュリティを支える、素因数分解を使った「秘密鍵」というものになります。
秘密鍵の運用例として、まず下記を定義します。

・AさんBさんに共通鍵「6」を発行
・Bさんに素数で作られた秘密鍵「2」「3」を発行

とします。共通鍵は、秘密鍵「2」と「3」の積となります。
ここで、Aさんは「6」を使って鍵をかけるのですが、暗号化タイプを非対称アルゴリズムというものに変更します。
(非対象アルゴリズムはクソ難しい数学の話になるんで割愛させてください)

そして暗号化された文字列ですが、今度は共通鍵6では解除できなくなっています。
解除に必要なのは、秘密鍵「2」と「3」になります。
つまり、鍵「6」を発行する過程で、万一 Aさんに悪意がある、もしくはAさんがずぼらで「6」を
漏えいさせてしまっても、秘密鍵を持っているBさんにしか複合出来ない仕組みになります。

  

 

でも共通鍵「6」を素因数分解すれば、だれにでも秘密鍵を割り出せるではないか、となりますよね。
実は、ここが秘密鍵の真骨頂となる部分です。
素因数分解って、今のところ明確な算出方法や公式が無いのです。
つまり、色々な数字を一個一個ためしてみるしかない、ということになります。

6の素因数分解は楽勝ですよね。同様に、15は3と5の積、35は5と7の積。これくらいならば、すぐに解けそうです。
じゃあ143は? 答えは11と13ですが、だんだん面倒になってきました。
このように、数が大きくなればなるほど、試行回数が増えていくわけです。
これはコンピュータを使ったところでも、同じことがおきます。人間よりもはるかに高速に計算結果をたたき出すことは可能ですが、
仮に100桁クラスの数字を素因数分解しようとすると、現存する超高性能のコンピュータをつかっても10万年以上かかると言われています。

逆に言うと、100桁の複合鍵は漏えいしてしまっても絶対複合出来ない、と言い切れることが出来ます。
さーカンの良い方はうすうす気づいていますね。
今、「因数分解は試行を繰り返さないと解が出ない」という制限で秘密鍵は守られています。
そうです、量子コンピュータの並列処理能力を用いることにより、因数分解を一発で解いてしまうのです。
ただ、前回もお話したように、量子コンピュータは並列処理が出来るもの、得られる解は一個のみ。
しかも、得られる解が正解か不正解かもわからない、という厄介者。

実は近年、この因数分解を解くプロセスとして、量子コンピュータの癖にジャストフィットした法則が見つかっています。
次回はこれのお話をしようと思います。何部作で終わらすかは考えないことにします。すみまそん。

三茶ロボット from Sangendyaya

コメントを残す