iOS系统安全学习小结(一)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

iOS系统安全学习小结

  • 前言
  • 一、iOS系统安全机制
  • 二、iOS系统安全架构
  • 三、iOS数据保护
  • 总结


前言

iOS系统是由苹果公司幵发的智能移动终端操作系统。苹果公司首次于2007年1月9日在Macworld大会上提出这个系统,最早是为给iPhone使用而设计的,后来陆续在iPad、iPod touch和Apple TV等苹果产品上得到应用。

  • 随着基于iOS系统各种设备的普及,人们对其功能和性能也有了更大的要求,它们越来越多地被用来处理各种重要的信息。然而,诸如恶意程序植入、手机病毒入侵、个人隐私泄漏等安全问题也随之而来。

提示:以下是本篇文章正文内容,下面案例可供参考

一、iOS系统安全机制

为了实现其安全的目的,苹果为iOS系统订制了一套安全机制主要由下面几部分组成:

- (1)可信引导。
iOS设备以“可信引导”的方式幵机进入系统来保护整个启动过程。系统启动开始先执行一段引导程序,载入固件(需要通过RSA签名),然后由固件启动系统。固件的RSA签名只有通过验证才能继续进行后续工作,系统又通过固件验证。通过这种方式,系统建立起了一条信任链。
安全只读内存–>一级启动引导–二级启动引导–>内核
- (2)代码签名
代码签名机制是在iOS系统运行过程中**来保证程序的完整性。**苹果官方不允许用户安装来自第三方未被审核的应用程序。开发者开发的程序要想提交到电子市场,就需要使用苹果颁发的证书签名并接受屯核,通过屯核后,苹果公司使用它的私钥对程序签名,用户从电子市场上下载和安装程序时,iOS会对应用程序进行证书的校验。通过代码签名机制,保证了在iOS设备上运行的代码都是通过验证的不含恶意性的安全代码,这使得iOS系统上的恶意软件远远少于其他开放的系统。

- (3)沙盒和权限管理。
沙盒技术能隔离应用程序,它让用户程序只能执行在普通的用户权限上,并限制用户对文件系统的访问。沙盒针对每个进程都可以使用正则表达式制定特殊的配置文件,目的是对进程的行为进行访问控制。沙盒机制控制了程序的行为,它使应用程序隔离,保护了底层和应用程序数据都不被攻击者恶意篡改。

  • (4)密明链和数据保护。
    用户的各种数据通过密钥加密存储,这些密钥和证书又通过SQLite存储。从iOS4开始,系统引入数据加密技术来保护文件系统中的数据分区,它们的加密过程将由基于存储在一个AES加密加速硬件的密钥上进行。由于基于硬件,除非在加解密时由该加速器获取,否则该密钥不能被CPU直接访问。通过该机制,从硬盘上拷贝出来的原始数据就会解密成乱码,从而保护了用户的隐私。

尽管有着以上的安全体系监测之下,还是有一些问题存在,比如可利用系统引导过程的漏洞对lOS设备进行越狱,或者手机隐私数据泄露问题,又或者安全漏洞和恶意程序等问题的存在。

二、iOS系统安全架构

