首页
社区
课程
招聘
5
[翻译]ios安全团队对ios安全的认识
发表于: 2013-7-6 19:07 27284

[翻译]ios安全团队对ios安全的认识

2013-7-6 19:07
27284


http://blog.csdn.net/chenghai2011/article/details/7219336



原文:http://images.apple.com/iphone/business/docs/iOS_Security_Oct12.pdf



苹果的3.5寸黄金分割、用户最佳体验随着三星的大屏已经成为历史。jobs去世以后,苹果的创新也失去了灵魂。



最新发布的ios7相对于ios6在UI上有重大突破,用了IOS7以后,感觉清爽了很多,,从此腰不疼腿不酸了。



看这张图就知道他们的差别了。



但无论如何,ios在用户体验的一致性、安全方面都有值得学习的地方。搞游戏的都知道,要赚钱先得搞IOS。搞android,终端还没适配完毕,钱都花光了!



今天就介绍一下IOS的安全机制。



先来一张系统安全架构,后续逐渐解释:





IOS内核来源于OS X,很多安全特性也由此借鉴。



1、安全启动



苹果的系统完整性校验主要包括:bootloaders, kernel, kernel extensions, and baseband firmware.


Boot ROM先启动,里面内置了Root CA public key,然后验证  Low-Level Bootloader (LLB) ,LLB是苹果签名的.  LLB 又去验货next-stage bootloader, iBoot, iboot验证kernel.



如果上述有验证的某个环节没通过,手机会显示 “Connect to iTunes” .越狱的朋友深有体会。其实就是进入了 recovery mode.。



如果Boot ROM 加载或者验证LLB都失败了,那就进入了 DFU (Device Firmware Upgrade) mode.



上述两种情况都需要求助于 iTunes 了。  这些模式等到后续介绍ios越狱详细介绍。



2、System Software Personalization



IOS最牛的地方就是通吃产业链,有漏洞及时发现,及时patch。有些爱越狱的同志升级以后发现不能装软件了(要支持正版哦)。。。。,就想回到过去,想降级(ios5.50-->ios2.50)!



试想想,人生能回到过去?重新来过吗?那些不能忘怀的校花?



System Software Personalization 就是对付降级的,降级就会导致原来的漏洞继续存在!



网上经常看到,有降级包吗?降级包下载!!! 老版本已经被越狱,自然有大神制作包。那么如何阻止这些包被屌丝安装呢?



这其中itune扮演了很屌的角色!安装或者更新时, iTunes (如果你是wifi甚至你不差钱通过3G那就是设备了) 会连接到 Apple installation authorization server (gs.apple.com) ,会加密发送你要更新的内容信息(切记肯定是摘要之类的信息)(比如 LLB, iBoot, the kernel, and OS image), 一个防止重放攻击的随机数、 设备unique ID (ECID). 服务器检查一下你要升级那些(服务器记录了你终端的状态信息。。。这点也很可怕哦),如果发现数据库里面记录的这部ecid终端原来是io6,现在想升级成ios7.说明是个良民啊。准奏!那就签个名返回吧,准许安装,当然安装包肯定是要验证签名的。



因此这个功能System Software Personalization指的就是the ECID “personalizes。每个终端目前啥版本那都是苹果登记注册的,休想降级!



一个防止重放攻击的随机数防止你以后复用服务器的响应。比如你这次升级到ios7了,下次升级到ios8了,你可能想从ios8回复到ios7,ios7的服务器回复数据就可以让你回复到ios7.



3、代码签名



    android的代码签名就不值得一提了,安装时验证一下,以后就不管了,无非升级时玩玩。 这存在很大的安全隐患,比如动态加载等。



  android还有代码动态修改的能力,这些细节都等老王的书里面看吧。



苹果的代码签名相比历史上出现的代码签名都牛叉的地方在于:



1)、价格高,99$,屌丝桑不起!开发啥恶意软件,门票都交不起!



2)、审核严格,没有三个月别想着审核通过,等不起。刚开发一个邪恶的,等审核通过了,漏洞已经补了。



3)、运行时代码签名检测  checks of all executable memory pages ,防止动态加载或者篡改! 很厉害!!!



4)、苹果除了个人应用强制签名,统一电子商城入口外,也开放企业签名,咱们社会主义大企业内部可以签名使用,但也有一些不和谐的,,,私自用企业版签名发布软件乱发布的。。。。



4、沙箱



应用都是“sandboxed,不能相互偷窥内存和文件。 每个应用都有自己唯一的目录。/var/mobile/Applications/[GUID]



第三方应用的用户身份都是mobile。



