ROCA脆弱性

ROCA 脆弱性 とは、この脆弱性を内包する装置で生成された公開鍵から秘密鍵が導出できてしまうような暗号理論上の弱点のひとつである。"ROCA" は、"Return of Coppersmith's attack"の略である。当脆弱性は、CVE-2017-15361で特定される。 当脆弱性は、インフィニオン・テクノロジーズの提供した脆弱だったバージョンの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での処理は、次の形の素数かどうかだけを検査した。 k ∗ M + ( 65537 a mod M ) {\displaystyle k*M+(65537^{a}\mod {M})} ここで M {\displaystyle M} は、連続した最初のn個の素数 (2, 3, 5, 7, 11, 13,...) の相乗（素数階乗）であり、nは、指定された鍵長だけに依存する定数である。安全性は、秘密の定数である k {\displaystyle k} と a {\displaystyle a} とにかかることになる。ROCA攻撃は、カッパースミス法の変種を用い、素数の形式につけこむものである。さらに、こうしてできた公開鍵は、 M {\displaystyle M} を法とすると65537を底とした離散対数を計算しておくことで、容易に他と区別することが可能となる。大きな群での離散対数の計算は通常、きわめて困難だが、 M {\displaystyle M} がen:smooth numberであることから、Pohlig–Hellmanのアルゴリズムの適用で効率的な計算が可能である。検査用サイトがインターネットにも存在する。すなわち、この形の鍵は、エントロピーがかなり小さく、比較的効果的 (数週～数か月) に攻撃でき、非常に短時間 (マイクロ秒) で形式を確認できる。攻撃の実装が複数、公開されている。 Trusted Platform Module [脚注の使い方] ^ “ROCA: Vulnerable RSA generation (CVE-2017-15361) [CRoCS wiki]” (英語). 2024年4月30日閲覧。 ^ a b Goodin, Dan (2017年10月23日). “Crippling crypto weakness opens millions of smartcards to cloning” (英語). Ars Technica. https://arstechnica.com/information-technology/2017/10/crippling-crypto-weakness-opens-millions-of-smartcards-to-cloning/ 2024年4月30日閲覧。  ^ a b c d Nemec, Matus; Sys, Marek; Svenda, Petr; Klinec, Dusan; Matyas, Vashek (November 2017). "The Return of Coppersmith's Attack: Practical Factorization of Widely Used RSA Moduli" (PDF). Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security. CCS '17. doi:10.1145/3133956.3133969。 ^ Khandelwal, Swati. “Serious Crypto-Flaw Lets Hackers Recover Private RSA Keys Used in Billions of Devices”. The Hacker News. https://thehackernews.com/2017/10/rsa-encryption-keys.html 2024年4月30日閲覧。  ^ Leyden, John (16 October 2017). “Never mind the WPA2 drama... Details emerge of TPM key cockup that hits tonnes of devices”. United Kingdom: The Register. https://www.theregister.co.uk/2017/10/16/roca_crypto_vuln_infineon_chips/ 2024年5月1日閲覧。  ^ “ROCA: Infineon TPM and Secure Element RSA Vulnerability Guidance”. www.ncsc.gov.uk. 2024年5月1日閲覧。 ^ “ROCA: Vulnerable RSA generation (CVE-2017-15361)”. Czech Republic: Centre for Research on Cryptography and Security, Faculty of Informatics, Masaryk University. 2024年5月1日閲覧。 ^ “Information on software update of RSA key generation function”. Infineon Technologies AG. 2024年5月1日閲覧。 ^ Bruno Produit (2019年5月15日). “Implementation of the ROCA attack (CVE-2017-15361)”. GitHub. 2024年5月1日閲覧。 ^ Florian Picca (2020年5月3日). “ROCA”. GitHub. 2024年5月1日閲覧。 ^ Shiho Midorikawa (2020年4月13日). “ROCA”. GitHub. 2024年5月1日閲覧。 ROCA検出ツール (ソース・コード) ROCA Vulnerability Test Suite (鍵、ファイル、Githubアカウント、GnuPGの鍵などの検査のオンライン・ツール) TrustMonitor ROCA Vulnerability Test (複数証明書のオンライン検査ツール) CVE-2017-15361脆弱なTPMの検出スクリプト群