PS3 Hackの話をしようか

Hack

PS3のHackについて

PS3はHackが困難なコンシューマ機として長らく君臨してきました。

というのもFW3.55までほとんど完全無欠の要塞としてハッカーたちの挑戦を跳ね除けてきたからです。

1.00が2006年11月にリリースされてから、2010年12月に3.55がリリースされそしてHackされるまで難攻不落だったわけです。

正直なところ、PS3のHackは仕組みが非常に難しくシーンでどのように情報交換が行われ突破されてきたのかぼく自身でもほとんど把握できていません。

しかし、何故PS3がこれほどまでに強固であり、その神話が突然崩れたについてはある程度の解説ができるつもりです。

本記事ではPS3のセキュリティの歴史を振り返ることがメインですので、少々退屈かもしれませんが最後まで読んでいただければ幸いです。

執筆にあたって以下の記事を参考にさせて頂きました。

Linuxをはじめよう!:PS3/PSPへのハッキングはなぜ可能だったか (part2)

何故PS3はHack困難であったか

様々な要因はあると思いますが、最も重要なことの一つはCellと呼ばれる独自のアーキテクチャにあると思います。

アーキテクチャとはなんぞやという方のためにものすごく大雑把に説明すると、電子機器の取り扱い説明書の言語ようなものです。

日本語、英語、中国語いろいろな言語がありますよね?コンピュータは主にx86、x64、ARMの三つのアーキテクチャおよびその派生を使っています。

x64はx86の上位互換なので実質x64とARMが市場の大半を占めています。

家庭用のコンピュータのほとんど全てはx64が採用されていますが、それに対してほとんど全てのスマートフォンはARMが採用されています。

これはARMが消費電力が小さくモバイル向けに向いているというのが要因ですね。

ARMもx64も広く普及しているので、お互いに互換性はないものの翻訳することは簡単です。つまり、パソコン向けにリリースしたソフトをスマホ用にリリースするのは英語を日本語に翻訳する作業をするようなものということです。

ちょっと面倒ですが、できないことはないというのはわかると思います。

ところがPS3はソニーが独自開発したアーキテクチャを使っています。これはつまり未知の言語な訳ですね。

どんな文法規則があるのかもわからず、一度アーキテクチャそのものを完全に理解しないと何をしていいのかもわからないわけです。

この独自アーキテクチャの採用はPS3をHack困難にするという意味では大変に役立ちましたが、開発者自身も過去作品の移植が難しいという問題を生んでしまいました。

なので一長一短だったわけですね。

デジタル署名

PS3に限らず、全てのコンシューマゲーム機にはデジタル署名チェックが存在します。

わかりやすく言えばあなたの手元に「ソニーがあなたを雇用したいので本社に来てください」というような内容のメールきたことを考えてみてください。

誰がそれを書いたかわからなければ「詐欺かな?」と疑ってしまいますが、もしも書類の最後にソニーの社印が押してあればどうでしょう?(もちろんあなたがソニーの社印がどのようなものかを知っているという前提です)

たったそれだけでその書類の信頼性が上がりませんか?

これは別に社印出なくてもサインでもいいわけですね。つまり、信頼できる機関・人が正当性を担保してくれているということがその書類に信頼性を持たせているわけです。

デジタル署名というのは言わば電子的な判子・サインな訳ですね。なのでデジタル署名のことを単に署名(signature)などと言います。

コンシューマ機が何か命令を実行しようとする時、必ずこの署名チェックを行います。

命令というのは「ゲームを起動する」、「追加アプリケーションをインストールする」などが挙げられます。

そして、ソニーの署名がないものは実行しないような仕組みになっているわけです。

では署名を偽造することは可能でしょうか?

免許書の偽造、証明書の偽造、現実世界において偽造は様々なものがあります。同じようにデジタル署名も偽造できるのではないでしょうか?

結論から言えば「デジタル署名は理論的には偽造可能だが現実的ではない」と言えます。

何故デジタル署名は偽造困難なのか、その説明に移りましょう。

デジタル署名の安全性

デジタル署名に用いられるのは一方向関数と呼ばれる関数で、入力xからf(x)を求めるのは簡単だけれどもf(x)からxを求めるのは難しいようなものを指します。

