カテゴリ「解析情報」のアーカイブ(18件)(1/1 ページ)

CPS2との戦いは続く

ということで、ニコラさんがXORでサポートされている既存のCPS2ゲームのチェックしたそうで、あるアドレスに7つ以上の(E,D)ペアがあれば数時間のアタックでキーが見つけられる模様。11本でアタックがうまくいかず、そのうち3本ではペアが2つしかないので別なアプローチが必要とのこと。ペアが4つのものについては裏技を使ってなんとかアタックできる見込みとのこと。

Nicola's MAME Ramblings

「CPS2基本動作解明」

との書き出しで、ニコラさんまたまた更新。動作の基本的な部分が判明、96bitのキーx2にまでたどり着いた模様。アルゴリズムは1)16bitのアドレスと96bitのキーで最初のフェイステル構造を通して16bitのサブキーを生成、2)16bitの暗号文、16bitのサブキー、もう一つの96bitのキーで2回目のフェイステル構造を通し、16bitの平文を生成するとあります。だだし、喜ぶのはまだ早いそうで、1回目のフェイステル用Sボックスの完全な割り出しが必要で、これができて初めて、8GBの完全なテーブルがあるタイトルについてはキーを求められるそうです。

一方で完全なテーブルが無いものは、キーがもっと小さかったり、ビットの再利用の可能性があるものの、それがどれくらいかはわからないので、最大で192bitのキーとして対応しなけらばいけないそうで、このサイズでは総当たりは問題外、XORの情報があったとしても差分攻撃ができる類ではないだろうとのこと。
【訂正】96bitが2つに訂正。

Nicola's MAME Ramblings

「CPS2はそんなに甘くない」

との書き出しで、ニコラさんの更新。4GBのサイズだったテーブルは128kBまで小さくなったものの、ハードウェアの実際の動作が解明されたわけではなく、オリジナルの8GBテーブルが無いゲームについては、まだキーを生成できない状態とのこと。

Nicola's MAME Ramblings

CPS2でブレイクスルーか

スペインのAndyさんがCPS2の解析で進展があった模様です。にこらさんも合わせて更新しています。えーと、手短に言うと「今4GBあるテーブルファイルのサイズが768kBになるかもしれない」ということだそうです。

コラ氏のCPS2解説・その4

Nicola氏のCPS2解説つづきです:

この暗号解析は全く進展がありません。これまで説明してきたことは、もう1年以上前からわかっていることで、それ以来突破口が開けてないのです。もしかしたら、オープンにもっと多くの人が議論し合えば、貴重なフィードバックが得られるかもと思っています。

CPS2の暗号をハードウェア側以外からアタックしようとうする人はいないようです。個人的には、アルゴリズムの情報をさらに集めるにはハードから攻める以外にないと思っています。

ここまで説明してきた特徴は、キーの値がなんであっても常に成り立つものです。ですから、これがアルゴリズムそのものの特徴であり、ハードウェアに決めうちされたものと言えます。たとえば、カスタムCPUから抽出可能で、固定のsubstitution用のボックスがあるのはほぼ間違いありません。

CPUを解析してアルゴリズムを再構成すれば、キーの値にかかわらず既知の特性にマッチするかテストできます。これが一致しなければ、そのアルゴリズムは間違っています。一旦、適合するアルゴリズムが見つかってしまえば、キーの検索を始められるでしょう。

Nicola's MAME Ramblings

コラ氏のCPS2解説・その3

Nicola氏のCPS2解説、まだまだ続くよ:

Part1では暗号テキストのビット反転についてでしたが、ここではプレーンテキストでのビットについて見ていきます。

次の表は、パーセンテージではなく、ビットの変更回数の合計を16進数で示しています。

オレンジ色のはどのテーブルでも共通で変化しない値です。しかし、赤く示した値の方がおもしろい動きをします。これは、何種類かの値のうち一つになりますが、各列の2値の合計が常に一定の0x10000になります。

Nicola's MAME Ramblings

コラ氏のCPS2解析・その2

Nicola氏のCPS2解説、昨日の続きです:

相補的な特性が重要なのは、テーブルサイズが半分になるからというだけではありません。とはいうものの、この特徴を十分に活用しているわけではないのですが。

ここで、CPS2の暗号化についておさらいしておきましょう。

