---
generated_at: 2026-03-01 12:00:00
metrics:
  claims_total: 48
  claims_with_evidence: 46
  claims_without_evidence: 2
confidence_derived: 0.96
---

# 根拠レポート：セキュリティ設計書

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.96**
  - 根拠あり：46 / 48、根拠なし：2
- 優先レビュー（高）
  1. **TLSバージョン**：Railsコード内にTLSバージョン指定なし（Webサーバー設定依存）
  2. **ログ保持期間**：アプリケーション設定依存のため具体値なし

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `activemodel/lib/active_model/secure_password.rb`
- E-02: `actionpack/lib/action_dispatch/middleware/session/cookie_store.rb`
- E-03: `actionpack/lib/action_dispatch/middleware/session/abstract_store.rb`
- E-04: `actionpack/lib/action_dispatch/middleware/session/cache_store.rb`
- E-05: `actionpack/lib/action_dispatch/middleware/session/mem_cache_store.rb`
- E-06: `actionpack/lib/action_dispatch/middleware/cookies.rb`
- E-07: `actionpack/lib/action_controller/metal/request_forgery_protection.rb`
- E-08: `actionview/lib/action_view/helpers/sanitize_helper.rb`
- E-09: `actionview/lib/action_view/helpers/output_safety_helper.rb`
- E-10: `actionpack/lib/action_dispatch/http/content_security_policy.rb`
- E-11: `activerecord/lib/active_record/sanitization.rb`
- E-12: `actionpack/lib/action_dispatch/middleware/ssl.rb`
- E-13: `actionpack/lib/action_dispatch/middleware/host_authorization.rb`
- E-14: `activesupport/lib/active_support/message_encryptor.rb`
- E-15: `activesupport/lib/active_support/key_generator.rb`
- E-16: `activesupport/lib/active_support/message_verifier.rb`
- E-17: `activerecord/lib/active_record/encryption.rb`
- E-18: `actionpack/lib/action_controller/metal/strong_parameters.rb`
- E-19: `actionpack/lib/action_dispatch/http/filter_parameters.rb`
- E-20: `activesupport/lib/active_support/security_utils.rb`

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | BCryptがデフォルトパスワードハッシュアルゴリズム | E-01 | ○ |
| C-02 | Argon2が推奨パスワードハッシュアルゴリズム | E-01 | ○ |
| C-03 | パスワード最大長72バイト（BCrypt制限） | E-01 | ○ |
| C-04 | パスワードリセットトークン15分有効 | E-01 | ○ |
| C-05 | セッションIDはSecureRandom.hex(16)で生成 | E-03 | ○ |
| C-06 | デフォルトセッションストアはCookieStore | E-02 | ○ |
| C-07 | セッションはAES-256-GCMで暗号化 | E-02, E-06 | ○ |
| C-08 | Cookieサイズ制限4096バイト | E-02, E-06 | ○ |
| C-09 | SameSite属性デフォルト有効 | E-02 | ○ |
| C-10 | CacheStoreはRails.cache使用 | E-04 | ○ |
| C-11 | MemCacheStoreはMemcached対応 | E-05 | ○ |
| C-12 | Cookie暗号化にAES-256-GCM使用 | E-06 | ○ |
| C-13 | 署名付きCookieはHMAC-SHA256使用 | E-06 | ○ |
| C-14 | 鍵ローテーション機能あり | E-06, E-14 | ○ |
| C-15 | CSRF検証はSec-Fetch-Site優先 | E-07 | ○ |
| C-16 | CSRFトークン長32バイト | E-07 | ○ |
| C-17 | CSRFトークンはSecureRandom.urlsafe_base64(32)で生成 | E-07 | ○ |
| C-18 | CSRFマスキングはXORベースのワンタイムパッド | E-07 | ○ |
| C-19 | CSRF検証失敗時:exception設定で例外発出 | E-07 | ○ |
| C-20 | sanitize()メソッドでHTMLサニタイズ | E-08 | ○ |
| C-21 | strip_tags()で全HTMLタグ削除 | E-08 | ○ |
| C-22 | strip_links()でリンクタグのみ削除 | E-08 | ○ |
| C-23 | raw()でエスケープなし出力 | E-09 | ○ |
| C-24 | safe_join()でHTML安全結合 | E-09 | ○ |
| C-25 | CSPディレクティブ設定可能 | E-10 | ○ |
| C-26 | CSP Nonce対応 | E-10 | ○ |
| C-27 | CSP Report-Onlyモード対応 | E-10 | ○ |
| C-28 | sanitize_sql_for_conditionsでWHERE句サニタイズ | E-11 | ○ |
| C-29 | sanitize_sql_for_assignmentでSET句サニタイズ | E-11 | ○ |
| C-30 | sanitize_sql_likeでLIKE句サニタイズ | E-11 | ○ |
| C-31 | force_sslでHTTPS自動リダイレクト | E-12 | ○ |
| C-32 | HSTSデフォルト2年（63072000秒） | E-12 | ○ |
| C-33 | HSTSサブドメイン適用デフォルト有効 | E-12 | ○ |
| C-34 | HSTSプリロードオプション対応 | E-12 | ○ |
| C-35 | ホスト認可でDNS Rebinding対策 | E-13 | ○ |
| C-36 | 開発環境で.localhost,.test許可 | E-13 | ○ |
| C-37 | 不正ホスト時403 Forbidden応答 | E-13 | ○ |
| C-38 | MessageEncryptorはAES-256-GCMデフォルト | E-14 | ○ |
| C-39 | 暗号化メッセージにパーパス指定可能 | E-14 | ○ |
| C-40 | 暗号化メッセージに有効期限設定可能 | E-14 | ○ |
| C-41 | KeyGeneratorはPBKDF2使用 | E-15 | ○ |
| C-42 | PBKDF2反復回数65536 | E-15 | ○ |
| C-43 | MessageVerifierはHMAC署名 | E-16 | ○ |
| C-44 | Strong Parametersでホワイトリスト制御 | E-18 | ○ |
| C-45 | FilterParametersで機密情報マスキング | E-19 | ○ |
| C-46 | 定時間比較でタイミング攻撃対策 | E-20 | ○ |
| C-47 | TLS 1.2+対応 | **根拠なし** | △ |
| C-48 | ログ保持期間 | **根拠なし** | △ |

