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:
yutaka 2007-07-03 10:55:12 +00:00
parent d0ea52d143
commit b2371f139e

View File

@ -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