mirror of
https://github.com/rvtr/twl_wrapsdk.git
synced 2025-06-18 14:25:43 -04:00
small fix
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@165 4ee2a332-4b2b-5046-8439-1ba90f034370
This commit is contained in:
parent
d0ea52d143
commit
b2371f139e
@ -2,35 +2,43 @@
|
||||
AESに関するポリシー(仮)
|
||||
=======================
|
||||
|
||||
現在のライブラリ実装は自由に扱える状態だが、最終的には
|
||||
以下のポリシーを反映した形に制限を加える。
|
||||
AESのパラメータの一つである鍵について、その取り扱い方の
|
||||
ポリシーを決める必要がある。
|
||||
|
||||
(余談)
|
||||
AES-CTRでは、鍵以外にIV (128bit)により暗号化結果が変化する。
|
||||
AES-CCMでは、鍵以外にNONCE (96bit)および各長さ(各16bit)に
|
||||
より暗号化結果が変化する。
|
||||
これらは、鍵とは異なり、AESを有効にする度に再設定する
|
||||
必要がある。
|
||||
|
||||
|
||||
○(予習)鍵の種類
|
||||
○(予習)鍵レジスタの種類
|
||||
|
||||
次の4組の鍵の組み合わせが存在する。
|
||||
次の4組の鍵レジスタの組み合わせが存在する。
|
||||
AESコアで使用される鍵はこれらとは別に存在する点に注意!
|
||||
|
||||
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[x][3]を設定したときに、
|
||||
|
||||
SEED + ID => KEY
|
||||
SEED[x] + ID[x] => KEY[x]
|
||||
|
||||
という計算処理がおこなれる(計算式は秘密)。
|
||||
という計算処理(KEYへの書き込み)がおこなれる(計算式は秘密)。
|
||||
|
||||
また、任意のタイミングでKEYのひとつをAESコアに送ることができる。
|
||||
このAESコアに送る作業を行わない限りAESで使用される鍵は
|
||||
このAESコアに送る作業を行わない限りAESコアで使用される鍵は
|
||||
変更されない。
|
||||
|
||||
○(予習)種別ごとの意味合い
|
||||
|
||||
KEYは一般的なAES回路として他のシステムとやり取りするような
|
||||
データを取り扱うときにのみ使用する。
|
||||
データを取り扱うときにのみ直接書き込む。
|
||||
|
||||
IDとSEEDは任天堂依存のやりとりで使うことになるが、
|
||||
基本的にIDの方はシステム側であらかじめ設定しておき、
|
||||
@ -50,19 +58,23 @@ ID
|
||||
また、アプリケーション依存とは、ROMヘッダ辺りを反映するということ。
|
||||
|
||||
上記の内容を反映するように、IDを設定することになる。
|
||||
ただし、KEYを直接設定する場合は、この意味合いは関係ない。
|
||||
具体的には、イニシャルコードに依存するID[0][y]とID[1][z]については
|
||||
アプリケーションローダーで初期化し、それら以外の部分については、
|
||||
IPL ROMで設定した値から二度と変更しない。
|
||||
|
||||
ただし、KEYを直接設定する場合は、上記の意味合いは関係ない。
|
||||
|
||||
|
||||
●アプリケーションが触ることのできる部分
|
||||
|
||||
アプリケーションには、KEY[2]、SEED[0]~SEED[3]を使えるようにする。
|
||||
とりあえずは、SEED[2]は解放しない。
|
||||
ただし、とりあえずはSEED[2]は解放しない。
|
||||
|
||||
|
||||
●ARM7側初期化コード
|
||||
|
||||
ROMコードで全レジスタの初期値を設定している。
|
||||
大半はダミーだが、ID関係の固定値はここでのみの設定となる。
|
||||
大半はダミーだが、IDの固定値はここでのみの設定となる。
|
||||
|
||||
アプリケーションローダー用に、TwlFirm内にIDのgame_code依存
|
||||
部分のみを再設定するコードを用意している。
|
||||
@ -83,9 +95,6 @@ AES_SetSpecialKey() SEED[1]
|
||||
それぞれ引数をすぐに有効にするもので、「以前の鍵」という使い方は
|
||||
(とりあえず)できないようにしている。
|
||||
|
||||
課題: Static領域の読み直しはさせないのか?
|
||||
(.data領域は最低必要かと思われるが・・・)
|
||||
(少なくとも0の)SEEDは設定できないようにしてしまうか。
|
||||
|
||||
●ARM7側API
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user