iOS 的圍欄花園
iOS 是一種嚴(yán)格的 Walled Garden
在維基百科中:
a “walled garden” refers to a carrier or service provider’s control over applications, content, and media on platforms (such as mobile devices) and restriction of convenient access to non-approved applications or content.
簡(jiǎn)單翻譯一下,運(yùn)營(yíng)商或者服務(wù)提供商對(duì)平臺(tái)(移動(dòng)設(shè)備)上的應(yīng)用、內(nèi)容和媒體進(jìn)行強(qiáng)勢(shì)控制,限制非法的應(yīng)用和內(nèi)容。維基百科文中提到,iOS 就是典型的 Walled Garden 運(yùn)作范例。
iOS 的圍欄花園是一種“圈養(yǎng)”式的模型,這種圈養(yǎng),不僅僅是對(duì)最終用戶,更是對(duì)每一個(gè)應(yīng)用。打一個(gè)比喻,用戶就如一個(gè)孩子,被限制在一個(gè)周圍圍著高大圍欄的安全的活動(dòng)范圍里,而應(yīng)用就像圍欄花園中種的鮮花瓜果,這個(gè)花園的每一棵植物只允許生存在自己的花盆里,如果有邪惡的植物,比如毒花毒草企圖污染泥土、空氣或者把根伸到其他花盆,那它將被蘋果公司的園丁大叔連根帶泥整個(gè)扔掉。于是,在園丁大叔的強(qiáng)制管理下,花園里的各種植物按照規(guī)劃長(zhǎng)得規(guī)規(guī)矩矩。花園里鳥語花香,孩子在圍欄花園中放心玩樂,如此和諧“世界”只因有一個(gè)神一樣的存在——蘋果公司,它打造花園、建立秩序、維護(hù)秩序,正如人類社會(huì)一樣。這樣的圍欄花園為一個(gè)核心的政府意志所主導(dǎo),其規(guī)則被一整套審核機(jī)構(gòu)進(jìn)行強(qiáng)制推行。
每一個(gè)應(yīng)用都是一個(gè)孤島
“每一個(gè)應(yīng)用都是一個(gè)孤島(Every App Is an Island)”,蘋果公司的開發(fā)文檔如是說。在信息世界,其他設(shè)計(jì)師們都在想辦法打破信息孤島的時(shí)候,這個(gè)設(shè)計(jì)很值得思考,安全至上的移動(dòng)操作系統(tǒng),可以說極大程度的推崇應(yīng)用隔離,毫不客氣的犧牲了本機(jī)內(nèi)應(yīng)用間信息共享(實(shí)際上,應(yīng)用間的通信可以通過云端機(jī)制來解決大部分需求),可以說在同一臺(tái)設(shè)備上,應(yīng)用間的距離是“咫尺天涯”。

換一種嚴(yán)謹(jǐn)?shù)募夹g(shù)語言來審視 iOS 上的應(yīng)用安全性特性,蘋果平臺(tái)中的應(yīng)用,被限制在沙箱(sandbox)中,應(yīng)用只看到沙箱容器目錄,不可見系統(tǒng)的其他目錄和整個(gè)文件系統(tǒng),沙箱中關(guān)鍵子目錄,例如,