具体例としてよく挙げられるのが素因数分解で「97×113=9991」というのはすぐわかりますが「9991は何と何をかけたものですか?」という質問には答えがすぐにでない方が多いのではないでしょうか?

素因数分解は桁数が大きくなるとコンピュータでも簡単に答えが出せない(と信じられているので)、この種類の署名や暗号は現実世界でも非常によく使われています。

一般的に使われるデジタル署名は100桁や200桁という途方もなく大きい数なのでコンピュータでも全く偽造ができないんですね。

ちなみに、考えればわかりますがこの種類の暗号や署名は時間をかければ必ず解くことができます。

えっ、解けちゃうの!?

だからインターネットバンキングのクレジットカードの番号も暗号化されてるけど、その気になれば盗むことができるんよ。

じゃあ安全にインターネットで買い物はできないってこと?

…というわけではないのがこのテの問題のキモなんやね。

さて、実際に暗号を解いてあなたのクレジットカードの番号を求めることは可能ですが、それを実行しようというクラッカーは存在しないはずです。

何故なら、暗号を解くのにかかるコスト(時間・お金)があなたのクレジットカードの利用限度額に対して全く割りに合わないからです。

なので、実際に総当りで暗号を解いたという話は全くきかないです。

PS3の署名も偽造がめちゃくちゃ難しいように設定されていたはずだったのですが…

鍵の実装ミス

この署名を生成するのに、本来は予測不可能なランダムな値を使わなければいけないのですがFW3.55までは固定された値が誤って使われていました。

そのため、簡単に逆算して署名を偽造できるようになってしまいました。

やらかしてんじゃん!!!!

で、ただ鍵が判明するだけでなくその根幹であるmetldr keyを見つけることにGeohot氏が成功します。

Geohot氏はマジで神なのでいろいろ調べたほうがいいぞ!!!

metldr keyとは

mtldr keyとはPS3の全ファイルシステムの暗号化・復号化を司る鍵です。

これによってFWを復号・暗号化することができるようになったのでCFWを作成することができるようになりました。

署名できるということは全ての自作ソフトが署名チェック回避なしで動作するわけです。

このmetldr keyを変更してしまうと古いゲームが起動しなくなるので変更することはできません。

一見、これでハッカー側が完全にPS3を掌握したかに見えましたが…

Lv0 key

FW3.60でソニーは不適切な署名のコードを修正し、意味のなさなくなったmetldr keyを使うことを辞めました。

え、でもmetldr keyを使わなくしたら古いゲームが起動しなくなるんじゃ?

ところがそんなこともあろうかとソニーは別のkeyを用意していたんやね。

正確にはmetldr key+bootldrで署名チェックを行うはずなのに、ソニーが省略してmetldr keyだけでチェックをしていたらしい。
で、metldr keyが特定されてしまったので新たにbootldrチェックもいれたのだそうだ。

そこでソニーはmetldr keyの代わりにbootldrを使うようになりました。

このbootldrが特定できなかったのでFW3.60以降はCFWが起動しない状況が長く続きました。

この状態は結構長く続いたので、最新のゲームを遊びたかったぼくはPS3を開発機モードに変更したりしました。

この話はかなり長いのでまた別の記事でやろうと思います。

このLv0 keyはbootldrを復号するために必要な鍵であり、metldrとbootldrのどちらも特定されたことで全てのFWを復号することができるようになりました。

ただし、CFWを作成するのとインストールするのはまた別の話で、3.55まででCFWにしていないと署名チェックをパスして3.60のCFWがインストールできないので注意。

まとめ

PS3ってもう相当昔のコンテンツなんですが未だにアップデートされていたり、Hack界が賑わっていたり面白いハードですよね。

それに比べてPS4はできることが少なさすぎてシーンも冷え切ってる感じになっています。

ぼくがPS4を全く欲しくならないのはやりたいゲームがない以上に、なんにも弄ったりできないからなんですよね。

新型SwitchもSwitch LiteもHackできないので今のところ購入予定はないですが、一般の方は新型に乗り換える人が多そうです。

Hackしたい方は中古市場が賑わっている今のうちに未対策基板のSwitchを購入されてはいかがでしょうか?

記事は以上。

コメント

タイトルとURLをコピーしました