tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude 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
tkgstrator and Claude Opus 4.6
547d595955
docs(spec): Phase 2 KDF 解析結果を文書化 — HMAC-SHA384(TFIT_KEY, 0x00||DH_SHARED)
...
DH 共有秘密から初期セッション鍵を導出するアルゴリズムを解明:
- HMAC-SHA384 with 48B TFIT key, 0x00 prefix + 128B shared secret
- enc_key = output[0:16], sign_key = output[16:48]
- HKDF は NFWebCrypto に存在しないことを確認
- テストベクタで検証済み
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-08 16:16:14 +00:00
tkgstrator and Claude Opus 4.6
f0b16a257f
fix(docs): ライフサイクル図にMermaidダークテーマを適用
...
theme: dark ディレクティブを追加し、テキストの視認性を改善。
rect の透過度も調整。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-08 13:35:44 +00:00
tkgstrator and Claude Opus 4.6
a1545b7612
fix(docs): ライフサイクル図をダークモード対応に変更
...
rect の背景色を rgba 半透明に変更し、ダークモードで視認性を確保。
冗長なラベルも簡潔に整理。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-04-08 13:35:03 +00:00