海外掲示板Redditに「OpenSSLの脆弱性によりRSA暗号の1024ビット鍵が20分で因数分解できる」との投稿があり、Twitterなどで話題になっています。OpenSSLとは、インターネット上における標準的な暗号通信プロトコルであるSSLやTLSに対応したオープンソースのライブラリーです。
ただし、この投稿の内容を再現できているRedditユーザーはいないようで、信ぴょう性が疑われている状況です。
問題の投稿によれば、スペインのセキュリティカンファレンス「Navaja Negra」で、OpenSSLにおけるRSA暗号の鍵生成にバグがあるとの報告がなされたとのこと。報告者は、ラップトップを使用し、1024ビット(10進数で309桁)の整数をたったの20分で因数分解するライブデモを披露したといいます。
RSA暗号とは、2つの素数を乗じた数を計算するのには時間がかからないが、逆に乗じた数を素数の積に分解するためにはかなりの計算時間を必要とすることを安全性の根拠としている公開鍵暗号で、現在広く利用されています。たとえば、 23×53=1219 となることを暗算するのはそこまで難しくはありませんが、1219を暗算で素因数分解することは難しくなります。桁数が増えれば増えるほど素因数分解に要するリソースは増加していき、暗号の安全性が高まるとされているわけです。
仮に、たった20分で素因数分解できるとすれば、1024ビットのRSA暗号に関しては、その安全性の根拠が崩れることになります。
今回の投稿では、報告者が主張する脆弱性は、OpenSSLのrsa_gen.cファイルに存在する端数処理に関するコードに起因すると説明されています。また、OpenSSLの全バージョンに影響するとの注意もなされています。
しかし、この投稿は、友人からの伝聞を根拠としていることや、カンファレンスでの報告者がOpenSSLの開発者への報告やその他の情報公開をおこなう予定がないと投稿で説明されていることなどから、情報の真実性には疑問符が付くものです。
また、情報セキュリティ研究者の大居司氏(@a4lg)は、Radditにて投稿の内容を否定するとともに「ソースコードの解析からはその主張を裏付ける証拠は見つからない」とツイートしています。
【警告】 OpenSSL の全てのバージョンで RSA の弱い鍵が生成されるバグがあったという怪情報があるが、ソースコードの解析からはその主張を裏付ける証拠は見つからない。もしあったとしても、原主張にある箇所 "ではない"。私がソースコードを見て確認した。
— Tsukasa #01 (@a4lg) 2014, 10月 5
賭けても良いが、Reddit ポストにある主張は絶対にどこかズレている。もし脆弱性があったとして、Reddit ポストにあるものは原因になっていない。繰り返すが、これについては賭けても良い (日本で合法な飯辺りでも良ければ)。
— Tsukasa #01 (@a4lg) 2014, 10月 5
@kumagi ソースコード解析の結果。 (1) round down のところが誤って round up になっているという主張があるが明らかに誤っている (2) その後の処理で脆弱性が発生する要素が無い [教科書的な RSA の処理だけであるため]
— Tsukasa #01 (@a4lg) 2014, 10月 5
Reddit ポストが伝聞ということなので、Reddit ポストで触れられていないところで RSA 鍵生成脆弱性が発生しているという可能性は無くはない。ただ――個人的な見解ではそれも薄いと考えている。いくらなんでもこれほどの量を聞き違えるってのは考えにくい。
— Tsukasa #01 (@a4lg) 2014, 10月 5
なお、海外の主なテクノロジー系メディアは現時点で、この投稿をニュースとして取り上げていないようです。少なくとも日本国内では大きな注目を集めつつあるだけに、専門家によるさらなる分析が待たれるところです。
bitsp=(bits+1)/2;
bitsq=bits-bitsp;
これのbitsが1025だった時に、おそらくはコンパイラのバグでbitspが513でbitsqが511になってるらしいと書いてるんだけど、どうなればそんなことになるのか。
— Hideyuki Tanaka (@tanakh) 2014, 10月 5
RSAチャレンジがまだ生きていれば、現在の素因数分解アルゴリズムの性能どれぐらいかすぐにわかるのに(´・_・`)
— Hideyuki Tanaka (@tanakh) 2014, 10月 5
@tanakh 流石に 1024-bit RSA はまだ現実的な時間で解けるとは思いません。IaaS をいくら駆使しても、です。とはいえ、最近もアルゴリズム上の細かい進歩は色々あるっぽいですよ。
— Tsukasa #01 (@a4lg) 2014, 10月 5
コメ欄で再現できたといってる人がまるでいないんだが
— Hideyuki Tanaka (@tanakh) 2014, 10月 5
C言語で(1024+1)/2 が 513になるわけがないだろ!いい加減にしろ!
— Hideyuki Tanaka (@tanakh) 2014, 10月 5
なんか彼は6年前からこれを指摘してるんだけど、誰も信じてくれないんです!みたいなことが書いてあって胡散臭さしかない
— Hideyuki Tanaka (@tanakh) 2014, 10月 5
OpenSSLの鍵が20分で分解される件
・C言語の割り算がコンパイラのバグで切りあげになるというのが疑わしい
・仮にそうだとしても、素数のビット数が1減るだけだから劇的に解きやすくなるとは思えない
・スペインの謎のカンファレンスでの発表
・記事が伝聞調
とても疑わしい
— Hideyuki Tanaka (@tanakh) 2014, 10月 5
追記のとこ読むとさらに怪しくて
・Amaconクラスターを使ったら18秒でできた
・彼(カンファレンスの発表者)は6年前から主張しているけど、誰も信じてくれなかった
・reddit投稿者が手法理解してない
・なんか月曜日には詳細を明らかにするらしい
— Hideyuki Tanaka (@tanakh) 2014, 10月 5
OpenSSL の RSAHack、原文ポストが相変わらずアクセスできない状態にあるが、それを翻訳したとする人の pastebin はあった。明らかに Reddit 元ポストと矛盾しているが信頼するならこっちか?しかし何故ここまで稚拙な間違いを?
— Tsukasa #01 (@a4lg) 2014, 10月 6
うん、原文 (のミラー翻訳) を見る限り、あくまで theorical attack の "可能性" を指摘しているだけに留まり、1024 ビットの鍵を 20 分で破れるような現実的な内容になっていない。これは Reddit スレッド主の創作である可能性???
— Tsukasa #01 (@a4lg) 2014, 10月 6
【追記:2014/10/7 10:25】
例の OpenSSL の "脆弱性" とされたもの、ガセということで片付いたようです。 https://t.co/2AFeQdeP6o http://t.co/mhWPyYnSs1
— Tsukasa #01 (@a4lg) 2014, 10月 7
今回問題とされた脆弱性は存在しませんでした。