想申请一些特殊能力就得申请,现在的系统都差不多,无非就是能申请的范围多与少。



等会几个例子:



但这个申请的能力是代码签名的,是不能改变的。



an app and allow authentication beyond runtime factors like unix user ID.  这句话值得大家去深入理解。这就是ios sandbox的精髓所在!那就是传统的DAC+自定义的MAC机制。



ios的沙箱设计很经典,内部代号“Seatbelt”。



For XNU systems, implemented as a TrustedBSD policy module,Runtime configurable, per-process access control policy。



其实就是实现了强制访问控制MAC,可以实现每个进程的策略,比如那个进程能访问那个文件、进程、外设等。



这其实就是现在的SEAndroid。只不过MAC的核心是policy,为了满足各类应用的需求,policy不好设计,一般就是给一个缺省的。



但其内核很强大的,可以扩展,比如:



fluffy:tmp dion$ sandbox-exec -n no-internet /bin/sh 禁用网络了



sh-3.2$ file /etc/passwd


/etc/passwd: ASCII English text


sh-3.2$ ping

http://www.eff.org


PING eff.org (64.147.188.3): 56 data bytes


ping: sendto: Operation not permitted



sandbox看下图,MAC的核心在内核完成,其它各层配合策略为主。



比如下列的策略:



一些系统自带的沙箱配置文件:



总之,ios的沙箱非常强大,随时准备爆发,android还在尝试selinux的机制,ios都已经内置了!



ios提供一个缺省的 sandbox,剩下的交由开发者和用户了。 SEAndroid也是这样的思路,他也想把策略交给用户,可用户不懂如何配置策略让终端更安全,所以SEAndroid的市场在企业领域,那儿有个管理员,他应该懂!



ios的应用手段也比较匮乏,主要是:custom URL schemes、 shared keychain access groups.



举例:引:

http://blog.csdn.net/cloud_zero/article/details/6054040



iPhone上URL Schemes的作用为应用程序提供了一个其他应用程序或者safari可以启动他的方法.就像Android上intent一样.只不过Intent的功能要比URL Schemes强很多.



原理很简单,首先Schemes是在你的应用程序的info.plist里面定义的,在安装应用程序后.应用程序可以解析你的info.plist,如果检测到CFBundleURLTypes,会将相应Scheme注册到系统里面。如果有应用程序通过[[UIApplication sharedApplication] openURL:url]打开了safari或者直接在safari里面输入URL.系统会检测URL,然后对照已经注册的scheme来启动相应的应用程序.比较常见的scheme有http,mailto,tel,sms.



url可能带来漏洞,比如:



– URL Scheme allows to edit or delete data without user permission


  Ex: Skype URL Handler Dial Arbitrary Number



  



Address space layout randomization (ASLR)、ARM’s Execute Never (XN) feature我就不多说啦,微软这么多年一直都在这方面努力。



XN :可写可执行的一定严格控制, The kernel checks for the presence of the Apple-only “dynamic-codesigning” entitlement.即使如此, only a single mmap call can be made to request an executable and writable page, which is given a randomized address. Safari uses this functionality for its JavaScript JIT compiler。逼不得已才开放!



ROP等攻击一直在持续。



4、++API控制



   ios基本把危险的API全部干掉了!剩下的都是运行时提示。



5、数据加密



这可是ios最大的亮点。其他系统还在学习中!



1)、硬件加密引擎内置,内置 AES engine, SHA-1,说实话,没有硬件保存密钥、完成加密运算。数据加密就已经失去了8成安全!苹果的加密引擎DMA path between the flash storage and main system memory。大数据加密效率非常重要。



2)、内置两个初始密钥 unique ID (UID) and a device group ID (GID) are AES 256-bit keys。这两个东西谁都无法读写,除了加密引擎。



The UID是每个设备独有的 and  not recorded by Apple or any of its suppliers.(革命形势啊!)



The GID 是一类芯片一个,比如A5的芯片内置的GID密钥都一样。



由于UID是每个设备独有的,而且它是整个ios系统密钥树的最顶层,因此,数据就绑定了设备,flash、memory离开了根,就无法解密.



加密除了防止艳照门,被人偷窥外。由于flash技术的特点:wear-leveling 。删除数据很困难哦。既然加密了,就容易多了,只需删除密钥即可。



为此, iOS 提供一个Effaceable Storage. accesses the underlying storage technology (for example, NAND) to directly address and erase a small number of blocks at a very low level.。以便wear-leveling删除太麻烦。



6、文件加密



文件加密和数据保护按理是一个话题,但排版不方便,在起一个节吧。



