FIDO標準に基づく二要素認証用ハードウェアトークンとして最も広く使用されているYubiKey 5には暗号の欠陥があり、攻撃者が一時的に物理的にアクセスした場合に、指ほどの大きさのデバイスが複製される危険性があると研究者らが火曜日に発表した。
サイドチャネルと呼ばれるこの暗号脆弱性は、銀行業務で使用されるスマートカード、電子パスポート、セキュアエリアへのアクセスなど、多くの認証デバイスで使用されている小型マイクロコントローラに存在します。研究者らはYubiKey 5シリーズの全モデルが複製可能であることを確認していますが、Infineon製SLE78や、Infineon Optiga Trust M、Infineon Optiga TPMといった後継マイクロコントローラなど、このマイクロコントローラを搭載した他のデバイスについてはテストしていません。研究者らは、これら3つのマイクロコントローラとInfineonの暗号ライブラリを搭載したあらゆるデバイスに、同じ脆弱性が存在すると疑っています。
パッチ適用不可
YubiKeyの製造元であるYubicoは、YubiKey 5シリーズのリバースエンジニアリングを行い、クローン攻撃を考案したセキュリティ企業NinjaLabの詳細な開示レポートと連携し、アドバイザリを発表しました。5月にリリースされ、Infineon暗号ライブラリをカスタムライブラリに置き換えるバージョン5.7より前のファームウェアを実行しているすべてのYubiKeyが脆弱です。YubiKeyのキーファームウェアを更新することはできません。そのため、影響を受けるすべてのYubiKeyは永続的に脆弱な状態となります。
「攻撃者は、高度な標的型攻撃の一環としてこの問題を悪用し、影響を受ける秘密鍵を盗み出す可能性があります」とアドバイザリは確認しています。「攻撃者は、YubiKey、セキュリティキー、またはYubiHSMを物理的に所有していること、標的とするアカウントに関する知識、そして必要な攻撃を実行するための特殊な機器を必要とします。ユースケースによっては、ユーザー名、PIN、アカウントパスワード、認証キーなどの追加の知識も必要になる場合があります。」
サイドチャネル攻撃は、電磁放射、データキャッシュ、あるいは暗号鍵を漏洩させるタスクの完了に要する時間といった物理的な兆候に残された手がかりによって発生します。この場合、サイドチャネル攻撃とは、モジュラー逆変換と呼ばれる数学的計算にかかる時間を指します。Infineonの暗号ライブラリは、楕円曲線デジタル署名アルゴリズムを含むモジュラー逆変換演算を実行する際に、定数時間と呼ばれる一般的なサイドチャネル防御を実装できませんでした。定数時間により、時間的制約のある暗号演算の実行が、特定の鍵に応じて変動するのではなく、均一に実行されます。
より正確には、サイドチャネルは、モジュラー逆行列を計算する手法である拡張ユークリッド互除法のInfineon実装に存在します。トークンが認証を行っている間の電磁放射をオシロスコープで測定することで、研究者たちはトークンの一時的なECDSA鍵(ノンスとも呼ばれる)を明らかにする、わずかな実行時間の違いを検出できます。さらに分析を進めることで、トークン全体のセキュリティを支える秘密のECDSA鍵を抽出することができます。
火曜日のレポートで、NinjaLabの共同設立者であるトーマス・ロッシュ氏は次のように書いている。
本研究において、NinjaLabは、Infineon 9のECDSA実装における新たなサイドチャネル脆弱性を、同社製セキュリティマイクロコントローラファミリーすべてに発見しました。この脆弱性は、ECDSAの一時鍵(ノンス)モジュラー反転、より正確には、Infineonの拡張ユークリッドアルゴリズム(EEA)実装に存在します。私たちの知る限り、EEAの実装がサイドチャネル解析に対して脆弱であることが示されたのは今回が初めてです(EEAバイナリバージョンとは異なります)。この脆弱性の悪用は現実的な実験を通じて実証されており、攻撃者はデバイスに数分間アクセスするだけで攻撃を成功させることができることを示しています。オフラインフェーズには約24時間を要しましたが、攻撃開発においてより多くのエンジニアリング作業を行うことで、1時間未満で完了するでしょう。
Feitian 10オープンJavaCardスマートカードのサイドチャネル分析を通じてInfineonの実装を理解する長い段階を経て、YubicoのFIDOハードウェアトークンであるYubiKey 5Ciで攻撃をテストしました。すべてのYubiKey 5シリーズ(2024年5月6日のファームウェアアップデート5.7 11以前)が攻撃の影響を受けます。実際、Infineonセキュリティマイクロコントローラで実行されているInfineon暗号化ライブラリのECDSAに依存するすべての製品が攻撃の影響を受けます。Infineonのトップセキュアチップには、この脆弱性が14年以上存在していると推定されます。これらのチップと暗号化ライブラリの脆弱な部分は、2010年から2024年にかけて、レベルAVA VAN 4(TPMの場合)またはAVA VAN 5(その他)の約80のCC認証評価(および30回未満の認証メンテナンス)を受けています。
ロシュ氏はオンラインインタビューで次のように詳しく説明した。
Infineonは「セキュリティマイクロコントローラ」または「セキュアエレメント」を製造しています。市場には数多くの製品が流通しており、その一部(YubiKey 5シリーズもその一つです)は、Infineonの暗号ライブラリ(独自開発を希望しない顧客向けにInfineonが開発)を実行しています。
この暗号ライブラリは極めて機密性が高く(APIさえも秘密で、APIを知るだけでもInfineonとのNDAに署名する必要があります)、暗号ライブラリの詳細、特にその対策の選択肢を知っているのはInfineonのみです。
この暗号ライブラリは、他の多くのライブラリと同様に、ECDSA(FIDOの中核暗号機能であるだけでなく、様々なアプリケーションやプロトコルでも使用されています)を実装しています。ECDSAスキームには複数のサブ関数呼び出しがあり、その一つがECDSA一時鍵のモジュラー反転です。これは非常に機密性の高い操作であり、ECDSA一時鍵に関する情報が漏洩すると、最終的にはECDSA秘密鍵が明らかになる可能性があります。
Infineon暗号ライブラリでは、モジュラー逆変換は定数時間ではありません。つまり、異なる一時鍵は逆変換の実行時間も異なります。この関数を実行しているチップの電磁放射を取得すると、逆変換計算全体にわたる実行時間のわずかな差を抽出できます。これらのわずかなタイミングの漏れにより、一時鍵を抽出し、さらに秘密鍵を抽出することができます。
この攻撃には、約11,000ドル相当の機材と、電気工学および暗号工学に関する高度な知識が必要です。攻撃の難易度を考えると、国家または同等のリソースを持つ他の組織によってのみ実行され、しかも高度に標的を絞ったシナリオでのみ実行される可能性が高いと考えられます。このような攻撃が広く使用される可能性は極めて低いと考えられます。ロシュ氏によると、2要素認証とワンタイムパスワード機能は、ライブラリの脆弱な部分を使用しないため、影響を受けないとのこと。
NinjaLab の火曜日のレポートでは、クローン攻撃の全流れが次のように概説されています。
- 攻撃者は、FIDO で保護された被害者のアプリケーション アカウントのログインとパスワードを盗みます (例: フィッシング攻撃経由)。
- 攻撃者は、被害者が気付かないうちに、限られた時間内に被害者のデバイスに物理的にアクセスします。
- 盗まれた被害者のログインとパスワード(特定のアプリケーション アカウント用)を利用して、攻撃者はサイドチャネル測定を実行しながら、必要な回数だけデバイスに認証要求を送信します。
- 攻撃者は静かに FIDO デバイスを被害者に返します。
- 攻撃者は測定値に対してサイドチャネル攻撃を実行し、被害者のアプリケーション アカウントにリンクされた ECDSA 秘密キーの抽出に成功します。
- 攻撃者は、FIDOデバイスを使わずに、被害者に気づかれることなく、被害者のアプリケーションアカウントにサインインできます。言い換えれば、攻撃者は被害者のアプリケーションアカウント用にFIDOデバイスのクローンを作成したことになります。このクローンは、正当なユーザーが認証情報を取り消さない限り、アプリケーションアカウントへのアクセスを許可します。
しかし、このリストには重要なステップが抜け落ちています。それは、YubiKeyを分解し、内部に収められたロジックボードを露出させるというものです。これはおそらく、熱風ガンとメスを用いてプラスチック製のキーケースを取り外し、暗号鍵を格納するセキュアエレメントとして機能するロジックボード部分を露出させることで行われると考えられます。攻撃者はそこから、既存のアカウントの認証にYubiKeyが使用される際に、チップを計測するハードウェアとソフトウェアに接続します。計測が完了すると、攻撃者はチップを新しいケースに封印し、被害者に返却します。

