1
本文作者: 謝幺 | 2017-02-08 10:38 |
2014 年,羅永浩聲稱要開放錘子手機(jī)的 Bootloader 功能 ,兩年后,44歲的他因食言而站上被告席,之后羅永浩發(fā)布微博致歉,表示該計(jì)劃因安全理由被技術(shù)人員否決掉了。
然而以蘋果越獄聞名世界的盤古團(tuán)隊(duì)卻“不務(wù)正業(yè)”,開始搞錘子。就在2月6日,他們發(fā)布微博表示已成功破解錘子手機(jī)的 Bootloader 功能,滿足發(fā)燒友們的期待。
不少讀者朋友可能對 Bootloader 并不太了解,以至于會產(chǎn)生如下疑問:
老羅的計(jì)(qing)劃(huai)為何會被否決?
Bootloader 是什么?解鎖后意味著什么?
發(fā)燒友們?yōu)槭裁聪M麖S商開放 Bootloader?
眾多手機(jī)廠商為何緊抓 Bootloader 不放?
盤古團(tuán)隊(duì)又是如何將之破解的?
今天雷鋒網(wǎng)宅客頻道就用通俗易懂的方式和大家聊聊——盤古破解錘子手機(jī) bootLoader鎖 那些事兒 。
BootLoader ——啟動引導(dǎo)器,簡單來說就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。
不嚴(yán)謹(jǐn)?shù)闹v,Android 系統(tǒng)中的 Bootloader 和 PC 的 BIOS有些類似,它可以引導(dǎo) Android 系統(tǒng)正確啟動。
有人曾把 Android 系統(tǒng)比喻為在球場上瘋狂砍分的科比,Bootloader 就是傳奇教練菲爾·杰克遜,只有他才能調(diào)動起科比的情緒,布置好進(jìn)攻方式和防守陣型,把科比的潛能充分激發(fā)出來。只要這些都準(zhǔn)備好了,科比就能攻無不克戰(zhàn)無不勝;此外,教練也能從球員中選出發(fā)揮穩(wěn)定、適合自己球隊(duì)風(fēng)格的球星(官方ROM或基于官方ROM的第三方固件)上場比賽,而拒絕一些與球隊(duì)風(fēng)格不合的球員加入(民間ROM)
BootLoader 既然要執(zhí)行硬件初始化,那必然和硬件相關(guān),所以它的代碼并非通用的,不同的硬件需要不同的 BootLoader 代碼,各大廠商可能都有自己的,也可能有一些通用的。使用高通處理器的手機(jī)通常 Bootloader 都是基于一個叫LK( little kernel ) 的東西做的,比如錘子手機(jī)。
據(jù)雷鋒網(wǎng)了解,發(fā)燒友們常說的刷機(jī),一般分為"卡刷"和“線刷”,兩種方式都可以將第三方的手機(jī)系統(tǒng) ROM 包刷入設(shè)備當(dāng)中。
不同的是,卡刷是把 ROM 包放在手機(jī)內(nèi)存卡里刷;“線刷”是手機(jī)連著電腦,用電腦來輸入刷機(jī)指令。無論卡刷還是線刷,都是在 Bootloader 之后進(jìn)行的, Bootloader 大門一鎖 ,什么刷都沒得玩。
在 Bootloader 初始化手機(jī)硬件之后,通常可以用組合鍵(比如開機(jī)鍵 + 音量鍵 )進(jìn)入Fastboot 模式,用電腦對手機(jī)輸入指令,可以理解為實(shí)現(xiàn)了一個簡單的通信協(xié)議。
如果沒有進(jìn)入Fastboot 模式,則可以通過另一個組合件進(jìn)入 Recovery 模式,Recovery ——“恢復(fù)模式”,相當(dāng)于PC上常見的“一鍵還原精靈”、Ghost系統(tǒng)等,可以用來刷手機(jī)系統(tǒng)的 ROM 包。
如果既沒有進(jìn) Fastboot 模式也沒有進(jìn) Recovery,那么 Bootloader就開始通過 Boot image 讀取手機(jī)的系統(tǒng)內(nèi)核,然后啟動 Android。
看懂 Bootloader 的重要性,就會知道手機(jī)廠商一旦開放 Bootloader ,至少要面對這三大麻煩:
手機(jī)廠商通常和網(wǎng)絡(luò)運(yùn)營商合作推出合約機(jī),難免內(nèi)置預(yù)裝軟件 ,預(yù)裝軟件通常無法自行刪除,一旦開放 Bootloader,運(yùn)營商及合作伙伴的利益無法保障。
手機(jī)廠商各自的UI實(shí)則是最鮮明的品牌烙印,一旦 Bootloader解鎖,用戶買了你的手機(jī)卻用別人家的系統(tǒng),手機(jī)廠商就有可能淪為單純的制造商。
羅永浩此前曾語帶輕浮地諷刺過魅族不提供該解鎖 Bootloader 功能,是對自家 UI 系統(tǒng)的“不自信”。想必老羅剛開始計(jì)劃開放 Bootloader 功能,也是出于對 Smartisan OS 爆棚的自信。
手機(jī)刷入的第三方固件可能會存在各種各樣的Bug,輕則影響用戶體驗(yàn),重則引發(fā)手機(jī)睡死、過熱、漏電等現(xiàn)象,穩(wěn)定性難以保證。從數(shù)據(jù)安全方面考慮,當(dāng)用戶的手機(jī)不慎遺失,如果 Bootloader 沒鎖,對方可以隨心所欲地刷入第三方系統(tǒng),輕而易舉取得手機(jī)中的隱私信息,“查找我的手機(jī)”、“遠(yuǎn)程抹除數(shù)據(jù)”之類安全功能完全失效。
正因?yàn)闋砍短鄦栴},手機(jī)廠商們對待 Bootloader 的態(tài)度由緊到松又到緊,經(jīng)歷了一次倒U型變化。目前大多數(shù)廠商都鎖了Bootloader,不同的是,有的提供了官方的解鎖渠道,比如“發(fā)燒”的小米,但解鎖之后仍會失去保修,有的則干脆禁止 Bootloader 解鎖。
事實(shí)上,正如老羅所說,其實(shí)2014年他們可能確實(shí)考慮對 Smartisan OS 開放Bootloader ,因此在初代ROM中保留了解鎖的功能,但其后該功能的大部分指令都被“閹割”,也許正是考慮到安全等問題。
對于T1和T2手機(jī),2.6.7 是最后一個可以解鎖的 ROM 版本號。
根據(jù)盤古在微博中所述,在被破解的錘子T2 手機(jī)中,其中涉及 Bootloader解鎖的一個安全分區(qū)使用了 RSA+MD5 兩種加密算法進(jìn)行簽名校驗(yàn),在這個過程中,盤古發(fā)現(xiàn)了由于技術(shù)人員對加密算法不太熟悉,導(dǎo)致了兩個的邏輯漏洞:
在 RSA 加密算法中,有公鑰和私鑰兩把“鑰匙”,公鑰是公共的,私鑰掌握在加密者手里,原本這兩把鑰匙應(yīng)該是相互獨(dú)立的,但一個小錯誤讓盤古團(tuán)隊(duì)直接通過公鑰推導(dǎo)出私鑰。
第二個漏洞是其中MD5算法中的某個值可以任意指定,盤古團(tuán)隊(duì)將其設(shè)置為 0 之后,可以讓原本瞬息萬變的哈希值固定為某一個數(shù)值。
通過這兩個漏洞,他們成功構(gòu)造校驗(yàn)簽名,將一臺裝載 2.6.7版本 Smartisan OS 的錘子手機(jī)解鎖。
盤古團(tuán)隊(duì)在文中表示,目前錘子手機(jī)的系統(tǒng)已經(jīng)升級到 3.x 版本,解鎖需要先將系統(tǒng)版本降級至 2.6.7 的版本,利用舊版 Bootloader 存在的漏洞進(jìn)行解鎖,解鎖完成后再在不更新 Bootloader 的情況下升級回原來版本的系統(tǒng),操作相對繁瑣。
據(jù)雷鋒網(wǎng)了解,從原理上看來,錘子科技如果一心要防止用戶利用該漏洞解鎖 Bootloader,只需通過ROM簽名驗(yàn)證等方式,讓用戶無法降級回 2.6.7以下版本即可讓此破解方式失效。
錘子科技將如何處理此次破解事件,目前還尚未可知。但無論如何,安全總是第一位的,借用盤古團(tuán)隊(duì)對老羅未兌現(xiàn)承諾一事的評價:“ 能從認(rèn)為加鎖是對系統(tǒng)的不自信,到后來發(fā)現(xiàn)解鎖是安全隱患,絕對是個進(jìn)步(loser口中的打臉)”
雷鋒網(wǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。