連載目次

情報セキュリティの根幹をなす技術の一つである「暗号化技術」。システム利用者がその詳細にまで立ち入ることはあまりないこの技術ですが、その背景には一体どのような理論があるのでしょうか。また、暗号化技術の安全性はどのようにして検証されているのでしょうか。

2000年ごろから数学の応用分野としての暗号化技術に関心を持ち始め、2004年には放送型暗号の実装で情報処理推進機構（IPA）の「未踏スーパークリエータ」認定を獲得。2015年以降は書籍や＠ITでの連載執筆なども行ってきたサイボウズ・ラボ 光成滋生氏に、暗号化技術を支える理論やその安全性、暗号研究をめぐる最新動向、今後の展望などについて聞きました。

絶対に安全な暗号は存在しない？

サイボウズ・ラボ 光成滋生氏

編集部 連載「クラウド時代の暗号化技術論」の中では、さまざまな暗号化技術を紹介していただきました。暗号というと「安全性」という点に関心が集まると思うのですが、ある暗号化技術が「安全である」とは、より具体的に言うとどういうことなのでしょうか。

光成氏 コンピュータで使用される暗号化技術は「暗号理論」を実装したものですが、そうした理論の多くは「計算量的安全性」、つまり「解読しようとしても、計算量が膨大になってしまい難しい」ということを安全性の根拠としています。例えば、有名な「RSA暗号」は「素数pとqを掛けるのは簡単だが、pとqがとても大きいとき、掛けた結果から元のp、qを求めるのは難しい」という仮定を基に作られています。連載の中で取り上げた「楕円曲線暗号」の場合も、「楕円離散対数問題（ECDLP）は困難だ」という仮定や、その他のいくつかの細かい仮定が基礎になっています。

編集部 計算量的安全性を持つ暗号理論は「解読が難しい」というだけで、「解読が不可能だ」というわけではないということですか。

光成氏 はい。こうした計算量仮定に基づく暗号理論は、いずれも「絶対に安全だ」と言い切ることはできません。新たな計算手法が発見されたり、コンピュータの性能が向上したりすることで、現実的な時間内で解読できてしまう可能性があります。

また、こうした暗号理論の安全性を証明する際は、攻撃者の能力をモデル化し、例えば「『CPA（Chosen Plaintext Attack）』や『CCA（Chosen Ciphertext Attack）』に対しては安全だ」という言い方をします。十分強力な計算能力を持つ攻撃者を想定し、「そんなものに対しても安全と証明できたのだからまず大丈夫だろう」と考えるのです。またこうしたモデルについては、近年の高度な暗号や複雑な使い方を想定して、従来標準的に使われていたモデルを微調整し、より攻撃能力の高いものを想定した方がよいだろうという研究もあります。

つまり、コンピュータの暗号化技術の基礎になっている暗号理論の安全性自体が、何らかの仮定や条件、限定された状況の下で裏付けられているものであって、「あらゆる状況で絶対に安全な暗号化技術は存在しない」といえるのです。

暗号の安全性はどのようにして検証されるのか

編集部 新たな計算手法の登場やコンピュータの性能向上の他に、暗号化技術が安全でなくなってしまう状況というのはありますか？

光成氏 はい。例えば「複数の（安全とされる）要素技術を組み合わせた暗号プロトコルに、予想外の脆弱（ぜいじゃく）性が生まれてしまう」といったケースがあります。2014年に発覚したSSL3.0の脆弱性「POODLE」などはその典型でしょう。

個別の暗号化技術が安全だとされていても、それらを組み合わせた暗号プロトコルが必ずしも安全にはならないというのが暗号の難しいところです。暗号プロトコルに関しては、また別のレイヤーでの検証が必要となるのです。

編集部 暗号化技術の安全性は、どのようにして検証されているのでしょうか。

光成氏 さまざまな組織の研究者たちが、長い時間をかけて特定の暗号方式について解読を試みています。その結果、どれだけやっても破れないものについては、「これだけやっても解読できないなら大丈夫だろう」という形で一定の信頼を得ることになります。逆に、検証の過程で破られてしまったり、「この鍵長以下ではこれだけの時間で破れてしまう」という一定の基準が明らかになったりするケースもあります。

例えば、2012年に独立行政法人情報通信研究機構（NICT）らが鍵長278桁のペアリング暗号の解読に成功したと発表しました（参考リンク）。ペアリングの278桁というのは「安全とされている中では一番弱いパラメータ」というレベルのものだったですが、それでもやはり、インパクトの大きな発表でした。また、この発表には暗号の安全性に関する一定の基準を確立し、安全性の見積もりを可能にしたという意義もあります。暗号化技術の安全性は、こうした検証によって確かめられています。

編集部 一つの暗号化技術が「安全だ」と判断されるまでには、どのぐらいの時間が必要なのでしょうか。

光成氏 多くの場合、一つの暗号化技術が安全だと信頼されるまでには20年程度かかるようです。例えば、RSAは提案から約40年がたっていますし、楕円曲線暗号も30年近くの検証を経ています。どちらも長年の検証を乗り越えてきたという意味で、信頼の置ける技術だといえるでしょう。

一方で「ペアリング」を使った暗号化技術は、先ほどのNICTの例も含めてだいぶ検証が進んではいますが、注目され始めたのが2000年以降になってからですので、安全性が十分に保証されるまでにはもう少し時間がかかるでしょう。

結局は安全だと信じるしかない

編集部 暗号化技術の安全性は、検証をくぐり抜けてきたという「信頼」を根拠としているということでしょうか。

光成氏 そうです。初めに述べたように、基本的に「どんな状況でも絶対に安全な暗号」は存在しませんので、最終的には「安全だと信頼する」しかありません。ただし、検証作業は多くの人の手で長い時間をかけて行われていますから、それを生き抜いてきた暗号化技術については「かなり信頼できる」と言って問題ないと思います。

編集部 暗号化技術を利用する側の人がその安全性を確認するには、何を参考にすればよいのでしょうか。

光成氏 CRYPTRECや米国国立標準技術研究所（NIST）などの組織が発表しているリストを参考にすればよいと思います。こうしたリストで推奨されている暗号方式や暗号プロトコルは、まず問題ないでしょう。リストによって多少の違いはあるかもしれませんが、信頼度が高いとされている暗号方式はどのリストも大体同じはずです。

ちなみに、開発者の人は間違っても「独自の暗号方式を作って利用しよう」などと考えてはいけません。十中八九失敗します。暗号の世界ではよく「閉じた世界の暗号化技術は弱い」といわれるのですが、これは多くの人による検証を経ることがないからです。もちろん、「新たな暗号方式を考案しよう」とするのを止めているわけではありません。新しく考案した方式は、まず検証の場に公開するのがよいということです。

1|2 次のページへ