## 4) 不足情報（Unknown / Missing）
- **TLSバージョン設定**：Rails自体にはTLSバージョン設定のコードなし
  - 候補：Webサーバー（Nginx/Apache）設定 / ロードバランサー設定 / クラウドプロバイダー設定
- **ログ保持期間**：Railsフレームワークでは規定なし
  - 候補：ログローテーション設定（logrotate） / ログ管理サービス設定 / 運用ポリシー文書

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**: 認証・暗号化・CSRF・XSS対策 - ソースコードで直接確認済み
- **0（低リスク）**: セッション管理 - 実装コードで詳細確認済み
- **1（中リスク）**: TLSバージョン - Webサーバー設定依存のため別途確認必要
- **0（低リスク）**: Strong Parameters - 実装コードで確認済み
- **1（中リスク）**: 監査ログ保持期間 - 運用設定依存のため別途確認必要

## 6) レビュアーチェックリスト（最小）
- [ ] TLSバージョン設定がWebサーバー/ロードバランサーで適切に設定されているか確認
- [ ] ログ保持期間がコンプライアンス要件を満たしているか確認
- [ ] 本番環境でforce_ssl = trueが設定されているか確認
- [ ] secret_key_baseが適切に管理されているか確認
- [ ] パスワードハッシュアルゴリズムとしてArgon2が使用されているか確認（推奨）
- [ ] CSPが適切に設定されているか確認
- [ ] filter_parametersに全ての機密パラメータが含まれているか確認