入力:

  • ROMに保存された16ビットの値
  • 16ビットのアドレス値 (1~17ビットの物理アドレス)
  • ゲーム毎に変わるサイズ不定のキー

出力:

  • 16ビットの復号化された値

ここでは、アドレス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の暗号化がフェイステル構造を使っているという考えは確かに魅力的ではありますが、個人的には違うと思います。なぜならば、前回説明したデータの拡散がもっとよくなるはずだからです。

Nicola's MAME Ramblings

コラ氏のCPS2解析

コラ氏のCPS2解析 変換テーブルがCHDで丸ごと追加されるなど、最近少し動きが出ているCPS2についてNicola氏の続報:

1年前に変換テーブルの相補性を発見してからは、CPS2の暗号化について特にわかったことはないのですが、ここでわずかでもこれまでに判明していることについて解説したいと思います。

よくある勘違いが、解読テーブルは「ランダムデータ」であるというものです。ぱっと見ではそう感じるかもしれませんが、きちんと調べるとそうでないことがわかります。

暗号値と出力値比べたとき、もしランダムなテーブルだとすると出力値の各ビットが変更される確率は50%ですが、以下の表を見るとそうなっていません。ほとんどの値は50%くらいになっていてランダムなようですが、全然違う値もあります。

このように、暗号化アルゴリズムは拡散が不完全なのです。まだ解読はされてませんが、これが突破口になるかもしれません。

特に興味深い4つの値を赤色にしています。ゲーム毎にテーブルは変わるので値は変化しますが、この4つだけは常に同じ値なのです。これは変換アルゴリズムの明らかな特性といえます。で、これは役立つのでしょうか。もしもアルゴリズムがキーに依存したビット置換をしているならば、暗号値のビット3とビット9、また復号値のビット0と14には置換が影響しないといえます。しかしこれとは別に、ビットがいつ反転されるかが正確にわからなければ、この特性から得られることは多くありません。これを見つけ出すことがアルゴリズム解析の大きな進展になるかもしれません。

Nicola's MAME Ramblings

システム16Bのスプライトズーム(縮小)解析

Aaron氏ページ21日付けより。アーロン氏により、回路図を元にハングオン系のスプライトズームが正確に実装されましたが、システム16BやXボードのズームとは動作が違うそうです。そこでEスワットの基板を改造して32段階あるスプライトの縮小を実際に表示するプログラムをこしらえて、ピクセルを間引くアルゴリズムを調査したとのこと。この結果、システム16Bのスプライト縮小動作は(たぶん)完全になったそうです。

Aaron Giles' Home Page

SEGA解読

RGより。オフィシャルMAME掲示板にR.Belmont氏よりの書き込み:

セガのプロテクトされたゲームついて、あるものがもうすぐ出来上がりそう。実際のアルゴリズムはエンデューロレーサーのおかげでわかってるけども、キーはでかすぎて作るのは無理なのでそれぞれのゲームのCPUブロックからSRAMを吸い出す必要あり。もちろん、これですぐにどうにかなるというものではないけども、凄腕の奴らが頑張ってるよ。

Retrogames

CPS2-Shock、NeoGeo解読へ

ページによると、kof99とgarouのちゃんとした吸出しをめざすとのこと。

CPS2-Shock

CPS2、四題

先日のCPS2-Shockの発表は、Slash Dotで取り上げられたのが大きいようですが、さらにThe Registerでまで記事になっています。Registerの記事の締めはもちろん「カプコンからのコメントは得られていない」です。また、「CPS2-Shockは1997年以降のゲームはずうーっと先までダンプしない」と新しく発表しています。そして最後に、みなさんおなじみヘナチョコエミュマンガサイトOverClockedでも新作「CPS2MUCH(CPS too muchに掛けている)」が出ました。最後のコマで博士は「ばかにすんじゃないよ、坊や。俺はお前が離乳食食ってたときにゃ、もうポンをマスターしてたんだ。俺はインテリビジョンのROMでも探しにいくぜ」と。

CPS2、更に新発見

CPS-2 Shockによりますれば…

CPS2基板でCapcomが使っている更に別なプロテクト方法を、発見、解明することができた...
CPS2のデコードチップは以下の68000命令を送られないと、約10秒間デコードを停止して、暗号化されたままの形でデータを返すのだ:

