IMAGE BY CASEY CHIN

データの暗号化を回避したり危害を加えたりする新しい方法を、ハッカーは常に探そうとしている。ところが、なんと10年以上も前に発見された暗号化の脆弱性がいまだに健在だったという事実が、このほど報告された。

問題は「実装方法」にあり

この驚くべき事実は、ラスヴェガスで2019年8月上旬に開催されたサイバーセキュリティのカンファレンス「Black Hat」で、パデュー大学のチャウ・シーイウによって報告された。

この脆弱性はRSA暗号に関連したものだという。RSAはウェブブラウザーやVPN、メール、メッセージアプリなど、あらゆるものを守るために使われている暗号化アルゴリズムおよび暗号システムだ。ただし、問題があるのはRSAの仕様そのものではない。一部の企業におけるRSAの実装方法にある。

チャウの研究は、署名を検証するためのRSA暗号設定でみられる欠陥を重点的に調べたものだ。署名検証とは、“署名された”暗号化データのチャンクが、実際に送信者によって検証されたことをチェックし、署名が不正に改ざんされたり操作されたりしていないことを確実にするための処理である。

強力な署名検証がないと、第三者がデータを操作したり、信頼できる作成元からのデータを装って偽データを送信したりできてしまう。実績豊富なスイス人暗号学者で現在はグーグルに勤めるダニエル・ブライシェンバッハは、06年の暗号カンファレンス「CRYPTO」でこうしたRSA署名検証の脆弱性を初めて立証した。

「古くからあるこの問題が、さまざまなライブラリやセッティングでいまもわたしたちを悩ませているという事実は驚くに値します」と、パデュー大学のチャウは語る。「13年経ったいまも、これが避けるべき問題であることが認識されていません。問題はまだ続いているのです。だからこそ、この研究をBlack Hatで発表したいと思いました。問題を認識していることは重要です。わたしたちは互いのミスから学ぶ必要があります」

知らずにデータが晒されていた可能性も

ブライシェンバッハの発表以来、研究者たちは主要なコードベースでRSA署名検証に関する問題を発見してきた。07年にはセキュアな通信ライブラリである「OpenSSL」、14年には「Mozilla Firefox」といった具合だ。

RSA署名検証の欠陥は、アルゴリズム自体にあるわけではない。署名の特性に対して寛容すぎる危険な実装によって、署名検証のチェックが回避されてしまう恐れが生じるのだ。これが、偽造された署名などがRSAのチェックをかいくぐる糸口を生み出してしまう。そして、それがどこから生じるにせよ、こうした脆弱性は現実に影響を及ぼす可能性がある。

チャウは簡単な調査だけで、署名検証で欠陥を生じさせるRSA実装を6つ発見した。そのうち、オープンソースのVPNインフラツールである「Openswan」と「strongSwan」で見つかった2つは、VPN認証要件の回避に悪用されていた可能性がある。つまり、ユーザーが保護されていると思い込んでいるデータを晒していたかもしれないのだ。

OpenswanとstrongSwanは、どちらも誰にでも利用可能な公開ツールなので、この欠陥は復数のVPNや安全な接続のためのツールに広がった可能性も否めない。チャウによると、OpenswanとstrongSwanは、どちらもこの問題に迅速に対処し、18年8月と9月に脆弱性が修正されたという。

アプリ開発者は暗号化の専門家ではない

この署名検証の問題は、ほかの一般的かつ基礎的なウェブセキュリティプロトコルを実装する際にも現れる。例えば、安全にリモートコンピューターと通信するためのプロトコルである「SSH」や、「DNSSEC」（ドメイン名とIPアドレスを対応づけるインターネットの電話帳のようなシステム「DNS」のセキュリティ拡張）もその対象だ。

しかし、このような実装に問題があるオープンソースのツールやコードライブラリのすべてで、脆弱性が迅速に修正されるわけではない。また、暗号学が専門でない多くの開発者たちは、こうした実装の問題を確認する必要があることを知らぬまま、自身のプロジェクトにコンポーネントを組み入れてしまうかもしれない。

チャウによると、これはIoTデヴァイスのように勢いよく市場に押し寄せるアプリや小型ガジェットで特に懸念されているという。

「IoTのコミュニティには、こうした製品を使用している開発者がいます。オープンソースのTLSライブラリ2つでもこの問題が見つかっています」。ウェブサイトと相互にデータを暗号化するTLSプロトコルについて、チャウはこう話す。

「こうしたライブラリがどの商用製品に使われているのかはわかりませんが、ライブラリは毎週20～30のダウンロードがあるということです。開発者、特にアプリケーション開発者はアプリケーションを機能させたいだけで、見えないところで暗号がどのように機能しているかを必ずしも理解しているわけではありません」

こうしたさまざまな脆弱性を発見して語り続けることで、開発者たちを動かして脆弱性を根絶することをチャウは望んでいる。しかし、もっと重要なのは、暗号化標準やドキュメンテーションがどう行なわれているかを考えることだと彼は話す。こうしたRSA署名検証の問題がすでに13年間も継続していることを考えると、より根本的な転換の時期に来ているのかもしれない。