2016/11/03

RFC 5114 に関する議論

鍵 キー アンロック 侵入 漏洩 データ 流出 サイバー攻撃

2016 年 11 月 3 日 Richard Gilmour著

先週、Antonio Sanso 氏が投稿した、RFC 5114 と呼ばれる、このところ議論になっている標準規格に関する興味深いブログ記事を読む機会がありました。RFC とは、インターネット標準規格の提案書であり、この記事で取り上げられている RFC には、Diffie-Hellman 鍵交換と呼ばれる暗号処理で使用される非常に大きな素数のリストが提示されています。

暗号化によほどの関心がある方でない限り、おそらく、その内容に注目することはないでしょう。また、開発では OpenSSL などの暗号化ライブラリが広く支持されていることから、開発者がこの実装の詳細の影響を心配する必要はありません。それではなぜ、この RFC がこれほどまでに議論されているのでしょうか。

Diffie-Hellman 鍵交換は、(事前共有パスワードなどの)事前の調整なく、当事者同士が安全に情報を交換できるメカニズムで、また、第三者に通信を傍受された場合も安全性が確保されるとされています。詳細はここでは割愛しますが、簡単に言えば、素数のある特性、すなわち、素数同士の乗算によって簡単に別の数を作成できるが、結果であるその数から元の数字を逆算するのは極めて難しいという特性を利用しています。暗号の開発者やコンピュータ科学者は、この種の特性を、単方向関数と呼んでいます。

わかりやすく説明するために、絵具を混ぜて別の色を作る場合に置き換えてみましょう。たとえば、青と黄色の絵具を混ぜれば簡単に緑の絵具を作れますが、その緑の絵具を元の青と黄色に戻すのは極めて困難です。Wikipedia には、この例えを使った Diffie-Hellman のわかりやすい図解が掲載されています。

それでは、これが RFC 5114 とどう関係するのでしょうか。RFC 5114 には、Diffie-Hellman 鍵交換に使用される、MODP 値と呼ばれる大きな素数のリストが提示されています。絵具のたとえに戻ると、正しいとされている絵具のリストがあって、そこには特定のブランド名や色調が指定されています。このリストに登録されている絵具は徹底的にテストされ検証されているため、信頼できる標準として利用する価値が十分にあります。

しかしながら、誰かが独自に絵具を開発して標準として販売したらどうなるでしょうか。この絵具を混ぜる場合と同じ理論のコードを解読する上で役に立つ可能性があるのでしょうか。少なくとも、十分に準備して作成した絵具をプロセスに組み込めば、その知識が、コードの構造を理解する上で役立つはずです。

そして、これこそが、RFC 5114 の問題の核心なのです。この標準は、表向きには信頼性の高い値の集まりとしてテストされ、検証されたものだという前提で、MODP 値として Diffie Hellman 鍵交換で使用されてきましたが、これらの値の実際にはどこから来たものなのでしょうか。安全であることが確認されているのでしょうか。徹底的にテストされたものなのでしょうか。これらの疑問への答えが明らかではないのです。

RFC 5114 で公開されている MODP 値の脆弱性や解読の可能性を示す具体的な根拠はありませんが、問題の可能性が指摘されています。広く利用されている多数のソフトウェアプロジェクトに RFC 5114 値の使用が実装されているにもかかわらず、具体的な検証がほとんどないことで、この問題に関する議論が活発化することになりました。

この問題が明るみに出て以来、RFC 5114 に関する議論が盛り上がり、結果として、この標準の値の安全性が確認されるまでは使用するのを止める開発者が増えました。現段階で実際にセキュリティの問題が存在するわけではなく、これらの値の使用が完全に安全であるにもかかわらず、議論になっているのです。セキュリティコミュニティでは、その透明性と、徹底的に検証されていてバックドアや見えない動作の可能性が存在しないことを理由に、オープンソースの製品が広く利用されています。ただし、セキュリティのこのような考え方は、誰かが実際に検証を実施したという前提の上に成り立つものであり、この例の場合は、RFC 5114 に提示されている MODP 値を複数のソフトウェアベンダーが採用した段階で、どうやら、その信頼性が実際に検証されたわけではないようです。

結局のところ、オープンソースソフトウェアの安全性は、実際にそれが信頼できるものであることを証明できない限り、保証されないのです。— Richard Gilmour