1
2014 年,羅永浩聲稱要開放錘子手機的 Bootloader 功能 ,兩年后,44歲的他因食言而站上被告席,之后羅永浩發布微博致歉,表示該計劃因安全理由被技術人員否決掉了。

然而以蘋果越獄聞名世界的盤古團隊卻“不務正業”,開始搞錘子。就在2月6日,他們發布微博表示已成功破解錘子手機的 Bootloader 功能,滿足發燒友們的期待。
不少讀者朋友可能對 Bootloader 并不太了解,以至于會產生如下疑問:
老羅的計(qing)劃(huai)為何會被否決?
Bootloader 是什么?解鎖后意味著什么?
發燒友們為什么希望廠商開放 Bootloader?
眾多手機廠商為何緊抓 Bootloader 不放?
盤古團隊又是如何將之破解的?
今天雷鋒網宅客頻道就用通俗易懂的方式和大家聊聊——盤古破解錘子手機 bootLoader鎖 那些事兒 。
BootLoader ——啟動引導器,簡單來說就是在操作系統內核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設備、建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便為最終調用操作系統內核準備好正確的環境。
不嚴謹的講,Android 系統中的 Bootloader 和 PC 的 BIOS有些類似,它可以引導 Android 系統正確啟動。
有人曾把 Android 系統比喻為在球場上瘋狂砍分的科比,Bootloader 就是傳奇教練菲爾·杰克遜,只有他才能調動起科比的情緒,布置好進攻方式和防守陣型,把科比的潛能充分激發出來。只要這些都準備好了,科比就能攻無不克戰無不勝;此外,教練也能從球員中選出發揮穩定、適合自己球隊風格的球星(官方ROM或基于官方ROM的第三方固件)上場比賽,而拒絕一些與球隊風格不合的球員加入(民間ROM)

BootLoader 既然要執行硬件初始化,那必然和硬件相關,所以它的代碼并非通用的,不同的硬件需要不同的 BootLoader 代碼,各大廠商可能都有自己的,也可能有一些通用的。使用高通處理器的手機通常 Bootloader 都是基于一個叫LK( little kernel ) 的東西做的,比如錘子手機。
據雷鋒網了解,發燒友們常說的刷機,一般分為"卡刷"和“線刷”,兩種方式都可以將第三方的手機系統 ROM 包刷入設備當中。
不同的是,卡刷是把 ROM 包放在手機內存卡里刷;“線刷”是手機連著電腦,用電腦來輸入刷機指令。無論卡刷還是線刷,都是在 Bootloader 之后進行的, Bootloader 大門一鎖 ,什么刷都沒得玩。

在 Bootloader 初始化手機硬件之后,通常可以用組合鍵(比如開機鍵 + 音量鍵 )進入Fastboot 模式,用電腦對手機輸入指令,可以理解為實現了一個簡單的通信協議。
如果沒有進入Fastboot 模式,則可以通過另一個組合件進入 Recovery 模式,Recovery ——“恢復模式”,相當于PC上常見的“一鍵還原精靈”、Ghost系統等,可以用來刷手機系統的 ROM 包。
如果既沒有進 Fastboot 模式也沒有進 Recovery,那么 Bootloader就開始通過 Boot image 讀取手機的系統內核,然后啟動 Android。
看懂 Bootloader 的重要性,就會知道手機廠商一旦開放 Bootloader ,至少要面對這三大麻煩:
手機廠商通常和網絡運營商合作推出合約機,難免內置預裝軟件 ,預裝軟件通常無法自行刪除,一旦開放 Bootloader,運營商及合作伙伴的利益無法保障。
手機廠商各自的UI實則是最鮮明的品牌烙印,一旦 Bootloader解鎖,用戶買了你的手機卻用別人家的系統,手機廠商就有可能淪為單純的制造商。
羅永浩此前曾語帶輕浮地諷刺過魅族不提供該解鎖 Bootloader 功能,是對自家 UI 系統的“不自信”。想必老羅剛開始計劃開放 Bootloader 功能,也是出于對 Smartisan OS 爆棚的自信。
手機刷入的第三方固件可能會存在各種各樣的Bug,輕則影響用戶體驗,重則引發手機睡死、過熱、漏電等現象,穩定性難以保證。從數據安全方面考慮,當用戶的手機不慎遺失,如果 Bootloader 沒鎖,對方可以隨心所欲地刷入第三方系統,輕而易舉取得手機中的隱私信息,“查找我的手機”、“遠程抹除數據”之類安全功能完全失效。
正因為牽扯太多問題,手機廠商們對待 Bootloader 的態度由緊到松又到緊,經歷了一次倒U型變化。目前大多數廠商都鎖了Bootloader,不同的是,有的提供了官方的解鎖渠道,比如“發燒”的小米,但解鎖之后仍會失去保修,有的則干脆禁止 Bootloader 解鎖。
事實上,正如老羅所說,其實2014年他們可能確實考慮對 Smartisan OS 開放Bootloader ,因此在初代ROM中保留了解鎖的功能,但其后該功能的大部分指令都被“閹割”,也許正是考慮到安全等問題。
對于T1和T2手機,2.6.7 是最后一個可以解鎖的 ROM 版本號。
根據盤古在微博中所述,在被破解的錘子T2 手機中,其中涉及 Bootloader解鎖的一個安全分區使用了 RSA+MD5 兩種加密算法進行簽名校驗,在這個過程中,盤古發現了由于技術人員對加密算法不太熟悉,導致了兩個的邏輯漏洞:
在 RSA 加密算法中,有公鑰和私鑰兩把“鑰匙”,公鑰是公共的,私鑰掌握在加密者手里,原本這兩把鑰匙應該是相互獨立的,但一個小錯誤讓盤古團隊直接通過公鑰推導出私鑰。
第二個漏洞是其中MD5算法中的某個值可以任意指定,盤古團隊將其設置為 0 之后,可以讓原本瞬息萬變的哈希值固定為某一個數值。
通過這兩個漏洞,他們成功構造校驗簽名,將一臺裝載 2.6.7版本 Smartisan OS 的錘子手機解鎖。
盤古團隊在文中表示,目前錘子手機的系統已經升級到 3.x 版本,解鎖需要先將系統版本降級至 2.6.7 的版本,利用舊版 Bootloader 存在的漏洞進行解鎖,解鎖完成后再在不更新 Bootloader 的情況下升級回原來版本的系統,操作相對繁瑣。
據雷鋒網了解,從原理上看來,錘子科技如果一心要防止用戶利用該漏洞解鎖 Bootloader,只需通過ROM簽名驗證等方式,讓用戶無法降級回 2.6.7以下版本即可讓此破解方式失效。
錘子科技將如何處理此次破解事件,目前還尚未可知。但無論如何,安全總是第一位的,借用盤古團隊對老羅未兌現承諾一事的評價:“ 能從認為加鎖是對系統的不自信,到后來發現解鎖是安全隱患,絕對是個進步(loser口中的打臉)”
雷鋒網
雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知。