iOS系统安全架构的六大相关技术:权限分离、数据加密、代码签名、数据执行保护、地址空间布局随机化和沙盒技术。

  • (1)权限分离 :iOS分离各进程是通过使用用户、组和UNIX文件权限机制进行。也就是严格的控制root权限,物理上杜绝了一些威胁。
  • (2)数据加密:在智能移动终端中,加解密是耗费时间和资源的操作。而iOS内所有用户数据的加密功能都无法关闭,都是强制性的。iOS系统的AES加解密引擎位于存储和系统之间的DMA中,都是硬件级的,任何经过存储区的数据都需要通过硬件的加解密。这样不仅提高了的加解密的效率,也提高了安全性。
  • (3)代码签名:代码签名,是软件开发商对其幵发的软件的代码进行数字签名[“〕。用户可以通过代码签名技术鉴别软件的发布者和软件在传输过程中的完整性。利用代码签名的抗伪造性,Web管理者和软件幵发者能为其产品和商标建立信誉。iOS系统中的代码签名机制在iOS安全保护方面起到了至关重要的作用,主要体现为以下两点:
    第一,它从根本上栏截了 iOS中的恶意软件。
    第二,代码签名的另一个作用是它让漏洞攻击变得困难了。
  • (4)数据执行保护:处理器能区分可执行代码以及数据在内存中的位置。DEP只允许代码的执行,而不允许数据的执行。通常情况下,当漏洞攻击尝试执行有效载荷时,它会将有效载荷注入进程并执行。DEP会杜绝这种攻击的实现,因为DEP将有效载荷识别为不允许执行的数据部分,这就无法运行恶意攻击代码,起到了数据执行保护的作用。
  • (5)地址空间布局随机化:iOS中的一种安全保护技术["],主要是针对利用缓冲区溢出的攻击。它通过对堆、栈等线性区随机化布局来增加攻击者预测目的地址的难度,防止攻击者定位攻击代码的地址,阻止攻击者实施溢出攻击。
  • (6)沙盒技术:iOS提供了一系列缓解机制来防范多层漏洞攻击。其中有加大用户获取代码执行权难度的ASLR和DEP技术,但是还需要有限制恶意代码,减少它们对设备造成破坏的机制。沙盒机制就提供了这么一种方法来限制进程行为。iOS中的沙盒技术是它整个防御机制的最后一环节。沙盒提供更细粒度的控制。
    例如,虽然Web浏览器和SMS应用都是以用户mobile权限运行的,但它们的差别较大:SMS—般不需要访问浏览器中的cookie,而浏览器不用访问短信。所以来自电子市场的各种应用不应该同时具有这两者的访问权。沙盒技术解决了如何通过苹果公司指定应用程序具体需要哪些权限这一问题

三、iOS数据保护

  • Data Protection API是一套用于保护iOS静态数据的接口,苹果公司于iOS4引入这套接口,并沿用至今。
  • 设计DataProtectionAPI的目的是让应用开发者利用一种尽量简单的方式来保护文件keychain项中用户存储的敏感数据,从而防止用户设备因丢失造成的隐私泄露。开发人员只需指明文件或keychain项中哪些地方可能存在敏感数据,并指明它们的访问权限或访问时间。例如,可以设置某些敏感项目只有在设备被正确解锁后才允许访问。因为用户在使用各种软件之前都会将设备解锁,所以这是种很普遍的情况。另外,我们也可以指定某些文件不受制,总可以访问,那么就算在设备未解锁时,这些文件也是不受保护的。在源代码中可以看到,程序员会用一些已经定义的常量来标记文件或keychain项属于哪个保护等级。不同保护等级能区分它们对各种文件和keychain项的保护开关以及受相应保护等级的条件。
    **
  • iOS 的 keychain
    服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储。用于储存一些私密信息,比如密码、证书等等,Keychain里保存的信息不会因App被删除而丢失,在用户重新安装App后依然有效。同样也适用于应用之间数据共享。我们可以把KeyChain理解为一个Dictionary,所有数据都以key-value的形式存储,可以对这个Dictionary进行add、update、get、delete这四个操作。

**

  • 应用程序可以通过Data Protection
    API传递新定义的保护等级标志给现有的API。程序员还能通过指明文件系统中的文件和keychain中的项解密的场合,通过保护等级指定底层系统自动解密文件或keychain项的时。
    在 Objective-C 语言中,使用 NSFileManager 类为 NSFileProtectionKey 属性设置一个值,就可以为文件启用数据保护。缺省情况下,所有文件都是NSFileProtecUonNone保护等级的,此时表示读写文件不受限制。
    **NSFileProtectionComplete:**文件受保护,只有在设备未被锁定时才可访
    NSFileProtectionCompleteUnlessOpen: 文件受保护,只有在设备解锁时可打幵(但在设备被锁定时,巳经打开的文件还是可以继续写入)
    NSFileProtectionCompleteUntil
    FirstUserAuthentication:
    在设备正常启动且用户第一次输入密码之前,文件受保护
    **NSFileProtectionNone:**文件随时可以访问,未受任何保护

总结

  • 苹果公司的安全防护团队针对该漏洞也在新的系统版本中进行了修复。iOS每一次升级和维护基本都会修正先前版本的漏洞和存在的安全隐患,安全领域的攻防技术是彼此促进、互相协调的。攻击技术的研究是为了更好地加强防护,防护系统的升级也是为了更好抵御攻击。通过学习分析iOS平台上的攻防机制,可以将这种思路与同样是主流智能操作系统的安卓相比较,可以得到更多更好的思路,推动移动智能终端安全领域的发展。

你可能感兴趣的:(系统安全,ios,学习)