Dark-Alexのサイトに「なぜ未だにPSPのTA88v3基板はハッキングできないのでしょうか」という記事が発表されていました。
Dark-AlexはPSPハッキングの第一人者のひとりで、SONY純正PSPファームを改変したCFW(カスタムファームウェア)の開発者です。彼がいなければPSPのハッキングはここまで進んでいなかったでしょう。
Nota Why TA88v3 cannot be hacked “yet”
なぜ未だにPSPのTA88v3基板はハッキングできないのでしょうか。
This is an explanation of the security that was added in TA88v3, and which will be likely in PSP3000.
これから述べるのはTA88v3から新たに追加されたセキュリティについての説明になります。新型PSP-3000にもおそらく適用されているでしょう。
When the PSP boots, the boot code (aka pre-ipl or ipl loader) loads the ipl from either the nand or memory stick. The IPL is splitted into pieces of 0x1000 bytes.
PSPが起動する際、ブートコード(pre-IPLやIPLローダーと呼ばれることもあります)はnandメモリーやメモリースティックからIPLを読み込みます。
First 0xA0 bytes of each block is a header for the kirk hardware command 1. It contains keys, the size of the cipher data, and two hashes, one for part the header itself, and another one for the body. The 0xF60 remaining bytes are the ciphered body, which will decrypt to 0xF60 plain bytes… if the hashes, which are checked by kirk hardware itself, are OK. (Note: ciphered body can actually be less than 0xF60, in this case, remaining bytes are ignored… before TA88v3) Fir
各ブロックの最初の0xA0 バイトはkirkハードウェアコマンドのヘッダーに当たります。その中にはキーや暗号データのサイズ、2つのハッシュが含まれています。一部はヘッダーそのもので、ほかはデータ本体です。残りの0xF60バイトは暗号化された本体データで、ハッシュに問題がなければその0xF60 バイトを復号します。(注:TA88v3基板以前は暗号化データ本体は実際には0xF60以下で、残りのバイト数は無視されていました。)
The security of kirk hashes was destroyed by a timing attack, and the IPL became unprotected.
What has Sony added to fix this?
kirkハッシュのセキュリティはタイミングアタックで突破することができました。それでIPLが無防備状態になりハッキングができていました。
その対応策としてソニーは何をしたのでしょうか。
The answer can be found in 4.00+ slim ipl’s. They decreased the size of the ciphered body to 0xF40 to leave 0x20 bytes at the end of each block (at offset 0xFE0).
As stated before, these remaining bytes are ignored… in pre-ipl’s of psp’s prior to TA88v3, and in fact, they can be randomized and ipl will still boot in those psp’s. In newest pre-ipl’s, these 0x20 bytes have a meaning.
その答えはPSP-2000のシステムバージョン4.00以上のIPLにありました。SONYは暗号化データ本体のサイズを各ブロックの最後に0x20バイトを残すために0xF40まで減らしたのです。(オフセット0xFE0のデータ部分で)
TA88v3以前のpre-IPLのように残りのバイトは無視してくれれば話は早いのですが…しかも実は起動のたびに無作為抽出データで復号されているにもかかわらず実際にIPLは以前のPSPでも起動しているのです。その新しいpre-IPLの、0x20バイトにどうも秘密がありそうです。
The first 0x10 bytes is an unknown hash calculated from the decrypted block. It is deduced that is calculated from the decrypted block and not the ciphered one due to the fact that 4.01 and 4.05 have a lot of ipl blocks in common, which, when decrypted, are similar, but they are totally different in its encrypted form. In these two ipl’s, this hash is same, as seen in the picture:
最初の0x10バイトは復号化されたブロックから計算されたハッシュのようですが、内容が不明です。おそらく復号化されたブロックから計算されている、と推定できるだけでもしかすると暗号化された物ですらないのかもしれません。4.01と4.05は複合化後のIPLブロックに共通点がありますが全体的には暗号化形態に違いがあります。4.01と4.05の2つのIPLブロックは、図のようにハッシュは同じです。
4.01/4.05 IPL block HEX
The second 0x10 bytes seem also to be dependent of the decrypted body (maybe dependent of the previous 0x10 bytes too?). In the picture it can be seen that they are different in 4.01 and 4.05, but they can actually be interchanged, you can move those 0x10 bytes from the same block in 4.05 ipl to the 4.01 ipl and it will still boot; however it cannot be randomized.
次の0x10バイトは復号化されたデータ本体に依存しているような気がします。(その前の0x10バイトももしかしたら同じ?)図では4.01と4.05は別モノですが実は4.05IPLの0x10バイトを4.01の同じ部分と入れ替えをしてみても起動してしまいます。
This protection also destroys any possibility of downgrading below 4.00, as these new cpu’s won’t be able to boot previous firmwares ipl’s.
このプロテクトのために4.00以下へのダウングレードはほぼ不可能です。新しいCPUが以前のファームウェアのIPLを起動できないためです。
Summary: basically, all security of newest psp cpu’s rely on the secrecy of the calculation of those 0x20 bytes. If pre-ipl were dumped somehow, the security would go down TOTALLY.
まとめ:基本的に新しいPSPのCPUのセキュリティは今述べた0x20 バイトの計算方法の秘密がすべてです。いつかpre-IPLがダンプできればセキュリティを破ることが出来るかもしれません。
Graphic summary:
図解
PSP with OLD-NEW CPU
まもすけ注:この図が一番分かりやすいです。
翻訳はまもすけテキトー翻訳ですが、いつものようにごめんなさいする以前にちょっとしんどかったです。途中で何度もやめようと思いました。
なぜかというと、言語明瞭意味不明だからです。
内容が理解できません。
こいつはこんなこと普段からやってるのかと思うと頭が下がる以前にお友達にはなれないだろうなと考えてしまいました。
たぶんDark-Alexクンとは日常会話がきっと成り立たないことでしょう。
まあ、冗談はさておき、この記事を読んでふと思いだしたのが、PSPのファームウェアは3.95から4.00になった時の、さほど変化ないのになんでメジャーバージョンアップなんだろう?という疑問でした。
SONYのHPによると
PSPシステムソフトウェア バージョン4.00で更新された主な機能[2008.06.18]
* インターネット検索を追加しました。入力したキーワードをインターネットで検索できます。
* 操作パネルに[再生速度(+)]/[再生速度(−)]を追加しました。メモリースティック デュオ?に保存された動画を再生するとき、再生速度を変更できます。
* ワンセグ放送を録画した番組を再生するとき 、 字幕が表示できるようになりました。
* 字幕に対応していない番組を再生しているときは、操作できません。
大した変更がないように書いてあります。
が、実は中でSONYは虎視眈々とセキュリティ向上に努めていたのですね。だからメジャーバージョンアップだったんです。
ということは、次期ファームは5.00という噂がありますのでさらにセキュリティを強化している可能性もあります。
まもなく発売されるPSP-3000はもしかするとPS3同様鉄壁のセキュリティに格上げ?