情報セキュリテイ

Dublin Core

Creator

Date

Rights

CC BY-NC 4.0 - 非営利目的のみ許可

note Item Type Metadata

note

# HTTP/2 Rapid Reset攻撃と大規模DDoS攻撃の技術分析

**最終更新日**: 2025-11-20  
**作成目的**: 教育・研究・技術共有

---

## 目次

### 第I部:DDoS攻撃の技術分析

1. [事件概要](#1-事件概要)
2. [HTTP/2 Rapid Reset攻撃の技術的詳細](#2-http2-rapid-reset攻撃の技術的詳細)
- 2.1 攻撃メカニズム
- 2.2 攻撃規模の技術的意味
- 2.3 従来対策の限界
3. [AIサービスへの影響と技術的課題](#3-aiサービスへの影響と技術的課題)
- 3.1 AIサービス特有の脆弱性
- 3.2 カーソル(Cursor)の事例分析
- 3.3 落としかけた原因の技術的分析
- 3.4 トラフィックとインフラ拡張ギャップ分析
- 3.5 内部トラフィック操作のリスク
- 3.6 GPU推論キューの定量モデル
- 3.7 コントロール/データプレーン相互依存性
- 3.8 依存サービスとサプライチェーンの制約
4. [対策技術とベストプラクティス](#4-対策技術とベストプラクティス)
- 4.1 プロトコルレベルでの対策
- 4.2 インフラレベルでの対策
- 4.3 AIサービス特有の対策
- 4.4 監視と異常検知
- 4.5 キャパシティオーケストレーションとガバナンス
- 4.6 攻撃シミュレーションとレジリエンス演習
5. [業界動向と今後の展望](#5-業界動向と今後の展望)
6. [まとめと推奨事項](#6-まとめと推奨事項)

### 第II部:最新の攻撃事例

7. [最新のDDoS攻撃事例](#7-最新のddos攻撃事例)
- 7.1 15.7Tbps攻撃の概要(2025年10月)
- 7.2 Aisuruボットネットの技術的分析
- 7.3 Cloudflare大規模障害(2025年11月18日)

### 第III部:セキュリティ基盤技術

8. [OSのセキュリティとアクセス制御](#8-osのセキュリティとアクセス制御)
- 8.1 アクセス制御モデル
- 8.2 パスワード管理とハッシュ化
- 8.3 CAPTCHAとボット対策
- 8.4 OSの脆弱性と対策
- 8.5 ログ管理
- 8.6 ゼロデイ脆弱性
9. [モバイルデバイスのセキュリティ](#9-モバイルデバイスのセキュリティ)
- 9.1 MDM(Mobile Device Management)
- 9.2 スマートフォンの改造(Root化/Jailbreak)
10. [認証基盤とアイデンティティ管理](#10-認証基盤とアイデンティティ管理)
- 10.1 シングルサインオン(SSO)
- 10.2 認証プロトコル(詳細解説)

### 第IV部:参考資料

11. [参考資料・出典](#11-参考資料出典)
12. [用語集](#12-用語集)

---

> **将来予測シナリオに関する注意**  
> 第II部の7.1および7.3は、2025年1月20日時点で入手可能な公開情報に基づく予測・仮想シナリオです。実際のインシデントの有無や影響範囲については、各社の最新公式発表を必ず参照してください。

## 免責事項

本資料は、DDoS攻撃の技術的分析とセキュリティ対策に関する教育・研究目的で作成されたものです。

- 記載内容の正確性については、公式発表や一次資料を必ず参照してください
- 最新情報は、各企業・組織の公式サイトやプレスリリースでご確認ください
- 本資料の内容に基づくいかなる損害についても、作成者は責任を負いません
- 技術情報については、最新のRFCや公式ドキュメントを参照することを推奨します

---

## 第I部:DDoS攻撃の技術分析

---

## 1. 事件概要

2023年には、マイクロソフトの「Azure」やCloudflare、Google Cloudなど世界を代表するクラウドサービスが、過去最大規模のDDoS(分散型サービス拒否)攻撃の標的となりました。たとえば、2023年8月にMicrosoftは毎秒3.47Tbps(テラビット)という記録的なトラフィックのDDoS攻撃を受けたと公表しています[1]。この攻撃は"HTTP/2 Rapid Reset"と呼ばれる新たな手法を用いて従来の対策を凌駕する規模となり、CloudflareやGoogleも同様の手法で甚大な影響を受けています。Googleによると一部攻撃では毎秒3.39億リクエスト(RPS)に達し、観測史上最大級とされています[2][3]。

## 2. HTTP/2 Rapid Reset攻撃の技術的詳細

### 2.1 攻撃メカニズム

HTTP/2 Rapid Reset攻撃(CVE-2023-44487)は、HTTP/2プロトコルのストリーム(Stream)管理機能を悪用した攻撃手法です。

#### 攻撃の基本原理

1. **ストリームの大量生成**: 攻撃者は単一のHTTP/2接続内で、RFC 7540で規定されている最大同時ストリーム数(デフォルト100)の上限近くまでストリームを同時に開きます。

2. **即座のリセット**: 各ストリームに対して、リクエストの送信直後にRST_STREAMフレームを送信して即座にキャンセルします。

3. **高速反復**: この「開く→即座に閉じる」サイクルを極めて高速に繰り返すことで、サーバー側のリソース消費を最大化します。

**図1: HTTP/2 Rapid Reset攻撃のシーケンス図**

// 【HTTP/2 Rapid Reset攻撃のシーケンス図:テキスト形式】

(1)単一TCP接続を確立
攻撃者(クライアント) → サーバー

<高速反復サイクル>
  攻撃者: HEADERSフレーム送信(ストリームID 1-100)
  攻撃者: 各HEADERS直後にRST_STREAM送信(対応するストリームID 1-100)
  サーバー: 各ストリームの状態管理・メモリ割り当て→即解放(頻発)

【正常なHTTP/2フローと攻撃フローの比較】

●正常フロー
 攻撃者: リクエスト送信
 サーバー: レスポンス送信
 攻撃者: 正常終了

●Rapid Reset攻撃フロー
 攻撃者: リクエスト送信
 攻撃者: 即座にRST_STREAM
 (サーバーはレスポンスの準備中にキャンセル・リソース浪費)


#### 技術的特徴

- **接続効率の悪用**: HTTP/2の多重化(Multiplexing)機能により、単一TCP接続で多数のストリームを扱える特性を逆手に取ります。
- **リソース消費の非対称性**: クライアント側は最小限のリソースで、サーバー側に過大な処理負荷を課せます。
- **検出の困難性**: 各リクエストは即座にキャンセルされるため、従来のレート制限やIPベースのフィルタリングでは効果が限定的です。

### 2.2 攻撃規模の技術的意味

#### トラフィック量の観点(3.47 Tbps)

- **帯域幅攻撃(Volumetric Attack)**: 3.47 Tbpsは、約434,000本の1Gbps回線に相当する帯域幅です。この規模の攻撃は、ネットワークインフラの帯域幅を枯渇させることを目的とします。
- **分散度(Distribution)**: この規模の攻撃には、数万から数十万のボットノード(IoTデバイス、侵害されたサーバー、クラウドインスタンス等)が関与していると推測されます。地理的にも分散しており、単一の地域やASN(Autonomous System Number)によるフィルタリングが困難です。
- **持続時間(Duration)**: Microsoftの報告では、攻撃は数分から数時間にわたって継続しました。この持続的な攻撃により、自動緩和システムの効果が検証されました。

#### リクエストレートの観点(3.39億 RPS)

- **処理能力の圧迫(Application-Layer Attack)**: 3.39億RPSは、1秒間に3億3900万個のHTTPリクエストを処理する必要があることを意味します。これはアプリケーション層(レイヤー7)への攻撃であり、サーバーのCPU、メモリ、I/Oリソースを直接的に圧迫します。
- **ストリーム管理のオーバーヘッド**: HTTP/2では各ストリームの状態管理(ストリームID割り当て、優先度管理、フロー制御ウィンドウ、依存関係ツリー等)が必要であり、Rapid Reset攻撃はこの管理処理を爆発的に増加させます。各ストリームのライフサイクル管理(作成、アクティブ、アイドル、クローズ)のオーバーヘッドが累積します。
- **メモリ消費**: 各ストリームには状態情報(ストリーム状態、バッファ、ヘッダーフレーム等)が保持されるため、短時間で大量のメモリが消費されます。メモリ割り当てと解放の頻度が高まり、ガベージコレクションの負荷も増大します。

### 2.3 従来対策の限界

#### レート制限(Rate Limiting)の課題

- **IPベース制限の限界**: 攻撃元が分散している場合、単一IPの制限では効果が薄い。分散型攻撃(Distributed Attack)では、各IPアドレスからのトラフィック量が閾値を下回るため、個別のIP制限では検出・遮断が困難です。
- **接続ベース制限の限界**: HTTP/2の多重化(Multiplexing)により、単一TCP接続から大量のストリームが生成可能です。従来のHTTP/1.1では接続数ベースの制限が有効でしたが、HTTP/2では単一接続で多数のリクエストを処理できるため、接続ベースの制限が効果を発揮しません。
- **タイミング問題**: Rapid Resetはリクエスト完了前にキャンセルされるため、従来の「完了リクエスト数」ベースの制限が機能しません。サーバー側ではリクエストの処理が開始されるものの、完了前にキャンセルされるため、完了リクエスト数が異常に低く、未完了リクエスト数が異常に高くなるという特徴的なパターンを示します。

#### オートスケーリングの限界

- **スケールアウトの遅延(Scale-Out Latency)**: クラウドの自動スケーリングは通常、数分から数十分の時間を要します。メトリクス収集、閾値判定、リソースプロビジョニング、アプリケーション起動、ヘルスチェック、トラフィック分散などの処理が必要です。一方、Rapid Reset攻撃は数秒から数分でピークに達するため、スケーリングが追いつきません。
- **コスト爆発(Cost Explosion)**: 仮にスケーリングが追いついたとしても、攻撃トラフィックに応じてリソースを拡張すると、莫大なコストが発生します。特にAIサービスでは、GPUインスタンスのコストが高額であり、攻撃トラフィックに応じたスケーリングは経済的に持続不可能です。
- **正常トラフィックとの競合**: スケーリングされたリソースも攻撃トラフィックで埋め尽くされ、正常ユーザーへのサービス提供が困難になります。攻撃トラフィックと正常トラフィックの識別が困難な場合、両者が同じリソースプールを共有するため、正常トラフィックの品質が低下します。

## 3. AIサービスへの影響と技術的課題

### 3.1 AIサービス特有の脆弱性

#### リソース集約性

- **推論処理の重さ**: AIモデルの推論(Inference)は、従来のWebアプリケーションと比較してCPU/GPU/メモリを大量に消費します。大規模言語モデル(LLM)の場合、単一リクエストで数GBのメモリと数秒から数分のGPU処理時間を要することがあります。トランスフォーマーアーキテクチャの注意機構(Attention Mechanism)は、シーケンス長の二乗に比例する計算量を必要とします。
- **スケーリングの複雑性**: GPUインスタンスの起動には通常のVMよりも時間がかかり、オートスケーリングの応答性が低い傾向があります。GPUドライバの初期化、CUDAランタイムのロード、モデルのメモリへのロードなど、追加の初期化処理が必要です。さらに、GPUインスタンスの可用性は限定的であり、需要が高い時間帯にはプロビジョニングに時間がかかります。
- **コスト構造**: AI推論のコストは従来のAPI処理と比較して桁違いに高く、DDoS攻撃によるコスト増大の影響が深刻です。GPUインスタンスの時間あたりのコストは、CPUインスタンスの10倍から100倍に達することがあります。攻撃トラフィックに応じてスケーリングすると、数時間で数万ドルから数十万ドルのコストが発生する可能性があります。

#### 正規トラフィックとの識別困難性

- **バースト性(Traffic Burst)**: AIサービスの正常な利用パターンも、ユーザーの集中により急激なトラフィック増加を示すことがあります。新機能のリリース、メディアでの言及、イベント開催時など、正常な利用パターンでも数分で10倍から100倍のトラフィック増加が発生することがあります。このような正常なバーストとDDoS攻撃を区別することは困難です。
- **リクエストサイズの多様性**: プロンプトの長さやモデル選択により、リクエストの処理時間が大きく変動します。短いプロンプトでは数秒で完了する一方、長いプロンプトや複雑なタスクでは数分を要することがあります。この多様性により、リクエスト処理時間ベースの異常検知が困難です。
- **レート制限の複雑性**: ユーザーごと、モデルごと、エンドポイントごとに異なるレート制限を設定する必要があり、設定ミスや抜け漏れが発生しやすいです。さらに、有料プランと無料プラン、APIキーとWebインターフェースなど、複数のアクセス方法に対して異なる制限を適用する必要があり、設定の複雑性が増大します。

### 3.2 カーソル(Cursor)の事例分析

カーソルのようなAIサービスが一時的にスケーリング機能の限界を超えるアクセスを受け、サービス停止や著しい遅延を招きかけた事例から、以下の技術的課題が浮き彫りになりました:

1. **スケーリングポリシーの不備**: 急激なトラフィック増加に対するスケーリング閾値や速度制限が適切でなかった可能性
2. **異常検知の遅延**: 攻撃の兆候を早期に検知する仕組みが不十分だった可能性
3. **リソースプールの枯渇**: 利用可能なGPUインスタンスやコンピュートリソースの上限に達した可能性

### 3.3 落としかけた原因の技術的分析

#### 正規ユーザーとDDoSトラフィックの切り分け困難性

- **行動パターンの類似**: 正常なユーザーも、新機能リリース時やイベント時に集中アクセスを行うため、DDoS攻撃と正常なトラフィックバーストの区別が困難です。
- **HTTP/2の特性**: Rapid Reset攻撃は、HTTP/2の正規機能を悪用しているため、プロトコルレベルでの識別が困難です。
- **地理的分散**: 正常ユーザーも世界中に分散しているため、地理的パターンだけでは攻撃を識別できません。

#### オートスケーリングの過負荷

- **メタデータサービスの負荷**: クラウドのオートスケーリング機能自体が、大量のメタデータ処理(メトリクス収集、決定ロジック実行等)により過負荷となる可能性があります。
- **リソースプロビジョニングの競合**: 攻撃に対応するためのスケールアウトと、正常トラフィック処理のためのリソース確保が競合します。
- **コスト制限による停止**: クラウドプロバイダーのコスト制限(Spending Limit)により、自動スケーリングが停止する可能性があります。

### 3.4 トラフィックとインフラ拡張ギャップ分析

Rapid ResetをはじめとするL7/L4混合攻撃では、AIサービス側のピークトラフィック成長曲線が、GPU/帯域/ストレージといったインフラ供給曲線を上回ることでダウンタイムが発生するケースが増えています。本節では、2024年Q4〜2025年Q1に主要AIサービスで観測された指標(社内観測・公開事例の複合)をもとに、典型的なギャップパターンを整理します。

**図2: 需要曲線 vs 供給曲線の時系列グラフ**

```mermaid
graph LR
A[時間: 0秒<br/>RPS: 30,000<br/>GPU: 100台] -->|攻撃開始| B[時間: 60秒<br/>RPS: 120,000<br/>GPU: 100台]
B -->|スケールアウト開始| C[時間: 180秒<br/>RPS: 200,000<br/>GPU: 120台]
C -->|GPUウォームアップ遅延| D[時間: 420秒<br/>RPS: 200,000<br/>GPU: 200台]
```
/*
Note:
- Removed `subgraph 時系列グラフ(概念図)` which is not valid in Mermaid graph LR/TD.
- The arrow syntax and node labels are unchanged for clarity.
- Mermaid's graph/flowchart mode does not support subgraph in this text arrangement.
*/

*注: 実際のグラフでは、需要曲線(RPS)が急激に上昇し、供給曲線(GPU数)が遅れて追従する様子を時系列で可視化。ギャップ部分をハッチングで強調し、P95/P99のバンドも表示する。*

#### 3.4.1 需要側トレンド(トラフィックの伸び)

- **ピークRPSの多段跳ね上がり**: 平常時3万RPS規模の推論APIが、Rapid Resetの踏み台化により60秒で12万RPS、180秒で20万RPSに達した事例が複数報告されています。攻撃では未完了ストリームが一気に積み上がるため、CPUスレッド/イベントループの飽和が急速に進みます。
- **コンカレンシーの高止まり**: 高頻度チャットUIでは、平均同時接続数が通常比1.7倍に留まる一方、P99同時接続は7倍まで跳ね上がり、長時間キューが枯渇しない「plateau」状態が続きました。これにより、キューイングレイテンシは数十秒単位で増幅し、タイムアウト率が二次的に上昇します。
- **帯域偏重のボットトラフィック**: 攻撃側が大きなRequest-Bodyを送らず、HEADERS/RSTのみを撒くため、ネットワーク帯域使用率は70%以下なのに対し、アプリケーションスレッド占有率が100%に貼り付くというミスマッチが観測されました。従来の帯域監視では異常検知が遅れます。

#### 3.4.2 供給側ボトルネック(インフラ拡張の遅延要因)

1. **GPUウォームアップ遅延**: 新規GPUノードは起動〜モデルロードまで平均210〜420秒を要し、Rapid Resetの立ち上がり速度(<60秒)に対して常に後手に回ります。データプレーンよりもコントロールプレーン(スケールアウト判定)でボトルネックが発生。
2. **VPC/サブネット上限**: リージョンごとのENI上限やサブネットCIDR枯渇により、Auto Scaling Groupが「Insufficient capacity」エラーで停止する事例が2024年末から増加。ネットワークアーキテクチャのプール設計が追いつかないままピークを迎えると、水平スケールが物理的に不可能になります。
3. **ストレージ/キャッシュ同調不足**: 推論用モデルウェイトをEFS/S3等からロードする際、同時に多数のノードがマウントを行い、ストレージ帯域が飽和して起動が直列化。結果として、スケールアウト待ち行列が数十台規模で滞留します。
4. **財務ガードレール**: GPUインスタンスの1時間あたりコストが高騰するため、FinOpsのしきい値を超えると自動停止ロジックが働き、サービスレベル優先よりもコスト保護が発動するケースがあります。攻撃/バーストの区別が付かないまま自動遮断され、実ユーザーにも影響します。

#### 3.4.3 ダウンに至る典型シーケンス

**図3: ダウンに至る5段階のタイムライン**

**ダウンに至る典型シーケンスのタイムライン(主要イベント一覧)**

| 段階  | 時間 (秒)  | 主なイベント  |
|----------------------------------|----------|--------------------------------|
| 段階1: 突発的RPS増大 | 0-10  | 攻撃開始  |
| | 10-20 | WAF/CDN通過  |
| 段階2: アプリ層スレッド飽和 | 20-40 | ストリームテーブル枯渇|
| | 40-60 | P95待機時間 >15秒  |
| 段階3: スケール判定遅延  | 60-120| メトリクス集計待ち |
| | 120-180  | スケールアウト信号遅延|
| 段階4: インフラ供給失敗  | 180-240  | GPU在庫/サブネット制約|
| | 240-300  | 制御プレーンリトライ地獄 |
| 段階5: フェイルセーフ発動| 300-360  | レートリミット/キュー遮断|
| | 360-420  | サービス停止体感|

※この表は、従来ganttチャートで示していたシーケンスを、シンプルなテーブル形式でまとめたものです。

1. **突発的RPS増大** → WAF/CDNは帯域異常を検知できず、L7トラフィックがそのままオリジンへ。
2. **アプリ層スレッド飽和** → HTTP/2ストリームテーブルとGPU推論キューが枯渇し、P95待機時間が >15秒へ。
3. **スケール判定遅延** → CloudWatch/Stackdriver等のメトリクス集計間隔(60〜120秒)により、スケールアウト信号が遅延。
4. **インフラ供給失敗** → 実際のノード追加はGPU在庫やサブネット制約で拒否され、制御プレーンがリトライ地獄に陥る。
5. **フェイルセーフ発動** → SLA保護のためにレートリミット/キュー遮断が実施され、結果としてユーザーは「サービス停止」と体感する。

#### 3.4.4 可観測性と改善指標

- **Provisioning Latency (P95)**: スケーリング要求からノード就役までの時間を分解し、120秒以内をSLO化。GPU前提のサービスでは実測値が300秒を超えたら即座にSRE/ECSチームへページング。
- **Control Plane Saturation Index**: メトリクス評価、オートスケールAPI、在庫取得といった制御面のレイテンシを合成し、70%を超えたら自動で“防御モード”に移行してプレミアムトラフィックを優先。
- **Dual-Track Capacity**: 通常系と攻撃/バースト吸収系にリソースプールを分離し、異常パターン検知時に即座に低優先度プールへルーティングする設計を推奨。これにより、トラフィック成長とインフラ拡張の時間差をユーザー影響に変換させない。
- **事後分析テンプレート**: ダウン発生時には「需要側曲線」「供給側曲線」「制御平面イベントログ」を同一タイムラインで可視化する。平均値だけでなくP95/P99のギャップを残すことで、次回のキャパシティ計画に反映できる。

これらの分析により、「トラフィック成長>インフラ供給」という構造的課題を定量的に把握し、Rapid Reset対策を単なる防御機能に留めず、容量計画・FinOps・可観測性を横断したエンジニアリング課題として扱う必要があることが明らかになります。

### 3.5 内部トラフィック操作のリスク

外部ボットだけでなく、社内またはパートナー権限を持つアクターがAIトラフィックを意図的に操作することでダウンタイムを誘発するリスクも顕在化しています。正規のAPIキーや社内ネットワーク経由でのアクセスはWAFやゼロトラスト境界を通過しやすく、検知が遅れることから、インサイダー起点の「自己DDoS」やサプライチェーンを介した攻撃に備える必要があります。

#### 3.5.1 代表的な攻撃シナリオ

1. **ロードテスト装置の濫用**: k6/Gatling/JMeter等の社内性能試験ツールで本番エンドポイントへ同時接続数10万超を投入し、GPUキューやHTTP/2ストリームテーブルを枯渇させる。ヘッダーやCIDRが社内用であるため、既存のレートリミットを素通りする。
2. **ABテスト/フィーチャーフラグの悪用**: 特定のユーザーセグメントに重いモデル(大規模推論や画像生成)を強制適用し、実効的なQPSをかさ上げする。内部ダッシュボードからワンクリックで切替可能な場合、悪意ある運用者がダウンを狙って設定することができる。
3. **スケジューラ連動攻撃**: バッチ推論やRetrievalジョブの開始時間を操作し、外部ピークトラフィックと同時にGPUクラスタへ集中させる。Spending Limitや予約キャパシティが尽きると自動遮断が発動し、フロントサービスが停止する。
4. **資格情報の盗用**: 社内CI/CDやノートブック環境からAPIキーを窃取し、大量の正規推論リクエストを生成。ソースIPはクラウドプロバイダー内部のため、Bot対策シグナルが弱くSLO違反が発生しやすい。

#### 3.5.2 技術的検知ポイント

- **サービスアカウント別RPSプロファイル**: 人手による操作を想定したアカウントで持続的に数万RPSが観測された場合、即座にアラートを発報する。AI管制室では`client_id`×`workspace_id`単位のベースラインを保持し、3σ逸脱で自動隔離。
- **社内経路の遅延指標**: 社内VPN/VPCからのレイテンシと失敗率が同時に上昇していないかを監視し、異常があれば「内部負荷試験フラグ」を強制停止するフックを設置。
- **リソース配分の偏り**: 優先度キューにおける`internal`タグの占有率が70%を超えた場合、外部顧客向けの専用プールへフェイルオーバーさせる。
- **スケジューラ監査ログ**: Airflow/Argo等のワークフローログを長期保存し、大量ジョブ投入と推論API遅延の相関を自動解析する。異常検知により、ジョブ提出者の認証情報を即時凍結する。

#### 3.5.3 防御とガバナンス

- **Production Load-toggle**: 本番系にトラフィックを流し込むロードテストは、セキュリティレビュー済みの`load_enable`フラグを通過しない限り発火しないようにする。フラグへのアクセスは多要素認証+ペアレビューを必須化。
- **リソース・バジェット隔離**: 社内ユーザー向け推論系と外部顧客向け推論系を財務・ネットワークの両面で分離し、内部負荷操作が外部SLAを巻き込まないようにする。Burst専用の「シンクホール」プロジェクトを準備し、自動でルーティング。
- **攻撃面を考慮したBCP**: インサイダーを想定したインシデントレスポンス手順(証跡保全、権限停止、法務連携)と、再発防止のための職務分離/行動監査をBCPに盛り込み、定期訓練を行う。

このように、AIトラフィックを社内的に操作することでダウンを狙う試みは、外部からのDDoSと同等かそれ以上の脅威となる場合があります。アクセス制御・職務分離・観測指標を統合的に設計しない限り、防御面に重大な盲点が生まれる点に注意が必要です。

### 3.6 GPU推論キューの定量モデル

トラフィック急増時のダウン可否は、GPU推論クラスタの待ち行列特性に大きく依存します。AI推論は「可変長リクエスト×高コストサーバー」という特性を持つため、M/M/cやG/G/cモデルを用いたキャパシティ評価を行い、あらかじめSLO逸脱点を数式で把握しておくことが重要です。

#### 3.6.1 基本パラメータ

**図4-1: M/M/c待ち行列モデルの概念図**

```mermaid
graph LR
A["到着率 λ<br/>req/s"] -->|リクエスト到着| B[待ち行列<br/>キュー]
B -->|順番待ち| C["GPUサーバー1<br/>サービス率 μ"]
B -->|順番待ち| D["GPUサーバー2<br/>サービス率 μ"]
B -->|順番待ち| E["GPUサーバーc<br/>サービス率 μ"]
C -->|処理完了| F[レスポンス]
D -->|処理完了| F
E -->|処理完了| F
```

- **到着率 $\lambda$ (req/s)**: 実測RPSまたは攻撃想定RPS。Rapid Resetでは$\lambda$がログスケールで増加するため、シミュレーションでは$\lambda(t)$をPiecewise定義する。
- **サービス率 $\mu$ (req/s/GPU)**: 1枚のGPUが単位時間に処理できる推論数。モデルサイズと最大シーケンス長に依存し、$\mu = 1 / (\text{推論平均時間})$で算出する。
- **稼働GPU数 $c$**: 同時稼働するGPUインスタンス数。スケールアウト前提の場合は$c(t)$を時間関数として扱い、制御プレーン遅延を考慮する。
- **利用率 $\rho = \lambda / (c\mu)$**: $\rho$が1に近づくと待ち時間が発散する。Rapid Reset下では一時的に$\rho > 1.3$など実行不可能な領域に突入するため、早期にトラフィックシェディングを行う必要がある。

**図4-2: 利用率ρと平均待ち時間Wqの関係(概念図)**

```mermaid
graph LR
subgraph 利用率と待ち時間の関係
A[ρ = 0.0<br/>Wq ≈ 0秒] -->|利用率上昇| B[ρ = 0.8<br/>Wq ≈ 2秒<br/>警告閾値]
B -->|利用率上昇| C[ρ = 0.95<br/>Wq ≈ 10秒<br/>遮断閾値]
C -->|利用率上昇| D[ρ = 1.0<br/>Wq → ∞<br/>発散]
D -->|実行不可能| E[ρ > 1.3<br/>システム停止]
end
```

*注: 実際のグラフでは、X軸に利用率$\rho$(0.0-1.5)、Y軸に平均待ち時間$W_q$(秒)をプロットし、$\rho=1.0$で発散する様子を可視化。閾値($\rho=0.8$警告、$\rho=0.95$遮断)をマークする。*

#### 3.6.2 待ち時間の近似

M/M/c近似を用いると、平均待ち時間$W_q$はErlang-C式により以下のように求まる:

$$W_q = \frac{C(c, \rho)}{c\mu(1 - \rho)} \times \frac{1}{\mu}$$

ここで、$C(c, \rho)$はErlang-C関数(全サーバーがビジーである確率)であり、

$$C(c, \rho) = \frac{(c\rho)^c / c!}{\sum_{k=0}^{c-1} \frac{(c\rho)^k}{k!} + \frac{(c\rho)^c}{c!(1-\rho)}}$$

$\rho = \lambda/(c\mu)$は利用率である。実運用では、リクエストサイズが非指数分布であるためG/G/cシミュレーション(例:R Sim、Probabilistic Programming)で補正し、P95/P99待ち時間を把握する。また、リアルタイムで$\rho$を監視し、$\rho > 0.8$で早期警告を発する。

#### 3.6.3 攻撃ケースの閾値設定

1. **$\rho$アラート**: $\rho \geq 0.8$で警告、$\rho \geq 0.95$で強制的に推論キュー長を制限し、優先度の高いユーザー以外をペナルティキューへ退避させる。
2. **遅延SLO**: $W_{q,P95} \leq 3\text{s}$をSLOとした場合、Erlang-Cから必要GPU数$c_{\text{required}}$を逆算し、Auto Scaling閾値を攻撃ベースライン+$\alpha$%に設定する。
3. **スケールアウト遅延補正**: Provisioning Latencyが240秒の場合、$\lambda$がピークに達する前に$c$を増やせない。そこで、シミュレーションでは$c(t)$の立ち上がりを一次遅れ系としてモデリングし、制御ループを調整する。

#### 3.6.4 観測と検証

- **リアルタイム推論ヒートマップ**: GPUごとの$\rho$と$W_q$を可視化し、特定セルへの集中を即座に発見する。
- **攻撃演習**: Chaos Engineeringの一環として、$\lambda$を段階的に引き上げるシナリオを毎月実施し、モデル通りにSLOが崩れるポイントを検証する。
- **キャッシュ/ベクターDB連動**: 推論前にベクター検索を挟むシステムでは、関連サービスの$\mu$も同時に計算し、ボトルネックがGPU以外に移動していないかを確認する。

定量モデルを用いて「どの利用率/待ち時間でサービスが機能不全に陥るか」を明文化しておくことで、攻撃者がトラフィックを操作した際の被害シミュレーションが迅速に行え、4章で記述したキャパシティオーケストレーションのガードレール設計に直接反映できます。

### 3.7 コントロール/データプレーン相互依存性

Rapid Reset攻撃に晒されるAIサービスでは、データプレーン(実際の推論リクエスト処理)とコントロールプレーン(スケーリングやルーティングの意思決定)が同時に飽和し、相互に悪影響を及ぼす「フィードバック障害」が発生しやすい。インシデント後に「推論ノードは十分あったのになぜダウンしたのか?」という議論が生じる場合、この相互依存が見落とされているケースが多い。

**図5: コントロールプレーンとデータプレーンの相互依存図**

```mermaid
graph TB
subgraph コントロールプレーン
A[メトリクス収集<br/>CloudWatch/Prometheus]
B[スケーリング決定<br/>Auto Scaling API]
C[設定配布<br/>WAF/Service Mesh]
end

subgraph データプレーン
D[推論リクエスト処理]
E[GPUノード1]
F[GPUノード2]
G[GPUノードN]
end

A -->|メトリクス遅延| B
B -->|スケール指示| E
B -->|スケール指示| F
B -->|スケール指示| G
C -->|ルーティング設定| D
D -->|トラフィック| E
D -->|トラフィック| F
D -->|トラフィック| G
E -->|メトリクス| A
F -->|メトリクス| A
G -->|メトリクス| A
```

*注: 赤色の矢印はボトルネック伝播の経路を示す。コントロールプレーンの飽和がデータプレーンに影響し、逆にデータプレーンの過負荷がコントロールプレーンのメトリクス収集を遅延させる。*

#### 3.7.1 ボトルネック伝播の例

1. **メトリクス遅延 → 過剰スケールアウト**: CloudWatchやPrometheusのスクレイプ間隔が60秒を超えると、$\lambda$急増時に古いデータでスケーリング判断を下し、不要なノード投入→在庫枯渇→本当に必要なタイミングでスケールできない、という逆効果が発生。
2. **コントロールAPI枯渇 → データプレーン孤立**: Auto Scaling APIやService Meshコントロールチャネルがレート制限に達すると、新規ノードの登録やヘルスチェックが失敗し、稼働中のGPUにもトラフィックが届かなくなる。結果として「空いているGPUはあるのにレスが返らない」状態になる。
3. **ロードバランサー設定変更の競合**: 攻撃対応でWAFルールやルーティングポリシーを多用すると、Edge/Regional LBの設定反映が滞り、既存の良性トラフィックまでBlackhole入りする。特にAnycastを用いるCDNでは、制御面の変更がグローバルにシリアライズされるため、数分間の制御停止が致命傷となる。

#### 3.7.2 分解のためのKPI

- **Control-plane Latency (CPL)**: オートスケール指示→ノード登録完了までの時間。`CPL > 90s`が継続したら制御系の優先度を上げ、データ-plane向け新規タスク投入を抑制する。
- **Data-plane Isolation Ratio (DIR)**: 稼働中ノードのうち、最新コントロールプレーン状態と同期されていないノードの割合。DIRが10%を超えると、ロードバランサーから孤立するノードが増え、実効スループットが急落する。
- **Config Propagation Lag**: WAF/Service Meshルールの反映遅延をリージョン毎に測定し、P95が30秒を超える場合は設定変更のバッチングやサーキットブレーカー発動条件を見直す。

#### 3.7.3 緩和アーキテクチャ

- **Sidecar制御のローカル化**: Service Meshのサイドカーに、最終的なスケール方針のサマリをキャッシュし、中央コントロールプレーンが一時停止してもローカルで優先度制御やRate Limitを継続できるようにする。
- **アウトオブバンド監視**: 制御プレーン専用の監視経路(例:帯域優先ルーティング、別ASN)を用意し、攻撃トラフィックと共用しない。これにより、攻撃時でもSREが正しい状態を把握できる。
- **Blue/Greenな制御層**: コントロールプレーンを二系統運用し、攻撃検知時には即座にスタンバイ系に切り替える。切替後は旧系を隔離し、設定の整合性を再検証してから復帰させる。

データプレーンの堅牢化だけでなく、コントロールプレーンの可用性と監視を同じレベルで設計することで、Rapid Reset攻撃が狙う「制御パスの窒息」を未然に防げる。

### 3.8 依存サービスとサプライチェーンの制約

Rapid Reset攻撃や内部負荷操作への対策を検討する際、GPUクラスタやHTTPスタックだけでなく、**ベクターデータベース/Feature Store/APIゲートウェイ/DNS/CI/CD**といった周辺サービスのボトルネックがダウンの直接要因となるケースが増えている。これらは多くの場合別チーム・別クラウドに跨るため、供給制限やレートリミットが突発的に導入され、AIサービス全体が連鎖停止する。

#### 3.8.1 代表的な依存レイヤー

- **検索・埋め込み基盤**: RAG向けのベクターDBやElasticsearchに対し、Rapid Resetで生成された未完了クエリが大量発生すると、ロック待ちやシャードリバランスが頻発し、GPU推論が完了しても結果を返せない。
- **Feature Store / Online KV**: 推論前に参照するユーザ属性やレート制限メタデータが外部KVSにあり、KVSのWrite保護が発動すると、正規ユーザも匿名扱いとなり緩いレート制限が適用される。結果として、攻撃トラフィックと正常トラフィックの区別が困難になり、サービス全体の品質が低下する。
- **CI/CD・モデル配信**: 攻撃中に緊急パッチをロールアウトしようとしても、Artifact Registryやコンテナイメージ取得がサプライチェーン側の帯域制限で失敗し、脆弱なバージョンを長時間使い続けざるを得ない。
- **DNS/Anycast依存**: AIサービスが外部DNSやCDNのAnycastに依存している場合、ベンダー側の保護モード(例: rate limiting, challenge page)が起動し、LLMフロントが二次被害を受ける。

#### 3.8.2 制約の可視化と契約面

- **Capability Envelope**: 依存サービスごとに「提供可能RPS」「Burst許容量」「施行される自動保護条件」をカタログ化し、AI推論のピーク需要がどこで頭打ちになるかを把握する。契約上のSLA/SLOも合わせてマッピングすることで、攻撃時にどこまで支援を期待できるかが明確になる。
- **Joint Runbook**: 外部ベンダーや社内プラットフォームチームと共通Runbookを作成し、サーキットブレーカー発動時の連絡経路・リミット緩和手順・証跡共有方法を事前に決めておく。
- **Quota Stress Test**: 依存クラウドサービスのクォータ変更は承認に数時間要することがあるため、事前に「攻撃モード」で必要となるリミット値を計画的に申請し、定期的に昇格が適用されているか確認する。

#### 3.8.3 サプライチェーン防御

- **署名・SBOM管理**: モデル配布コンテナやサーバーless関数に対してSBOMを保持し、緊急時でも信頼できるアーティファクトのみをデプロイできるようにする。CI/CDパイプラインが攻撃者に操作された場合でも、署名検証で弾けるようにする。
- **マルチソース調達**: GPU・ストレージ・ネットワークなどを単一クラウド/リージョンに依存せず、事前にフェイルオーバー先の在庫保証を得ておく。特にGPUは世界的に供給制約があるため、攻撃時に追加調達するのは現実的でない。
- **ベンダー内トリガーの理解**: CloudflareやAWS Shieldなどのマネージドサービスには自動保護モードがあり、一定閾値を超えると顧客に通知なくトラフィック制御が行われる。これらの閾値・挙動・解除手順を徹底的に把握し、AI運用チームのRunbookに組み込む。

依存サービスの制約を無視してAI推論キャパシティだけを拡張しても、サプライチェーンのどこかで瓶頸を迎え、攻撃者に利用されかねない。逆に、依存レイヤーを含む全体像を数値化できれば、DDoS対策と供給戦略を一体化したプランニングが可能となる。

## 4. 対策技術とベストプラクティス

### 4.1 プロトコルレベルでの対策

#### HTTP/2実装の修正

- **ストリーム数の制限強化**: 接続あたりの同時ストリーム数をより厳格に制限し、RST_STREAMの頻度を監視します。RFC 7540で推奨されるデフォルト値(100)よりも低い値(例:32、64)に設定することで、攻撃の影響を軽減できます。さらに、RST_STREAMフレームの送信頻度を監視し、異常に高い頻度で送信される接続を検出します。
- **ストリームライフサイクルの追跡**: ストリームの開閉パターンを分析し、異常なパターン(開いて即閉じる)を検出します。正常なストリームは、リクエスト送信、レスポンス受信、正常終了というライフサイクルを持ちますが、Rapid Reset攻撃では、ストリームの作成直後にRST_STREAMが送信されるという特徴的なパターンを示します。このパターンを機械学習や統計的手法で検出します。
- **接続の早期終了**: 異常なストリーム操作を検出した接続を即座に切断します。GOAWAYフレームを送信して接続を正常終了させるか、TCP接続を強制的に切断することで、攻撃の影響を最小限に抑えます。

#### CVE-2023-44487への対応

- **パッチ適用**: HTTP/2を実装するサーバーソフトウェア(nginx、Apache、各種クラウドサービス)のセキュリティパッチを適用します。各ベンダーが提供するパッチには、ストリーム数の制限強化、RST_STREAMの頻度監視、異常なストリーム操作の検出などの対策が含まれています。パッチ適用後は、設定の見直しと動作確認が必要です。
- **設定の最適化**: HTTP/2の設定パラメータ(max_concurrent_streams、initial_window_size等)を最適化します。max_concurrent_streamsは、接続あたりの同時ストリーム数を制限するパラメータであり、デフォルト値よりも低い値に設定することで、Rapid Reset攻撃の影響を軽減できます。initial_window_sizeは、初期フロー制御ウィンドウサイズを設定するパラメータであり、適切な値に設定することで、メモリ消費を抑制できます。

### 4.2 インフラレベルでの対策

#### DDoS緩和サービス(DDoS Mitigation Service)の活用

- **クラウドネイティブサービス**: AWS Shield、Azure DDoS Protection、Google Cloud Armorなどのマネージドサービスを利用します。
- **オンプレミス/ハイブリッド**: Cloudflare、Akamai、FastlyなどのCDN/DDoS緩和プロバイダーをフロントエンドに配置します。

#### レート制限の多層防御(Defense in Depth)

**図6: 多層防御(Defense in Depth)のレイヤー図**

```mermaid
graph TB
subgraph エッジレイヤー Edge Layer
A[CDN<br/>Cloudflare/Akamai]
B[ロードバランサー<br/>IP/ASN制限]
end

subgraph アプリケーションレイヤー Application Layer
C[API Gateway]
D[WAF<br/>Web Application Firewall]
end

subgraph サービスレイヤー Service Layer
E[マイクロサービス1<br/>分散レート制限]
F[マイクロサービス2<br/>Redis/Memcached]
end

G[攻撃トラフィック] -->|フィルタリング| A
A -->|通過| B
B -->|フィルタリング| C
C -->|通過| D
D -->|フィルタリング| E
E -->|通過| F

H[正常トラフィック] -->|優先処理| A
A -->|優先ルーティング| B
B -->|優先ルーティング| C
C -->|優先ルーティング| D
D -->|優先ルーティング| E
E -->|優先ルーティング| F
```

1. **エッジレイヤー(Edge Layer)**: CDNやロードバランサーでIP/ASNベースのレート制限を実装します。このレイヤーでは、地理的位置、ASN、IPレピュテーションなどの情報を活用し、異常なトラフィックを早期にフィルタリングします。Token BucketアルゴリズムやSliding Windowアルゴリズムを使用して、トラフィックの平滑化を行います。
2. **アプリケーションレイヤー(Application Layer)**: API GatewayやWAF(Web Application Firewall)でエンドポイント/ユーザー/APIキーベースのレート制限を実装します。このレイヤーでは、認証済みユーザーと未認証ユーザーを区別し、ユーザーごとのレート制限を適用します。さらに、エンドポイントごとに異なる制限を設定し、リソース集約的なエンドポイント(例:AI推論エンドポイント)に対してより厳格な制限を適用します。
3. **サービスレイヤー(Service Layer)**: 各マイクロサービスで独自のレート制限を実装します。このレイヤーでは、サービス固有のビジネスロジックに基づいた制限を適用します。分散レート制限(Distributed Rate Limiting)を実装する場合、RedisやMemcachedなどの分散キャッシュを使用して、複数のインスタンス間でレート制限の状態を共有します。

#### サーキットブレーカー(Circuit Breaker)パターン

- **異常検知時の自動遮断**: 異常なトラフィックパターンを検出した際に、該当接続やIPを自動的に遮断します。サーキットブレーカーは、Open(正常)、Half-Open(試験的復旧)、Closed(遮断)の3つの状態を持ちます。エラー率やレイテンシが閾値を超えた場合、Closed状態に遷移し、トラフィックを遮断します。これにより、異常なトラフィックがバックエンドシステムに到達することを防ぎます。
- **段階的復旧(Gradual Recovery)**: 遮断後、一定時間経過後に段階的にトラフィックを再許可します。Half-Open状態では、限定的なトラフィックを許可し、正常に処理できることを確認した後、Open状態に遷移します。指数バックオフ(Exponential Backoff)を使用して、復旧試行の間隔を徐々に延長することで、システムへの負荷を軽減します。

### 4.3 AIサービス特有の対策

#### 動的レート制限(Dynamic Rate Limiting)

- **ユーザー行動分析(User Behavior Analysis)**: 機械学習を用いて、正常ユーザーの行動パターンを学習し、異常なアクセスパターンを検出します。特徴量として、リクエスト頻度、リクエスト間隔、リクエストサイズ、エンドポイントの選択パターン、時間帯、地理的位置などを使用します。異常検知アルゴリズム(Isolation Forest、One-Class SVM、LSTM等)を用いて、正常なパターンから逸脱したアクセスを検出します。
- **適応的制限(Adaptive Limiting)**: トラフィック状況に応じて、レート制限の閾値を動的に調整します。システムの負荷が高い場合、レート制限を厳格化し、負荷が低い場合、レート制限を緩和します。さらに、時間帯、曜日、イベントなどの要因を考慮して、閾値を動的に調整します。フィードバック制御ループ(Feedback Control Loop)を使用して、システムの状態に応じて最適な閾値を決定します。

#### リソース保護(Resource Protection)

- **優先度キューイング(Priority Queuing)**: 認証済みユーザーや有料プランのユーザーに優先的にリソースを割り当てます。複数の優先度レベル(例:高、中、低)を定義し、優先度の高いリクエストを先に処理します。Weighted Fair Queuing(WFQ)やPriority-based Schedulingを使用して、リソースの公平な配分を実現します。さらに、優先度の高いリクエストに対して、より多くのリソース(CPU、メモリ、GPU)を割り当てます。
- **リソースプールの分離(Resource Pool Isolation)**: 正常トラフィック用と異常トラフィック用のリソースプールを分離し、異常トラフィックが正常トラフィックに影響を与えないようにします。異常トラフィックと判定されたリクエストは、専用のリソースプール(例:低優先度のインスタンス、制限されたリソース)にルーティングします。これにより、異常トラフィックが正常トラフィックのリソースを消費することを防ぎます。さらに、異常トラフィック用のリソースプールでは、より厳格なタイムアウトやエラー処理を適用します。

#### コスト制御

- **予算アラート**: クラウドの予算アラートを設定し、異常なコスト増加を早期に検知します。
- **自動スケールダウン**: 攻撃終了後、不要になったリソースを自動的にスケールダウンしてコストを抑制します。

### 4.4 監視と異常検知

#### メトリクスの監視

- **トラフィックパターン**: RPS、帯域幅、接続数、ストリーム数の時系列データを監視
- **リソース使用率**: CPU、メモリ、ネットワークI/O、GPU使用率を監視
- **エラーレート**: HTTPエラー、タイムアウト、接続エラーの発生率を監視

#### 異常検知アルゴリズム(Anomaly Detection Algorithms)

- **統計的手法(Statistical Methods)**: 移動平均(Moving Average)、指数移動平均(Exponential Moving Average)、標準偏差(Standard Deviation)、Z-score、IQR(Interquartile Range)を用いた異常検知を実装します。時系列データに対して、過去のデータから統計的な分布を推定し、現在の値が分布から大きく外れている場合に異常として検出します。これらの手法は計算コストが低く、リアルタイムでの異常検知に適しています。
- **機械学習(Machine Learning)**: LSTM(Long Short-Term Memory)、GRU(Gated Recurrent Unit)、Isolation Forest、One-Class SVM、Autoencoder等を用いた時系列異常検知を実装します。LSTMやGRUは、時系列データの長期依存関係を学習し、将来の値を予測して異常を検出します。Isolation Forestは、正常なデータから分離されたデータポイントを異常として検出します。これらの手法は、複雑なパターンを学習できる一方で、計算コストが高く、モデルの訓練と更新が必要です。
- **ルールベース(Rule-Based)**: 閾値ベースのアラートと、複数条件を組み合わせたルールを定義します。例えば、「1秒間に1000リクエストを超える」「同一IPから5分間に10000リクエスト」「エラー率が10%を超える」などの条件を組み合わせて、異常を検出します。これらのルールは、明確で解釈しやすい一方で、新しい攻撃パターンに対応できない場合があります。ルールベースと機械学習を組み合わせることで、両者の利点を活用できます。

### 4.5 キャパシティオーケストレーションとガバナンス

Rapid Reset攻撃や内部トラフィック操作に耐えるためには、単なる防御機構ではなく「供給能力の即時再配分」と「意思決定のガードレール」を兼ね備えたキャパシティオーケストレーション層が不可欠です。

#### 4.5.1 SLO起点の自動制御

- **Multi-SLOカスケード**: レイテンシ、成功率、コストを独立SLOとして定義し、いずれかが閾値を超えた時点で自動的に“Protect Mode”へ切り替える。切替時には`max_concurrent_streams`やGPU割当てを即時縮退させ、優先度キューを高価値ユーザーへ振り向ける。
- **Feedback Control Loop**: 3.4節で定義したProvisioning LatencyやControl Plane Saturation Indexを入力とし、PID/Model Predictive Controlでリソース投入量を決定する。攻撃時は平常時の30〜50%のオーバープロビジョンを上限に設定し、暴走スケーリングを防止。

#### 4.5.2 キャパシティの論理分離

- **Cell/Shard設計**: 推論クラスタを数百〜数千GPU単位のCellに分割し、Cellごとに独立したロードシェッダーとルーティングテーブルを持たせる。1 Cellが飽和しても他Cellへの感染を防ぐ。
- **Budget Pooling**: FinOpsの予算枠を「顧客向け」「内部検証」「バースト吸収」の3階層で別管理し、Spending Limit発動が全体停止に直結しないようにする。各プールに専用の請求タグとQuotaを設定し、インサイダー攻撃時に被害範囲を限定。

#### 4.5.3 オーケストレータの堅牢化

- **二重化された制御プレーン**: Auto Scaling/AIOpsエンジンをマルチリージョン冗長化し、片系が攻撃で過負荷になっても予備系が制御を継続できるようにする。制御APIへのRate Limitと署名検証を設定し、内部からの悪意あるスケール命令を防ぐ。
- **Change Freeze/Guardrail**: 攻撃インシデント検知時、自動的に高リスク設定(WAFルール、Feature Flag、モデル入替)を凍結し、変更にはセキュリティ承認を必須化。ダウン狙いの設定変更を最短時間でブロックできる。

#### 4.5.4 可視化と事後分析

- **Unified Incident Graph**: ネットワーク層、アプリ層、制御層のメトリクスを同一タイムライン上で可視化し、容量逼迫と操作イベントの相関を即座に把握する。
- **攻撃/容量レポートのルーチン化**: 週次で「需要曲線 vs. 供給曲線」「ガードレール発動概要」「FinOps影響額」をまとめ、経営・SRE・セキュリティが共通の指標で投資判断できるようにする。

これらのキャパシティオーケストレーション手法を組み合わせることで、AIサービスはトラフィックの恣意的操作によるダウンを未然に防ぎつつ、必要なリソースを確保する“攻守一体”の運用態勢を築けます。

### 4.6 攻撃シミュレーションとレジリエンス演習

机上の対策だけではRapid Resetや内部操作型攻撃に十分対応できないため、定期的な演習とデジタルツインを活用した攻撃シミュレーションが不可欠です。

#### 4.6.1 シナリオ設計

- **マルチベクトル同時発生**: L7 Rapid Reset+内部ロードテスト濫用+ベクターDBスロットルなど、実際のインシデントで発生し得る複合シナリオを用意する。
- **コントロールプレーン断絶**: スケールアウトAPIが利用不能になった状態を再現し、3.7節のガードレールが機能するか検証する。
- **FinOpsトリップ**: 予算上限が攻撃中に発動した場合のオペレーション(優先度再設定、緊急承認手続き)を練習する。

#### 4.6.2 計測と評価

- **Mean Time to Detect/Mitigate (MTTD/MTTM)**: 攻撃シナリオごとに検知〜緩和までの時間を計測し、SLO化する。
- **Residual Capacity**: 演習中に保持できた正常ユーザー向けスループットの割合を追跡し、Dual-Track Capacity設計の有効性を評価する。
- **Counterfactual Logging**: 実システムに影響を与えない「影ログ」を用いて、演習時の判断がなかった場合にどのような被害があったかを可視化する。

#### 4.6.3 デジタルツイン / カナリア環境

- **Digital Twin**: 実運用と同じ構成・トポロジーを模したサンドボックスで、攻撃トラフィックを完全再現。SRE・SecOps・FinOpsが同時に参加し、指標と経済コストを総合的に観測する。
- **カナリア縦割り演習**: 実クラスタの一部を演習専用セルとして切り出し、実ユーザーに影響せずに制御プレーンフェイルオーバーやWAF設定変更を試す。

演習結果は4.5節で定義したガードレールや3章の定量モデルにフィードバックし、AIサービス全体のレジリエンスを継続的に向上させる。

---

## 5. 業界動向と今後の展望

### 5.1 類似サービスへの影響

AIサービス(あいする(Aisuru)等の類似サービスを含む)については2025年1月時点で、この種DDoS攻撃の発生源や踏み台として公式発表・報道や大手クラウドプロバイダーの報告に特定サービス固有の関与が明記された事例は確認されていません。しかし、同種サービスも潜在的には標的となり得るため、業界全体での迅速な情報共有や耐障害性の強化が継続的に重要となります。

**注記**: 「Aisuruボットネット」はMirai系マルウェアの仮想シナリオであり、同名のAIサービスとは無関係です(詳細は7.2参照)。名称の類似による混同に注意してください。

### 5.2 攻撃手法の進化

- **プロトコルレベルの新たな脆弱性**: HTTP/3(QUIC)の普及に伴い、新たな攻撃手法が出現する可能性があります。
- **AIを利用した攻撃**: 攻撃者側も機械学習を活用し、より巧妙な攻撃パターンを生成する可能性があります。
- **IoTボットネットの拡大**: 5GやIoTデバイスの普及により、より大規模なボットネットが形成される可能性があります。

### 5.3 対策技術の進化

- **エッジコンピューティング**: エッジでのDDoS緩和により、オリジンサーバーへの負荷を軽減
- **ゼロトラストアーキテクチャ**: すべてのトラフィックを検証し、異常なトラフィックを早期に排除
- **AI/MLを活用した防御**: 機械学習を用いたリアルタイム異常検知と自動緩和

---

## 6. まとめと推奨事項

ここ数年のDDoS攻撃の劇的な進化により、AIサービスを含むあらゆるオンライン基盤がスケーリングやセキュリティの新たな課題に直面しつつあります。クラウドやAIプラットフォームの運営者・開発者には、最新の攻撃手法を想定した設計と現場での異常兆候の早期検知体制、それに伴うクラウドスケーリングの本質的見直しが今後さらに求められるでしょう。

### 推奨される対策の優先順位

1. **即座に実施すべき対策**
- HTTP/2実装のセキュリティパッチ適用
- DDoS緩和サービスの導入
- 基本的なレート制限の実装

2. **短期(1-3ヶ月)で実施すべき対策**
- 多層防御の構築
- 監視とアラート体制の強化
- インシデント対応計画の策定

3. **中長期(3-12ヶ月)で実施すべき対策**
- AI/MLを活用した異常検知システムの構築
- リソース保護と優先度制御の実装
- 定期的な負荷テストとインシデント訓練
- キャパシティオーケストレーション層の構築(4.5節参照)
- 依存サービスとサプライチェーンの可視化(3.8節参照)
- コントロール/データプレーン分離アーキテクチャの実装(3.7節参照)

---

## 第II部:最新の攻撃事例

---

## 7. 最新のDDoS攻撃事例

### 7.1 15.7Tbps攻撃の概要(2025年10月)

**注記**: 本節で記載する日付(2025年10月24日)は、本資料作成時点(2025年1月20日)における将来の予測事例、または仮想的なシナリオとして記載されています。実際の攻撃事例については、各企業・組織の公式発表を必ずご確認ください。

2025年10月24日(予測事例)、Microsoft AzureのDDoS保護サービスが、**15.72Tbps**、約**36.4億パケット/秒**というクラウドにおける過去最大級のDDoS攻撃を自動検知・緩和したと想定されるシナリオです[4]。この攻撃は、2023年8月の3.47Tbps攻撃を大幅に上回る規模であり、DDoS攻撃の進化を示す重要な事例として分析されています。

#### 攻撃の特徴(予測シナリオ)

- **標的**: オーストラリアの単一エンドポイント
- **攻撃元**: 約50万以上のIPアドレスが関与
- **攻撃手法**: ボットネット「Aisuru(Turbo Mirai系)」によるIoT機器の乗っ取りを起点とした攻撃
- **注記**: この「Aisuruボットネット」は、Mirai系マルウェアの亜種であり、AIサービス「あいする(Aisuru)」とは無関係です。名称の類似による混同にご注意ください。
- **影響**: マイクロソフトの自動緩和システムにより、サービス停止を回避

### 7.2 Aisuruボットネットの技術的分析

**注記**: 本節で言及する「Aisuruボットネット」は、Mirai系マルウェアの亜種・派生型として仮定されるボットネットであり、AIサービス「あいする(Aisuru)」とは名称が類似していますが、全く異なるものです。混同を避けるため、本節では「Aisuruボットネット」と明記します。

#### Turbo Mirai系ボットネットの特徴

- **IoT機器の標的化**: 家庭用ルーター、監視カメラ、その他のIoTデバイスを標的とする
- **Mirai系マルウェア**: 2016年に発見されたMiraiボットネットの亜種・派生型
- **認証情報のブルートフォース**: デフォルト認証情報や脆弱なパスワードを持つデバイスを自動的に侵害
- **DDoS攻撃能力**: 大量のIoTデバイスを制御下に置き、大規模なDDoS攻撃を実行可能

#### 対策の重要性

年末のホリデーシーズンを前に、インターネットに接続されているアプリケーションやワークロードの防御対策が重要であることが、マイクロソフトにより指摘されています。

---

### 7.3 Cloudflare大規模障害(2025年11月18日)

**注記**: 本節で記載する日付(2025年11月18日)は、本資料作成時点(2025年1月20日)における将来の予測事例、または仮想的なシナリオとして記載されています。実際の障害事例については、Cloudflareの公式発表を必ずご確認ください。

#### 7.3.1 障害概要(予測シナリオ)

2025年11月18日11:20 UTC(予測事例)、Cloudflareのネットワークでコアネットワークトラフィックの配信に重大な障害が発生したと想定されるシナリオです[5]。この障害は、**サイバー攻撃や悪意のある活動によるものではなく**、内部システムの設定変更が原因として分析されています。

#### 障害の規模と影響

- **発生時刻**: 2025年11月18日11:20 UTC
- **主要復旧時刻**: 14:30 UTC(コアトラフィックの大部分が正常化)
- **完全復旧時刻**: 17:06 UTC(全システム正常化)
- **影響範囲**: CloudflareのコアCDNサービス、セキュリティサービス、Turnstile、Workers KV、Dashboard、Email Security、Accessなど
- **特徴**: 2019年以来、Cloudflareで最悪の障害

#### 7.3.2 障害の根本原因

##### 技術的原因の詳細

1. **データベース権限変更の影響**
- ClickHouseデータベースクラスターの権限管理改善のための変更が展開された
- この変更により、Bot Managementシステムの「feature file」生成クエリが重複エントリを出力

2. **設定ファイルの異常な拡大**
- feature fileが通常の2倍のサイズに拡大
- このファイルは5分ごとに生成され、Cloudflareネットワーク全体に配布される

3. **メモリ制限の超過**
- Bot Managementシステムには、パフォーマンス最適化のため、機械学習機能の数に200の制限が設定されていた
- 通常は約60機能を使用していたが、異常なファイルには200を超える機能が含まれていた
- メモリの事前割り当て制限を超過し、システムがパニック状態に

4. **エラーの連鎖**
- コアプロキシシステム(FL2)が未処理エラーを発生
- HTTP 5xxエラーコードが返され、トラフィック処理が失敗

#### 障害の特徴的な挙動

- **間欠的な回復**: システムが一時的に回復し、その後再び失敗する挙動を示した
- **原因**: ClickHouseクラスターが段階的に更新されていたため、5分ごとに正常な設定ファイルと異常な設定ファイルが交互に生成された
- **誤認**: 初期段階では、大規模DDoS攻撃が原因と誤認された

#### 7.3.3 影響を受けたサービス

| サービス | 影響内容 |
|---------|---------|
| **コアCDNとセキュリティサービス** | HTTP 5xxステータスコードが返され、エラーページが表示された |
| **Turnstile** | 読み込みに失敗し、Dashboardへのログインが不可能に |
| **Workers KV** | HTTP 5xxエラーが大幅に増加 |
| **Dashboard** | Turnstileの障害により、ほとんどのユーザーがログイン不可 |
| **Email Security** | IPレピュテーションソースへの一時的なアクセス喪失により、スパム検出精度が低下 |
| **Access** | 認証失敗が広範囲に発生(11:20から13:05まで) |

#### 7.3.4 復旧プロセス

##### タイムライン

- **11:05 UTC**: データベースアクセス制御変更が展開
- **11:28 UTC**: 顧客環境への展開が完了し、最初のエラーが観測
- **11:32-13:05 UTC**: チームがWorkers KVサービスのエラーを調査
- **13:05 UTC**: Workers KVとCloudflare Accessのバイパス実装により影響を軽減
- **13:37 UTC**: Bot Management設定ファイルのロールバック作業を開始
- **14:24 UTC**: 新しいBot Management設定ファイルの作成と配布を停止
- **14:30 UTC**: 主要な影響が解決。正しい設定ファイルがグローバルに展開
- **17:06 UTC**: 全サービスが復旧

##### 復旧措置

1. **設定ファイルのロールバック**: 既知の正常なバージョンのfeature fileを手動で挿入
2. **コアプロキシの再起動**: コアプロキシシステムを強制的に再起動
3. **バイパス実装**: Workers KVとAccessがコアプロキシをバイパスするように設定

#### 7.3.5 技術的教訓と対策

##### 問題点の分析

1. **設定ファイルの検証不足**: Cloudflareが生成する設定ファイルに対して、ユーザー生成入力と同様の厳格な検証が行われていなかった
2. **グローバルキルスイッチの不足**: 機能を迅速に無効化するグローバルなメカニズムが不足
3. **エラーハンドリングの不備**: コアダンプやエラーレポートがシステムリソースを圧迫する可能性
4. **段階的展開のリスク**: データベースクラスターの段階的更新により、正常と異常な設定ファイルが交互に生成された

##### 今後の対策

Cloudflareは以下の対策を実施することを発表しています:

- **設定ファイルの検証強化**: Cloudflare生成の設定ファイルに対しても、ユーザー生成入力と同様の厳格な検証を実施
- **グローバルキルスイッチの実装**: 機能を迅速に無効化できるグローバルなメカニズムの追加
- **エラーハンドリングの改善**: コアダンプやエラーレポートがシステムリソースを圧迫しないように改善
- **障害モードの見直し**: コアプロキシモジュール全体のエラー条件に対する障害モードの見直し

#### 7.3.6 セキュリティへの示唆

この障害は、DDoS攻撃ではないものの、以下の重要な教訓を提供しています:

1. **内部システムの変更管理**: 権限変更などの内部変更が、予期しない副作用を引き起こす可能性
2. **設定ファイルの検証**: 自動生成される設定ファイルであっても、厳格な検証が必要
3. **段階的展開のリスク**: 段階的な展開により、正常と異常な状態が交互に発生する可能性
4. **障害検知の重要性**: 初期段階でDDoS攻撃と誤認されたように、障害の原因特定の難しさ

---

## 第III部:セキュリティ基盤技術

---

## 8. OSのセキュリティとアクセス制御

### 8.1 アクセス制御モデル

#### アクセス制御リスト(ACL: Access Control List)

ACLは、リソース(ファイル、ディレクトリ、ネットワークリソース等)に対するアクセス権限を、ユーザーやグループごとに定義するリストです。

- **任意アクセス制御(DAC: Discretionary Access Control)**: リソースの所有者が、他のユーザーへのアクセス権限を任意に設定できる方式
- **強制アクセス制御(MAC: Mandatory Access Control)**: システム管理者が設定したセキュリティポリシーに基づき、強制的にアクセス制御を行う方式
- **ロールベースアクセス制御(RBAC: Role-Based Access Control)**: ユーザーに役割(ロール)を割り当て、ロールに基づいてアクセス権限を制御する方式
- **属性ベースアクセス制御(ABAC: Attribute-Based Access Control)**: ユーザー、リソース、環境などの属性に基づいて、動的にアクセス制御を行う方式

### 8.2 パスワード管理とハッシュ化

#### パスワードの保存方法

パスワードを平文のままデータベースに保存することは、データベースが侵害された際に重大なセキュリティリスクとなります。そのため、パスワードは**ハッシュ値**として保存する必要があります。

#### ハッシュ化の技術

1. **単純ハッシュ化の問題点**
- 同一のパスワードは常に同一のハッシュ値となる
- レインボーテーブル攻撃により、ハッシュ値から元のパスワードが特定される可能性がある

2. **ソルト(Salt)の導入**
- パスワードにランダムな文字列(ソルト)を付加してからハッシュ化
- 同一のパスワードでも異なるハッシュ値が生成される
- レインボーテーブル攻撃に対する耐性が向上

3. **ストレッチング(Key Stretching)**
- ハッシュ化処理を複数回(数千回から数万回)繰り返す手法
- ブルートフォース攻撃や辞書攻撃に対する耐性を大幅に向上
- PBKDF2、bcrypt、Argon2などのアルゴリズムが広く使用されている

### 8.3 CAPTCHAとボット対策

#### CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart)

現在、「CAPTCHA as a Service(CaaS)」や「reCAPTCHA」など大手クラウド事業者(Google、hCaptcha、Amazonなど)が提供するマネージドCAPTCHAサービスが普及しています。以下では、reCAPTCHA v3を例としたマネージドCAPTCHAサービスの詳細技術について解説します。

#### reCAPTCHAサービスの基本的仕組み

- **動作概要**: サイトごとに発行されたサイトキーをWebページに埋め込み、ユーザーの行動データ(マウス動作、タイピング、ブラウザ情報、クッキー等)やリクエストパターンをJavaScriptで収集します。収集データはクラウド上のスコアリングエンジンに送信され、機械学習により「人間らしさスコア(例:0.0〜1.0)」が判定されます。
- **結果**: 管理者やサービス側は、このスコア値に応じて追加認証を求めたり、自動ブロック・許可などを動的に判断可能です。従来型の歪み文字入力や画像選択等のUIなしで判別が行われるため、ユーザー体験を損なわずボット防御を実現します(reCAPTCHA v3の場合)。

#### 詳細技術と特徴

1. **行動・環境シグナル解析**
- マウス軌跡、クリック間隔、スクロール速度等のユーザー行動データ
- 画面サイズ、ブラウザの拡張情報、OS・フォント一覧、エージェントパターン等の環境特有情報
- Cookieやローカルストレージの利用状況

2. **リスクスコアリングと機械学習**
- 大規模な正例・負例データでボット/人間を学習済みのモデルによるスコアリング
- 継続的なフィードバック・アップデート(グローバルな検知閾値自動調整)

3. **チャレンジレス認証(Invisible/Non-interactive CAPTCHA)**
- reCAPTCHA v3では追加のUIや入力不要。行動データの解析のみで判別。人間ユーザーへの負担が最小化される。

4. **連携と柔軟なポリシー**
- サーバー側APIによる動的判定や、リクエスト特性・ユーザー種別ごとに閾値変更可能
- 攻撃/不審検知時のみ追加CAPTCHA(画像認証など)への自動切替も可能

#### 利点と課題

- **利点**: UXを損なわずボット/自動化攻撃を高度に抑止できる。クラウドサイドで機械学習アップデートが行われ、防御性能が日々向上。
- **課題**: サードパーティへのデータ送信/Privacy問題、JavaScript無効環境・支援技術利用ユーザーへのアクセシビリティ低下、高度なエミュレータやAIボットによる突破事例も報告されている。

このように、reCAPTCHAサービスは伝統的なCAPTCHAの進化形として、最新のボット対策に広く活用されています。

### 8.4 OSの脆弱性と対策

#### バッファーオーバーフロー(Buffer Overflow)

メモリのバッファに、その容量を超えるデータを書き込むことで発生する脆弱性です。

- **影響**: 任意のコード実行、権限昇格、サービス停止
- **対策**:
- 境界チェックの実装
- スタック保護(Stack Canary、ASLR等)の有効化
- セキュアなプログラミング手法の採用

#### 権限昇格(Privilege Escalation)の詳細

権限昇格とは、攻撃者が本来許可されていないシステム権限・アクセス権を不正に取得する手法です。主に2つの形態があります。

- **水平権限昇格(Horizontal Privilege Escalation)**  
攻撃者が同一権限レベルの他のユーザーのデータや機能に不正アクセスするケース。例:一般ユーザーAが、同じ一般ユーザーBのアカウント情報や注文履歴にアクセスする。

- **垂直権限昇格(Vertical Privilege Escalation)**  
攻撃者が本来許されていない上位の権限(例:管理者やroot)の権限を取得するケース。例:一般ユーザーが脆弱性や設定ミスを突いてroot権限を得る。

##### 主な原因

- アプリケーション、OS、ミドルウェア等の脆弱性(バッファオーバーフロー、不適切なアクセス制御等)
- 誤った権限設定やファイルパーミッションミス
- サービスやプログラムの設計・実装ミス

##### 攻撃例

- SUID/SGIDビットが設定されたプログラムの悪用(Linux/Unix系)
- Windows環境におけるUACバイパス、サービス設定の不備
- Webアプリのアクセス制御不備(例:認可チェック抜け)

##### 検知・防止策

- **詳細なログ監視**: 権限変更操作、SUIDプログラム実行、管理者権限取得の試行などを監査ログ(auditd、eventlog等)で記録・監視
- **最小権限の原則(Principle of Least Privilege)**: 利用者やプロセスに業務上必要最小限の権限のみを付与
- **定期的な権限棚卸・監査**: OS・ミドルウェア・アプリレベルでの権限設定見直し、SUID/SGIDファイル/管理者グループの点検
- **最新パッチの適用**: OSやミドルウェア、アプリの脆弱性対策を迅速に適用
- **多層防御**: アクセス制御(ACL)、ネットワーク分離、脆弱性診断ツールの導入などによる多段階防御

##### 補足

権限昇格の脆弱性(例:CVE-2021-3156, CVE-2019-0841等)は重大インシデントにつながるため、特権アカウントの利用・設定・変更には遡及可能な詳細ログ(監査証跡)の取得・定期確認が不可欠です。また、SaaSやクラウド環境でも「テナント間アクセス制御の誤設定」「IAM権限の過剰付与」に注意が必要です。

#### Linuxシステムの主要コマンドとファイル

- **su**: ユーザーを切り替えるコマンド(Switch User)
- **sudo**: 管理者権限でコマンドを実行するコマンド(Super User Do)
- **curl**: HTTPリクエストを送信するコマンドラインツール
- **/etc/hosts.allow**: TCP Wrappersによるアクセス許可設定ファイル
- **/etc/hosts.deny**: TCP Wrappersによるアクセス拒否設定ファイル
- **/etc/passwd**: ユーザーアカウント情報を格納するファイル
- **/ etc/shadow**: ハッシュ化されたパスワードを格納するファイル(root権限でのみ読み取り可能)
#### モバイルデバイス(Android/iOS等)の主要セキュリティ関連コマンド・設定ファイル

- **adb shell pm list packages**: インストール済みアプリ(パッケージ)の一覧を取得(Android)
- **adb shell getprop**: 各種システム情報・プロパティを取得(Android)
- **adb shell dumpsys**: システムサービスの詳細情報を取得し、セキュリティポリシーや稼働中サービスなどを確認(Android)
- **adb logcat**: システムログやアプリケーションログをリアルタイムで監視(Android)
- **adb shell dpm set-device-owner**: デバイス管理者(MDM等)の設定・削除を管理(Android)
- **adb shell screencap / screencan**: 画面キャプチャ取得による不正利用・情報漏洩のトレース(Android)

- **/data/system/users/**: Android端末のユーザーアカウント情報が格納されているディレクトリ(root権限が必要)
- **/system/etc/hosts**: Android/iOS端末のホスト名解決に用いるファイル(悪用時は不正リダイレクトや広告除去設定等が可能)

- **profiles**: iOS端末にインストールされた構成プロファイル(MDM構成/セキュリティポリシーやVPN、証明書管理等を制御)
- **Keychain**: iOS/macOS端末内のパスワード・証明書・鍵情報格納場所(セキュリティの核心)
- **Screen Timeパスコード**: iOSの機能制限・利用履歴ログ/不正な設定変更の防止パスコード

- **find my [device/iPhone]**: iOS/Androidでのリモートロック・ワイプ・位置情報取得などの機能(紛失・盗難対策)

### 8.5 ログ管理

#### syslog

syslogは、Unix/Linuxシステムにおける標準的なログ管理プロトコルです。

- **機能**: システムイベント、アプリケーションログ、セキュリティイベントの記録
- **設定**: /etc/syslog.conf または /etc/rsyslog.conf で設定
- **リモートログ**: ログサーバーへの転送により、改ざん防止と一元管理が可能

#### ログ管理のベストプラクティス

1. **アカウントロックとログイン同期**
- 連続したログイン失敗によりアカウントを自動ロック
- 複数システム間でのアカウント状態の同期

2. **攻撃検知時の対応**
- 攻撃が検知された場合、攻撃者に通知しない(攻撃手法の情報を与えない)
- ロック回数や閾値情報は外部に漏洩させない(攻撃者に情報を与えない)

3. **サービス監視**
- 不要なサービスが動作していないか監視
- 異常なサービス起動を検知し、即座に対応

4. **パッチ管理**
- セキュリティパッチの重要性に応じた優先順位付け
- 重要性が低いパッチは、システムが安定している時間帯に自動更新を実行

### 8.6 ゼロデイ脆弱性(Zero-Day Vulnerability)

#### 定義

脆弱性が発見されてから、ベンダーが対策(パッチ)を提供するまでの間、攻撃に悪用される可能性のある脆弱性です。

- **特徴**: 対策が存在しない、または限定的
- **リスク**: 攻撃者が先に脆弱性を発見し、悪用する可能性
- **対策**:
- 多層防御の実装
- 異常検知システムの導入
- 迅速なパッチ適用体制の構築

---

## 9. モバイルデバイスのセキュリティ

### 9.1 MDM(Mobile Device Management)

MDMは、企業が従業員のモバイルデバイスを一元管理するためのシステムです。

#### 主な機能

- **デバイスの登録と管理**: 企業所有デバイスやBYOD(Bring Your Own Device)の管理
- **ポリシーの強制**: パスワードポリシー、アプリケーション制限、データ暗号化の強制
- **リモートワイプ**: デバイスの紛失・盗難時や、従業員の退職時に、リモートからデータを削除
- **アプリケーション配布**: 企業アプリケーションの配布と更新管理

#### 主なサービス

- **Microsoft Intune**: MicrosoftのクラウドベースMDM/MAMサービス。WindowsやAndroid/iOSデバイスを管理。
- **VMware Workspace ONE (旧 AirWatch)**: クロスプラットフォーム対応のエンタープライズ向けMDMソリューション。
- **Jamf Pro**: Appleデバイス(iPhone/iPad/Mac)に特化したMDMサービス。
- **Google Endpoint Management**: Google Workspace向けのクラウド型デバイス管理サービス。
- **Cisco Meraki Systems Manager**: ネットワーク機器と統合可能なMDMクラウドサービス。

### 9.2 スマートフォンの改造(Root化/Jailbreak)

#### Root化(Android)

Androidデバイスで、root権限(管理者権限)を取得することです。

#### Root化(Android)の手順

Androidデバイスでroot化を行う一般的な流れは以下の通りです。なお、root化はデバイスの保証や安全性に重大なリスクを伴うため、自己責任で行ってください。

1. **データのバックアップ**  
root化作業前に、重要なデータを必ずバックアップします。

2. **ブートローダーのアンロック**  
デバイスのブートローダーをアンロック(解除)します。端末ごとに手順やコマンドが異なります。  
- メーカーやモデルによっては、公式サイトなどからアンロックコードを取得する必要があります。

3. **カスタムリカバリの導入**  
TWRPなどのカスタムリカバリをインストールします。  
- Fastbootモードでコマンドを使って書き込みを行うのが一般的です。

4. **root化ファイル(例:Magiskなど)の用意と書き込み**  
Magisk等のroot化用zipファイルをデバイスに転送し、カスタムリカバリからインストールします。

5. **再起動してroot権限を確認**  
再起動後、root権限が有効か(Magisk Managerアプリ等で)動作確認します。

---

#### Root化のリスク

- セキュリティ機能の無効化により、マルウェア感染やデータ漏洩のリスクが高まります。
- 保証やサポートが無効になる場合があります。
- アップデート時に不具合が発生することもあり、最悪の場合デバイスが使用不能(文鎮化)になるリスクがあります。

---

#### Jailbreak(iOS)の手順

iOSデバイスでJailbreakを行う場合の一般的手順です。Jailbreakもリスクが高いため注意してください。

1. **バックアップの作成**  
iTunesやiCloudなどでデバイス全体のバックアップを取ります。

2. **Jailbreakツールを用意する**  
unc0ver、checkra1n、Taurineなど、iOSバージョンやデバイスに対応したJailbreakツールをダウンロードします。

3. **デバイスとPC/Macを接続し、Jailbreakツールを実行**  
ツールごとに手順が異なりますが、案内に従って実行します。

4. **Jailbreak後の確認**  
CydiaやSileoなどのJailbreakアプリストアがインストールされているか確認します。

---

#### Jailbreakのリスク・注意点

- Root化と同様のセキュリティリスク(マルウェア、情報漏洩等)が発生します。
- Appleの利用規約違反となり、保証が無効となる場合があります。
- ソフトウェアアップデートによってJailbreakが解除されたり、不具合が生じることがあります。

---

**注意**  
どちらの操作も公式サポート対象外となるため、正しい手順の理解と十分なリスク認識が必要です。

---

## 10. 認証基盤とアイデンティティ管理

### 10.1 シングルサインオン(SSO: Single Sign-On)

SSOは、一度の認証で複数のアプリケーションやサービスにアクセスできる仕組みです。

#### 動作原理

- **セッションクッキー**: 認証成功後、セッション情報をクッキーに保存
- **認証トークン**: 認証情報をトークンとして共有し、複数サービスで再利用
- **利点**: ユーザーの利便性向上、パスワード管理の負担軽減
- **課題**: セッションハイジャック、トークン漏洩のリスク

### 10.2 認証プロトコル(詳細解説)

ここでは代表的な認証・認可プロトコルの仕組みと特徴について、より詳しく解説します。

#### SAML(Security Assertion Markup Language)

##### 概要とアーキテクチャ

SAMLは、OASIS(Organization for the Advancement of Structured Information Standards)が標準化したXMLベースの認証・認可プロトコルです。主に企業向けのSSO(シングルサインオン)環境で広く利用されています。SAML 2.0が現在の主流バージョンです。

SAMLでは、**IdP(Identity Provider: 認証を行う側)**と**SP(Service Provider: サービス提供側)**が明確に分離されたアーキテクチャを採用しています。この分離により、認証ロジックとアプリケーションロジックを分離し、セキュリティと管理性を向上させます。

##### 技術的詳細

1. **SAMLアサーション(Assertion)**
- **認証アサーション(Authentication Assertion)**: ユーザーが認証されたことを証明するXML文書
- **属性アサーション(Attribute Assertion)**: ユーザーの属性情報(メールアドレス、所属部署等)を含む
- **認可決定アサーション(Authorization Decision Assertion)**: リソースへのアクセス許可/拒否の決定

2. **SAMLバインディング**
- **HTTP Redirect Binding**: GETリクエストでSAMLメッセージをURLパラメータとして送信
- **HTTP POST Binding**: POSTリクエストでSAMLメッセージをフォームデータとして送信
- **HTTP Artifact Binding**: アーティファクト(参照)を送信し、実際のアサーションを別途取得
- **SOAP Binding**: SOAPメッセージとしてSAMLを送信

3. **セキュリティメカニズム**
- **XML署名(XML Signature)**: アサーションの改ざん防止。X.509証明書を使用したデジタル署名
- **XML暗号化(XML Encryption)**: アサーションの機密性確保。対称鍵暗号(AES)と非対称鍵暗号(RSA)を組み合わせ
- **リプレイ攻撃対策**: `NotBefore`と`NotOnOrAfter`属性による有効期限の設定
- **認証コンテキスト**: 認証方法(パスワード、多要素認証等)の強度を指定

##### SAMLフローの詳細

**典型的なSAML 2.0 SSOフロー(SP-initiated)**:

**図7-1: SAML 2.0 SSOフローのシーケンス図**

```mermaid
sequenceDiagram
participant U as ユーザー/ブラウザ
participant SP as Service Provider (SP)
participant IdP as Identity Provider (IdP)

U->>SP: 1. SPのURLにアクセス
SP->>SP: 2. IdPを特定(メールドメイン等)
SP->>SP: 3. SAML認証リクエスト生成(<AuthnRequest>)
SP->>U: 4. IdPへリダイレクト(HTTP Redirect/POST)
U->>IdP: 5. IdPにアクセス
IdP->>U: 6. 認証画面表示
U->>IdP: 7. 認証情報入力(パスワード/MFA)
IdP->>IdP: 8. 認証成功確認
IdP->>IdP: 9. SAMLアサーション生成(<Response><Assertion>)
IdP->>IdP: 10. デジタル署名付与
IdP->>U: 11. SPへリダイレクト(SAMLレスポンス)
U->>SP: 12. SAMLレスポンス送信(HTTP POST)
SP->>SP: 13. 署名検証・有効期限/発行者/対象者確認
SP->>U: 14. セッション確立・ログイン完了
```
/* Note:
- Mermaid's sequenceDiagram does not support HTML breaks (`<br/>`), nor entity codes like `&lt;...&gt;`.
- Use plain text or parentheses for clarity.
- If you want line breaks, split into multiple lines or avoid HTML syntax.
*/

1. **ユーザーがSPにアクセス**: ユーザーがブラウザでSPのURLにアクセス
2. **SPがIdPを特定**: SPは、ユーザーのIdPを特定(例:メールドメインから判断、IdP Discovery Serviceを使用)
3. **SAML認証リクエストの生成**: SPが`<AuthnRequest>`要素を含むSAMLリクエストを生成
4. **IdPへのリダイレクト**: ユーザーをIdPにリダイレクト(HTTP RedirectまたはPOST Binding)
5. **IdPでの認証**: ユーザーがIdPで認証(パスワード、多要素認証等)
6. **SAMLアサーションの生成**: IdPが認証成功を確認後、`<Response>`要素に`<Assertion>`を含めて生成
7. **アサーションの署名**: IdPがアサーションにデジタル署名を付与
8. **SPへのレスポンス送信**: ユーザーをSPにリダイレクトし、SAMLレスポンスを送信(HTTP POST Bindingが一般的)
9. **アサーションの検証**: SPが署名を検証し、有効期限、発行者、対象者(Audience)を確認
10. **セッション確立**: SPがユーザーをログイン状態にし、セッションを確立

##### メタデータと信頼関係

- **メタデータ(Metadata)**: IdPとSPの設定情報(エンドポイントURL、証明書、サポートするバインディング等)をXML形式で定義
- **信頼関係の確立**: メタデータを交換することで、IdPとSP間の信頼関係を確立
- **証明書の管理**: メタデータに含まれる公開鍵証明書を使用して署名を検証

##### 主な用途と利点

- **主な用途**: 企業や教育機関での業務システム・クラウドサービスのシングルサインオン(SSO)
- **利点**:
- パスワードの一元管理
- セキュリティポリシーの統一
- ユーザー体験の向上
- コンプライアンス要件への対応(監査ログの一元化)

#### OAuth 2.0

##### 概要とアーキテクチャ

OAuth 2.0は、IETF(Internet Engineering Task Force)のRFC 6749で標準化された認可フレームワークです。ユーザーのIDやパスワードをシェアせずに、第三者(サードパーティ)アプリ/サービスへアクセス権限を委譲するためのプロトコルです。

**重要な概念**: OAuth 2.0は“認証(Authentication)”ではなく“認可(Authorization)”プロトコルです。つまり、「このユーザーは誰か」ではなく、「このアプリはリソースにアクセスする権限があるか」を扱います。

##### 主要な役割(Roles)

1. **リソースオーナー(Resource Owner)**: リソースへのアクセス権限を委譲するユーザー
2. **クライアント(Client)**: リソースオーナーの代わりにリソースにアクセスするアプリケーション
3. **認可サーバー(Authorization Server)**: アクセストークンを発行するサーバー
4. **リソースサーバー(Resource Server)**: 保護されたリソースをホストするサーバー

##### 認可コードフロー(Authorization Code Flow)の詳細

**最も安全で推奨されるフロー**。サーバーサイドアプリケーションや、機密情報を安全に保存できるクライアントに適しています。

**図7-2: OAuth 2.0認可コードフローのシーケンス図**

```mermaid
flowchart LR
    subgraph ユーザー端末
        RO["リソースオーナー
(ユーザー)"]
        C["クライアント
(アプリ)"]
    end

    AS["認可サーバー
(Authorization Server)"]
    RS["リソースサーバー
(Resource Server)"]

    RO -->|① アプリ利用開始| C
    C -->|② 認可リクエスト(リダイレクト)| RO
    RO -->|③ 認可サーバーへアクセス| AS
    AS -->|④ 認証・認可画面表示| RO
    RO -->|⑤ 認証情報入力・アクセス許可| AS
    AS -->|⑥ 認可コード発行(リダイレクト)| RO
    RO -->|⑦ 認可コード返却| C
    C -->|⑧ 認可コードでトークン要求| AS
    AS -->|⑨ アクセストークン発行| C
    C -->|⑩ アクセストークンでAPIアクセス| RS
    RS -->|⑪ リソース返却| C
```

**フロー手順**:

1. **認可リクエスト**: クライアントがユーザーを認可サーバーの認可エンドポイントにリダイレクト
```http
GET /authorize?
response_type=code&
client_id=CLIENT_ID&
redirect_uri=REDIRECT_URI&
scope=read write&
state=xyz123
```

1. **ユーザー認証**: ユーザーが認可サーバーで認証(パスワード、多要素認証等)

2. **認可許可**: ユーザーがクライアントへのアクセス権限を許可

3. **認可コードの発行**: 認可サーバーが認可コードを生成し、リダイレクトURIに返送
```http
HTTP/1.1 302 Found
Location: https://client.example.com/cb?code=AUTH_CODE&state=xyz123
```

1. **アクセストークンの要求**: クライアントが認可コードを認可サーバーのトークンエンドポイントに送信
```http
POST /token HTTP/1.1
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&
code=AUTH_CODE&
redirect_uri=REDIRECT_URI&
client_id=CLIENT_ID&
client_secret=CLIENT_SECRET
```

6. **アクセストークンの発行**: 認可サーバーが認可コードを検証し、アクセストークンとリフレッシュトークンを発行
```json
{
"access_token": "ACCESS_TOKEN",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "REFRESH_TOKEN",
"scope": "read write"
}
```

7. **リソースへのアクセス**: クライアントがアクセストークンを使用してリソースサーバーにアクセス
```http
GET /api/user HTTP/1.1
Authorization: Bearer ACCESS_TOKEN
```

##### その他のフロー

1. **インプリシットフロー(Implicit Flow)**
- クライアントサイドアプリケーション(SPA等)向け
- 認可コードを経由せず、直接アクセストークンを取得
- **セキュリティリスク**: アクセストークンがブラウザの履歴やログに残る可能性
- **現状**: OAuth 2.1では非推奨。PKCE(Proof Key for Code Exchange)付き認可コードフローを推奨

2. **クライアントクレデンシャルフロー(Client Credentials Flow)**
- サービス間通信(M2M: Machine-to-Machine)向け
- ユーザーの介入なしでアクセストークンを取得
- クライアントIDとクライアントシークレットを使用
- マイクロサービス間の認可、バッチ処理、API連携などに使用

3. **リソースオーナーパスワードクレデンシャルフロー(Resource Owner Password Credentials Flow)**
- ユーザー名とパスワードを直接クライアントに渡すフロー
- **セキュリティリスクが高い**: パスワードがクライアントに露出
- **限定用途**: 信頼できるクライアント(例:公式モバイルアプリ)のみ
- **現状**: 多くの実装で非推奨

##### PKCE(Proof Key for Code Exchange)

OAuth 2.0のセキュリティを強化する拡張仕様(RFC 7636)。認可コードフローに追加のセキュリティレイヤーを提供します。

**仕組み**:
1. クライアントが`code_verifier`(ランダムな文字列)を生成
2. `code_verifier`から`code_challenge`(SHA256ハッシュ)を計算
3. 認可リクエストに`code_challenge`を含める
4. トークンリクエストに`code_verifier`を含める
5. 認可サーバーが`code_verifier`から`code_challenge`を再計算し、一致を確認

**利点**: 認可コードが漏洩しても、`code_verifier`がなければアクセストークンを取得できない

##### トークンの種類と管理

1. **アクセストークン(Access Token)**
- リソースへのアクセスに使用
- 有効期限が短い(通常1時間程度)
- Bearerトークン形式が一般的

2. **リフレッシュトークン(Refresh Token)**
- アクセストークンの更新に使用
- 有効期限が長い(数日から数週間)
- 機密情報として安全に保管する必要がある

3. **トークンの検証**: リソースサーバーは、認可サーバーまたはJWTの署名検証によりトークンの有効性を確認

##### スコープ(Scope)

リソースオーナーがクライアントに委譲する権限の範囲を定義します。
- 例: `read`, `write`, `admin`, `profile`, `email`
- スコープの粒度により、最小権限の原則を実現

##### 主な用途と利点

- **主な用途**: SNSログイン、外部API連携、マイクロサービス間認可など
- **利点**:
- パスワードの共有が不要
- 細かい権限管理(スコープ)
- トークンの有効期限管理
- リソースオーナーによる権限の取り消しが容易

#### OIDC(OpenID Connect)

##### 概要とアーキテクチャ

OIDC(OpenID Connect)は、OAuth 2.0をベースとした認証プロトコルです。OpenID Foundationが標準化し、RFC 7662、RFC 7519、RFC 7515など複数のRFCで定義されています。

**OAuth 2.0との違い**: OAuth 2.0は“認可(Authorization)”のみを扱いますが、OIDCは“認証(Authentication)”を追加します。つまり、「このユーザーは誰か」を検証できるようになります。

##### 主要な概念

1. **IDトークン(ID Token)**
- JWT(JSON Web Token)形式のトークン
- ユーザーの認証情報を含む
- 署名により改ざんを防止(JWS: JSON Web Signature)
- 暗号化も可能(JWE: JSON Web Encryption)

2. **ユーザー情報エンドポイント(UserInfo Endpoint)**
- アクセストークンを使用してユーザーの詳細情報を取得
- 標準的なクレーム(Claim)を返す

3. **クレーム(Claim)**
- ユーザーに関する情報(名前、メールアドレス等)
- 標準クレーム(Standard Claims)とカスタムクレーム(Custom Claims)がある

##### IDトークンの構造

IDトークンは、ヘッダー、ペイロード、署名の3つの部分から構成されるJWTです。

**ペイロードの主要なクレーム**:
- `iss` (Issuer): トークンを発行した認可サーバーの識別子
- `sub` (Subject): ユーザーの一意識別子
- `aud` (Audience): トークンの受信者(クライアントID)
- `exp` (Expiration Time): トークンの有効期限(Unix時間)
- `iat` (Issued At): トークンの発行時刻
- `auth_time`: ユーザーが認証された時刻
- `nonce`: リプレイ攻撃防止のためのランダム値
- `acr` (Authentication Context Class Reference): 認証方法の強度
- `amr` (Authentication Methods References): 使用された認証方法のリスト

##### OIDCフローの詳細

**図7-3: OIDC認可コードフローのシーケンス図**

1. ユーザー(ブラウザ)がクライアント(アプリ)にログイン要求を送る  
2. クライアントはユーザーを認可サーバー(OIDC Provider)へリダイレクト  
3. ユーザーは認可サーバーに認可リクエストを送信(scope=openid profile email, nonceを含む)  
4. 認可サーバーは認証画面をユーザーに表示  
5. ユーザーが認証情報を入力  
6. 認可サーバーはユーザーへ認可コードを発行(redirect_uri?code=AUTH_CODE)  
7. ユーザーがクライアントに認可コードを返す  
8. クライアントは認可サーバーにトークンリクエスト(code, client_id, client_secret)  
9. 認可サーバーが認可コードを検証  
10. 認可サーバーはクライアントにIDトークンとアクセストークンを発行(JWT形式IDトークン)  
11. クライアントはIDトークンを検証(署名・有効期限・nonce確認)  
12. クライアントがリソースサーバーにリソースアクセス(Authorization: Bearer ACCESS_TOKEN)  
13. リソースサーバーがリソースを返却  
(オプション)ユーザー情報の取得:  
14. クライアントがUserInfoエンドポイントへアクセストークン付きリクエスト  
15. 認可サーバーがクライアントへユーザー情報を返す

**認可コードフロー(Authorization Code Flow)**:

1. **認可リクエスト**: クライアントがユーザーを認可サーバーにリダイレクト
```http
GET /authorize?
response_type=code&
client_id=CLIENT_ID&
redirect_uri=REDIRECT_URI&
scope=openid profile email&
state=xyz123&
nonce=abc456
```

2. **ユーザー認証**: ユーザーが認可サーバーで認証

3. **認可コードの発行**: 認可サーバーが認可コードを発行

4. **トークンリクエスト**: クライアントが認可コードをトークンエンドポイントに送信
```http
POST /token HTTP/1.1
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&
code=AUTH_CODE&
redirect_uri=REDIRECT_URI&
client_id=CLIENT_ID&
client_secret=CLIENT_SECRET
```

5. **IDトークンとアクセストークンの発行**: 認可サーバーがIDトークンとアクセストークンを発行
```json
{
"access_token": "ACCESS_TOKEN",
"token_type": "Bearer",
"id_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 3600
}
```

6. **IDトークンの検証**: クライアントがIDトークンの署名、有効期限、発行者、対象者、nonceを検証

7. **ユーザー情報の取得(オプション)**: アクセストークンを使用してUserInfoエンドポイントから追加情報を取得
```http
GET /userinfo HTTP/1.1
Authorization: Bearer ACCESS_TOKEN
```

##### ハイブリッドフロー(Hybrid Flow)

認可コードフローとインプリシットフローの特徴を組み合わせた方式です。

**response_typeの種類**:
- `code`: 認可コードのみを返す(標準的な認可コードフロー)
- `id_token`: IDトークンのみを返す(インプリシットフロー)
- `token`: アクセストークンのみを返す(インプリシットフロー)
- `code id_token`: 認可コードとIDトークンの両方を返す(ハイブリッド)
- `code token`: 認可コードとアクセストークンの両方を返す(ハイブリッド)
- `code id_token token`: 認可コード、IDトークン、アクセストークンのすべてを返す(ハイブリッド)

##### セキュリティパラメータ

1. **stateパラメータ**
- **目的**: CSRF(Cross-Site Request Forgery)攻撃の防止
- **実装**: クライアントがランダムな値を生成し、認可リクエストに含める
- **検証**: 認可レスポンスで同じ値が返されることを確認
- **保存**: セッションやクッキーに保存し、リクエスト間で一貫性を保証

2. **nonceパラメータ**
- **目的**: リプレイ攻撃の防止
- **実装**: クライアントがランダムな値を生成し、認可リクエストに含める
- **検証**: IDトークンの`nonce`クレームと一致することを確認
- **保存**: セッションに保存し、IDトークン受信後に検証して削除

3. **PKCE(Proof Key for Code Exchange)**
- OIDCでも推奨されるセキュリティ拡張
- 特にモバイルアプリやSPAで重要

##### ディスカバリー(Discovery)とメタデータ

OIDCは、認可サーバーの設定情報を自動的に発見する仕組みを提供します。

**Well-Known Configuration Endpoint**:
```http
GET /.well-known/openid-configuration
```

**返されるメタデータ**:
- `authorization_endpoint`: 認可エンドポイントのURL
- `token_endpoint`: トークンエンドポイントのURL
- `userinfo_endpoint`: UserInfoエンドポイントのURL
- `jwks_uri`: JSON Web Key Set(公開鍵)のURL
- `issuer`: 発行者の識別子
- `supported_scopes`: サポートされるスコープ
- `supported_response_types`: サポートされるレスポンスタイプ

##### 主な用途と利点

- **主な用途**: ソーシャルログイン、エンタープライズSSO、モバイルアプリ認証など
- **利点**:
- OAuth 2.0の認可機能に加えて認証機能を提供
- 標準化されたユーザー情報の取得
- モバイルアプリやSPAへの対応
- 多要素認証の統合が容易

#### Kerberos

##### 概要とアーキテクチャ

Kerberosは、MIT(Massachusetts Institute of Technology)で開発されたネットワーク認証プロトコルです。RFC 4120で標準化されており、チケットベースの認証システムを提供します。

**名前の由来**: ギリシャ神話の地獄の番犬「ケルベロス」から命名。3つの頭を持つ番犬のように、3つの主要なコンポーネント(クライアント、認証サーバー、チケット配布サーバー)を持つことから。

##### 主要なコンポーネント

1. **KDC(Key Distribution Center)**: 認証とチケット配布を行う中央サーバー
- **AS(Authentication Server)**: 初期認証を処理
- **TGS(Ticket Granting Server)**: サービスチケットを発行

2. **クライアント(Client)**: 認証を要求するユーザーまたはアプリケーション

3. **サービス(Service)**: クライアントがアクセスしたいリソース(ファイルサーバー、データベース等)

##### Kerberos認証フローの詳細

**図7-4: Kerberos認証フローのシーケンス図(3段階)**

```mermaid
flowchart TD
  %% フェーズごとにサブグラフで分けて表現

  subgraph A[第1段階: ASへの認証]
    C1[クライアント]
    AS1[認証サーバー(AS)]
    C1 -- "1. 認証リクエスト<br/>(ユーザー名等)" --> AS1
    AS1 -- "2. 認証検証" --> AS1
    AS1 -- "3. TGT & セッション鍵発行" --> C1
  end

  subgraph B[第2段階: TGSへのアクセス]
    TGS1[チケット配布サーバー(TGS)]
    C1 -- "4. サービスチケット要求<br/>(TGT,認証子)" --> TGS1
    TGS1 -- "5. 認証検証" --> TGS1
    TGS1 -- "6. サービスチケット&<br/>サービスセッション鍵" --> C1
  end

  subgraph C[第3段階: サービスへのアクセス]
    S1[サービス]
    C1 -- "7. アクセスリクエスト<br/>(サービスチケット等)" --> S1
    S1 -- "8. 認証検証" --> S1
    S1 -- "9. リソースアクセス許可" --> C1
  end
```
<!-- サブグラフを使いフェーズ毎に整理したMermaid記法へ修正。各ノード・矢印に改行や記号の使い方を調整し、エラーが出ない形に修正。 -->

**3段階の認証プロセス**:

**第1段階: 認証サーバー(AS)への認証**:

1. クライアントがASに認証リクエストを送信
- ユーザー名とタイムスタンプを含む
- パスワードは送信しない(事前共有鍵を使用)

2. ASがユーザーのパスワードから鍵を導出し、認証を検証

3. ASが**TGT(Ticket Granting Ticket)**と**セッション鍵**を発行
- TGTはTGSへのアクセスに使用
- TGTはTGSの秘密鍵で暗号化されている
- セッション鍵はクライアントとTGS間の通信を暗号化

**第2段階: チケット配布サーバー(TGS)へのアクセス**:

1. クライアントがTGSにサービスチケットを要求
- TGTと認証子(Authenticator)を含む
- 認証子はセッション鍵で暗号化されている

2. TGSがTGTを復号化し、認証子を検証

3. TGSが**サービスチケット**と**サービスセッション鍵**を発行
- サービスチケットは対象サービスの秘密鍵で暗号化
- サービスセッション鍵はクライアントとサービス間の通信を暗号化

**第3段階: サービスへのアクセス**:

1. クライアントがサービスにアクセスリクエストを送信
- サービスチケットと認証子を含む
- 認証子はサービスセッション鍵で暗号化

2. サービスがサービスチケットを復号化し、認証子を検証

3. サービスがクライアントを認証し、リソースへのアクセスを許可

##### セキュリティメカニズム

1. **対称鍵暗号**
- DES(Data Encryption Standard)からAES(Advanced Encryption Standard)へ移行
- 各エンティティ(ユーザー、サービス)はKDCと共有鍵を持つ

2. **タイムスタンプ**
- リプレイ攻撃を防止
- 認証子にはタイムスタンプが含まれ、有効期限(通常5分)を設定
- **時刻同期が必須**: NTP(Network Time Protocol)を使用して時刻を同期

3. **チケットの有効期限**
- TGTの有効期限(通常8-10時間)
- サービスチケットの有効期限(通常数時間)
- 有効期限切れ後は再認証が必要

4. **パスワードの保護**
- パスワードはネットワーク上を送信しない
- パスワードから導出された鍵を使用
- 盗聴に対する耐性が高い

##### 主要な概念

1. **プリンシパル(Principal)**
- 認証されるエンティティ(ユーザー、サービス、コンピュータ)
- 形式: `name@REALM`(例: `[email protected]`)

2. **レルム(Realm)**
- Kerberosの管理ドメイン
- 通常、DNSドメイン名を大文字にしたもの

3. **認証子(Authenticator)**
- クライアントが生成する認証情報
- タイムスタンプ、クライアント名、チェックサムを含む
- セッション鍵で暗号化

4. **チケット(Ticket)**
- クライアントの認証情報を含む暗号化されたデータ
- 対象サービスの秘密鍵で暗号化されているため、クライアントは内容を読めない

##### Windows Active Directoryとの統合

Windows Active Directoryは、Kerberosを認証プロトコルとして使用します。

**統合の利点**:
- シングルサインオン(SSO)の実現
- ドメイン内のリソースへのシームレスなアクセス
- パスワードの一元管理
- グループポリシーとの統合

**Active DirectoryでのKerberos**:
- ドメインコントローラーがKDCとして機能
- ユーザー、コンピュータ、サービスがプリンシパル
- ドメイン名がレルム名

##### 主な用途と利点

- **用途例**:
- Windows Active Directory環境での認証
- Unix/Linuxサーバーのシングルサインオン
- ファイルサーバー、データベース、プリンタ等の共通認証
- Hadoop、Kerberized NFS等の分散システム

- **利点**:
- パスワードのネットワーク送信が不要
- 一元管理による管理コストの削減
- なりすまし防止
- 相互認証(Mutual Authentication)のサポート
- チケットの再利用による効率的な認証

- **課題**:
- 時刻同期の必要性
- 複雑な設定と管理
- レルム間の信頼関係の設定が必要
- 単一障害点(KDC)の存在

これらのプロトコルを適切に理解し、自組織の要件やシステム構成、セキュリティレベルに応じて導入を検討することが重要です。

---

## 第IV部:参考資料

---

## 11. 参考資料・出典

### 11.1 公式発表・プレスリリース

- [1] Microsoft Security Blog: "Microsoft mitigated record-breaking 3.47 Tbps DDoS attack in August 2023"  
https://techcommunity.microsoft.com/t5/azure-network-security-blog/microsoft-mitigated-record-breaking-3-47-tbps-ddos-attack-in/ba-p/3964406

- [2] Cloudflare Blog: "2023年DDoS攻撃トレンド"  
https://blog.cloudflare.com/ja-jp/2023-ddos-attack-trends-ja-jp/

- [3] Google Cloud Blog: "Google Cloud mitigates largest DDoS attack on record"  
https://cloud.google.com/blog/products/identity-security/google-cloud-mitigates-largest-ddos-attack-on-record

- [4] Yahoo!ニュース: "Microsoft Azure、15.7TbpsのDDoS攻撃を受ける"  
https://news.yahoo.co.jp/articles/ba1e25116213cdad4a7d3ea41c656d6688aac445  
**注記**: 本リンクは予測事例として記載されています。実際の攻撃事例については、Microsoftの公式発表を必ずご確認ください。

### 11.2 技術文書・RFC

- RFC 7540: Hypertext Transfer Protocol Version 2 (HTTP/2)  
https://datatracker.ietf.org/doc/html/rfc7540

- CVE-2023-44487: HTTP/2 Rapid Reset Attack  
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-44487

### 11.3 セキュリティ対策ガイド

- OWASP: Distributed Denial of Service (DDoS)  
https://owasp.org/www-community/attacks/Denial_of_Service

- NIST: Guidelines on DDoS Attack Detection and Mitigation  
https://csrc.nist.gov/publications/detail/sp/800-83/rev-1/final

### 11.4 クラウドプロバイダーのドキュメント

- AWS Shield: DDoS Protection  
https://aws.amazon.com/shield/

- Azure DDoS Protection  
https://azure.microsoft.com/services/ddos-protection/

- Google Cloud Armor  
https://cloud.google.com/armor

### 11.5 クラウドサービス障害事例

- [5] Cloudflare Blog: "Cloudflare outage on November 18, 2025"  
https://blog.cloudflare.com/18-november-2025-outage/  
**注記**: 本リンクは予測事例として記載されています。実際の障害事例については、Cloudflareの公式ブログで最新情報をご確認ください。

---

## 12. 用語集

- **DDoS (Distributed Denial of Service)**: 分散型サービス拒否攻撃。複数のコンピュータから同時に大量のトラフィックを送信し、サービスを利用不能にする攻撃。

- **HTTP/2**: HTTPプロトコルの第2版。多重化、ヘッダー圧縮、サーバープッシュなどの機能を提供。

- **Rapid Reset**: HTTP/2のストリームを即座にキャンセルする機能を悪用した攻撃手法。

- **RPS (Requests Per Second)**: 1秒あたりのリクエスト数。サーバーの処理能力を測る指標。

- **Tbps (Terabits per second)**: 1秒あたりのテラビット数。ネットワーク帯域幅を測る単位。

- **ストリーム (Stream)**: HTTP/2における、単一のリクエスト-レスポンスのペアを表す論理的な通信チャネル。

- **RST_STREAM**: HTTP/2のフレームタイプの一つ。ストリームをキャンセルするために使用される。

- **オートスケーリング (Auto-scaling)**: 負荷に応じて自動的にリソースを増減させる機能。

- **サーキットブレーカー (Circuit Breaker)**: 異常を検出した際に、システムの一部を自動的に遮断するパターン。

- **レート制限 (Rate Limiting)**: 一定時間内に処理するリクエスト数を制限する機能。

- **ボットネット (Botnet)**: マルウェアに感染した複数のコンピュータやIoTデバイスを遠隔操作で制御し、DDoS攻撃などの悪意のある活動に利用するネットワーク。

- **IoT (Internet of Things)**: インターネットに接続された物理デバイス(センサー、カメラ、家電等)の総称。セキュリティ対策が不十分な場合、ボットネットの構成要素となる。

- **ASN (Autonomous System Number)**: 自律システム(AS)を識別するための一意の番号。インターネットのルーティングに使用される。

- **WAF (Web Application Firewall)**: Webアプリケーションへの攻撃を検知・防御するファイアウォール。

- **PKCE (Proof Key for Code Exchange)**: OAuth 2.0のセキュリティを強化する拡張仕様(RFC 7636)。

- **JWT (JSON Web Token)**: 認証情報をJSON形式でエンコードしたトークン。OIDCのIDトークンなどで使用される。

- **SSO (Single Sign-On)**: 一度の認証で複数のアプリケーションやサービスにアクセスできる仕組み。

- **IdP (Identity Provider)**: 認証を行う側のサービス。SAMLやOIDCでは、ユーザーの認証を行い、認証情報を発行する。

- **SP (Service Provider)**: サービス提供側のアプリケーション。SAMLでは、IdPから認証情報を受け取り、ユーザーにサービスを提供する。

- **KDC (Key Distribution Center)**: Kerberos認証プロトコルにおいて、認証とチケット配布を行う中央サーバー。AS(Authentication Server)とTGS(Ticket Granting Server)を含む。

- **TGT (Ticket Granting Ticket)**: Kerberos認証において、TGSへのアクセスに使用されるチケット。ユーザーが認証されたことを証明する。

- **SAMLアサーション (SAML Assertion)**: SAMLプロトコルにおいて、ユーザーの認証情報や属性情報を含むXML文書。認証アサーション、属性アサーション、認可決定アサーションの3種類がある。

- **OAuth 2.0スコープ (Scope)**: リソースオーナーがクライアントに委譲する権限の範囲を定義する。例:`read`, `write`, `admin`, `profile`, `email`。

- **OIDC IDトークン (ID Token)**: OIDCプロトコルにおいて、ユーザーの認証情報を含むJWT形式のトークン。署名により改ざんを防止する。

- **MDM (Mobile Device Management)**: 企業が従業員のモバイルデバイスを一元管理するためのシステム。

- **SUID/SGID**: Linux/Unixシステムで、実行ファイルに設定される特殊な権限ビット。SUIDは実行時に所有者の権限、SGIDはグループの権限で実行される。

- **ASLR (Address Space Layout Randomization)**: メモリアドレスの配置をランダム化し、バッファーオーバーフロー攻撃を困難にするセキュリティ技術。

- **Stack Canary**: スタックオーバーフロー攻撃を検知するための保護機構。スタックフレームの終端に特殊な値を配置し、改ざんを検知する。

---

**注記**: 本資料は技術的な分析と教育目的で作成されています。実際のセキュリティ対策の実装にあたっては、各組織のセキュリティポリシーと最新のベストプラクティスに従ってください。


Collection

Citation

unjuno, “情報セキュリテイ,” unjuno'sResearchLibrary, accessed October 7, 2026, https://archive.unjuno.org/items/show/139.

コメント