mirror of
https://github.com/rvtr/twl_wrapsdk.git
synced 2025-10-31 06:11:10 -04:00
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@51 4ee2a332-4b2b-5046-8439-1ba90f034370
70 lines
1.8 KiB
Plaintext
70 lines
1.8 KiB
Plaintext
=======================
|
||
AESに関するポリシー(仮)
|
||
=======================
|
||
|
||
現在のライブラリ実装は自由に扱える状態だが、最終的には
|
||
以下のポリシーを反映した形に制限を加える。
|
||
|
||
|
||
○(予習)鍵の種類
|
||
|
||
次の4組の鍵の組み合わせが存在する。
|
||
|
||
KEY[0] ID[0] SEED[0]
|
||
KEY[1] ID[1] SEED[1]
|
||
KEY[2] ID[2] SEED[2]
|
||
KEY[3] ID[3] SEED[3]
|
||
|
||
○(予習)鍵の基本事項
|
||
|
||
それぞれが独立したレジスタであるが、SEEDを設定したときに、
|
||
SEED + ID => KEY という計算処理がおこなれる(計算式は秘密)。
|
||
また、任意のタイミングでKEYのひとつをAESコアに送ることができる。
|
||
このAESコアに送る作業を行わない限りAESで使用される鍵は
|
||
変更されない。
|
||
|
||
○(予習)種別ごとの意味合い
|
||
|
||
KEYは一般的なAES回路として他のシステムとやり取りするような
|
||
データを取り扱うときにのみ使用する。
|
||
|
||
IDとSEEDは任天堂依存のやりとりで使うことになるが、
|
||
基本的にIDの方はシステム側であらかじめ設定しておき、
|
||
アプリケーションには操作させない。
|
||
|
||
|
||
●それぞれの鍵の意味合い
|
||
|
||
デバイス依存 アプリケーション依存
|
||
0: × ○
|
||
1: ○ ○
|
||
2: × ×
|
||
3: ○ ×
|
||
|
||
ここで、デバイス依存とは、eFuseの内容を反映するということ。
|
||
また、アプリケーション依存とは、ROMヘッダ辺りを反映するということ。
|
||
|
||
上記の内容を反映するように、IDを設定することになる。
|
||
0と1はブートローダーが、2と3はIPL ROMが設定する。
|
||
(いつでも上書きできるので、IPL ROMで0と1も設定しておく)
|
||
|
||
|
||
●アプリケーション解放
|
||
|
||
アプリケーションには、KEY[0]、SEED[0]~SEED[3]を使えるようにする。
|
||
場合によっては、SEED[2]とSEED[3]は解放させない(2つしかない)
|
||
|
||
|
||
●ARM9側API案
|
||
|
||
鍵の種類を、DEVICE_DEPEND、APPLICATION_DEPENDの
|
||
ビットORで設定できるようにするだけ。
|
||
|
||
複数レジスタがあることも見せずに、値をほおり込むと
|
||
AESコアに送るところまで処理する。
|
||
|
||
・AES_SetNormalKey(u128 pKey)
|
||
・AES_SetSpecialKey(u128 pKey, u32 types)
|
||
|
||
|