iOS通过以下几种机制来保全整个系统的安全性:

一:系统结构

所有iOS设备中,系统与硬件都高度集成,从系统启动、系统更新、应用的安装、应用的运行时等多个方面来保全系统的安全,具体包括:

1:所有iOS设备在处理器内都集成有一段名为Boot
Room的代码,此代码被烧制到处理其内的一块存储上,并且只读,可以认为是完全可信的。系统启动时,Boot Room通过苹果的Apple Root
CA Public证书对Low-Level BootLoader进行验证,如果通过验证,Low-Level
BootLoader将运行iBoot,较Low-Level
Bootloader高层次的Bootloader,如果这一步也通过,那么iBoot将运行iOS的内核, XNU,系统开始运行。

以上这几个步骤任一步骤无法通过,都将导致系统无法启动,这样,处理期内烧制的Boot Room保证了iOS系统只能在Apple自家设备上运行,而这些设备也将无法运行iOS之外的系统。

2:iOS设备的系统升级之后是不允许降级的(官方没有提供接口)。这样做的好处是系统的安全等级只会越来越高,二不会出现由于系统降级,已修复安全风险又暴露出来的问题。

iOS系统在升级过程需要联网进行验证,系统升级之前,设备会将LLB、iBoot、内核、镜像,外加一个随机的不可重复的值发送到苹果的服务器进
行验证,服务器端对所有这些进行验证,如果通过验证,将会返回一个通过的结果,结果加入了与设备唯一相关的ECID。这样做的好处是此值是无法重用的,只
能对应与一台设备,且只能使用一次。同过这种机制,保证了系统升级过程都是符合苹果要求的。提高了较高的安全性。

3:所有运行在iOS上的代码都是需要签名的。苹果自带应用已经打上了苹果的签名,而第三方应用,则需要开发者账号进行签名,而开发者账号都是通过
苹果官方实名审核的账号,从开发者源头上控制了程序的安全性,也就是说,系统内所有运行的程序都是可信的,且知道来源的。这个签名就是在Xcode
code signing选项里选择的账户。

4:运行与iOS系统的第三方软件都是运行与sandbox之内,每个第三方程序都有自己的独占的路径,其只能访问独占路境内的内容,其他程序的文
件一般情况下无法访问,如果要访问,只能通过苹果官方API,而不能自行操作文件。连个应用之间无法共享文件,如要互相通信,只能通过URL
Schema或shared key chain。

另外,每个应用都有其运行权限,不同权限可进行的操作是不同的,将应用的权限限制在其需要的范围内,而不赋予额外的权限。

二:数据的加密与保护

1:加解密是耗时耗能源的操作。而iOS内所有用户数据都是强制加密的,加密功能不能关闭。所以,苹果的AES加解密引擎都是硬件级的,位于存储与系统之间的DMA内,所有进出存储的数据都啊要经过硬件的加密与揭秘,这样提供了较高的效率与性能。

加密揭秘使用的KEY主要来自unique ID(UID)以及Group
ID(gid),UID与唯一设备相关,GID与某种特定型号的CPU相关,一台设备的UID及GID全部被烧制到芯片内部,除了AES加密引擎,没有其
他方法直接读取,能看到的只有使用UID及GID加密后的数据。这样,不同设备的加密结果是不同的,同一套密文只能在加密的机器上进行解密。

除了GID及UID,其他加密使用的KEY全部来自系统自带的随机数生成器,具体使用的算法为Yarrow。

2: iOS提供了名为File Data Protection的数据保护方法。所有文件在加密时使用的key都是不同的,这些key被称作的prefile key,存储于metafile内。

prefile的访问需要进行解密的key,这些key包括:

  1. File System Key: 系统安装时生成的一个随即的key
  2. Class Key,另一个key,与UID相关,如果用户设置了锁屏密码,那么此Class Key将的来源将同时包括锁屏密码。
只有有了这两个key,一个文件的prefilekey才能被读取出来,此加密的文件才能被揭秘,也就是说,当锁屏之后,或存储位于不同的设备之上,数据是无法读取的。
File System Key还有一个重要作用,远程删除数据时,其实不用真正的删除磁盘上的数据,只要删除此key,那么所有文件的prefile key 将不能访问,也就是所有文件将无法读取。
3:锁屏密码为了防止暴力破解,增加了三个限制:
  1. 将其与uid绑定,也就是只能在该密码生成的设备上进行尝试,
  2. 两次尝试的间隔被强制设成80ms,机器暴力破解的时间将大大加长
  3. 增加选项,如果连续输错次数超过10次,可以选择删除设备内数据
4:Keychain。应用的小量极敏感数据,例如密码,最好存储与KeyChain内,而不是应用自己管理。

三:网络安全

除了本地数据的保护,苹果还对数据的传输提供了多种多样的保护机制。苹果提供了 可靠的、可信以及加密的连接。因为iOS平台限制了同时监听的端口的数量,并将那些不必要的网络组建,例如telnet,shell以及web server等,所以不需要防火墙的保护。

  1. SSL, TLS,苹果提供了对SSL以及TLS的支持。CFNetwork则简化了这些协议的使用。
  2. VPN,iOS内置的VPN客户端,支持多种VPN服务器及认证方式。
  3. WIFI,提供了包括WPA2 Enterprise在内的多样标准WIFI协议。
  4. 蓝牙,iOS蓝牙功能提供了多样化的安全选择

