the fun part is DONE.
http://psgroove.com/content.php?581-Sony-s-PS3-Security-is-Epic-Fail-Videos-Within
Sony’s PS3 Security is Epic Fail – Videos Within
連private key都被破出來了,這回真是徹底。
http://www.youtube.com/watch?v=HEFMAP0mTvY
http://www.youtube.com/watch?v=qFuTCEtK6l8
http://www.youtube.com/watch?v=84WI-jSgNMQ
Sony’s ECDSA code:
int getRandomNumber()
{
return 4; // choosen by far dice roll.
//graranteed to be random.
}
雖然這段看起來很好笑,不過SPU安全機器bypass真的很精彩。
然後因為數位簽名失效了,所以照理來說大家可以任意作軟體到GameOS上,並且也可以再把完整的Linux安裝功能做回去。
不過CFW維護之類的東西就不是這些hacker真的想玩的東西了。
說起來,如果沒去把OtherOS關掉的話,可能PS3到目前為止還沒被破解XD
小弟只要有支援Linux的穩定FW就心滿意足了。
但有GameOS可把完好像也不錯,
剛好手邊有洩漏出來的PS3 SDK可以試試,
不過沒寫過大型的應用程式和繪圖程式就是了…XD
不過說起來很可怕,可以數位簽名耶….要啥有啥,整個完全failure了。
話說那個ECDSA code真的是有笑到,
難道他們怕管理太多的認證嗎XD
還是說對不會被破解太有自信了…_A_|||
這當然有很多可能的原因,但是我覺得最可能的原因是 1. 實作的人沒有真正瞭解 ECC 的原理(比如看到 library 要求傳入一個「亂數」就隨便傳一個固定的「亂數」) 2. 他們對 PS3 的硬體保護效果太有自信,因此認為這也沒關係。
有些人會批評說,這些人做這些東西只是為了破解 PS3,根本不是真的為了讓 PS3 可以跑 Linux。也許這是沒錯。但是,如果當初 Sony 不把 OtherOS 移掉,現在這件事就根本不那麼重要了。事實上連 OtherOS 功能我覺得都非常無用,因為除非你真的是買一台 PS3 回家當 server,不然它的 OtherOS 和 GameOS 的切換實在太麻煩了。比較合理的做法,應該是在 GameOS 下要能開一個 VM 跑 Linux 才對。當然,以 Sony 這種東怕西怕的態度,這當然是根本不可能的。
事後來看,PS3 的 OtherOS 根本只是 Sony 用來騙人上鉤(以為可以買到便宜的 Cell workstation,然後再去買真的昂貴的版本)的技倆。不過看起來這也沒有成功…
>>比較合理的做法,應該是在 GameOS 下要能開一個 VM 跑 Linux 才對。
>>當然,以 Sony 這種東怕西怕的態度,這當然是根本不可能的。
但256MB的main memory有點難達成VM的順暢度吧?
光lv1、lv2再加上VM所要佔用的記憶體容量,
可能連執行最省記憶體的GUI都有問題?
因為小弟現在在終端機下自己調整的狀態為剛開機就只有190MB左右的餘裕,
說實話是很慘就是了…。
不過換成VM的方式,
其安全性會較高嗎?
其實 OtherOS 本來也是一個 VM(不然就沒辦法限制不能存取 GPU 了),所以 VM 的安全性問題本身不大(如果做得正確的話…)。當然 GameOS 佔多少記憶體不清楚,可是應該也不至於會太大。
OtherOS是VM,小弟是知道的。
只是小弟想比較的事是,
lv1之上的lv2再架個VM會比lv1之上的OtherOS還安全嗎?
因為OtherOS都要經lv1才能存取硬體,
而lv2上再架VM的話,
是否會因多一層lv2而有較多的防禦?
> 事後來看,PS3 的 OtherOS 根本只是 Sony 用來騙人上鉤
>(以為可以買到便宜的 Cell workstation,然後再去買真的昂貴的版本)的技倆。
認真地講CUDA其實也是這樣啊….吸引人去買Tesla的技倆XD
不過遊戲卡還是能做不少事情,沒什麼記憶體空間PS3就尷尬多了。
> 因為OtherOS都要經lv1才能存取硬體,
> 而lv2上再架VM的話,
> 是否會因多一層lv2而有較多的防禦?
說起來GameOS和OtherOS都是hypervisor底下的VM啊….
以這回來說,我覺得Hypervisor應該要強制LV2要跑數位簽名,但是這回顯然是沒有,所以不必破到Hypervisor就已經可以在HDD跑copy了,論要防止Piracy的DRM到這一個地步已經垮了,偏偏它只被破20%。
反過來說,360就沒有LV2,但是有去查數位簽名就會有防禦能力,所以單單多一層LV2應該不會變得比較安全。
>>沒什麼記憶體空間PS3就尷尬多了。
當初早該將PS2的相容成本換成512MB的XDR,
這樣不只Linux方面有較多的記憶體,
連跨平台遊戲在記憶體控管方面也較有彈性。
>>以這回來說,
>>我覺得Hypervisor應該要強制LV2要跑數位簽名,
>>但是這回顯然是沒有,
>>所以不必破到Hypervisor就已經可以在HDD跑copy了,
>>論要防止Piracy的DRM到這一個地步已經垮了,
>>偏偏它只被破20%。
所以Hypervisor(LV1)才會對JB沒有任何防禦嗎?
因此JB只要繞過LV2的簽名就達成一些HDD Game的執行嗎?
結果就是LV1只做存取硬體方面的限制,不做軟體方面的防禦?
不知小弟的理解是否有錯。
題外話,
如果LV1強制LV2要跑數位簽名,
是否表示OtherOS的Linux Kernel也要跑數位簽名才能在LV1上執行?
如果是這樣的話,
那LV1方面就很容易在OtherOS上被看見囉?
我沒有仔細去看 PS3 的保護是怎麼做的,但是基本上的做法應該是類似這樣:
首先,CPU(即 CELL)裡面有預先寫好的一個 key。這個 key 是不出 CPU 的,所以理論上外界不會知道。一般來說,為了避免 key 外流造成嚴重損失(例如現在這個情況),CPU 裡面往往會有數組 key,以便在某一組 key 外流時,可以加以取消。
然後,CPU 在 boot 時,載入 firmware。Firmware 需要以另一個 key 來進行簽名,然後 CPU 會用他裡面的 key 來驗證這個簽名。驗證通過它才會繼續載入這個 firmware。
接下來就是一個 chain of trust。由於 firmware 已經被認可,因此它就可以用來認可所有的其它東西,例如 GameOS、DLC、或是遊戲。這些認可的簽名不需要使用和 CPU 一樣的 key,因為 key 可以放在 firmware 中(當然 firmware 需要加密)。事實上使用一樣的 key 是比較危險的,因為在這次的情形中,一個 key 被破解,就所有的都被破解了。
由於現在 CPU 的 firmware key 已經被破解,因此理論上任何人都可以寫一個自己的 custom firmware,並加以簽名,而 CPU 會認為這是由 SONY 推出的正式 firmware。接下來就沒有任何 “chain of trust” 可言,因為這個 custom firmware 大可以把所有的認證動作完全取消。
所以,真正的問題變成在於,CELL 是否真的有內建多組 key 以備此時的不時之需?而且它是否能有方便的方法來取消其內建的 key?例如,假設 SONY 可以推出一個 firmware update,其中將目前使用的 key 取消掉,並指定使用一個新 key(可能原本就內建於 CPU 中),那麼所有 update 這個新 firmware 的 PS3,都會立刻只認新 key,就無法再跑以舊 key 簽名的 custom firmware。至於外面已經流傳的 DLC 和遊戲則較容易處理。DLC 可以要求使用者重新下載(稱其為「更新版」即可)。遊戲則比較麻煩,由於遊戲已經使用現有的舊 key 簽名,若舊 key 已取消,唯一的方法是建立一個巨大的「許可列表」,即透過某些方式來 id 一個遊戲(例如計算某幾個特定 sector 的 SHA-1 hash 值),然後只容許符合這些 hash 值的舊遊戲可以透過舊 key 執行。
當然,如果第一點做不到(即取消現有 CPU 的舊 key 並植入新 key),那其實這一切就是空談。再者,若風聲傳出去,很多現有 PS3 使用者可能會選擇不更新 firmware(雖然也許 SONY 有辦法強制更新)。無論如何,這都會是令人頭痛的問題。
to Hotball兄:
現在這個狀況,有些人說還可以換key….
就像您提到的,只有一開始就在CPU裏面預備幾組key,否則現在並沒有一個「可信」的途徑將firmware交給console,因為唯一判斷可信與否的private key都已經leak出來了。
沒錯,如果 CPU 中並沒有預先準備的「備用」 key,則就算 CPU 可以換 key 也沒用,因為 SONY 推出新的「換 key 用 firmware」可以用目前已知的 key 解開,那它換的新 key 還是一樣曝光了。
就目前看到的討論,似乎 CELL 並沒有這個「備用」key(Xbox 360 反而有 de-fuse list,某個角度來說類似這個功能)。如果真的沒有,那真的就需要什麼神奇的天才想法才有辦法救他了 XD