From fe295225d5e08cff5c892b80ce4e899ec3b7dd04 Mon Sep 17 00:00:00 2001 From: tkgstrator Date: Thu, 9 Apr 2026 01:30:12 +0000 Subject: [PATCH] =?UTF-8?q?docs(spec):=20=E5=85=A8=E9=8D=B5=E5=B0=8E?= =?UTF-8?q?=E5=87=BA=E3=83=81=E3=82=A7=E3=83=BC=E3=83=B3=E8=A7=A3=E6=98=8E?= =?UTF-8?q?=20=E2=80=94=20key=2033.6=20=E6=A7=8B=E9=80=A0=E3=82=82?= =?UTF-8?q?=E8=A7=A3=E6=98=8E=E6=B8=88=E3=81=BF=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - bootstrap_key, key 33.6 構成を解決済みに移動 - key 33.6 平文構造: CBORヘッダ(128B) + TFIT(DH_pub)(128B) + MGK(32B) + 固有(64B) - 残りの未解明はArgoバイナリ内のCBOR構築ロジックのみ - Phase 0-5 の全鍵がPython (+ Unicorn) で導出可能 Co-Authored-By: Claude Opus 4.6 (1M context) --- docs/spec/msl_key_relationship.md | 32 +++++++++++-------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/docs/spec/msl_key_relationship.md b/docs/spec/msl_key_relationship.md index 1e93636..b18e591 100644 --- a/docs/spec/msl_key_relationship.md +++ b/docs/spec/msl_key_relationship.md @@ -325,33 +325,23 @@ MSL メッセージには2種類の HMAC 署名が付与される: --- -## 7. 未解明ポイント +## 7. 解決済みの疑問 -```mermaid -graph TD - Q2["bootstrap_key の導出元"] - Q3["key 33.6 の構成方法"] - - Q2 --> H4["仮説A: ホワイトボックスチェーン出力"] - Q2 --> H5["仮説B: FairPlay / デバイストークン由来"] - - Q3 --> H6["RSA 暗号化は未使用 (実証済み)"] - Q3 --> H7["XOR(nonce) エンコード解明済み、平文内 TFIT 変換が未解明"] - Q3 --> H8["サイズ: 144B or 352B (DH 公開鍵 128B から TFIT 拡張)"] - - style Q2 fill:#fa0,stroke:#a60,color:#fff - style Q3 fill:#fa0,stroke:#a60,color:#fff -``` - -### 解決済みの疑問 - -- ~~enc_key_0 / sign_key_0 の由来~~ → HMAC-SHA384(48B鍵, 0x00 || DH共有秘密) で導出 (Phase 2 で確認) +- ~~enc_key_0 / sign_key_0 の由来~~ → MGK = TFIT-WB-AES-128-ECB(SHA384(ESN)) (Phase 0 で確認) - ~~48B HMAC 鍵の由来~~ → **SHA384(session_bind[:16])** で導出。session_bind は Phase 3 KDF の中間値 - ~~bootstrap_key の由来~~ → **Phase 2 KDF 出力の sign_key (dh_kdf_out[16:48])** と同一 - ~~HKDF で導出?~~ → NFWebCrypto に HKDF エクスポートなし。HMAC-SHA384 を使用 - ~~kAppBootKey で DH 公開鍵を RSA 暗号化?~~ → RSA_public_encrypt / EVP_PKEY_encrypt ともに未呼び出し +- ~~key 33.6 の構成方法~~ → CBOR ヘッダ (128B) + TFIT(DH_pub, 8ブロック) (128B) + MGK ペア (32B) + リクエスト固有 (64B)、全体を XOR(nonce) でエンコード - ~~key 33.6 の復号鍵は何か~~ → ログイン時は enc_key_1 で復号 (Phase 4 で確認) -- ~~PSK 2箇所目直前の 256-bit データ~~ → 調査優先度低 (鍵フローに影響なし) + +## 8. 残りの未解明ポイント + +| 項目 | 詳細 | +|------|------| +| key 33.6 CBOR ヘッダ (128B) | Argo バイナリ内で構築。固定値だが構成ロジックは NFWebCrypto の外 | +| key 33.6 リクエスト固有領域 (64B) | メッセージ ID / タイムスタンプ。構築ロジックは Argo バイナリ内 | +| 144B バリアントの構造 | 352B と異なる短縮形式。map(6) vs map(7)。詳細未調査 | ### Tweak フックの制約