PS3のJailbreak “4.00 HEN” KaKaRoTo氏現状を語る





KaKaRoTo’s Blogで、KaKaRoTo氏が現在開発中の4.00のJailbreakをPS3 4.0 HENと呼び、その現状を報告していました。翻訳するの待ってた人、お待たせです。

4.00 HENですのでPS3の最新ファームウェア4.00でHomebrew起動を可能にするHomebrew Enablerということになります。PS3の場合、iPhoneをJailbereakしたGeohot氏がPS3にもiPhoneと同じ”Jailbreak”を使ったことからjailbreakが一般化していました。HENという言葉はPSPでは一般的ですがPS3では初めてです。

4.00 HENと呼ぶこと自体かなり進展が期待できそうな印象を受けますが、現実問題としてはかなり厳しそうです。KaKaRoToのブログの記事を簡易翻訳してみました。何が簡易かと言うと、色々ある人物の悪口書いている部分を適当に流したからです。

    PS3 4.00 HENの現状報告

    とりあえずPS3の4.00 HEN (Homebrew ENabler)の現状報告をします。

    2ヶ月程前にも説明しましたが、あれからかなり進展がありました。のんびりやっていた訳ではなく10人程のグループで開発していましたし、この2ヶ月時には一日15時間もPS3の最新ファームウェア4.00でHomebrewを復活させるために頑張ってきました。

    HENには3つの主要パーツがあります。まず第一にPS3にパッケージをインストールする部分ですが、これは既に終わりました。テストもデバッグも完了です。第二にアプリを起動させる部分ですが、ひとつ大きな問題が残っています。そして最後の3つ目は今はまだ言えません(サプライズ用です)。それも60%から70%は終わっています。(期待されても困るのでお伝えしますが、peke&pokeとは無関係でバックアップマネージャーなどにも無関係です。今回のHENは違法コピーとは無縁のPS3合法ソリューションです。)

    この2ヶ月間アプリケーションを起動させることにチャレンジしてきました。もともとMathieulh氏がアプリを起動させるために必要な”NPDRMハッシュアルゴリズム”を提供してくれるものと期待していましたが、彼はそれを渋り、最終的に提供を拒否しました。最初私はJailbreakを翌週にでも公開できると踏んでいましたが、今でもまだ作業中です。

    Mathieulh氏はいつもの通り”なぞなぞ”を出しておいて「分かる奴には助けになるだろ」的態度でしたね。彼は問題の解決には3.56のappldrを探してみることだと言っていましたが、lv1がハッシュチェックのベリファイだなんだかんだとなって、結局1ヶ月以上付き合わされて頭がパンクしました。その後自分達で1ヶ月かけてアセンブルコードを解読してチェックにチェックを重ね、我々が導き出した答えにはMathieulh氏が言っていたような3.56ファームウェアにはハッシュアルゴリズムなんて全く存在していない、です。

    彼はそれはAES OMACハッシュだ、と言っていました。でもOMAC関数を使っているものを全部追っかけてた末にハッシュには無関係だったことが分かりました。すると今度はこう言うのです。「ああ、俺が言ってたのはHMACのことだよ。」しょうがないから調べましたが結論は同じでした。もうappldrには存在しないと確信したのですがそこで彼が言ったのは「あ、ごめん。lv1だった。」詳しい話はここを読んでみてください:
    Talk:KaKaRoTo Kind of ´Jailbreak´ – PS3 Development Wiki

    そのあたりの話は彼とツイッターで横暴な態度の彼とやりあった後でしたが、彼はちゃんと”シェアした”と言い張ってました。ちなみに彼がシェアしたというコードは彼が自分で作ったものではありません。あるファイルで彼はもともとの開発者の名前を削除するのを忘れてそのままにしていたからです。といってもそのファイルは全く使い道がなく、詳細を記載した文書もなにもないゴミコードを読むのに1日費やしてしまいました。ほとんどケンカ状態でしたがそれでもなお彼は”アドバイス”という名のなぞなぞ合戦を仕掛けてくるのは何故なんでしょう。邪魔された上に時間まで費やされたといっても過言ではありません!

    色々ありましたが、もうMathieulh氏とは関わらないようにしようと決めました。そこで自分達でexploitを探し3.60以上のファームウェアを復号してそこからアルゴリズムを探そうということになったのです。

    それから数週間経ち、ついに我々は”NPDRMハッシュアルゴリズム”に欠けていた最後の1ピースを特定することができました。皆さんにもご説明します。

    PS3のゲームは”SELF”ファイルというフォーマットの実行ファイル(Windowsでいう.exeファイル)です。この”SELF”ファイルはデジタル署名され暗号化されています。PSNで販売されているゲーム(ブルーレイディスクから起動するゲームは別です)の場合、”NPDRM”と呼ばれる追加セキュリティレイヤーを持っています。”NPDRM SELF”となると暗号化と署名が加えられた実行ファイルになり、何らかの追加情報を加えた上で更に暗号化されています。3.55やそれ以前のファームウェアの場合にはユーザー自身で暗号化も署名もまるでソニーのオリジナル”NPDRM SELF”と同じようにできました。そのためPS3での起動になんら支障はありませんでした。とはいっても完全にオリジナルと同一とまではいきませんでした。本物のNPDRM SELFファイルはPS3が単に無視していただけの追加情報があったのです。その情報はノーマークでしたのでまったく考慮に入れていませんでした。3.60以降でPS3はその追加情報を有効にしたためソニーのNPDRM SELFファイルとHomebrew起動のためのNPDRM SELFファイルが別物になってしまいました。それこそが我々に必要だった”NPDRMハッシュアルゴリズム”で、それが分かれば適切にその追加情報を複製することが可能になるからです。追加情報を加えればNPDRM SELFファイルをPS3は再び本物だと認識して実行させてくれます。

    もうひとつ、説明しておかなければならない重要な点は、以前にも何度か言っていますがそのファイルが”署名されている”、つまりPS3が確認することができる”ECDSA署名”されたファイルが存在するということです。ECDSA署名によりPS3はそのファイルがモディファイされたかどうかも分かるようになっています。署名を有効にするのは簡単ですが”秘密鍵”なしにそれを作成することは不可能です。では3.55ではどうやって署名していたのでしょうか。それはECDSA署名が複雑な方程式で導き出せるものだからです(考えようとすると頭痛に襲われるため理解できていませんが、皆さんに興味があるならそのうちブログで分かりやすく解説してみたいと思います)。その方程式で重要なのは署名生成にランダムな数字を使うことなのですが、ソニーはこともあろうか毎回同じ数字を使っていたのです。そのため秘密鍵を見つけるのは非常に簡単でした。秘密鍵が分かればあとは方程式計算で完全に本物と同じ署名を偽造することができるようになります。つまり、”署名ファイル”は通常は入手が不可能な”秘密鍵”がない限り偽造不可能な”ECDSA署名”でデジタル署名されたファイルですが、ソニーがきちんとやっていなかったので”秘密鍵”が分かってしまったということです。

    さて、本題に戻りましょう。必要だった”NPDRMハッシュアルゴリズム”に欠けていたものは?”NPDRM SELF”には第2の署名が必要であることがわかりました。つまりNPDRMレイヤーという追加セキュリティレイヤーで”暗号化され署名されたSELFファイル”が再暗号化され再署名されているということです。その第2署名はPS3のファームウェア3.55までは確認されていませんでしたが、3.60から確認されるようになったのです。

    もうひとつ重要なことは、ソニーは二度と署名に関して同じミスは犯さないということです。ソニーは必ず常にランダムな数字を使うようになったため、秘密鍵を見つけることは技術的に不可能となりました。もっと正確に言うとPS3に.pkgをインストールするためにはファームウェアにパッチが必要(要はCFW化ということです)で、.pkgファイルがインストールされるということは.pkgファイルがECDSA署名されているということになりますが、その署名に必要な秘密鍵は誰にも分からないということです。我々が”疑似リテールパッケージ”や”非署名パッケージ”と呼ぶのはそういった理由からです。

    NPDRM SELFファイルの署名はECDSAそのものとPS3の.pkgファイルに使われていたものと同じ鍵が使われているため、利用している秘密鍵は誰にも(というか、永遠に)分かりません。どういうことかと言うと、最後の1ピースを見つけてNPDRM SELFのビルド方法が分かったとしても単純に複製しても使えないということです。

    最初にJailbreakを発表してから2ヶ月も費やしたのはMathieulh氏ができると言っていた嘘に振り回されていたせいです。4.00が公開された時に”4.00でも有効だった”と言ったのを覚えていますか?その時彼は”NPDRMハッシュアルゴリズム”も有効だったよと言っていましたか?そう、彼は何も確認していないのです。それが単なる嘘だったからで、そもそも秘密鍵なんて持っていないから確認のしようがないのです。彼の発言を並べれば、いかに嘘の上塗りを続けていたのかが分かります。Mathieulh氏は我々が確認できないような範囲で嘘をついたりできるような賢さは持ち合わせていなかったということです。彼は嘘つきですからもう誰にも信用されないでしょう。

    それはさておき、4.00HENの話に戻りましょう。次の一手は?署名ができないことははっきりしました。そのため3.60以降でHomebrew起動はできません(3.56でなら可能ですが)ので当然別の方法を探すことになります。PS3で起動するファイルをインストールすることができるような新たなexploitが必要です。また同時に”署名コリジョン”の可能性も模索するべくコミュニティの協力が必要になります。ランダムな数字を2回使うようなことがあったとするなら秘密鍵を計算できます。もしそうなれば4.00HENリリースに向けて大きく前進するでしょう。

    “Jialbreak”のリリース時期はいつになるのでしょうか。もし分かっているのなら発表しますが、分からないというのが実情です。昨年の段階で11月だ、12月だ、クリスマス前だ、年明けまでには…と言っていましたが、ご存知の通り今ではいつになるかの予測すらできない状態です。運が良ければ数日後にでもリリースできますがそうでなければ何ヶ月か先になるかもしれません。皆さんがすべきこと、それは「焦らずしばし待つ」。(予定日を教えてくれなんていう質問はしないでくださいね!)

    私はチームのメンバーや協力してくれた皆さんに感謝しています。我々は知識は等しくオープンにすべきだとの信念に基づき情報を世界中に公開しています。情報公開により将来ソニーにブロックされる可能性があると思われる方もいるでしょうが、署名に使われている公開鍵を発見しましたので情報共有しても問題ありません。透明性と情報公開、自由が大切だと我々は信じています。皆さんにも協力をお願いします。

    もしECDSA署名アルゴリズムについて興味があるならこの資料に詳細が書いてあります。Team Fail0verflowのCCCでのプレゼンテーションも見てみると良いでしょう。初めてソニーの署名ミスについて言及されたのがそのプレゼンテーションです。それが最終的にはカスタムファームウェアに繋がりました。

    長文失礼いたしました。

    KaKaRoTo

なげー

個人的感想。秘密鍵が簡単に分かるようでは世界の暗号化が破綻するのでまず無理。新たなexploitが発見できるかどうかが鍵。大事なのはそっちの鍵。

Tags: , , , ,

  1. 321’s avatar

    あれですよね
    量子コンピュータの開発に期待と・・・

Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です