四:设备权限控制

针对企业用户,iOS系统提供了多样的安全策略,管理原可以根据需求对设备的安全特性进行多样化的设置,包括密码策略,数据保护策略,应用使用策略,远程数据删除等功能,给企业级用户提供了高安全性以及极大的灵活性。
 
来自:http://blog.csdn.net/lifengzhong/article/details/7739477
 
来自

ios专题 - 安全的更多相关文章

  1. ios专题 - 常用设计模式

    设计模式:解决编程问题的设计模板 设计模式是一个抽象工具,用于面向对象的软件开发,以及其他领域.它是一个设计模板,在特定背景中,解决一般性的.重复出 现的问题.因此,设计模式是一种针对特定的.具体的设 ...

  2. ios专题 - 委托模式实现

    在ios中,委托模式非常常见,那委托模式是什么? 委托模式是把一个对象把请求给另一个对象处理. 下面见例子: #import <UIKit/UIKit.h> @protocol LQIPe ...

  3. ios专题 -动画

    知识点 : 1)ios 核心动画的基础是图层.图层的基础是CALayer,它是所有核心图层类的父类. 2)CATransaction是核心动画类负责协调多个动画原子显示更新.事务支持嵌套使用. 3)图 ...

  4. ios专题 - 多线程非GCD(1)

    iOS多线程初体验是本文要介绍的内容,iPhone中的线程应用并不是无节制的,官方给出的资料显示iPhone OS下的主线程的堆栈大小是1M,第二个线程开始都是512KB.并且该值不能通过编译器开关或 ...

  5. ios专题 - 斯坦福大学iOS开发公开课总结

    转自:http://blog.devtang.com/blog/2012/02/05/mvc-in-ios-develop/ 前言 iphone开发相关的教程中最有名的,当数斯坦福大学发布的”ipho ...

  6. ios专题 - socket(1)

    二,BSD socket API 简介 BSD socket API 和 winsock API 接口大体差不多,下面将列出比较常用的 API: API接口 讲解 int socket(int add ...

  7. ios专题 - APP设计流程

    网上看到这篇文章,觉得基本的flow很有帮助,转过来收藏了:作者:关于Sarah Parmenter英国艾塞克斯(英国英格兰东南部的郡)Youknowwho设计工作室的创始人,Sarah Parmen ...

  8. ios专题 - sandbox机制

    [原创]http://www.cnblogs.com/luoguoqiang1985 ios在安装APP时,把APP的偏好设置与数据放在sandbox里.sandbox通过一系列细颗粒度控制APP访问 ...

  9. ios专题 - 单例模式的实现

    [原创]http://www.cnblogs.com/luoguoqiang1985 单例模式是什么? 一个类只有一个实例. ----------------------- 这样做有什么好处? 在我的 ...

随机推荐

  1. 细说webpack之流程篇

    引言 目前,几乎所有业务的开发构建都会用到 webpack .的确,作为模块加载和打包神器,只需配置几个文件,加载各种 loader 就可以享受无痛流程化开发.但对于 webpack 这样一个复杂度较 ...

  2. 《C语言程序设计现代方法》第2章 C语言基本概念

    C语言的基本概念 第一个C程序例子. /* pun.c */ #include <stdio.h> int main(void) { printf("To C, or not t ...

  3. SQL SERVER 自定义函数 整数转成指定长度的16进制 转换成指定长度的16进制 不足补0

    最近做项目扩展的时候,遇到问题就是将整型转换成指定长度的16进制 刚开始就是直接使用 cast(12 as varbinary(4))但是发现这个不能解决我的问题 所以就上网搜了一下,然后改了改,下面 ...

  4. Java项目中基于Hibernate分页总结

    1,First of all,  we should have a wrapper class for page,this class can calculate the startRow by th ...

  5. Poj 3695-Rectangles 矩形切割

    Rectangles Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 3846   Accepted: 1124 Descri ...

  6. C语言练习题_邮票组合

    背景:        我们寄信都要贴邮票,在邮局有一些小面值的邮票,通过这些小面值邮票中的一张或几张的组合,可以满足不同邮件的不同的邮资.        现在,邮局有4种不同面值的邮票.在每个信封上最 ...

  7. 开源软件授权协议详解(GPL/MPL/LGPL/BSD/Apache Licence/Creative Commons/MIT)

    开源在今天的软件业已经很普遍,但开源是否意味着使用者可以对开源后的代码为所欲为呢? 答案是否定的. 开源运动同样有自己的游戏规则和道德准则. 不遵行这些规则不但损害开源运动的健康发展,也会对违规者造成 ...

  8. In Java, what is the default location for newly created files?

    If the current directory of the application. If e.g. you create a File by using new FileOutputStream ...

  9. zookeeper与activemq最新存储replicatedLevelDB整合

    测试环境:三台VM虚拟机centos6.4 64位 mini版,IP分别为192.168.1.191/192/193. 测试目的:测试activemq的failover以及与zookeeper的整合 ...

  10. ThreadLocal 和Synchronized

    并发都用到, 两个都是解决了线程并发问题,区别呢? Synchronized  同步机制, 共有变量被多个线程使用,会出现线程不安全,所以,加锁,锁机制很多种,例如Synchronized, lock ...