# 認証プロトコルの失敗モード ## 定義 認証プロトコルの失敗モードとは、暗号アルゴリズム自体の弱さではなく、プロトコルがメッセージの意味・文脈・鮮度を十分に束縛していないことに起因して認証が突破される類型を指す。*Security Engineering* 第4章は主に4つの型を区別する。(1) **中間者攻撃/リレー攻撃**: 正規の通信をそのまま転送するだけで認証を通過させる(車のキーレスエントリーのリレー窃盗、フィッシングサイトが銀行のワンタイムパスワードチャレンジを実況中継する攻撃)。(2) **反射攻撃**: 検証者から届いたチャレンジをそのまま(別経路・別セッションで)送り返し、相手に代わりに応答を計算させて使い回す。(3) **選択プロトコル攻撃**: 標的プロトコルと同じ鍵・トークンを、攻撃者が用意した別の無害に見えるプロトコル(年齢確認など)に流用させることで、被害者自身に正規の署名・応答を生成させる。(4) **環境変化による前提の崩壊**: 鍵管理やチャネルの信頼性についてプロトコル設計時に置かれた前提が、システムの普及・用途拡大とともに静かに成立しなくなる(磁気ストライプが「秘密でない」という前提と、カード読み取り機が「信頼できる環境にしか置かれない」という前提が、debitカードの普及とともに同時に崩れたオランダの幽霊引き出し事件)。共通するのは、プロトコルの正しさが検証対象のメッセージ交換だけでなく、その背後にある脅威モデルの前提に依存するという点であり、前提が現実と合わなくなればアルゴリズムが健全でも認証は破綻する。(Source: [[@2020__Wiley__Security Engineering 3e - Chapter 4 Protocols]] ch.4 §4.3.3, §4.3.4, §4.5, §4.6) ## 横断的知見 - **対称鍵チャレンジレスポンスと公開鍵チャレンジレスポンスとでは、中間者攻撃に対する構造的な強さが異なる**。第4章が扱う共有鍵ベースのチャレンジレスポンス(パスワード生成器・エンジンイモビライザー等)は、応答が「どのプリンシパルへの応答か」「どのサイト・サービスに対する応答か」を明示的に束縛しないため、フィッシングサイトやリレー装置が正規の通信をそのまま中継するだけで通過してしまう。[[パスキー認証]]が説明するWebAuthn/パスキーは公開鍵暗号を使い、鍵ペアをサイトごとに生成し、認証を要求しているサイトと鍵を最初に作ったサイトの対応関係を実装が必ず検証する設計になっている。これは第4章が示す中間者攻撃・選択プロトコル攻撃の共通の弱点(応答が文脈を束縛しない)に対する、鍵のサイト固有性による構造的な解決策だと整理できる。ただしパスキーもブートストラップ段階(初回登録)では第4章と同種の弱点を抱える点は[[パスキー認証]]側の記述と一致する。(Source: [[@2020__Wiley__Security Engineering 3e - Chapter 4 Protocols]] ch.4 §4.3.3, §4.6, [[パスキー認証]]) - **第12章(Banking and Bookkeeping)のNo-PIN攻撃は、第4章が分類する「中間者攻撃/リレー攻撃」の教科書的な実例である**。EMVのカード検証方式リスト(CVM list)がプロトコル上認証されていないという設計上の欠陥により、中間者装置は端末に「PINが検証された」と伝え、カードには「chip-and-signature取引だ」と伝えることで、双方に矛盾したメッセージを見せながら取引を成立させた。これは第4章が中間者攻撃の本質として述べる「正規の通信をそのまま転送するだけで認証を通過させる」型ではなく、**転送する情報自体を通信路の両端で書き換える**という一段進んだ変種であり、認証プロトコルの失敗が「メッセージの意味を十分に束縛していない」ことに起因するという第4章の一般論に、「フラグ自体が認証されていなければ中間者は転送だけでなく改ざんもできる」という具体化を加える。(Source: [[@2020__Wiley__Security Engineering 3e - Chapter 4 Protocols]] ch.4 §4.3.3, [[@2020__Wiley__Security Engineering 3e - Chapter 12 Banking and Bookkeeping]] ch.12 §12.6.1.3, [[EMV]]) - **第12章のpreplay攻撃は、第4章の4分類のいずれにも完全には一致しない、鮮度パラメータの予測可能性に起因する第5の失敗型を示唆する**。EMV端末が生成すべき「予測不能な数(unpredictable number)」が実際には3分周期のカウンタや偏った乱数生成器であったため、攻撃者は将来のある時点でその端末が使う値を予測し、盗んだカードでその時点の認証暗号文を事前計算しておくことができた。反射攻撃(第4章の型2)が「既存の応答をそのまま使い回す」のに対し、preplay攻撃は「まだ発生していない将来の鮮度値に対する応答を今のうちに計算しておく」という逆方向の時間性を持つ。これは反射攻撃の近縁だが同一ではなく、鮮度保証の失敗を「応答の使い回し」だけでなく「鮮度パラメータの生成器自体の予測可能性」という角度からも捉える必要があることを示す。第4章の4分類は認証プロトコル一般の失敗を網羅する分類ではなく、鮮度パラメータの生成源(検証者側の乱数生成器の品質)まで含めて検証する必要があることが、第12章で初めて具体的に確認された。(Source: [[@2020__Wiley__Security Engineering 3e - Chapter 4 Protocols]] ch.4 §4.3.4, [[@2020__Wiley__Security Engineering 3e - Chapter 12 Banking and Bookkeeping]] ch.12 §12.6.2, [[EMV]]) - **第22章(Phones)のGSM認証プロトコルは、第4章が挙げる「中間者攻撃/リレー攻撃」型の実地での大規模実装例であり、加えてダウングレード攻撃という第4章に明記されていない亜種を具体化する**。GSMの認証プロトコルは基地局を認証しないため、IMSIキャッチャー(StingRay)が偽の基地局として振る舞い、正規の通信をそのまま中継するだけで移動機を騙せる。これは第4章の型(1)そのものだが、GSMはさらに、アルゴリズムネゴシエーションが平文で行われることを突いて、より弱い暗号(A5/1→A5/2)を選ばせる**ダウングレード攻撃**を許した。Barkan・Biham・Kellerはこれを反射攻撃・preplay攻撃とも異なる形で時間的に転用し、通話を録音しておいて後からIMSIキャッチャーで同じ鍵を再生成させ、弱いA5/2で解読するという事後的な鍵回復を実演した。3G以降は相互認証と暗号範囲拡大でこの型を塞いだが、IMSIキャッチャーは端末に2Gへのフォールバックを強制することで無効化を回避し続けており、ダウングレード攻撃は「新しいプロトコルへの移行では防げない、旧バージョンとの後方互換性そのものに起因する失敗型」として、第4章の4分類に並ぶ独立した失敗パターンであることが明確になった。(Source: [[@2020__Wiley__Security Engineering 3e - Chapter 4 Protocols]] ch.4 §4.3.3, [[@2020__Wiley__Security Engineering 3e - Chapter 22 Phones]] ch.22 §22.3.1, §22.3.2, [[GSM]]) ## 未解決の問い - 選択プロトコル攻撃(同じ鍵を複数アプリケーションで使い回させる攻撃)は、パスキーのようにサイトごとに鍵を分離する設計で原理的に防げるはずだが、生体認証や物理トークンを複数のプロトコル(銀行アプリと決済アプリなど)で共有運用する実装が今後増えた場合、同種の攻撃が再発しないかは本章の範囲では検証されていない。 - 「環境変化による前提の崩壊」型の失敗は、設計時にどの前提が変化しうるかを事前にどこまで列挙できるものなのか(オランダの事例は約10年気づかれなかった)、体系的なチェックリストや方法論が本章では示されていない。 - preplay攻撃が示唆する「第5の失敗型(鮮度パラメータの予測可能性)」を、第4章の4分類に正式な第5項として組み込むべきか、それとも反射攻撃の亜種として扱うべきかは、本ページの記述だけでは決着しない。 - ダウングレード攻撃(GSMのA5/1→A5/2、4G/5G→2Gへのフォールバック強制)は、preplay攻撃の「第5の失敗型」候補と合わせて、第4章の4分類とは独立に「プロトコルバージョン・アルゴリズムのネゴシエーション自体が認証されていない」という第6の失敗型として一般化できるはずだが、本ページはまだ第22章1章分の実例しか持たず、他の通信プロトコル(TLSのダウングレード攻撃など)との突き合わせは未実施。 ## 関連 - ソース: [[@2020__Wiley__Security Engineering 3e - Chapter 4 Protocols]](§4.3.3, §4.3.4, §4.5, §4.6) / [[@2020__Wiley__Security Engineering 3e - Chapter 12 Banking and Bookkeeping]](§12.6.1.3, §12.6.2) / [[@2020__Wiley__Security Engineering 3e - Chapter 22 Phones]](§22.3.1, §22.3.2) - 概念: [[パスキー認証]](公開鍵による中間者攻撃耐性の具体例) / [[鍵配送プロトコル]](鮮度保証の失敗モードを扱う姉妹概念) - 実体: [[EMV]](No-PIN攻撃・preplay攻撃の具体的な発生源) / [[GSM]](ダウングレード攻撃・IMSIキャッチャーの具体的な発生源) ## 出典 - Ross Anderson, *Security Engineering: A Guide to Building Dependable Distributed Systems*, 3rd Edition, John Wiley & Sons, 2020, Chapter 4, §4.3.3, §4.3.4, §4.5, §4.6. - Ross Anderson, *Security Engineering: A Guide to Building Dependable Distributed Systems*, 3rd Edition, John Wiley & Sons, 2020, Chapter 12, §12.6.1.3, §12.6.2. - Ross Anderson, *Security Engineering: A Guide to Building Dependable Distributed Systems*, 3rd Edition, John Wiley & Sons, 2020, Chapter 22, §22.3.1, §22.3.2.