這段時間,有關降級的消息真的是鬧得沸沸揚揚,結果也是令人生氣。
昨天小編就說了,即使不相信也抱着可能會出現的态度,就下載了一大批固件等着給“主子們”降級,為此還犧牲了硬盤裡的500g,現在真的是越想越火大!
也曾有老哥詢問過有關降級驗證的問題,這到底是怎麼回事呢?
為什麼手機在我們手上,而能否降級的權利卻在蘋果公司的手上呢,今天小編将帶來的就是蘋果的降級機制——
一、離線升級時代
在很久以前,在允許離線升級的時代,蘋果公司其實是無法控制用戶的系統版本的。
這樣一來用戶可以随意的升降系統版本。(不過在當時,用戶們渴望的是得到更多的功能,大概隻會想着升級而不是降級吧)。
在2009年49周後生産的機器和在此之後的iPhone 4,蘋果通過處理器加入了一個驗證機制,刷機必須簽名固件。
拿到授權文件為固件簽名。這個授權文件就是我們口中的SHSH,蘋果在iPhone 4s及以後的設備中通過修複處理器漏洞的方式禁止了本地簽名固件的驗證,所以iPhone 4s及以後機型不能通過本地簽名的方式繞過驗證。
4S最初上市時是iOS5,而由于iOS6和iOS7的驗證機制不同,即iOS6以前的用戶要升級到iOS7及以後的系統必須要先升級到iOS6,時過境遷,當時的iOS5不能直接升級到最新的系統,而iOS6卻支持OTA升級到最新系統。
蘋果為了保證iOS5的用戶能夠升級最新版iOS,所以開放驗證,允許這部分用戶先升級到iOS 6.1.3,再通過iOS 6.1.3升級到iOS 9。
網絡上的4s降級教程的原理就是通過修改iOS版本号到iOS 5,然後欺騙蘋果拿到iOS 6的升級許可,然後全新安裝iOS 6。這就是為什麼這個降級需要越獄的原因。
目前Apple改進後的在線驗證方式是iOS Device在升級時,除了發送設備信息,還會生成一個随機數(nonce)參與驗證。因此無法用錄制重播法騙過bootloader。
驗證邏輯由bootloader實現,代碼被主芯片secure boot保護,因此難以篡改;
芯片唯一密鑰藏在OTP中,隻能使用不能讀取,因此難以僞造客戶端請求;
再加上使用非對稱算法,服務器端的簽名也難以僞造了;
所以,強制雙向驗證 保護驗證邏輯 保護驗證密鑰,于是目前暫時處于道高一丈的階段。
可能會有老哥想到僞造,這是可以的,但是驗證服務器可以僞造,驗證結果卻無法僞造,隻能截獲真的服務器結果然後重放,這就是數字簽名強大的地方。
三、刷機降級
老哥們不知道有沒有在刷機的時候注意到這些:
正在聯系iPhone軟件更新服務器。
正在驗證已更新的iPhone軟件。
正在驗證已更新的iPhone固件。
如果是沒有開通驗證通道的系統版本,即使成功刷入,也不能通過激活。比如以前沒有開發者權限刷beta版出現激活錯誤。
說起來,就是iphone刷機必須使用iTunes,而且必須聯網才可以刷機。
iTunes在開始刷機之前,會檢查當前iphone的型号是否允許刷入當前所選擇的固件。也就是說蘋果允許你刷什麼才能刷什麼。至于為什麼不能僞造服務器,小編猜想是使用SSL證書進行驗證。而蘋果的SSL證書是無法僞造的,所以也就無法僞造服務器了。
所以,如果真的想僞造,除非具備以下兩個條件
1、破解iTunes,幹掉驗證系統版本的代碼;
2、搞清楚iTunes和蘋果驗證服務器通信的協議,并制作一個假服務器,允許刷入任何版本的固件。
四、刷機過程
小編在這裡就通俗地把刷機這個過程描述一下,同時分析不能随意刷機的原因:
1、你從網上下載一個ipsw格式的固件,打開iTunes,連接手機,固件就可以刷進去了;
2、實際上,刷機過程中,數據是這麼流動的:“ipsw文件 --> iTunes --> iOS設備的CPU --> iOS設備的Flash/eMMC”
3、其中非常關鍵的一點是:隻有CPU才能把固件寫到Flash/eMMC中,所以你能不能成功刷機,在于CPU同不同意。CPU不同意,你就刷不進去。
4、由于iOS設備是全盤加密的,往Flash/eMMC裡寫東西要先加密。這個加密密鑰寫在CPU内部,隻有CPU才知道。而且每台設備的密鑰都是不一樣的。
5、所以,你沒有密鑰,就無法向Flash/eMMC寫入正确的數據,即使把Flash/eMMC拆下來刷入也不行。
CPU的決定需要驗證來自蘋果服務器的固件簽名,假如固件簽名正确,就可以刷入固件。所以iTunes必須向蘋果服務器詢問這個固件的簽名,提供給CPU。蘋果服務器根據這個固件的真僞、版本号,來決定是否提供簽名。所以,蘋果服務器對你能否刷入固件是有決定權的。
可以想象以下情景:
iTunes:我要刷入這個固件
CPU:那你得提供這個固件的簽名
iTunes向蘋果驗證服務器索要了這個固件的簽名
iTunes:這是這個固件的簽名
CPU:這個簽名是真的!這個包可以刷入。
如果固件過期的話,會是以下情景:
iTunes:我要刷入這個固件
CPU:那你得提供這個固件的簽名
iTunes向蘋果驗證服務器索要這個固件的簽名
蘋果驗證服務器:這個固件過期了,所以我不能給你提供簽名。(數字簽名使用非對稱加密技術,具有不可僞造性。所以你不能自行僞造簽名)
雖然數字簽名不能僞造,但是可以保存下來重放。前幾年可以使用SHSH刷入舊版固件,就是這個原理。可以想象以下情景:
iTunes:我要刷入這個固件
CPU:那你得提供這個固件的簽名
iTunes拿出了收藏多年的舊簽名
iTunes:這是這個固件的簽名
CPU:這個簽名是真的!這個包可以刷入。
(實際上要搭建一個假的驗證服務器,把收藏多年的舊簽名提供給iTunes)
這種重放攻擊是很容易避免的,所以現在SHSH已經沒用了。你可以想象成以下情景:
iTunes:我要刷入這個固件
CPU:那你得提供這個固件的簽名,并且簽名中含有随機數fasdjhpgia;
收藏的舊簽名中,随機數不是fasdjhpgia,而是另外一個,所以無法使用。
最後再來個通俗易懂的:
比如iPhone是一艘能發射核彈的潛艇,在最早期隻需要艦長一聲命令就可以直接發射核彈(離線升級降級時代)。
後來高層覺得不行,就要求發射核彈之前和總統通話,确認,得到确認指令後才發射(在線驗證)。
但是恐怖分子(黑客)找到了一個辦法,破解了總統辦公室的電話線,接了一根接到自己家裡。
核潛艇打電話來要發射核彈的時候,恐怖分子就會模仿總統的語氣和聲音從而讓潛艇以為是真的。
高層還是覺得不行,首先就把電話線全部檢修了一遍,安全性大幅度提升(A5以後暫時沒辦法)。
然後驗證的時候加一串及時生成的密碼,兩邊對上才給通過,所以除了有漏洞的設備其他暫時沒辦法了。
所以說,如果保存了SHSH的話,就可以降級,部分機器有boot漏洞的可以直接降級。
但這樣的話不能激活,隻能做到僞激活。
篇幅有限,就到這了,有關蘋果的驗證機制老哥們知道了嗎?
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!