CMPI.L #$05642194, D0 (16進では0C8005642194)

つまりCPS2ゲームの動作を維持するには、最低でも10秒おきにこの命令をプロセッサに送る必要があるわけだ。
何でまた、こんなことを見つけたのかといえば、何よりCallusのパッチのおかげだ。sfzchにQ-Soundを追加するパッチを当てたところ、意味のないこの命令が何度も繰り返し送られていることに偶然気づいたのだ。これはおかしいと思った。それからロックマンにもQ-Soundを追加したときも、同じ命令が特に意味もないのに繰り返されていることが分かった。そのときは、コンパイラのエラーかと思っていたが、昨日の晩、全てのつじつまが合った。
きっとCapcomの誰かはこんなに重要なCPS2のプロテクト情報をCPS2じゃないゲームに残してしまったことで、しまった!とひざを叩いているかもしれない(ニヤリ)。
というわけで、このことをまとめると:

  • リセットラインはもう必要なくなった。総当り(bruteforce)ループからからリセットを削除することができる
  • 総当り作業が、ずっと高速に、しかもCPS2ハードに害のない形で行える

ということになる。それから、これは起動しなくなったCPS2基板(バッテリが切れるとデコード情報が飛ぶ:カプコン自爆)にデコードされたROMを載せることで、それらを復活させることにも使えるのはほぼ間違いない。

CPS-2 Shock WIP

CPS2解析前進

RGによりますと、CPS2 Shockが「ストリートファイターゼロ」のプログラムROMをデコードするソフトを何とか書き上げ、他のCPS2ゲームも後に続きそうと伝えています。WIPページによると:

CPS2上で動作する自作プログラムを使って、sfzのプログラムROM全体を解読した形にすることができた。それぞれのアドレスについて、取りうる65536通りの全値について行える。
プログラムが動作(今のところ手動)するには、PCとCPS2の通信を完全に行う必要がある。メイン基板またはゲーム基板のリセットラインを見つけることも、ロードには必要だろう。
CPS2ゲームがエミュレータに登場するには、まだ時間がかかりそうだから期待はしないでほしい。プログラムを完成させて、さらにこれを総当りに出来るようにしなければいけない。このためにどのくらいの期間がかかるかは分からないが、このテクは100%確実に動作するのだけは確かだ。

CPS-2 Shock WIP

CPS-2 Shock WIP

CPS2と闘うページ、CPS-2 ShockのWIPが更新されました

EEPROMエミュを使ってCPS-2ハードからさらにデータを取り出すことができたぜ。まだ実際にパターンは見えてはいないが、面白い値が出てきたぜ。

とのことです。

CPS-2 Shock WIP

CPS2解析順調?

カプコン・CPS2と戦っているページ「CPS2 Shock」によりますと、

基板からの吸い出しはとても絶好調だぜ。でも、アルゴリズムが不十分でどうやらまだ隠れているパターンがありそうだぜ。

っちゅうことだそうです。EmuHQによりますと、EEPROMエミュレータも調達して頑張ってるんだとか。

CPS2 Shock

CPS2が破られた???

Emu HQのトップに「Aliens VS Predator」のスクリーンショットが載ってCPS2が破られたか?という未確認情報があります。記事によると、これがあったサイトは日本語だから実際に何を言っているのかわからないって、行ってみたら中国語!(外人サンには日本語も中国語も似たようなものか…)で、そのサイトによると

下面又是一些CPS2游戯“AVP”的抓図:一共有27張抓図,如果你有興趣的話,你可載這个圧縮包看看全部的抓図,不過不要問我从那里来的??

で、「もし興味があればショット27枚の圧縮包が落とせますが、どこから手に入れたかは聞いちゃイヤよ」なんだそうです。

CPS2のプロテクト

VGNによりますと、メガドラエミュを作っているDave氏がサイトでCPS2のプロテクトについて触れています。ゲーム自体のエミュレートはものすごく簡単だけども、CPS2の暗号解読は超困難であるとのこと。例が載っていますが私には何のことやら皆目さっぱりで…

            3D7C 00F0 0014   MOVE #$00F0,20(A6)
Encrypted : 0151 4E08 DF0A
            3D7C 0030 0014   MOVE #$0030,20(A6)
Encrypted : 0151 3F01 DF0A

DGen