Commit Graph
66 Commits
Author SHA1 Message Date
tkgstratorandClaude Opus 4.7 222602248e docs(kanade): 解析中間まとめ + PSB v6+ パーサと文字列抽出ツール
KANADE (Frontwing/KrkrZ) のセリフテキスト抽出に向けた一連の作業を記録。

達成:
- SteamStub DRM 剥がし、Goldberg Steam Emu 設置、PackinOne アンチタンパー
  パッチで起動シーケンスは大幅に進む状態に
- Frontwing 独自 PSB v6+ フォーマット (c1a2 magic + TLV tree) を解明、
  Python パーサ (tools/re/parse_psb_tree.py) を実装
- PSB 141 個を JSON 展開 → 全部 UI orchestration スクリプトで日本語ゼロ
  と確定

未解決:
- KANADE 起動: PackinOne の System.addFont 登録が KrkrZ の load order
  問題でブロック。XP3 内 TJS 改変も TJS パーサに弾かれて頓挫
- シナリオ所在: PSB ではなく Frontwing 独自スクランブル + KAG/TJS
  バイトコード化されている可能性大

次回の手掛かりは docs/instructions/kanade_progress.md にまとめた。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 07:08:51 +00:00
tkgstratorandClaude Opus 4.7 7780e566d5 docs(kanade): Mac + Whisky + Frida セットアップ手順を追加
Apple Silicon Mac の Whisky で KANADE.exe を起動し、Frida で
PackinOne.dll の鍵派生関数 (fn 0x10010570 / fn 0x1000bb80) と
KANADE.exe の TVPCreateStream を hook して、復号鍵 + 復号後の
生ストリームを両取りする手順を整理。

併せて packinone の静的解析ノートも記録に残す。