有深入探究者會(huì)好奇,嚴(yán)格的沙箱結(jié)構(gòu)下,應(yīng)用只能訪問沙箱的容器目錄,應(yīng)用之間的文件共享究竟需要多大的代價(jià)?舉一個(gè)例子來幫助理解(非開發(fā)步驟),EMail 應(yīng)用和 TXT 編輯應(yīng)用嚴(yán)格隔離,如果 EMail 的應(yīng)用需要 TXT 文本編輯器打開和顯示一個(gè)文本的附件,TXT 文本編輯器需要聲明自身能處理的文檔類型,當(dāng)用戶點(diǎn)擊 EMail 的附件并選擇了TXT文件編輯器的時(shí)候,EMail的TXT附件被 iOS 系統(tǒng)機(jī)制傳送到 TXT 文本編輯應(yīng)用的 /Documents/Inbox 目錄下,TXT 文本應(yīng)用讀取這個(gè)附件文件展現(xiàn)給用戶,當(dāng)用戶編輯這個(gè)文本附件,TXT 文本編輯應(yīng)用應(yīng)該將這個(gè)文件移動(dòng)到本應(yīng)用的數(shù)據(jù)目錄下,因?yàn)樯诚湟?guī)定/Documents/Inbox只有讀取和刪除文件的權(quán)限,并沒有寫文件的權(quán)限。這是嚴(yán)格的沙箱結(jié)構(gòu)的特例流程,蘋果公司官方開發(fā)文檔中需要專門文檔進(jìn)行闡述。
iOS 的沙箱不是Unix的應(yīng)用隔離機(jī)制
iOS 和 Android 有一定的親緣血統(tǒng),這個(gè)血統(tǒng)來自于 Unix ,具有類似的進(jìn)程賬號(hào)綁定機(jī)制。Android 上使用不同的用戶賬號(hào)來運(yùn)行進(jìn)程,以此進(jìn)行應(yīng)用隔離,iOS 與此不同,所有應(yīng)用使用相同的用戶賬號(hào)來運(yùn)行進(jìn)程, 使用沙箱內(nèi)核擴(kuò)展來實(shí)施安全隔離機(jī)制,iOS 內(nèi)置了 35 個(gè)沙箱配置文件對(duì)應(yīng)不同類別應(yīng)用的運(yùn)行。iOS 的沙箱機(jī)制可以參看 iOS 的同源兄弟 Mac OS X上的 “sandbox-exec” 命令,其運(yùn)作機(jī)制可以參見下圖(來自“技術(shù)奇異點(diǎn)”博客),在操作系統(tǒng)內(nèi)核對(duì)應(yīng)用訪問權(quán)限進(jìn)行強(qiáng)制檢查,圖中的 Access Control List 相當(dāng)于 sandbox-exec 命令中的沙箱配置文件profile。
sandbox- exec [- f profile- file] [ - n profile- name] [ - p profile- string] [- D key=value ...]
command [arguments ...]

$ sandbox-exec -f /usr/share/sandbox/bsd.sb /bin/ls
使用沙箱環(huán)境運(yùn)行程序/bin/ls程序,其沙箱配置文件為/usr/share/sandbox/bsd.sb。想體驗(yàn)一下沙箱的限制作用,可以運(yùn)行下面的命令:
$ sandbox-exec -n no-internet ping www.google.com
PING www.l.google.com (209.85.148.106): 56 data bytes
ping: sendto: Operation not permitted
……
可以看到限制了網(wǎng)絡(luò)的訪問權(quán)限之后,ping 程序?qū)⒉荒苷_\(yùn)行。
Mac OS X上用戶可以運(yùn)行 sandbox-exec 命令,可以看到文件系統(tǒng),以及控制沙箱,然而,iOS 上的沙箱則是無所不在的幕后黑手,沙箱就像是一方井水,應(yīng)用就像是坐井觀天的青蛙。
圍欄花園是運(yùn)營(yíng)出來的
盡管 iOS 上具有嚴(yán)密的機(jī)制隔離以及控制應(yīng)用,然而,再完備的操作系統(tǒng)也難免有漏洞,并非牢不可破。整個(gè) iOS 圍欄花園的應(yīng)用安全不僅僅靠 iOS 操作系統(tǒng)本身的架構(gòu)以及防衛(wèi)體系,更加依靠蘋果公司對(duì)整個(gè)平臺(tái)生態(tài)系統(tǒng)的經(jīng)營(yíng)。
蘋果公司通過終端(iPhone)與平臺(tái)(應(yīng)用商城 App Store 以及其他內(nèi)容傳送平臺(tái))的組合運(yùn)營(yíng),逐步吸引和馴化用戶,平臺(tái)的應(yīng)用和內(nèi)容豐富了,成為用戶獲取應(yīng)用和內(nèi)容的主流渠道,因此用戶也逐漸忠誠,于是,聚集了海量高商業(yè)價(jià)值用戶的平臺(tái)成為蘋果公司的籌碼,得以要求逐利的應(yīng)用開發(fā)商遵循苛刻的安全準(zhǔn)則,平臺(tái)安全性則反過來增加用戶對(duì)平臺(tái)的信賴程度,使整個(gè)生態(tài)系統(tǒng)呈正反饋方向健康的發(fā)展。
在平臺(tái)運(yùn)營(yíng)中,需要有足夠的技術(shù)裝備,還需要巨額的人力成本和資源。在應(yīng)用上架之前以及任何時(shí)候?qū)o態(tài)代碼進(jìn)行掃描,逆向工程,運(yùn)行時(shí)檢查,杜絕惡意的應(yīng)用毀壞平臺(tái)的安全根基。
【編輯推薦】