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