iOS 的围栏花园 - 开源中国社区
iOS 的围栏花园
虫虫 2012年05月03日

iOS 的围栏花园

虫虫 虫虫 发布于2012年05月03日 收藏 10 评论 29

有免费的MySQL,为什么还要买? >>>  

许久以前看过一篇论文,将苹果公司移动操作系统的安全模型叫做 Walled Garden Model ,将 Android 平台的安全模型叫做 End-user control model 。这两种平台具有迥异的设计思想和与生具来的“种族差异”,很有意思。今天就来说说 iOS 的 Walled Garden,我将它翻译成“围栏花园”。

iOS 是一种严格的 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.

简单翻译一下,运营商或者服务提供商对平台(移动设备)上的应用、内容和媒体进行强势控制,限制非法的应用和内容。维基百科文中提到,iOS 就是典型的 Walled Garden 运作范例。

iOS 的围栏花园是一种“圈养”式的模型,这种圈养,不仅仅是对最终用户,更是对每一个应用。打一个比喻,用户就如一个孩子,被限制在一个周围围着高大围栏的安 全的活动范围里,而应用就像围栏花园中种的鲜花瓜果,这个花园的每一棵植物只允许生存在自己的花盆里,如果有邪恶的植物,比如毒花毒草企图污染泥土、空气 或者把根伸到其他花盆,那它将被苹果公司的园丁大叔连根带泥整个扔掉。于是,在园丁大叔的强制管理下,花园里的各种植物按照规划长得规规矩矩。花园里鸟语 花香,孩子在围栏花园中放心玩乐,如此和谐“世界”只因有一个神一样的存在——苹果公司,它打造花园、建立秩序、维护秩序,正如人类社会一样。这样的围栏 花园为一个核心的政府意志所主导,其规则被一整套审核机构进行强制推行。

每一个应用都是一个孤岛

“每一个应用都是一个孤岛(Every App Is an Island)”,苹果公司的开发文档如是说。在信息世界,其他设计师们都在想办法打破信息孤岛的时候,这个设计很值得思考,安全至上的移动操作系统,可 以说极大程度的推崇应用隔离,毫不客气的牺牲了本机内应用间信息共享(实际上,应用间的通信可以通过云端机制来解决大部分需求),可以说在同一台设备上, 应用间的距离是“咫尺天涯”。

Diametric scales-CS5

换一种严谨的技术语言来审视 iOS 上的应用安全性特性,苹果平台中的应用,被限制在沙箱(sandbox)中,应用只看到沙箱容器目录,不可见系统的其他目录和整个文件系统,沙箱中关键子 目录,例如,<Application_Home>/AppName.app、<Application_Home> /Documents/、<Application_Home>/Documents /Inbox、<Application_Home>/Library/等目录,每个子目录使用方法有严格规定。沙箱严格控制文件目录访问, 每个应用仅能访问自身的文件和数据,严格控制了硬件、系统共用数据、网络等资源的使用权限。如果应用不遵循设计规格,应用或者不能正常运作,或者在审核环 节被废弃,或者上市之后被下架。

ios_app_layout

有深入探究者会好奇,严格的沙箱结构下,应用只能访问沙箱的容器目录,应用之间的文件共享究竟需要多大的代价?举一个例子来帮助理解(非开发步 骤),EMail 应用和 TXT  编辑应用严格隔离,如果 EMail 的应用需要 TXT 文本编辑器打开和显示一个文本的附件,TXT 文本编辑器需要声明自身能处理的文档类型,当用户点击 EMail 的附件并选择了TXT文件编辑器的时候,EMail的TXT附件被 iOS 系统机制传送到 TXT 文本编辑应用的 /Documents/Inbox 目录下,TXT 文本应用读取这个附件文件展现给用户,当用户编辑这个文本附件,TXT 文本编辑应用应该将这个文件移动到本应用的数据目录下,因为沙箱规定/Documents/Inbox只有读取和删除文件的权限,并没有写文件的权限。这 是严格的沙箱结构的特例流程,苹果公司官方开发文档中需要专门文档进行阐述。

iOS 的沙箱不是Unix的应用隔离机制

iOS 和 Android 有一定的亲缘血统,这个血统来自于 Unix ,具有类似的进程账号绑定机制。Android 上使用不同的用户账号来运行进程,以此进行应用隔离,iOS 与此不同,所有应用使用相同的用户账号来运行进程, 使用沙箱内核扩展来实施安全隔离机制,iOS 内置了 35 个沙箱配置文件对应不同类别应用的运行。iOS 的沙箱机制可以参看 iOS 的同源兄弟 Mac OS X上的 “sandbox-exec”  命令,其运作机制可以参见下图(来自“技术奇异点”博客),在操作系统内核对应用访问权限进行强制检查,图中的 Access Control List 相当于 sandbox-exec 命令中的沙箱配置文件profile。

sandbox- exec  [- f  profile- file]  [ - n  profile- name]  [ - p  profile- string]  [- D  key=value  ...]
command [arguments ...]

2011-1214-Sandbox-Static

$  sandbox-exec -f /usr/share/sandbox/bsd.sb /bin/ls

使用沙箱环境运行程序/bin/ls程序,其沙箱配置文件为/usr/share/sandbox/bsd.sb。想体验一下沙箱的限制作用,可以运行下面的命令:

$ 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

……

可以看到限制了网络的访问权限之后,ping 程序将不能正常运行。

