---
generated_at: 2026-02-17 21:35:00
metrics:
  claims_total: 22
  claims_with_evidence: 21
  claims_without_evidence: 1
confidence_derived: 0.95
---

# 根拠レポート：92-sysrand（暗号学的乱数）

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.95**
  - 根拠あり：21 / 22、根拠なし：1
- 優先レビュー（高）
  1. **セキュリティ監査の状態**：実際の監査結果の確認が必要
  2. **エントロピー品質の保証**：仮想環境での品質評価の根拠なし
  3. **getRandomValuesの65536バイト制限**：実装では256バイト単位で処理

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

- E-01: `lib/std/sysrand.nim` 10-45行目（モジュールドキュメント・プラットフォーム対応表）
- E-02: `lib/std/sysrand.nim` 296-315行目（urandom proc版実装）
- E-03: `lib/std/sysrand.nim` 317-327行目（urandom func版実装）
- E-04: `lib/std/sysrand.nim` 139-168行目（Windows実装）
- E-05: `lib/std/sysrand.nim` 170-202行目（Linux実装）
- E-06: `lib/std/sysrand.nim` 235-256行目（macOS/iOS実装）
- E-07: `lib/std/sysrand.nim` 204-211行目（OpenBSD実装）
- E-08: `lib/std/sysrand.nim` 223-233行目（FreeBSD実装）
- E-09: `lib/std/sysrand.nim` 90-137行目（JavaScript実装）
- E-10: `lib/std/sysrand.nim` 258-287行目（POSIX実装）
- E-11: `lib/std/sysrand.nim` 68-70行目（batchSize定義）
- E-12: `lib/std/sysrand.nim` 72-88行目（batchImplテンプレート）
- E-13: `docs/code-to-docs/機能一覧/機能一覧.csv` 92行目（機能定義）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | WindowsではBCryptGenRandomを使用 | E-04 | ○ |
| C-02 | Linuxではgetrandomシステムコールを使用 | E-05 | ○ |
| C-03 | macOS/iOSではSecRandomCopyBytesを使用 | E-06 | ○ |
| C-04 | OpenBSDではgetentropyを使用 | E-07 | ○ |
| C-05 | FreeBSDではgetrandomを使用 | E-08 | ○ |
| C-06 | Node.jsではrandomFillSyncを使用 | E-09 | ○ |
| C-07 | ブラウザではgetRandomValuesを使用 | E-09 | ○ |
| C-08 | その他POSIXでは/dev/urandomを使用 | E-10 | ○ |
| C-09 | サイズ0の要求は即座に成功を返す | E-02, E-03 | ○ |
| C-10 | バッチ処理は256バイト単位 | E-11, E-12 | ○ |
| C-11 | proc版はfalseを返す、func版はOSErrorを発生 | E-02, E-03 | ○ |
| C-12 | Nim 1.6で追加されたモジュール | E-01 | ○ |
| C-13 | セキュリティ監査は未実施 | E-01 | ○ |
| C-14 | LinuxでEINTR/EAGAINの場合は自動リトライ | E-05 | ○ |
| C-15 | -d:nimNoGetRandomでgetrandomを無効化可能 | E-05 | ○ |
| C-16 | urandom(size)はnewSeq後にproc版を呼び出す | E-03 | ○ |
| C-17 | STATUS_SUCCESSとの比較でWindows結果判定 | E-02, E-04 | ○ |
| C-18 | ブラウザ環境でのバッチ処理制限 | E-09 | ○ |
| C-19 | /dev/urandomのstat確認でS_ISCHR検証 | E-10 | ○ |
| C-20 | Zephyr対応（sys_csrand_get） | E-01 | ○ |
| C-21 | Security.frameworkのリンク | E-06 | ○ |
| C-22 | 仮想環境でのエントロピー品質低下の可能性 | **根拠なし** | △ |

## 4) 不足情報（Unknown / Missing）
- 仮想環境・コンテナ環境でのエントロピー品質に関する評価
  - 候補：外部セキュリティ評価 / OSドキュメント / 開発者ガイドライン
- 各プラットフォームAPIの詳細なエラーコード一覧
  - 候補：OS公式ドキュメント / manページ / MSDN

## 5) リスクフラグ（レビュー観点）
- 2: セキュリティ監査未実施（高リスク - 本番環境での利用時は外部監査を推奨）
- 1: プラットフォーム分岐の複雑さ（中リスク - 各環境でのテストが必要）
- 0: バッチ処理ロジック（低リスク - 単純なループ処理）
- 1: エラーハンドリングの一貫性（中リスク - proc/func版での挙動差異）

## 6) レビュアーチェックリスト（最小）
- [ ] 各プラットフォームのOS API名が正しいことを確認
- [ ] batchSize定数が256であることを確認（68-70行目）
- [ ] Windows実装でSTATUS_SUCCESS定数が0x00000000であることを確認（148行目）
- [ ] Linux実装でEINTR/EAGAINのリトライ処理を確認（199行目）
- [ ] macOS実装でerrSecSuccess定数が0であることを確認（238行目）
- [ ] JavaScript実装でブラウザ/Node.jsの分岐が正しいことを確認