左: YubiKey 5Ci (無傷)。右: 内部にあるロジックボード。
NinjaLab提供
プローブを使用して電磁放射を測定する方法を示す 2 つの画像。
NinjaLab提供これを可能にする攻撃と根本的な脆弱性は、NinjaLab が 2021 年に Google Titan キーの複製を可能にしたものとほぼ同じです。その攻撃では、約 10 時間にわたってトークンに物理的にアクセスする必要がありました。
これらの攻撃は、FIDO準拠の鍵の基本的な保証、すなわち、鍵に保存された秘密の暗号素材が他のデバイスによって読み取られたりコピーされたりしないという保証に違反しています。FIDO鍵は軍事や企業ネットワークなど、セキュリティが極めて重要な様々な環境で使用されているため、この保証は極めて重要です。
とはいえ、FIDO準拠の認証は最も堅牢な認証方式の一つであり、認証情報のフィッシング攻撃や中間者攻撃の影響を受けにくいものです。高度なスキルと装備を備えた攻撃者の手に鍵が渡らない限り、FIDO準拠の認証方式は依然として最も強力な認証方式の一つです。また、トークンの複製は、アカウントやデバイスへの不正アクセスに必要な2つの主要な手順のうちの1つに過ぎないことも注目すべき点です。攻撃者は、認証の第一要素として使用されるユーザーパスワードも入手する必要があります。これらの要件により、物理鍵は依然として最も安全な認証方式の一つとなっています。
サイドチャネル攻撃を解明するため、研究者らはインフィニオンの暗号ライブラリをリバースエンジニアリングしました。これは、メーカーが機密保持に細心の注意を払っている、高度に強化されたコード群です。このライブラリの詳細な記述は、他のセキュリティデバイスにおける動作を解析する暗号研究者にとって非常に興味深いものとなるでしょう。
YubiKeyのファームウェアバージョンを確認したい場合は、Yubico Authenticatorアプリをご利用ください。ホーム画面の左上に、キーのシリーズとモデルが表示されます。以下の火曜日のアドバイザリの例では、YubiKeyはYubiKey 5C NFCバージョン5.7.0です。
YubiKeyは、ユーザーによるPINコード入力、指紋認証、顔認証といったオプションのユーザー認証保護機能を提供しています。これらの追加対策を用いたYubiKeyに対するクローン攻撃を成功させるには、攻撃者はユーザー認証要素も取得している必要があります。これらの追加対策を用いてYubiKeyをさらにロックダウンする方法の詳細については、こちらをご覧ください。
現時点で未解決の重要な疑問は、他にどのようなセキュリティデバイスが、脆弱性のある3つのInfineonセキュアモジュールに依存し、Infineon暗号ライブラリを使用しているのかということです。Infineonはまだアドバイザリを発行しておらず、アドバイザリの発行を求めるメールにも返信していません。現時点では、この脆弱性を追跡するための既知のCVEは存在しません。
このストーリーはもともと Ars Technica に掲載されました。