スクリプト本体 (packages/frida/hook_kanade_packinone.js) は
packages/frida/*.js が gitignore 対象のため commit せず、
リポジトリ内ローカル運用とする。

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 08:42:10 +00:00
tkgstratorandClaude Opus 4.6 98b00ec87b docs(spec): 同期セッション検証完了、manifest が残る課題を記載
- Phase 0-3 全導出チェーンがライブ値と完全一致することを確認
- Netflix CBOR エンコーダは byte-for-byte 一致 (manifest msg1 1730B 完全一致)
- appboot リプレイ成功、manifest はセッション期限切れで不可
- 同期セッションキャプチャ手順 (Tweak + mitmproxy 同時実行) を文書化
- 次ステップ: 同セッションの manifest req をキャプチャして構造を確認

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 06:26:46 +00:00
tkgstratorandClaude Opus 4.6 caf4c86118 docs(spec): manifest リプレイ不可 + DH 秘密鍵 TEE 依存の課題を記載
- manifest リクエストはリプレイ不可 (HTTP 400, セッション期限切れ)
- appboot はリプレイ可 (リプレイ保護なし)
- DH 鍵生成が TEE (AppleTeeApiCryptoShim::dhKeyGen) 経由で OpenSSL フック不可
- 解決策: Frida で TEE dhKeyGen の返り値をフックして DH 秘密鍵を取得
- test_msl_manifest.py: appboot→セッション鍵→manifest POST の全フロー実装済み

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 01:34:24 +00:00
tkgstratorandClaude Opus 4.6 3b231c665a docs(spec): エミュレータ最終ステータス — TEE 依存で Python 単体不可、リプレイ方式で動作
- 全暗号処理が AppleTeeApiCryptoShim 経由で TEE 内実行と確定
- Python 単体での appboot リクエスト生成は不可能
- mitmproxy キャプチャ + リプレイ方式で appboot 成功を確認
- msg1 のみで十分、リプレイ保護なし、4/8 キャプチャが 4/10 でも有効
- 残課題: DH 秘密鍵のキャプチャ (Tweak 経由) → Phase 2 セッション鍵導出

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 01:04:40 +00:00
tkgstratorandClaude Opus 4.6 91f5775433 docs(spec): apphmac は TEE (Secure Enclave) 内 HMAC — Python 再現不可と確定
- AppleTeeApiCryptoShim::hmac (0x990c) が apphmac 計算に使用される
- AIK バイト (38b2030d) は TEE に sealed され、ハードウェア保護された鍵で HMAC
- 標準 HMAC-SHA256 では再現不可 (TEE 固有の鍵導出)
- 全暗号操作 (hmac, aes, dh) が TEE 経由で実行される構造
- 回避策: mitmproxy キャプチャから apphmac を直接抽出してパラメータとして渡す

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 00:29:52 +00:00
tkgstratorandClaude Opus 4.6 ad6f705c7c docs(spec): Mermaid フローチャートで現在地を可視化
- appboot 全フローを Mermaid flowchart で図示
- 各ステップを 緑(完了)/赤(ブロッカー)/青(サーバー側) で色分け
- 2つの壁を明確に記述: apphmac 導出 + TFIT 復号
- 実装済みコンポーネント一覧を簡潔化

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 17:58:08 +00:00
tkgstratorandClaude Opus 4.6 6d8ed6920c docs(spec): エミュレータ進捗ドキュメントを全面改訂 — 正確な現在地と課題を記載
- 2つのブロッカーを明確に分離:
  1. errorcode=6: apphmac (32B) の導出元不明
  2. errorcode=1: TFIT 復号エラー (real krd リプレイでも発生)
- エラー遷移の全履歴を記載 (ec=1→ec=6→ec=1 の段階的進展)
- entity_auth_data/scheme_data の確定構造を記載
- 誤った情報を修正 (apphmac≠deviceIdToken, リプレイ≠保護)
- 次のアクション (apphmac 導出 + TFIT 復号) を優先度付きで記載

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 17:53:25 +00:00
tkgstratorandClaude Opus 4.6 f2d370895c docs(spec): エミュレータ進捗更新 — scheme_data 352B 完成、errorcode=6 分析
- scheme_data 352B: 135B header + 128B TFIT + 89B CFB-chain CBOR 構築完了
- entity_auth_data 467B 完全一致、krd 499B 完全一致
- 二重 CBOR メッセージ構造 (msg1 1037B + msg2 payload chunk) を発見
- apphmac 検証: 必須フィールド、ランダムは拒否、キャプチャ値も拒否 (期限切れ?)
- 残課題: apphmac 導出ロジック、server DH pub 抽出、payload chunk フォーマット

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 17:24:45 +00:00
tkgstratorandClaude Opus 4.6 82b15fb063 docs(spec): appboot エミュレータ進捗・課題ドキュメント追加
- 実装済みコンポーネント一覧 (TFIT, KDF, DH, CBOR, HTTP 全て動作確認済み)
- 現在のサーバーレスポンス: errorcode=6 "App Id Validation failed"
- 残課題: deviceIdToken 初回取得、session_region テール 37B、server DH pub 抽出
- 値の取得方法まとめ (ESN 以外は全て自動取得可能)
- テスト実行方法

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 16:27:23 +00:00
tkgstratorandClaude Opus 4.6 70fb7279d0 docs(spec): devicetoken = deviceIdToken の Base64 デコードと判明 — ESN のみで Python 実行可能
- CBOR "devicetoken" (216B) と "apphmac" (32B) は同一の DEVICE_ID_TOKEN の異なる表現
- 両方とも x-netflix-deviceidtoken HTTP レスポンスヘッダから取得
- NFSharedStore App Group コンテナに DEVICE_ID_TOKEN キーで永続化
- getAuthData() 内で: apphmac = UTF8 bytes, devicetoken = Base64.decode()
- Tweak キャプチャは ESN のみで Python 単体で appboot→MSL認証が実行可能

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:14:07 +00:00
tkgstratorandClaude Opus 4.6 f17ed6fc60 docs(spec): deviceIdToken はサーバー発行 (x-netflix-deviceidtoken ヘッダ) と確定
- deviceIdToken は暗号計算ではなく Netflix サーバーが HTTP レスポンスヘッダで配信
- 永続化先は NFSharedStore App Group コンテナ (Keychain 外)
- 初回 appboot では nil で送信可能、レスポンスから取得してキャッシュ
- Python 単体で取得可能 — Tweak でのキャプチャ不要
- 必要なキャプチャ値は ESN + devicetoken (216B) の 2 つのみに削減

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:45:20 +00:00
tkgstratorandClaude Opus 4.6 87333975f6 docs(spec): トークンは DRM 層永続化と確定、Phase 2 48B key 検証済み
- Keychain 全削除 (18件) + アプリデータ全削除後も同一トークンが使用された
- devicetoken/deviceIdToken は Keychain より深い層 (Secure Enclave/CDM) に永続化
- getNRMCookieWithESN: コールバックは Keychain 削除後も発火せず
- HTTP エンドポイントも存在しない (mitmproxy 確認済み)
- → 一度 Tweak でキャプチャすれば長期間再利用可能
- Phase 2 KDF: SHA384(session_bind[:16]) = 48B key の一致を確認

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 13:52:59 +00:00
tkgstratorandClaude Opus 4.6 bb4fb1d2ce docs(spec): entity_auth_data 構造と devicetoken/deviceIdToken の取得元を追記
msl_key_relationship.md に Section 9 追加:
- entity_auth_data (MGK_APPID) の CBOR 構造を記載
- deviceIdToken (apphmac): CDM/Secure Enclave 由来、HTTP API なし
- devicetoken (NRM): Nbp.framework 内部 SDK コール、HTTP API なし
- プロキシログで NRM 専用エンドポイント不在を確認
- Python 実装での扱い方 (コンストラクタパラメータ) を記載

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 13:45:00 +00:00
tkgstratorandClaude Opus 4.6 65bb5a213e docs(spec): apphmac = deviceIdToken と確定 — 全未知値が解明完了
- apphmac は HMAC/SHA/HKDF ではなく [device deviceIdToken] (CDM由来の不透明トークン)
- MslClient getAuthData() (0x284bc) の静的解析で this+0xe8 → CBOR "apphmac" の流れを確認
- setApphmac() (0x29930), 3つのコードパス (A/B/C) を特定
- HKDF(MGK, PSK, Nonce) は apphmac とは無関係 (Phase 3 KDF 初期化用)
- entity_auth_data の全フィールド構造を確定

全未知値の解明が完了:
- apphmac: deviceIdToken (キャプチャ必要)
- appboot sign key: Keychain キャッシュ (初回は sign_key_1)
- devicetoken: NRM トークン (キャプチャ必要)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 13:27:22 +00:00
tkgstratorandClaude Opus 4.6 84ff134874 docs(spec): apphmac は毎リクエスト可変 (67/243 ユニーク) — HKDF 仮説を否定
- CBOR 直接照合で HKDF(MGK, PSK, Nonce) 出力と不一致を確認
- 243 appboot リクエスト中 67 個のユニーク apphmac 値を観測
- ランダムノンスまたはタイムスタンプ依存の値
- entity_auth_data の CBOR 構造を完全に記載 (key 35 + key 30)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 12:55:17 +00:00
tkgstratorandClaude Opus 4.6 42a7eadfce feat(tweak): FpsMgkAppIdAuthData キャプチャ成功 — x5は devicetoken と判明
- FpsMgkAppIdAuthData (0x28038) フック発火確認
- RE で apphmac と名付けられたx5引数は実際には devicetoken (216B protobuf)
- apphmac はコンストラクタ引数ではなく getAuthData() 内部で計算される
- HKDF hook を無効化 (sret 呼び出し規約でクラッシュ)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 12:47:32 +00:00
tkgstratorandClaude Opus 4.6 7cd95f6631 feat(re): apphmac 導出式を特定 — HKDF(MGK, PSK, Nonce) が最有力候補
- AppleWebCrypto::HKDF (NFWebCrypto+0x11900) フックで入力を完全キャプチャ:
  key=MGK(48B), ikm=PSK(16B), info=Nonce(16B)
- 導出式: HMAC-SHA256(HMAC-SHA256(MGK, PSK), Nonce)
- 全入力が既知定数/導出可能値のため Python で再現可能
- HKDF の key パラメータ読み取りを修正 (obj+8 offset で KeyByteArray データ発見)
- これにより appboot→MSL認証に必要な全値の導出式が技術的に揃った
- IosMGKAuthData での最終照合が残る (コンストラクタオフセット要再検証)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 10:53:59 +00:00
tkgstratorandClaude Opus 4.6 69603736d7 docs(spec): appboot sign key は Keychain キャッシュと判明 — ブロッカー1つ解消
- 全アプリデータ削除後のクリーン起動で 38b2030d / 8887ddf1 が出現しないことを確認
- これらは前回セッションの Phase 2 sign key が Keychain にキャッシュされたもの
- フレッシュ appboot では sign_key_1 (Phase 3 KDF) で署名すれば良い
- 残るブロッカーは apphmac の導出ロジックのみ
- Tweak に HKDF (AppleWebCrypto::HKDF @ +0x11900) フックを追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 10:16:33 +00:00
tkgstratorandClaude Opus 4.6 e1f68dca27 docs(spec): 全値の固定/可変・再利用可否・Python再現可否を明記
unknown_values_report.md を全面改訂:
- 全値を「バイナリ固定」「デバイス固有」「ランタイム可変」に分類
- 各値に固定/可変、再利用可否、Python再現可否を明記
- 最大のブロッカー: apphmac導出ロジック、appboot sign key導出元
- HMAC署名チェーンの実行順序を記載
- appboot blob (8549B) の構造を記載

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 09:34:07 +00:00
tkgstratorandClaude Opus 4.6 6968207fd3 feat(tweak): NetflixEntityAuth で appboot blob をキャプチャ、devicetoken 抽出
- NetflixEntityAuth Tweak: HMAC/IosMGKAuthData/MslRegistration フック
- 大容量 HMAC データ (>1KB) を自動ファイルダンプする機能追加
- 8549B appboot blob から以下を抽出:
  - Full ESN: NFAPPL-02-IPHONE9=1-AD0455EF27...
  - AppID: a2becfec-b286-535c-b884-903a384caee6
  - DeviceToken: 216B protobuf
  - AppKeyVersion: 1
- Phase 3 KDF チェーン全体をライブ検証 (Python 実装と完全一致)
- unknown_values_report.md を実測結果で更新

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 09:30:21 +00:00
tkgstratorandClaude Opus 4.6 2a23b7723a feat(re): appboot署名検証鍵を抽出し未知の値の調査レポートを作成
- kAppBootKey (RSA-4096) / kAppBootEccKey (P-256) / kSharkBootKey を
  NFWebCrypto.framework から静的抽出し constants.py に追加
- DH prime p は MslClient.framework @ 0x001265a0 で確認済み
- apphmac / devicetoken / device_key_data はランタイム生成と判明
- docs/spec/unknown_values_report.md に全調査結果を記載

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:43:08 +00:00
tkgstratorandClaude Opus 4.6 88f8af71b5 docs(spec): key 33.6 平文の詳細構造を解明 — CBOR ヘッダ固定、7B nonce ランダム
352B: ヘッダ全セッション固定(128B) + TFIT+MGK(160B) + 7Bランダムnonce×3(64B)
144B: map(6)軽量版、セッション領域なし、DH認証なしの軽量リクエスト
kAppBootKey/kAppBootEccKeyは署名検証用(確定済み)
全未解明ポイントを解消

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:46:02 +00:00
tkgstratorandClaude Opus 4.6 78f14cfdf3 docs(spec): kAppBootKey/kAppBootEccKey は署名検証用と確定
- Phase 1 図: 点線→実線に変更 (RSA verify + ECDSA verify)
- kAppBootKey も図に追加
- 鍵一覧テーブル: 「用途未確認」→「署名検証」に更新
- 未解明ポイントから削除、解決済みに移動
- kSharkBootKey/kSharkBootKey_Test も新発見

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:40:54 +00:00
tkgstratorandClaude Opus 4.6 34e94e4485 feat(re): kAppBootKey/kAppBootEccKeyの用途を静的解析で確定(署名検証)
radare2でNFWebCrypto.frameworkを解析し、両鍵がimportKey(usage=VERIFY)で
インポートされ、RSA_verify/ECDSA_verifyで使用されることを確認。
従来のRSA暗号化仮説を署名検証モデルに修正。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:39:21 +00:00
tkgstratorandClaude Opus 4.6 49933202e7 docs(spec): ライフサイクル図を実行順に再構成、全ステップの操作を明記
- 実行順 (0→3→1→2→4→5) でシーケンスを並べ直し
- Phase 3 が Phase 1 の前に実行されることを図上で明確化
- 各 Phase の具体的な暗号操作と入出力を英語で記述
- Phase 1: TFIT エンコード + XOR + サーバー応答の PubKey 抽出を追加
- Phase 2: bootstrap_key = [16:48] を明記
- ラベルを英語に統一

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:11:40 +00:00
tkgstratorandClaude Opus 4.6 d52eda821e docs(spec): Phase 1 で key 33.6 → Server DH PubKey 抽出を明示
key 33.6 (96B) から Server DH PubKey (128B) を取り出すステップを追加。
Phase 2 には PubKey のみが渡されることを図で明確化。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:09:47 +00:00
tkgstratorandClaude Opus 4.6 4d71d902e2 docs(spec): appboot Response を key 33.6 / 33.9 に分解
appboot Response key 33 を Server DH PubKey と省略していた問題を修正。
key 33.6 (Server DH Response 96B) と key 33.9 (Server nonce 16B) に分離。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:07:59 +00:00
tkgstratorandClaude Opus 4.6 97f2abe248 docs(spec): Phase 1 の from Phase 0 参照を enc_key_0/sign_key_0 に修正
存在しない「MGK Pair」ラベルを削除し、Phase 0 の実際の出力名で参照。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:06:31 +00:00
tkgstratorandClaude Opus 4.6 a600923cb2 docs(spec): to Phase N をノードに統一、全Phase間参照を明示
- エッジラベルの to Phase X を削除し [/"to Phase N"/] ノードに統一
- Phase 0: enc_key_0/sign_key_0 → to Phase 1, 3
- Phase 1: DH PrivKey → to Phase 2, DH Resp → to Phase 2
- Phase 2: bootstrap_key → to Phase 5
- Phase 3: session_bind → to Phase 2, enc_key_1 → to Phase 4
- Phase 4: enc_key_2/sign_key_2 → to Phase 5
- Phase 5: 操作の役割をエッジラベルから出力側に移動

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:05:33 +00:00
tkgstratorandClaude Opus 4.6 8ec330b4b6 docs(spec): Phase 1 に DH PrivKey 出力を追加、Phase 2 の参照を統一
- Phase 1: DH_generate_key から PrivKey 出力 + to Phase 2 参照を追加
- Phase 2: Client DH PrivKey を from Phase 1 参照ノードに変更

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:03:47 +00:00
tkgstratorandClaude Opus 4.6 17613f5548 docs(spec): Mermaid 図の記法を統一
- 四角 [""] → データ, 角丸 ([""]) → 暗号操作, 平行四辺形 [/""/] → Phase 間参照
- エッジラベルはデータの役割 (HMAC key, decrypt key 等)
- Phase 間参照を from/to Phase N ノードで統一 (グレー)
- 凡例にノード形状・色・線種の定義を追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 02:01:07 +00:00
tkgstratorandClaude Opus 4.6 b863ed1d40 docs(spec): 実行順序の注釈を追加 (Phase 3 → Phase 1-2 の順序を明示)
Phase 番号と実行順が異なることによる循環参照の誤解を防ぐため、
実行順序 (0→3→1→2→4→5) を明記。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 01:58:01 +00:00
tkgstratorandClaude Opus 4.6 5f2e6829b2 docs(spec): Mermaid 図のラベルを全て英語に変更
日本語ラベルは図中で読みにくいため、全ノード・エッジラベルを英語化。
見出しとコメントは日本語のまま。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 01:55:44 +00:00
tkgstratorandClaude Opus 4.6 965ae9bae7 docs(spec): Phase 1 図に key 33.9 nonce → XOR の入力矢印を追加
key 33.6 の XOR エンコードに使う nonce (key 33.9) が
図に入力として示されていなかった問題を修正。
ハードコード nonce (0x1AC905) との混同を避ける注釈も追加。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 01:54:31 +00:00
tkgstratorandClaude Opus 4.6 99a316d64e docs(spec): 鍵関係図を全面更新 — key 33.6 構造図追加、全ノード解明済み
- Phase 1 図: key 33.6 を解明済み(緑)に変更、TFIT→XOR→送信フロー追加
- Section 3: enc_key_0/sign_key_0 を緑(Phase 0出力)に修正
- Section 4: enc_key_1 を緑に修正
- Section 8: key 33.6 の平文構造図 (352B) を追加
- kAppBootKey を「用途未確認」に修正 (RSA未使用確認済み)
- Tweak フック一覧を最新状態に更新
- 凡例を簡素化 (黄/オレンジ削除)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 01:53:04 +00:00
tkgstratorandClaude Opus 4.6 2db7d0da91 docs(spec): 全鍵導出チェーン解明 — key 33.6 構造も解明済みに
- 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) <noreply@anthropic.com>
2026-04-09 01:30:12 +00:00
tkgstratorandClaude Opus 4.6 104ce6d167 docs(spec): 鍵関係図をフェーズ別に分割 — 1枚の巨大図から Phase 0〜5 の個別図へ
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 01:25:10 +00:00
tkgstratorandClaude Opus 4.6 ae7add1d7c docs(spec): bootstrap_key 解明 — Phase 2 sign_key (dh_kdf_out[16:48]) と同一
bootstrap_key は新規の鍵ではなく、Phase 2 KDF の HMAC-SHA384 出力の
[16:48] = sign_key そのもの。全オレンジ(由来不明)鍵を解消。
残る未解明は key 33.6 の TFIT エンコードのみ。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 01:23:42 +00:00
tkgstratorandClaude Opus 4.6 3375ebb954 docs(spec): 鍵関係図を全面更新 — Phase 0 (MGK) 追加、全鍵を緑(解明済み)に
- Phase 0 (ESN → MGK = enc_key_0/sign_key_0) を図に追加
- TFIT テーブル (199KB) をバイナリ埋め込み定数として追加
- enc_key_0/sign_key_0 を「Unicorn で計算可能」に更新
- 大部分の鍵ノードを緑色(解明済み)に変更
- シーケンス図に Phase 0 と 48B 鍵導出フローを追加
- 鍵一覧にESN, TFITテーブルを追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 01:19:09 +00:00
tkgstratorandClaude Opus 4.6 8fbd908eb9 docs(spec): 初回セッション鍵 = MGK (TFIT-WB-AES-128-ECB of ESN) を文書化
enc_key_0/sign_key_0 は genModelGroupKeys の出力 (= MGK) であることが
Unicorn エミュレーションで実証された。
ESN + TFIT テーブルから全鍵チェーンを Python のみで導出可能。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 01:07:01 +00:00
tkgstratorandClaude Opus 4.6 f3a2ec8ac7 docs(spec): Phase 2 KDF ドキュメントを最新の解析結果で更新
- 48B鍵の説明を「TFIT出力」→「SHA384(session_bind[:16])」に修正
- Mermaid図にPSK/nonce→KDF→SHA384→48B鍵のフローを追加
- 未解明事項を更新 (48B鍵は解明済み、残りはTFITエンコードのみ)
- nflxDhDerive 静的解析結果のアドレスを追記

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 00:46:51 +00:00
tkgstratorandClaude Opus 4.6 8066fb16b4 docs(plans): TFIT/48B鍵調査プランを追加
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 18:10:07 +00:00
tkgstratorandClaude Opus 4.6 0326fbb9c4 docs(spec): nflxDhDerive静的解析で48B HMAC鍵の導出チェーンを特定
SHA384(native_key_bytes) → 48B鍵 → HMAC-SHA384(key, 0x00||DH_shared) → enc/sign/wrap鍵分割

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 18:09:29 +00:00
tkgstratorandClaude Opus 4.6 9c206629d4 docs(spec): 48B鍵の導出パスを図に追加 (KDF → SHA384 → 48B鍵)
Phase 3 KDF の session_bind から SHA384 を経て 48B 鍵に至る
データフローを Mermaid 図に明示。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 18:06:16 +00:00
tkgstratorandClaude Opus 4.6 90e2c3d0e6 docs(spec): 48B鍵を「計算可能」に更新、SHA384(session_bind[:16]) 解明
- 48B鍵をオレンジ(由来不明)→緑(解明済み)に変更
- 鍵一覧テーブルに導出式を追記
- 未解明ポイントから48B鍵を解決済みに移動
- 凡例に緑(解明済み)を追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 18:05:23 +00:00
tkgstratorandClaude Opus 4.6 53ae7c4ba6 docs(spec): NFWebCrypto TFIT WB-AES-128-ECB 静的解析結果を追加
genModelGroupKeys → encryptAes128Ecb → TFIT_wbaes_ecb_encrypt_iAES11 の
全コールチェーンを逆アセンブルし、ラウンド構造・テーブル配置・
デバイス別キースケジュール選択ロジックを文書化。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 18:05:00 +00:00
tkgstratorandClaude Opus 4.6 b9dac8daa6 docs(spec): key 33.6 構成の解析結果を反映
- RSA 暗号化は未使用 (実証済み) を解決済みに追加
- key 33.6 サイズを 464B → 144B/352B に修正
- kAppBootKey の点線接続を削除 (RSA 不使用のため)
- key 33.6 構成方法を未解明ポイントに追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 17:07:06 +00:00
tkgstratorandClaude Opus 4.6 edf4cb25e6 docs(spec): 未実証の関係を点線に変更、Phase 1/2 図を修正
- kAppBootKey → key 33.6 の暗号化を点線(未実証)に変更
- kAppBootEccKey の署名検証も点線に変更
- key 33.6 リクエスト (464B) をオレンジ(由来不明)に追加
- Phase 2 に DH_compute_key ノードを追加(サーバー公開鍵入力を明示)
- 凡例に点線の説明を追加

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 16:54:36 +00:00
tkgstratorandClaude Opus 4.6 0c2182cbad docs(spec): 鍵関係図に Phase 2 KDF 解明結果と由来不明の 48B 鍵を反映
- Phase 2 を「未解明」→「解明済み」に更新
- 48B 鍵をオレンジ色(由来不明)として追加
- enc_key_0/sign_key_0 を黄色(計算可能)に変更
- シーケンス図に HMAC-SHA384 フローを追記
- 鍵一覧テーブルに 48B 鍵を追加
- 未解明ポイントを更新

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 16:31:45 +00:00