DCP の鍵保管¶
英語版の参考訳です。更新日:2026年10月25日。相違がある場合は英語の原文が優先されます。識別子とコードブロック(コメントを含む)は原文のままです。
このディレクトリには、DCP プロトコルのツールが使用する暗号鍵を保存します。
構成¶
keys/
├── README.md # This file
├── public_key.txt # Ed25519 public key (base64) — safe to share
├── secret_key.txt # Ed25519 secret key (base64) — NEVER commit
├── agent_public_key.txt # Agent-specific public key (optional)
└── agent_secret_key.txt # Agent-specific secret key (optional, NEVER commit)
鍵の生成¶
dcp はチェックアウトに含まれる参照 CLI(node bin/dcp.js)です。ディレクトリを指定しないと keys/ に書き込みます。チェックアウトでは、適合性サンプルの検証に使う鍵 keys/public_key.txt が上書きされます(npm run conformance と CI がこの鍵を使用します)。別のディレクトリを指定してください。
# Ed25519 (V1): public_key.txt and secret_key.txt
node bin/dcp.js keygen my-keys
# Hybrid V2 (Ed25519 + ML-DSA-65): ed25519_public_key.txt, ed25519_secret_key.txt, ed25519_kid.txt,
# ml_dsa_65_public_key.txt, ml_dsa_65_secret_key.txt, ml_dsa_65_kid.txt
node bin/dcp.js keygen --hybrid my-keys
秘密鍵ファイルはモード 0600 で書き込まれます。V1 コマンドは鍵ファイルを引数として受け取ります(dcp sign-bundle <bundle.json> <secret_key.txt>、dcp verify-bundle <bundle.signed.json> <public_key.txt>)。keys/public_key.txt に対応する秘密鍵はリポジトリに含まれていません。
セキュリティポリシー¶
- 秘密鍵(
secret_key.txt、*_secret*、*.pem、*.key)は.gitignoreによってバージョン管理から除外されます。 - 公開鍵は参照や検証のためにコミットできます。
- 本番環境では、秘密鍵をファイルシステムではなくハードウェアセキュリティモジュール(HSM)または鍵管理サービスで保管してください。このリポジトリは HSM 連携を提供しません。その保管機能は利用者自身のインフラで用意します。
- V2 ハイブリッド鍵の ML-DSA-65 秘密鍵素材にも同じ除外方針が適用されます。
鍵の形式¶
| 鍵の種類 | エンコード | サイズ(バイト) |
|---|---|---|
| Ed25519 公開鍵 | Base64 | 32 |
| Ed25519 秘密鍵 | Base64 | 64(シードの後に公開鍵が続く) |
| ML-DSA-65 公開鍵 | Base64 | 1952 |
| ML-DSA-65 秘密鍵 | Base64 | 4032 |
決定的な鍵 ID(kid)¶
V2 の鍵は、アルゴリズムと公開鍵の生バイト列から導出した決定的な kid を使用します。
これにより、すべての DCP 実装で同じ鍵から常に同じ kid が生成されます(dcp kid <public_key_file> --alg <algorithm> で計算できます)。