看板 iOS 關於我們 聯絡資訊
※ 引述《st93042 (寂寞難耐)》之銘言: : 如題 : 記得i5左右時 : 蘋果並不會想現在這樣 : 11.4出來就把11.3鎖掉 : 從ios11出來開始,只要一出新版本,過沒多久就把舊版本關掉,是不是蘋果本身對新 : 本的優化沒信心,加上想加快就產品的汰換 前幾天才在 Reddit 上看到一篇有趣的文章, 順便趁這個機會分享給大家 :) 以下為了方便大家閱讀(X)賺稿費(O)所以簡單整理一下那篇文章的意思: 第一部分:在伺服器部分掌控升降級的鑰匙 -------------------------------------- 早在很早很早以前~~~蘋果是允許離線軟體更新,但是隨後就基於無法控制系統版本為由 , 放棄了這個方式,也就是接下來大家都知道的線上認證更新機制: Apple 認證伺服器 --數位簽章--> iTunes --數位簽章--> iDevice 只要關掉認證伺服器,就能達到控制整個生態圈版本的目的。 Apple 認證伺服器 --X--> iTunes --X--> iDevice (失敗) 也因此,當時候的人們也很聰明:「把伺服器的數位簽章備份下來」, 這也就成為了過去越獄社群曾經輝煌的過去:SHSH Blobs 作法是當我們需要降級時,便偽裝成為 Apple 的認證伺服器, 然後提供 iTunes 我們之前存好的 SHSH Blobs,就可以進行升降級, 即使伺服器已經關掉的狀態。 Apple 認證伺服器 ---X---> 我們的 SHSH --數位簽章--> iTunes --數位簽章--> iDevice (成功) 隨後蘋果的作法就是加入了一段亂碼,我們稱之為 Nonce, 這樣一來就讓我們無法順利的欺騙 iDevice 上面的 Bootloader, 達到降級的目的。 我們的 SHSH --數位簽章A--> iTunes --數位簽章A-->X<--數位簽章B-- iDevice (失敗) 也因此我們得到第一部分的結論: 1.iDevice 上的認證機制是依靠 Bootloader,並且是由 Secure Boot 好好地保護著, 也因此目前沒有方法可以透過中介的方法改寫這部分。 2.每個裝置的真正明碼被藏在一組組的「一次性密碼」,我們可以知道密碼是多少, 但是不能去修改它(唯讀),所以這個也無法被竄改。 3.由於在這過程中是使用非對稱式加密技術,也因此數位簽章是無法被竄改或偽造。 在如此重重的安全關卡中基本上是無法被突破的。 :( 第二部分:在裝置部分掌控升降級的鑰匙 ------------------------------------ 接著我們來看看為什麼不能任意刷入 iOS 版本: 一個刷機的過程如下: 下載 ipsw --> 丟入 iTunes --> 插上 iDevice --> 刷機 但是如果從背後原理上來看,後半部的流程是這樣: iTunes --> iDevice CPU --> iDevice Flash 所以可以決定要刷甚麼版本 iOS 的人就是 iDevice 上面的 CPU, 如果 CPU 謊報資訊的話,你刷機的成功率是 0.00069%(原文作者亂掰 :( ) 那你可能會問為什麼不繞過 CPU 直接開刷就好,但是問題是整個傳輸的過程都是加密的 , 任何檔案要寫進 Flash 全部都是加密的,而且你猜是誰有了鑰匙? CPU,這也代表全宇宙只有 CPU 知道怎麼加密這玩意兒,同時每顆 CPU 的密碼都不一樣 。 也因此,如果沒有了 CPU 的密碼,無論怎麼強力取出 Flash 上面的資訊, 都是不可讀寫的,即使是解焊 Flash 晶片也是如此。 那 CPU 怎麼決定可以刷入那些版本呢?沒錯就是數位簽章, 而唯一可以發行簽章的人就是 Apple 認證伺服器。 你可以想像一下整個過程如下: iTunes:我要刷機 CPU:你需要提供這個 iOS 版本的數位簽章 (iTunes 向 Apple 詢問數位簽章) iTunes:這是你要得數位簽章 CPU:這個數位簽章是真的,開始刷機~~ 如果 Apple 關掉認證伺服器: iTunes:我要刷機 CPU:你需要提供這個 iOS 版本的數位簽章 (iTunes 向 Apple 詢問數位簽章) Apple:認證關掉了,不能給你嘻嘻~~ 所以後來就有了 SHSH Blobs: iTunes:我要刷機 CPU:你需要提供這個 iOS 版本的數位簽章 (iTunes 從你的 D槽 拿出洨秘密) iTunes:這是你要的數位簽章 CPU:這個數位簽章是真的,開始刷機~~ 但是現在已經有了 nonce 所以已經沒用了: iTunes:我要刷機 CPU:你需要提供這個 iOS 版本的數位簽章 同時,必須要包含 rfjomedlfmndvlofdvjmiudshdweqiubnhyvbnkjmngbfuibmoddfnifdb 的字串喔~ iTunes:這是你要的數位簽章 CPU:額,你給的裡面是 mkfdvmdfvdvfmdvfpvfdmreijorejreoeirjgeriorenjroeierjnreo ,跟我的這個 rfjomedlfmndvlofdvjmiudshdweqiubnhyvbnkjmngbfuibmoddfnifdb 不一樣喔,所以不能給你刷機~~ 即使我們可以偽裝 Apple 認證伺服器,但是我們仍然無法偽裝其傳出來的結果 :( 只有透過攔截真正伺服器的資訊後,在需要時重新傳輸給 CPU 才能成功, 這也使得數位簽章的不可偽造性極為強大。 參考原文 -------- [Discussion]This is how Apple completely prevented you from downgrading iOS. 作者:u/SGpro-_- https://www.reddit.com/r/jailbreak/comments/8oy01m/discussionthis_is_how_apple _c https://i.imgur.com/rkOBfXw.png
結論廢話一下 :) 以一個密碼學的角度來說,光是這整個不能降級的機制, 其精巧之程度簡直可以堪稱為一個偉大的藝術品阿 :) 有問題歡迎討論~~ --
Lyeuiechang: [新聞]有狼師一直戳女學森(.)(.)而被家長吉上法院...12/04 23:42
Xhocer: ) (12/04 23:44
xj654m3: ( Y )12/04 23:46
Xhocer: \|/12/04 23:48
xj654m3: (╮⊙▽⊙)ノ|||12/05 00:47
Lyeuiechang: /|\╰╮o( ̄▽ ̄///)<12/05 01:17
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.104.176.198 ※ 文章網址: https://www.ptt.cc/bbs/iOS/M.1528441283.A.77F.html ※ 編輯: Lyeuiechang (112.104.176.198), 06/08/2018 15:10:35
Heathclifff: 好生動xDD06/08 15:03
flos8071: 解釋的真好 推06/08 15:04
CraziPhone: 106/08 15:05
nfhlve: 推06/08 15:08
AirRider: 精彩的說明,推一個06/08 15:21
chienyu2001: 解釋淺白 簽名檔生動06/08 15:25
DiviNeapple: 推06/08 15:29
frank00742: 好文 推~06/08 15:31
johnny719top: 推好文!06/08 15:37
cs01580: 長知識了,推06/08 15:38
※ 編輯: Lyeuiechang (112.104.176.198), 06/08/2018 15:43:02
Chaowei: 推 06/08 15:43
jimmythepeng: 長知識! 06/08 15:44
MMMXD: ! 06/08 15:47
jackvv4445: 好文推一下 06/08 15:49
berserkman: 推解釋...淺顯易懂 06/08 15:56
amy79968: 推解釋的很清楚 06/08 15:57
davendaven1: 推06/08 15:58
berserkman: 蘋果如果不用安全為口號硬鎖降版,ios絕對也會碎片化06/08 15:59
neverwei: 推06/08 16:04
jackyhain: 好文淺顯易懂!06/08 16:08
zhouyuboy: 簡單易懂!厲害 解開我多年的疑問!哈哈哈06/08 16:09
regi9711: 推,長知識06/08 16:11
AF666356: 簡單易懂06/08 16:11
b1izzard2000: 高手!06/08 16:11
ErcH922: 簡單易懂06/08 16:16
s2170801: 終於看慬刷機的過程了.06/08 16:18
chu2016: 推詳細解說06/08 16:22
liljay850323: 好看!06/08 16:23
lucky123820: 推 真的淺顯易懂06/08 16:26
shenyang: 簡單易懂06/08 16:28
Fjallravens: 推06/08 16:29
kukoky1123: 推06/08 16:31
stonko: 推,真的簡單易懂! 06/08 16:33
alstorsummer: 有翻譯推推 06/08 16:33
GreenChen333: 淺顯易懂 06/08 16:35
letyoufree: 推有趣的小知識 06/08 16:36
lakers110: 推 06/08 16:40
sossos7: 推專業!! 06/08 16:47
lakers110: 為什麼無法連同nonce+ 數位簽章一起備份下來?卻只能06/08 16:58
lakers110: 備份數位簽章?06/08 16:58
所以才有 SHSH2 2.0 也就是包含 Nonce 的 Blobs 不過這又是另一個故事了~
yixiang921: 推推推06/08 16:58
※ 編輯: Lyeuiechang (180.217.185.241), 06/08/2018 17:10:57
Arbing: 這種文還不推爆 超用心整理推一個 06/08 17:16
bala73: 推個 06/08 17:17
Vett: nonce 的問題也不是問題了....大神太多了囉 06/08 17:18
homelife: 很久沒follow,今天才知道除了shsh外又多了一層,跟推 06/08 17:19
homelife: 文一樣好奇為什麼不能連nonce一起備份下來 06/08 17:19
homelife: 題外話,手上還有一支iphone3G是連Android都能刷哈哈 06/08 17:20
bightw24261: 推 06/08 17:26
freePrester: 應該是因為每次要求的 nonce 都不一樣? 06/08 17:26
Ansel: 推 06/08 17:26
as134679258: 我覺得開發者簽名的過程也是頗精彩的 06/08 17:27
fishfish1314: 優文 06/08 17:30
hrml: 推 06/08 17:40
Vett: apnonce基本上是一次性的 06/08 17:42
Vett: 但是大神都能找到會產生重複性apnonce 的generator 06/08 17:43
smallopen: 好文 推一個 06/08 17:48
yantingtw: 推一下 06/08 17:48
zxc654033: y長知識 推 06/08 17:51
ho83leo: 這是好文章 06/08 17:56
xichen0326: 推 06/08 22:09
slrune1049: 推 06/08 22:20
andersonhaha: 大推啊 06/08 22:26
filiaslayers: 推,跟只會噓的人比好太多了 06/08 22:32
ppstyle7: 推 06/08 22:37
wilson0937: 推 06/08 22:40
z84326: 有趣優文 可以M惹 06/08 22:46
Oni1215: 推易懂 06/08 22:48
FantasyArc: 簡單易懂 推一個! 06/08 22:58
inspire0201: 推一個 06/08 22:58
dgjtye: 06/08 23:00
kazumaking: 推 解釋方式相當精闢 06/08 23:10
darkmore: 推推 06/08 23:10
unojazz: 推 06/08 23:14
gonna01: 好文 06/08 23:22
jameshcm: 當年如果你是我計算機概論老師,該有多好... 06/08 23:22
poohd: 專業易懂 推一個! 06/08 23:26
zoezoehsu: 推 06/08 23:29
qwer34362: 這麼說來舊bootrom的iPhone 3GS以下機型之所以能自由 06/08 23:34
qwer34362: 升降級就是因為CPU不會去做認證機制的緣故吧!? 06/08 23:34
cho860928: 淺顯易懂 推 06/08 23:35
amaton: 推 06/08 23:36
yitea: 長知識了 06/08 23:51
hunk124: 推 06/09 00:27
judy19970527: 給推 06/09 00:29
flymonkey: 強! 06/09 00:32
juiliang: 推 06/09 00:32
byron0955: 優文 06/09 00:41
Zouarg: 推 06/09 00:42
mavericksX: 讚讚 06/09 00:45
SMMIT: 推用心 06/09 00:45
neo068: 推!長知識 06/09 01:04
sc2x2: 只能推了 06/09 01:04
tmpss88109: 好生動XD 06/09 01:14
jack92120: 推,易懂 06/09 01:15
pilitiger: 長知識! 06/09 01:24
daniel414: 推 06/09 01:40
zelda312: 清楚 推! 06/09 01:56
kerbi: 還是看不懂 06/09 02:04
yoyodede0325: 推 06/09 02:34
marko59457: 推 這解釋我喜歡 06/09 02:54
cattgirl: 專業 博士班的比喻 06/09 03:15
potatososo: 棒 06/09 03:20
a00561: 謝分享 06/09 03:31
wowhahaha: 推 06/09 04:02
Hakan: 推專業講解 06/09 04:04
Mattcobb: 深入淺出的介紹方式 06/09 04:52
Mattcobb: 專業好文 推 06/09 04:52
kis28519: 推好文 06/09 07:13
johnnyjaiu: 結論:嘻嘻 06/09 07:35
lopiuytio: 高手 06/09 07:40
mini8428: 推簡單易懂 06/09 08:09
windrops: 好文推 06/09 08:12
ui9317: 專業 推 06/09 08:17
ideahans: 厲害 06/09 08:18
cyberdeer: 大推優文! 06/09 08:46
noluna: 專業 推 06/09 09:21
fake0824: 推 06/09 10:51
pphyy5844548: Push 06/09 10:55
LouisWOLF: 阻止系統版本破碎化,對開發者而言,優化變得比較單純 06/09 11:00
LouisWOLF: 。 06/09 11:00
johnnyhb: Djekidbdhaudbfjchfnkzudnnxkcjrnxjsc 06/09 12:13
PeanutSquare: 好生動XD 06/09 13:42
s7876663: 神串留名 06/09 14:46
p90349: 那些常酸人的怎麼不見了?是不是看不懂就不敢亂酸了啊? 06/09 15:14
Adagietto: 推 專業 06/09 15:42
live363789: Ios12準備打破舊設備變慢的思維 蘋果知道轉為經營平台 06/09 15:48
live363789: 服務 提升APP開發的效率 當所有人都願意升上Ios12 將 06/09 15:48
live363789: 大幅減少系統破碎化的問題 間接保證app的品質 06/09 15:48
myfred77: 精彩給推 06/09 18:31
Elivanta: 深入淺出,簡單易懂! 06/09 18:32
tuansam: 推 未看先猜會被友站轉載 媽我在這~ 06/09 20:04
horseorange: 推 06/09 21:57
fierceeagler: 推一個 06/10 07:51
crayon3shawn: 好猛喔!淺顯易懂 06/10 18:27
miss2157: 推 06/10 20:55
wade951233: 推! 06/11 14:13
jasonx105: 問下,所以iOS 更新需要跟apple伺服器認證,也就是只 06/11 22:45
jasonx105: 能在連網環境下更新? 06/11 22:45
purplvampire: 數位簽章本來就是用來確保資料的完整性跟不可否認性 06/13 22:08
simata: 沒細節 06/14 15:39
NJI: 推~ 07/23 08:23