close

本文對TA-88v3所添加的安全措施做個介紹,這個安全措施也可能被加入到PSP-3000。

當PSP啟動時,引導代碼(也稱為pre-IPL或者IPL loader)會將IPL從NAND或是記憶卡裡加載過來。IPL將被分割為每塊0x1000位元組的大小。

* pre-IPL:位於PSP CPU裡的引導代碼,PSP CPU一旦通電就會自動執行
* IPL:PSP軔體中引導PSP完成系統初始化的部分

每塊前0xA0位元組是Kirk硬體命令1的頭部。它包含了密鑰、密文的大小,還有兩個hash,一個是頭部本身的,另一個是為密文正文的。剩下的 0xF60位元組為密文正文,它將被解碼成大小為0xF60字節的明文數據,如果這個hash由Kirk硬體檢查無誤的話。(注意:密文正文實際上可以小於 0xF60位元組,TA088V3之前的版本在這種場合下剩餘位元組將被忽略)。

* Kirk:PSP的主要解密/驗證晶片

Kirk hash安全機制被時序攻擊法所攻破,於是IPL就失去了保護。

* 時序攻擊法:類似竊賊觀察他人轉動保險櫃撥號盤的時間長短來猜測密碼的一種破解方法
參考:http://en.wikipedia.org/wiki/Timing_attack

Sony是添加了什麼來修補這個漏洞的呢?
答案可以在4.00+ slim ipl裡找到。他們將密文正文大小減小到0xF40位元組,剩下0x20位元組在每塊的末尾(也就是偏移0xFE0)。

如前文所述,在TA88v3以前的的PSP裡,這些剩餘的位元組都是被忽略。實際上,即使它們是隨機的,IPL仍然能啟動那些PSP。然而,在最新的pre-IPL裡,這些0x20位元組有了特殊的意義。

前0x10位元組為從解密後的分塊裡計算的目前不明的hash。之所以說它是從解密後的分塊而不是從解密前的分塊裡計算出來的,是因為4.01和4.05有大量的IPL分塊,在解密後是相似的,然而它們卻有完全不同的加密形式。在這兩個IPL裡,它們的hash是相同的,

如圖可見:


其後0x10位元組看起來像是獨立於解密正文(可能也獨立於前0x10個位元組?)。在圖中可以看到它們在4.01和4.05里是不同的,但是它們實際上可以互換,你可以從4.05版IPL的相同區塊裡移動那0x10位元組到4.01版IPL,仍然可以啟動;然而它並不能隨機化。

這種保護也粉碎了任何降級到4.00版本以下的可能,因為這些新CPU不能在以前軔體的IPL下啟動。

總結:基本上,所有最新的PSP CPU的安全措施取決於那0x20位元組是如何計算的秘密性。如果pre-IPL被某種方法導出了,這個安全保護將完全失效。

圖形總結:



歌迷言:
破解是遲早的事情辣^^~所以3000還是要買~正所謂...人外有人、天外有天

全站熱搜
創作者介紹
創作者 ddrchang0520 的頭像
ddrchang0520

家用主機完全制霸

ddrchang0520 發表在 痞客邦 留言(0) 人氣()