ROCA脆弱性

ROCA 脆弱性 とは、この脆弱性を内包する装置で生成された公開鍵から秘密鍵が導出できてしまうような暗号理論上の弱点のひとつである。"ROCA" は、"Return of Coppersmith's attack"の略である。当脆弱性は、で特定される。

当脆弱性は、インフィニオン・テクノロジーズの提供した脆弱だったバージョンのRSALibライブラリの用いたRSA鍵生成の手法によって生じた。YubiKey 4トークンをはじめ、PGP鍵の生成によく用いられる多くのスマートカード、トラステッド・プラットフォーム・モジュール (TPM) やハードウェア・セキュリティー・モジュールらが、このライブラリを呼び出していた。脆弱なバージョンのインフィニオンのライブラリで生成された512、1024、2048ビット長の鍵は、ROCA攻撃にたいして脆弱である 。

当攻撃を発見したマサリク大学のMatúš NemecとMarek Sýsらの率いる研究チームは、当時のTPM装置の約4分の1に影響したものと見積もった。数百万枚のスマートカードに影響したとみられる。

チームは、RSALibの問題をインフィニオンにたいしては2017年2月に通知しつつ、の観点から一般への公表は10月中旬まで見送った。その際は、攻撃法と公開鍵の検査方法も公表した。攻撃の詳細の公表は11月だった 。

技術的詳細
RSA鍵の生成には、大きい素数であるような複数の乱数生成および選択が含まれる。乱数生成は、スマートカードのような小さい装置では特に、時間のかかりうる処理である。素数であることにくわえ、高度の安全性のためには、他の性質ももつことが好ましい。しかし、脆弱なRSALibでの処理は、次の形の素数かどうかだけを検査した。

ここでは、連続した最初のn個の素数 (2, 3, 5, 7, 11, 13,...) の相乗（素数階乗）であり、nは、指定された鍵長だけに依存する定数である。安全性は、秘密の定数であるととにかかることになる。ROCA攻撃は、カッパースミス法の変種を用い、素数の形式につけこむものである。さらに、こうしてできた公開鍵は、を法とすると65537を底とした離散対数を計算しておくことで、容易に他と区別することが可能となる。大きな群での離散対数の計算は通常、きわめて困難だが、が:en:smooth numberであることから、Pohlig–Hellmanのアルゴリズムの適用で効率的な計算が可能である。検査用サイトがインターネットにも存在する。すなわち、この形の鍵は、エントロピーがかなり小さく、比較的効果的 (数週～数か月) に攻撃でき、非常に短時間 (マイクロ秒) で形式を確認できる。攻撃の実装が複数、公開されている。

関連項目
 Trusted Platform Module

脚注

外部リンク
ROCA検出ツール (ソース・コード)
ROCA Vulnerability Test Suite (鍵、ファイル、Githubアカウント、GnuPGの鍵などの検査のオンライン・ツール)
TrustMonitor ROCA Vulnerability Test (複数証明書のオンライン検査ツール)
CVE-2017-15361脆弱なTPMの検出スクリプト群

Category:暗号解読攻撃
Category:公開鍵基盤