Mac OS X上用户可以运行 sandbox-exec 命令,可以看到文件系统,以及控制沙箱,然而,iOS 上的沙箱则是无所不在的幕后黑手,沙箱就像是一方井水,应用就像是坐井观天的青蛙。

围栏花园是运营出来的

尽管 iOS 上具有严密的机制隔离以及控制应用,然而,再完备的操作系统也难免有漏洞,并非牢不可破。整个 iOS 围栏花园的应用安全不仅仅靠 iOS 操作系统本身的架构以及防卫体系,更加依靠苹果公司对整个平台生态系统的经营。

苹果公司通过终端(iPhone)与平台(应用商城 App Store 以及其他内容传送平台)的组合运营,逐步吸引和驯化用户,平台的应用和内容丰富了,成为用户获取应用和内容的主流渠道,因此用户也逐渐忠诚,于是,聚集了 海量高商业价值用户的平台成为苹果公司的筹码,得以要求逐利的应用开发商遵循苛刻的安全准则,平台安全性则反过来增加用户对平台的信赖程度,使整个生态系 统呈正反馈方向健康的发展。

在平台运营中,需要有足够的技术装备,还需要巨额的人力成本和资源。在应用上架之前以及任何时候对静态代码进行扫描,逆向工程,运行时检查,杜绝恶意的应用毁坏平台的安全根基。

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:iOS 的围栏花园
分享
评论(29)
最新评论
0
就是因为太自由了 搞的我们生活都的成问题了。。。
0
我晕,这不能删除的啦。好吗,一直不喜欢IOS
0

引用来自“欣儿”的评论

就是不喜欢IOS的不开源,还有就是什么应用都得到APP 商城下载

试一试
0
就是不喜欢IOS的不开源,还有就是什么应用都得到APP 商城下载
0

引用来自“曼灵格”的评论

引用来自“李博文”的评论

引用来自“曼灵格”的评论

引用来自“李博文”的评论

鄙视iOS

你有什么资格鄙视?

你有什么资格这样说呢?最起码你连基本言论自由都不懂,我的鄙视是我的事,你是不能够这样说的,你的自由无权干涉别个的自由!请自查自己人品!

你才要要自查人品吧吧,因为你根本不配对ios做这样的评论,你以为自己是牛人吗,连google这样的大公司也只有追赶的份,你鄙视,配吗。和你这种无知的人争论没意思,就此打住吧。

可笑,一笑而过,你是什么人,干你何事!
0

引用来自“李博文”的评论

引用来自“曼灵格”的评论

引用来自“李博文”的评论

鄙视iOS

你有什么资格鄙视?

你有什么资格这样说呢?最起码你连基本言论自由都不懂,我的鄙视是我的事,你是不能够这样说的,你的自由无权干涉别个的自由!请自查自己人品!

你才要要自查人品吧吧,因为你根本不配对ios做这样的评论,你以为自己是牛人吗,连google这样的大公司也只有追赶的份,你鄙视,配吗。和你这种无知的人争论没意思,就此打住吧。
0
这文笔,一看就知不是小白用户写的
0

引用来自“SuStep”的评论

引用来自“李博文”的评论

鄙视iOS

与其鄙视,不如面对,不如去尝试使用,学习优秀的技术,开阔视野,以期改变。

就其技术而言有积极的一面,不过,苹果的安全策略不敢苟同!
0

引用来自“曼灵格”的评论

引用来自“李博文”的评论

鄙视iOS

你有什么资格鄙视?

你有什么资格这样说呢?最起码你连基本言论自由都不懂,我的鄙视是我的事,你是不能够这样说的,你的自由无权干涉别个的自由!请自查自己人品!
0
大家不要争技术了,这是毫无意义的。@易水西风 说的很对。个人不景气就去寻找新的方向吧,不要坐以待毙。
0
鄙视ios
0
不懂为啥老拿IOS不开源说事,苹果和谷歌本来就是两种不同类型的公司,苹果实质上是硬件公司,靠硬件赚钱,在封闭的平台上搭建了一个生态系统。谷歌就是互联网公司,核心业务是搜索(谷歌搜索算法之类的有没有开源我不清楚哈),靠广告赚钱,Android只过是谷歌服务在移动平台上的入口,开源是最好的商业策略,管你谁用Android,只要捆绑了我的软件,我就有钱赚。不同的商业模式决定了不同的平台生态。
打着开源的旗号而没有兼容并包的思想。嗯,相对来说想法很容易偏激。
0
本来打开个网页就可以用的应用,非要装一大堆应用到手机。
0
如果 iOS 支持 Flash,就不会有那么多应用了。
这就是 乔布斯 不支持 Flash 的原因。
0
苹果公司类比政府,邪恶用心昭然若揭,呵呵。
当然,作者说的是另外一回事
0

引用来自“李博文”的评论

鄙视iOS

与其鄙视,不如面对,不如去尝试使用,学习优秀的技术,开阔视野,以期改变。
0
毕业两年的ios码农有开到2万一个月的了,一堆java码农羡慕嫉妒恨哟
0

引用来自“军师”的评论

引用来自“曼灵格”的评论

引用来自“李博文”的评论

鄙视iOS

你有什么资格鄙视?

你有什么资格评论他人的鄙视。

End
0
权限应以用户为基础,用户信任的程式应可以互相利用,不应再通过其他途径再返回。

苹果是你所有资料都要通过一个所谓的大ZF模式进行通信,通过云存储也就存在资料外泄的可能性。


0

引用来自“曼灵格”的评论

引用来自“李博文”的评论

鄙视iOS

你有什么资格鄙视?

你有什么资格评论他人的鄙视。
顶部