インターネットを安全かつ安心して利用するために使われるのが暗号化の技術だ。強固な暗号化技術があるからこそ、私たちはネットショップや会員サイトへのユーザー登録などで、不安に駆られることなくカード情報や個人情報を提供することができる。なかでも、暗号化技術の主役を担っているのがRSAだ。本記事では、RSAをはじめとした暗号化の仕組みや暗号化の歴史などについて解説する。
RSA暗号とは
RSAとは、後述する公開鍵暗号方式で使われる代表的な暗号アルゴリズムだ。1977年に発明され、以下の発明者の頭文字からRSAと名付けられた。
- ロナルド・リベスト(Ronald Rivest)
- アディ・シャミア(Adi Shamir)
- レオナルド・エーデルマン(Leonard Adleman)
RSAによる暗号アルゴリズムは、桁数の大きな素数を掛け合わせた数字の素因数分解が難しいことを応用している。例えば、6,887という数字を素因数分解することを考えてみよう。一般的には、素数である3や7といった数字で割っていき確かめていくことになるはずだ。たった4桁の数字でも、97と71という素因数を導き出すことは困難であることが分かるだろう。RSA暗号を解読するためには、数百桁もの数字の素因数分解を導き出す必要があり、コンピューターを使っても難しいのだ。
このように強力な暗号強度をもつRSAは、誕生から30年がたった今でもSSLやTLS、PKIなど、暗号基盤において中心的な役割を果たしている。現在主流となっている2048ビット(617桁)のRSA暗号は、スーパーコンピューターでも解読が困難とされており、今後もしばらくは現役で活用されることになりそうだ。その一方で、RSAを脅かす存在になりそうなのが、量子コンピューターだ。量子コンピューターを使えば、素因数分解を高速に処理することができるアルゴリズムを使うことができる。今後、量子コンピューターが実用化されると、RSAはその役割を終える可能性が高いとも言われる。
なぜ暗号が生まれたのか?
暗号の歴史は古く、紀元前3,000年のバビロニアの時代に遡るといわれている。暗号化が求められた背景には、二者間で他人には知られたくない情報交換や共有の必要性が生じたことにある。歴史を振り返ると、軍事的、政治的な情報のやり取りをするなかで、暗号化技術は発展を遂げてきた。
伝書や手紙など、物理的な方法で情報を交換せざるを得なかった時代、暗号化の方法はシーザー暗号のような単純な仕組みにとどまっていた。シーザー暗号とは、ABC順のアルファベットを数文字ずらすなど、ルールを定め、そのルールを暗号通信する者同士で共有しておくことで、暗号通信を実現させるものだ。
暗号の歴史において、大きな転換点になったのは通信技術の進化だ。無線通信の普及で、離れた相手に対してリアルタイムに大量の情報を伝えることができるようになった一方、味方だけでなく敵も傍受できてしまうため、暗号化の重要性が高まったのだ。
近代の世界的な大戦の勃発がその流れを加速させることになった。「ニイタカヤマノボレ」や「トラ、トラ、トラ」といった暗号電文は日本人の多くが一度は耳にしたことがあるのではないだろうか。なお、第二次世界大戦では、日本軍が使用した多くの暗号電文は、戦時中に米軍にほぼ解読されていたといわれており、戦局を大きく左右したとされる。
暗号化技術の進化の歴史は、秘密を守りたい人と秘密を暴きたい人との間の知恵比べともいえる。コンピューターとインターネットの登場でその競争は激しさを増しているのだ。従来、政治や軍事を目的に利用されてきた暗号化技術も、一般ユーザーが日常的に利用するように変わってきている。それだけに、暗号強度だけではなく、使いやすく応用がきくなど、利便性の高さも要求されるようになってきている。
暗号化の仕組み
コンピューターの登場により、暗号化は「鍵」を使う方法が標準となった。暗号化のための暗号鍵、復号のための復号鍵、それぞれを使う方法が現代暗号の基礎となっているのだ。その具体的な方法は、「共通鍵暗号方式」、「公開鍵暗号方式」の二つが挙げられる。
共通鍵暗号方式(秘密鍵暗号方式)
共通鍵暗号方式は、暗号化と復号に使う鍵が同一である暗号方式だ。あらかじめ相手に共通鍵を渡しておけば、互いに暗号通信が可能となるため、暗号化の手順はシンプルで分かりやすいものだ。共有した鍵は、通信の秘匿性を守るために、秘密にしておく必要があるので、秘密鍵暗号方式と呼ばれることもある。共通鍵暗号方式が実用化された例として、第二次世界大戦で使われたエニグマ暗号が知られている。
しかし、共通鍵暗号方式は、通信相手ごとに異なる共通鍵を準備しなければならない点がボトルネックとなる。不特定多数の相手とやり取りすることになるインターネットの場合、通信する相手の数だけ鍵を準備することは、現実的ではない。仕組みがシンプルで暗号速度も速い共通鍵暗号方式は、一部の通信で利用されているものの、広範なインターネットの世界では限界を迎えることになった。
公開鍵暗号方式
公開鍵暗号方式は、暗号化するための鍵と復号するための鍵が異なる暗号方式だ。(※公開鍵暗号方式にはさまざまな方式があるが、本項ではRSA方式を解説する。)暗号化するための鍵を公開鍵と呼び、復号する鍵を秘密鍵と呼ぶ。公開鍵暗号方式では公開鍵を広く公開し、秘密鍵を厳重に秘密にすることで成立する。共通鍵暗号方式と比較すると処理が複雑なため、暗号化や復号に時間を要するのがデメリットとみなされる場合もある。
暗号通信を行いたい場合は、公開されている相手の公開鍵を入手して暗号化すればよい。これで、秘密鍵を持つユーザーしか復号できなくなり、暗号通信が可能となる。共通鍵暗号方式と比べると鍵の管理が容易になるため、インターネットの世界では広く普及することとなった。
公開鍵暗号方式では、自分の秘密鍵で暗号化する場合もある。一見すると、自分の秘密鍵で暗号化しても、広く公開している公開鍵で誰でも復号できるため、無意味だと思われるかもしれない。しかし、公開鍵で復号できることが、その秘密鍵の保有者が暗号化したという確かな証拠となる。このため、秘密鍵で暗号化する方法は、デジタル署名のように、ユーザーを識別する認証方法として広く普及するなど、通信の盗聴を防ぐ以外の目的でも利用される。
RSA以外の暗号方式
ここまで説明してきたように、現代の暗号方式は、共通鍵暗号方式と公開鍵暗号方式が標準となっており、RSAは公開鍵暗号方式で採用されている暗号アルゴリズムである。それでは、RSA以外に一般化しているアルゴリズムには、どのようなものがあるのだろうか。
DES(3DES)
DESは、米国で規格化された暗号アルゴリズムで、共通鍵暗号である。「Data Encryption Standard」の頭文字をとってDESと名付けられた。コンピューターの普及で、暗号の標準規格が必要と考えた米国が、厳しい設計基準を満たす暗号を公募し、IBMにより開発された暗号アルゴリズムが採用されることとなった。
DESでは、64ビット(8バイト)の鍵を使い、入力した平文に対して一連の複雑な処理を施して暗号化する。復号する場合には、鍵を使って一連の操作を逆の順序で進める。なお、暗号強度を高めるために、DESの処理を3回行う方法を3DES(トリプルDES)と呼ぶ。
DESは、鍵長が64ビット(エラー検出情報を含むため、実質56ビット)と固定されているため、将来のコンピューターの発展とともに暗号強度を維持できるのかという懸念があった。その懸念の通り、以前は堅牢とされた3DESすらも、現在では総当たり攻撃などで解読できるようになってきているため、DESの後継となるAESなどの利用が推奨されている。
AES
「Advanced Encryption Standard」の略称から名付けられたAESは、DESに代わる共通鍵暗号のアルゴリズムとして、米国の国立標準技術研究所(NIST)が主導して標準化された。当初、DESの後継規格は世界中で広く公募され、21の方式が提案された。その中で、ベルギーで開発されたRijndael(ラインダール)が選ばれるに至った。
Rijndaelは、ブロック長と鍵長が可変だったのに対し、ブロック長を128ビットに固定、鍵長も128ビット、192ビット、256ビットの3つに制限し、これをAES規格として定めた。AESは、実用化されている方式の中では、暗号強度が極めて高いと言われており、無線LANの暗号化通信などで実装されている。
楕円曲線暗号
楕円曲線暗号は、楕円曲線を利用した暗号アルゴリズムの総称で、多くの場合、公開鍵暗号として利用されている。ビットコインの暗号化方式として採用されていることで知られる。なお、この方式は楕円曲線上の離散対数問題といわれる数学上の問題を安全性の根拠としている。楕円曲線暗号は、RSAと比較すると短い鍵長でも高い安全性を確保できるとされているため、計算能力の低いコンピューターでも実装できるという特性がある。
ハイブリッド暗号
暗号アルゴリズムとは異なるが、共通鍵暗号方式と公開鍵暗号方式の弱点を補うハイブリッド暗号についても説明しておく。共通鍵暗号方式の場合は、鍵管理に問題があった。一方で、公開鍵暗号方式には、暗号化や復号の処理に時間がかかるという問題がある。
このような問題を解決する暗号方式がハイブリッド暗号だ。ハイブリッド暗号では、時間のかかる暗号化を共通鍵で処理し、共通鍵を相手の公開鍵で暗号化する。こうして、暗号文と暗号化された共通鍵を相手に送信し、暗号通信を実現するのだ。受信者は、自分の秘密鍵で共通鍵を復号し、得られた共通鍵で暗号文を復号すればよい。ハイブリッド暗号は、メールを暗号化するS/MIMEなどで実装されている暗号方式である。
技術進化を見据えた最低限の知識は不可欠な時代に
もはや日常生活の一部ともなりつつあるインターネットを安全に利用していくためにも、暗号の技術は不可欠な存在といえる。暗号技術は通信の裏側でユーザーが特に意識することなく利用されているものの、正しい知識でその仕組みを理解しておかなければ、危険な状況に遭遇した場合に対処方法を見出すことすらおぼつかなくなってしまう。
急速に存在感を高めつつあるディープラーニングなども含めて解読技術もさらなる進化が見込まれている。先述の通り、今後は量子コンピューターの台頭なども予測されている。技術自体が高度化し、ブラックボックス化しつつある中だからこそ、暗号化の根本的な仕組みを押さえておくことはもはや最低限の知識とすら言えるのかもしれない。