20060.111u1出た0.111u1のソース差分がリリースされました。ReleaseVille氏WIP更新Ville氏のWIPがクリスマス更新。3Dハードがかなり進んできています。3Dハードウェアの一番の特徴といえば、演算コプロセッサがカスタムチップの一つに統合されていることです。このコプロセッサは2つの役目があります。ひとつは、3D座標の2Dへの透視変換で、DSPの逆アセから簡単に割り出せます。一つは、かなりの難題だったのですが、ポリゴンとビューポートの交差座標の演算に使われていることがわかりました。一つの演算ユニットが必要な理由が最初の頃はわからなかったのですが、演算処理を調べているうちに、どうやら何かの除算をしているのがわかってきました。データシートによればTMS320C51には除算ユニットが全く無いことも判明しました。これらのTMS320C51のバグ修正により、3D描画はほぼ完全になっています。2006コラ氏のCPS2解説・その4Nicola氏のCPS2解説つづきです:この暗号解析は全く進展がありません。これまで説明してきたことは、もう1年以上前からわかっていることで、それ以来突破口が開けてないのです。したら、オープンにもっと多くの人が議論し合えば、貴重なフィードバックが得られるかもと思っています。CPS2の暗号をハードウェア側以外からアタックしようとうする人はいないようです。個人的には、アルゴリズムの情報をさらに集めるにはハードから攻める以外にないと思っています。ここまで説明してきた特徴は、キーの値がなんであっても常に成り立つものです。これがアルゴリズムそのものの特徴であり、ハードウェアに決めうちされたものと言えます。カスタムCPUから抽出可能で、固定のsubstitution用のボックスがあるのはほぼ間違いありません。CPUを解析してアルゴリズムを再構成すれば、キーの値にかかわらず既知の特性にマッチするかテストできます。これが一致しなければ、そのアルゴリズムは間違っています。適合するアルゴリズムが見つかってしまえば、キーの検索を始められるでしょう。Ramblingsコラ氏のCPS2解説・その3Nicola氏のCPS2解説、まだまだ続くよ:Part1では暗号テキストのビット反転についてでしたが、ここではプレーンテキストでのビットについて見ていきます。次の表は、パーセンテージではなく、ビットの変更回数の合計を16進数で示しています。オレンジ色のはどのテーブルでも共通で変化しない値です。赤く示した値の方がおもしろい動きをします。これは、何種類かの値のうち一つになりますが、各列の2値の合計が常に一定の0x10000になります。2006コラ氏のCPS2解析・その2Nicola氏のCPS2解説、昨日の続きです:相補的な特性が重要なのは、テーブルサイズが半分になるからというだけではありません。いうものの、この特徴を十分に活用しているわけではないのですが。ここで、CPS2の暗号化についておさらいしておきましょう。出力:16ビットの復号化された値ここでは、アドレスAにある値XをキーKとして、関数D(X,A,K)とします。相補的な特徴とは、どんなAについても必ず対応するA1が存在することです。D'(X',A1,K)ということになります。この発見が重要なのは、暗号化においてAがアルゴリズム的な影響を与えているからです。CPUでは、各アドレスのキーは巨大なテーブルで保持されています。CPS2が同じ動作なら、相補的な特性は現われません。CPUで見てきています。残念ながら、AからA1を導く方法はまだわかっていません。ゲームによって変わるので、キーの関数であるのは間違いありません。相補特性というのは、強力な暗号でも特別珍しいものではありません。アルゴリズムの欠点であるとは必ずしも言えません。一般的に、相補特性はXOR演算が起きている兆候ともいわれます。相殺のために補数演算が起こるからです。