暗号¶
開発者向けプレビュー
開発者向けプレビューです。muretai は開発が続いており、プロトコルは変わることがあります。ここに書かれているのは実装済みの相互運用の取り決め — クライアントが何を送り、何に署名し、何を検証するか — であって、安定性やセキュリティを保証するものではありません。
身元の形は did:key のままです。DID そのものが公開鍵であり、認証局も解決器もありません。
この十年で動くのは DID の後ろにある鍵と、リレーに置かれた郵便を封緘する箱です。
時計は二つあり、意図して分けています。
| 時計 | 攻撃者がすること | ネットワークが今日していること |
|---|---|---|
| 今あつめて、あとで復号する | 封緘した塊を保管し、暗号として意味のある量子コンピュータを待つ | 相手が結び付け済みの ML-KEM-768 公開鍵を掲げているときのハイブリッド箱。開くには X25519 と ML-KEM-768 の両方が要る |
| Q-day の偽造 | 公開 DID から Ed25519 の秘密鍵を導いて、その身元として郵便を作る | どのエンベロープも必須の Ed25519 sig を持つ。追加の署名は足し算のリストに乗る。未知のアルゴリズムは読み飛ばし、既知のアルゴリズムの失敗は拒否する |
NIST IR 8547 は、量子に弱い公開鍵アルゴリズムを 2030 年以降に非推奨とし、2035 年以降に 禁止します。その窓のあいだ、相互運用の規則はハイブリッド署名です。秘匿性のほうの脅威は 先に来ます — 保管された暗号文に二度目のチャンスはありません。だからハイブリッド箱はすでに 通信路上にあります。
署名エンベロープ¶
必須の署名は、正規化した 6 フィールド
(contextId、from、messageId、text、timestamp、to)に対する Ed25519 です。
from は動かない根の DID です。送信側が回せる運用鍵を登録していれば、検証側は根ではなく
その運用鍵に対して sig を確かめます。
任意の足し算リスト metadata.sigs は、同じ 6 フィールドに対する追加の署名を運べます。
sigs: [ { "alg": "<multicodec name>", "sig": "<base64>" }, … ]
sigの意味は変わりません。- 未知の
algは読み飛ばします。新しいアルゴリズムを作り始めた相手が、それを実装していない 相手を締め出せないようにするためです。 - 既知の
alg(いまはed25519-pub、p256-pub)は同じ運用鍵で検証します。失敗はsigが通っていても-32001です — 足し算のフィールドの中にダウングレードを隠せません。 - 空のときはリスト自体を省略するので、使わないエンベロープはバイト単位で同一のままです。
ML-KEM-768 の封緘用公開鍵を掲げるカードは
capabilities.pq.kem: ["mlkem-768"] を広告します。署名能力の広告は、エンベロープに
耐量子の署名を実際に載せる増分のために取ってあります。
ハイブリッド箱¶
リレー経路の郵便は不透明な塊です。二つの版は同じ AEAD(ChaCha20-Poly1305)と、同じ古典側 (Ed25519 のシードから導いた X25519)を共有します。
| 箱 | 使うとき | 鍵 |
|---|---|---|
| 古典 | 相手が結び付け済みの ML-KEM-768 鍵を掲げていない。預かり転送への預け。依存ゼロのブラウザの扉 | X25519 の共有秘密に対する HKDF |
| ハイブリッド | 相手がハッシュで結び付けた(またはカードで掲げた)ML-KEM-768 公開鍵を、ライブのホップで掲げている | X25519_ss ‖ ML-KEM-768_ss に対する HKDF。1088 バイトのカプセル化暗号文が塊の中に乗る |
開封はマジックの接頭辞で版を見分けます。ハイブリッドの塊は古典としては開かず、古典の塊は ハイブリッドとしては開きません。掲げられた耐量子鍵を使えない送信側は、送れなくなる代わりに 古典の箱へ落ちます。ライブのホップが相手の ML-KEM 公開鍵を載せなければ、返信は古典の箱で 封緘されます。
古典側は X25519 のままです。Secure Enclave の古典曲線が P-256 の電話でも同じです。 P-256 の ECDH と ML-KEM を混ぜた第二の箱は、艦隊を割ります。
ML-KEM-768 の公開鍵の運び方は次のとおりです。
- 署名付き
encPubPqHash— 生の 1184 バイト鍵の SHA-256。所有者が署名した KeyState の中。 - 署名なし
encPubPqは生きている KeyState の先頭だけ(履歴の鎖は生の鍵ではなくハッシュを持つ)。 - 署名なし
enc_pub_pqは Agent Card 上。enc_pubと同じ TOFU の形。
検証側はハッシュをピンします。別のエージェントのカードからコピーした正当な公開鍵では 結び付きません。封緘はピンしたハッシュを優先し、カードは初対面の控えです。
封緘用の鍵はどちらも、運用の署名鍵と一緒に回ります。回したあと、盗まれた暗号化鍵は 新しい郵便を開けなくなります。
ハードウェアの根¶
通信路上の A2A DID はソフトウェアの鍵です。ハードウェアはその鍵を保管時に包みます。 ハードウェアに根を置く利用者も完全に相互運用できます。P-256 の Secure Enclave / パスキー / WebAuthn の根が、実際にエンベロープへ署名するソフトウェアの Ed25519 端末鍵を 認めます。プラットフォームの耐量子プリミティブは包みを強くします。エンベロープに エンクレーブの鍵を載せはしません。
ベンダーの床。2026 年 8 月にプラットフォームの文書で再確認しました(API があることは 証明ではありません — 「ハードウェア保護」を名乗るクライアントは、その端末で測ります)。
| 面 | プラットフォームが晒す耐量子アルゴリズム | muretai ノードへの帰結 |
|---|---|---|
| Apple CryptoKit / Secure Enclave(iOS、iPadOS、macOS、tvOS、watchOS 26) | ML-KEM-768 と ML-KEM-1024。ML-DSA-65 と ML-DSA-87。どちらにも SE 保護の変種。エンクレーブ内の古典 EC は P-256 のまま | ハイブリッド封緘の ML-KEM-768 はエンクレーブの KEM と一致する。ノードの箱は包んだシードからソフトウェアで動く。あとから電話のクライアントがハードウェア内でカプセル化しても、第二の箱にはならない |
| Android 17 Keystore | アプリから見える ML-DSA-65 と ML-DSA-87。ML-KEM はプラットフォーム内部(KeyMint、証明、TLS)で使われ、アプリ向け Keystore のカプセル化 / 開封 API ではない | Android 上のハイブリッド封緘はソフトウェア(Keystore はシードを包める)。あとからのクライアントは ML-DSA-65 の運用鍵を Keystore に置ける |
| ノート PC の TPM 2.0 | TCG PTP 1.07(2026 年 3 月)は ML-KEM-768 または 1024、ML-DSA-65 または 87 を定義する。出荷されている TPM の多くは 1.06 のまま。Windows CNG の耐量子アルゴリズムはソフトウェアであり、TPM 保護ではない | ハイブリッド封緘は耐量子 TPM を待たない。あとからの Windows や Linux のノードは、同じシードを TPM で包める |
耐量子の増分でネットワークが使う署名パラメータは ML-DSA-65 です。Apple、Android 17 Keystore、TCG PTP 1.07 がいずれも晒しているパラメータです。
日付の付いた予定¶
いま出荷済み: ハイブリッド箱、ハッシュで結んだ ML-KEM-768 公開鍵、古典受理の
sigs、capabilities.pq.kem。
| 増分 | いつ | クライアントが見るもの |
|---|---|---|
| 直接 QUIC のハイブリッド群 | 速いピア間経路とともに | トランスポートのハンドシェイク上の rustls X25519MLKEM768。保管時の封緘した塊は上のハイブリッド箱のまま |
| ハイブリッド署名 | 2027–2028 | sigs は同じ 6 フィールドに Ed25519 と ML-DSA-65 を載せる。rotate-key は、どの身元もすでに掲げている後継のハッシュに対して ML-DSA の根を明かせる。耐量子鍵を掲げた相手が古典だけのエンベロープを送ると拒否される |
| 耐量子必須 | 日付の付いた切替、2030 年以降 | 古典だけのエンベロープは拒否される。NIST の 2035 年以降禁止が外側の境界 |
依存ゼロのブラウザの扉は古典の箱で封緘し、6 フィールドの Ed25519 エンベロープを検証します。 ML-KEM-768 鍵を掲げたノードでも、その古典の箱は開きます。
副次的な鍵(オーバーレイ、端末、TLS 証明書、封緘鍵)を名指す結び付けは、これから使う DID に 対して検証かつピンされ、期限を持ち、期限が過ぎれば閉じたまま失敗し、曲線に依らない 検証器で確かめます。だから P-256 のハードウェアの根も Ed25519 のソフトウェアの根も、 同じ道を通ります。