Nicola氏のCPS2解説、まだまだ続くよ:
Part1では暗号テキストのビット反転についてでしたが、ここではプレーンテキストでのビットについて見ていきます。
次の表は、パーセンテージではなく、ビットの変更回数の合計を16進数で示しています。
オレンジ色のはどのテーブルでも共通で変化しない値です。しかし、赤く示した値の方がおもしろい動きをします。これは、何種類かの値のうち一つになりますが、各列の2値の合計が常に一定の0x10000になります。
Nicola氏のCPS2解説、まだまだ続くよ:
Part1では暗号テキストのビット反転についてでしたが、ここではプレーンテキストでのビットについて見ていきます。
次の表は、パーセンテージではなく、ビットの変更回数の合計を16進数で示しています。
オレンジ色のはどのテーブルでも共通で変化しない値です。しかし、赤く示した値の方がおもしろい動きをします。これは、何種類かの値のうち一つになりますが、各列の2値の合計が常に一定の0x10000になります。
Nicola氏のCPS2解説、昨日の続きです:
相補的な特性が重要なのは、テーブルサイズが半分になるからというだけではありません。とはいうものの、この特徴を十分に活用しているわけではないのですが。
ここで、CPS2の暗号化についておさらいしておきましょう。
入力:
出力:
ここでは、アドレスAにある値XをキーKとして、関数D(X,A,K)とします。相補的な特徴とは、どんなAについても必ず対応するA1が存在することです。つまり、
D(X,A,K) = D'(X',A1,K)
ということになります。
この発見が重要なのは、暗号化においてAがアルゴリズム的な影響を与えているからです。SegaのFD1094 CPUでは、各アドレスのキーは巨大なテーブルで保持されています。もしCPS2が同じ動作なら、相補的な特性は現われません。
これは特に驚くことではなく、Segaが巨大なキー+シンプルなアルゴリズムを好むのに対し、Capcomは小さなキー+複雑なアルゴリズムを好むことをKabuki CPUで見てきています。
残念ながら、AからA1を導く方法はまだわかっていません。ゲームによって変わるので、キーの関数であるのは間違いありません。
相補特性というのは、強力な暗号でも特別珍しいものではありません。ですから、アルゴリズムの欠点であるとは必ずしも言えません。たとえばDES暗号でも見られ、D(X,K) = D'(X',K') となります。
一般的に、相補特性はXOR演算が起きている兆候ともいわれます。相殺のために補数演算が起こるからです。例を見てみます。代理関数をfとして、次のようなアルゴリズムがある場合、
d = e XOR f(e XOR k)
補集合は
e' XOR f(e' XOR k') = e' XOR f(e XOR k) = (e XOR f(e XOR k))' = d'
とになります。もちろんこれはとてもシンプルな例ですが、この場合はx'が補集合でなくてもよいことに注意してください。たとえば、x' = x XOR 1と定義しても成立します。ですから、CPS2のアルゴリズムはこんなにシンプルでないのは確かです。
もっと現実的な例としてフェイステル構造(DES暗号はフェイステル構造を使っています)を挙げましょう。フェイステル構造を以下のように定義すると、
Li = R i-1
Ri = L i-1 XOR f(Ri-1 XOR Ki-1)
相補性がどのように出てくるかよく簡単にわかるはずです。
CPS2の暗号化がフェイステル構造を使っているという考えは確かに魅力的ではありますが、個人的には違うと思います。なぜならば、前回説明したデータの拡散がもっとよくなるはずだからです。
コラ氏のCPS2解析 変換テーブルがCHDで丸ごと追加されるなど、最近少し動きが出ているCPS2についてNicola氏の続報:
1年前に変換テーブルの相補性を発見してからは、CPS2の暗号化について特にわかったことはないのですが、ここでわずかでもこれまでに判明していることについて解説したいと思います。
よくある勘違いが、解読テーブルは「ランダムデータ」であるというものです。ぱっと見ではそう感じるかもしれませんが、きちんと調べるとそうでないことがわかります。
暗号値と出力値比べたとき、もしランダムなテーブルだとすると出力値の各ビットが変更される確率は50%ですが、以下の表を見るとそうなっていません。ほとんどの値は50%くらいになっていてランダムなようですが、全然違う値もあります。
このように、暗号化アルゴリズムは拡散が不完全なのです。まだ解読はされてませんが、これが突破口になるかもしれません。
特に興味深い4つの値を赤色にしています。ゲーム毎にテーブルは変わるので値は変化しますが、この4つだけは常に同じ値なのです。これは変換アルゴリズムの明らかな特性といえます。で、これは役立つのでしょうか。もしもアルゴリズムがキーに依存したビット置換をしているならば、暗号値のビット3とビット9、また復号値のビット0と14には置換が影響しないといえます。しかしこれとは別に、ビットがいつ反転されるかが正確にわからなければ、この特性から得られることは多くありません。これを見つけ出すことがアルゴリズム解析の大きな進展になるかもしれません。
Ville Linde氏の個人WIPが更新。Taito JCシステムの3Dシステムの解析状況が出ています。今のところ、ポリゴンフォーマットとテクスチャマッピングが解読されてきているそうで、サイドバイサイド2の道路部分などが表示されるようになったとのことです。
オフィシャルMAME v0.111がリリースされました。what's new-Jはこちら。u5からの変更はわずかです。
本体付属の設定解説ファイル、windows.txtの日本語訳をv0.111版に更新しました。ダウンロードはこちら。前のv0.107からの追加オプションは-fontpathと-multithreading、削除されたのは-hiscore_directory、-artwork、-keyboard_leds、-led_modeです。
0.110u5のソース差分がリリースされました。what's new-Jはこちら。LD表示サポート向けの更新、サーカスチャーリー修正、マウスホイールサポート、その他いろいろ。
0.110u4のソース差分がリリースされました。what's new-Jはこちら。引き続きCPS2のXOR関係の更新、またVista環境でのコンパイルなどなど。
0.110u3のソース差分がリリースされました。what's new-Jはこちら。
0.110u2の差分がリリースされました。what's new-Jはこちら。
intel Mac用のMAME OS Xがアナウンスされています。サイトによると
これまでIntel版のOS X用MAMEというのはありませんでした。MacMAMEプロジェクトはこの1年は休止状態で、しかもPowerPC専用です。SDLMAMEプロジェクトは動作しますが、あくまでクロスプラットフォームプロジェクトなので、やはりOS X専用にすればもっと良くなる部分があります。というわけで、OS X用MAMEを自分で移植してみようと決めたわけです。作業は2ヶ月ほどかかりましたがようやく準備ができたので、ここに公式にMAME OS Xプロジェクトを公開します。
まだ若干作業が必要なところがあるそうですが、エミュレーション自体は動作しているようです。サウンドはCore Audio、表示はCore Video、Core Image、OpenGLを使ってパフォーマンスが最適化されており、さらにおまけでCore Imageを使ったフィルタリングもできるとのこと。Intel Macな方はぜひ。
0.110u1の差分がリリースされました。what's new-Jはこちら。
オフィシャルMAME v0.110がリリースされました。what's new-Jはこちら。
0.109u5の差分がリリースされました。what's new-Jはこちら。すっかり週刊。
0.109u4差分がリリースされました。what's new-Jはこちら。
2、3日前よりmameworld.infoドメイン以下にアクセスできなくなっています。mameworldの掲示板(Testers掲示板を含む)の他、R.Belmont氏やHaze氏などの個人WIPページも停止中で、なにやら植物が表示されています。【更新】復旧しました。
というわけで、話題の「アーケードTVゲームリスト 国内・海外編」が届きました。今回も期待を裏切らず、ビニールがクマちゃんシールで止めてあって、得点が高いです。ほとんどのゲームの発売時期が年月まで掘り下げてあって、開発元と発売元も詳細にカバーしてあります。大量のデータで強力な資料といえるでしょう。ただ、紙媒体じゃなくて、デジタル化されていれば資料としての価値はもっと高くなるでしょうね。うーむ。

0.109u3差分がリリースされました。what's new-Jはこちら。
0.109u2ソース差分がリリースされました。what's new-Jはこちら。
0.109u1ソース差分がリリースされました。what's new-Jはこちら。
Dox氏WIPが更新、引き続きダイナミックシュート競争のスクリーンショットが出ています。カマードーマ。
オフィシャルMAME v0.109がリリースされました。what's new-Jはこちら。
RB氏のSDLMAME 0.108u5のWin32コンパイル用差し替えファイルが出ています。うちではまだ試してませんが、ページによるとOpenGLの速度アップのおかげで、普通のMAMEをd3dで動作させたときよりも「かなり」速いそうです。興味があったらドーゾとのこと。
Dox氏WIPが更新、なんとどきどきペンギンランド。渋いところです。