文件加密还得考虑锁屏等环节。那些数据必须开启锁屏才能解密?要不然锁屏就成了摆设。



更详细的图:





[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 5
支持
分享
赞赏记录
参与人
雪币
留言
时间
心游尘世外
为你点赞~
2024-5-31 05:33
QinBeast
为你点赞~
2024-5-31 05:25
飘零丶
为你点赞~
2024-4-3 00:38
shinratensei
为你点赞~
2024-2-15 00:21
PLEBFE
为你点赞~
2023-3-7 00:31
最新回复 (17)
雪    币: 56043
活跃值: (21220)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
将附件转了一份本地。
楼主主要是将原文的重点提出来翻译了一下吧
2013-7-6 19:51
0
雪    币: 33
活跃值: (145)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
3
更新了,已经超越了原来要翻译的内容了。
2013-7-6 22:02
0
雪    币: 56043
活跃值: (21220)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
想帮你排下版,发现与原文对应不起来。

比如几个图原文没有。

还有序号,是不是搞错了?

4、沙箱
4、++API控制  //这里不是4.1的意思?
5、数据加密
6、文件加密
6、+++小数据加密  //6.1?

缺几个图:
1)看这张图就知道他们的差别了。
2)sandbox看下图
3)比如他不能离开屌丝1的终端吧,如下图。

另外,目录蛮重要的,这个不应该省。
2013-7-7 10:25
0
雪    币: 435
活跃值: (172)
能力值: ( LV13,RANK:280 )
在线值:
发帖
回帖
粉丝
5
苹果的安全机制也是基于非越狱条件的,越狱之后很多东西屏障也就失效了,而恶意软件开发者可以接受无法感染非越狱用户这个情况。
个人觉得目前android和ios的安全都要分成越狱(root)和非越狱(非root)情况分别讨论
2013-7-7 10:49
0
雪    币: 33
活跃值: (145)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
6
4+其实就是5.。。是我新增的目录,由于不想在更新下面的目录了,就改为+了
2013-7-7 13:03
0
雪    币: 33
活跃值: (145)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
7
[QUOTE='火翼[CCG];1196139']苹果的安全机制也是基于非越狱条件的,越狱之后很多东西屏障也就失效了,而恶意软件开发者可以接受无法感染非越狱用户这个情况。
个人觉得目前android和ios的安全都要分成越狱(root)和非越狱(非root)情况分别讨论[/QUOTE]

越狱了就超越了系统的安全机制了,完全就是windows开发了。。。。
2013-7-7 13:04
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
人生能回到过去?重新来过吗?那些不能忘怀的校花?
2013-7-8 10:36
0
雪    币: 298
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
赞同5楼~~另外坐等社会主义大企业代表进来PK。。。
2013-7-8 19:10
0
雪    币: 435
活跃值: (172)
能力值: ( LV13,RANK:280 )
在线值:
发帖
回帖
粉丝
10
安全软件和安全从业人员无法以用户机器越狱了为理由不对这部分用户进行保护
2013-7-12 08:40
0
雪    币: 1098
活跃值: (193)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
11
[QUOTE='火翼[CCG];1198037']安全软件和安全从业人员无法以用户机器越狱了为理由不对这部分用户进行保护[/QUOTE]

是啊。大部分软件的做法是检测到越狱环境,给提示说运行环境不安全,请在非越狱设备上运行。除了网银客户端,可以以用户机器越狱了为理由,不负用户钱财损失的相关责任。
2013-7-12 09:50
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
先感谢lz自己的注解。

我也大概看了一遍,对数据保护里的NSFileProtectionCompleteUnlessOpen class有点不理解。
问什么需要生成一个临时的非对称密钥呢?

这里的NSFileProtectionCompleteUnlessOpen class key已经是非对称密钥了。而且公钥在系统Locked时还可以被访问。直接用这个public key 加密per-file key 并放入metadata中不就可以了么?为什么要做其他的步骤?

不知道lz有什么想法?
2013-7-25 03:02
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
这个不是完整的中文翻译吧?
2014-4-25 10:28
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
有批量 打包企业签名技术 并可配置服务器 有兴趣的详谈 市场类似产品借鉴 快用 xy itools
2014-12-29 18:06
0
雪    币: 8
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
多谢分享多谢学习了嘿嘿
2015-1-16 11:09
0
雪    币: 188
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
楼主写的很不错,新手来学习。
2015-1-19 18:22
0
雪    币: 244
活跃值: (189)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
新人前排学习一下哈.
2015-2-26 17:26
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
感谢分享
2015-3-2 18:06
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册