ios加密机制是什么?为什么无法破解?

仰望星空MAL


2016年美国圣博娜迪诺发生恐怖袭击案,嫌犯被当场击毙,但他在现场遗留下的iPhone 5c则成了FBI始终无法攻破的难题。想要获得更多线索与细节就必须解锁这台iPhone,但FBI自身不具备如此强大的技术,于是要求苹果公司提供相关破解信息。

FBI示警

时任苹果公司CEO的库克毫不犹豫地发表了一封公开信,表示:苹果是一家以用户为本的公司,不具备任何执法权,不会帮助任何人或机构破解苹果产品,不会以任何方式泄露用户隐私。最后FBI将苹果告上法庭,专业律师分析,一旦苹果败诉,不但要面临拖延一天25万美元的罚款,库克也有可能因此入狱。

库克拒绝向FBI提供技术解决方案

然而案件正在审理阶段时,FBI突然撤诉了。难道是苹果公司妥协了吗?并没有,而是美国政府找到了另一个救星——Cellebrite。Cellebrite是一家以色列的技术安全公司,提供的服务包括解锁iPhone设备、破解iOS系统等。最终这台命途多舛的iPhone 5c还是被FBI的外援设法破解了。

iPhone 5c

日前,Cellebrite又搞事情,竟然宣布他们的最新举证装置已经可以完全破解任何搭载iOS 12.3的苹果设备(此处破解是指直接绕过苹果设备,从内部入手,获取设备上的各项信息与数据)。另一家技术安全巨头Gray Key最近也表示已经完成了对iOS 12.3的解锁工作,准备投入服务阶段。

多家技术安全公司均称已破解苹果iOS

其实不仅是Cellebrite、Gray Key,几乎凡是顶尖的技术安全公司或者是技术人员都以破解苹果一直引以为傲的iOS系统当做一项成就,甚至是业界荣誉。面对如此窘境,苹果公司只能完善技术防御团队,不断修补解锁漏洞。不过这场关于苹果iOS的攻防拉锯战得以持续至今,也足以见到以Cellebrite、Gray Key为首的技术安全公司有多么强大,有消息支出Cellebrite的高管中就包含苹果前安全工程师。

网上流传的破解工具截图

虽然如此,但是大家不必过度紧张。类似Cellebrite、Gray Key这种大公司的服务对象一般是各个国家的政府以及执法部门,所提供的破解装置和破解服务也大多用于打击犯罪。不过细心的同学也发现在ebay等网络交易平台上有时竟然也可以购买到由第三方提供的Cellebrite破解服务。确实,苹果也在此前多次被曝出iPhone用户信息泄露事件,深陷舆论泥沼。

ebay网络交易平台

可以预见到的是,关于iPhone设备的破解与反破解一直是一场旷日持久又异常诡谲的拉锯战。苹果公司会不断优化iOS系统、杜绝设备解锁漏洞;而另一方技术安全公司则会针对前者的调整不断进行测试,直到攻破目标。不管未来苹果走势如何,恐怕这场猫鼠游戏都将会一直持续下去。


魔金石科技


1.苹果不是完全不能破解,这点大家要清楚,记得FBI那次和苹果纷争解密事件,最后FBI和一些安全组织测试5s以下版本是可以破解的。这个估计是iOS软件层面上的漏洞,跟加密机制没鸡毛关系。再根据iOS版本和手机发行对比,5s以下应该是包括iOS8和8以前的系统。9-10是破不鸟得。

2.回到问题根本,为什么苹果手机相对安全,记得是苹果手机,因为iOS闭合的,官方不开放API,也禁止任何APP调用官方私有API,被发现直接就会下架,360就干过这事,所以早期版本被下了,那版本各种逆向各种系统级别读取用户信息,苹果要求每个开发者申请证书,上架必须提交所有原始代码,不准APP热更新,得重新下新版本,这些点苹果从APP这点就能保证很大的安全给用户。

还有就是iOS的BootLoader这个玩意和emcc读取权限是关闭的,所以经常有越狱失败变成白苹果甚至变砖,白苹果还有的救,只能更新或者刷最新系统,更新系统后也得用原来ID激活,不会因为刷机而没有ID保护了。这个方面也保证了设备物理硬件上的安全。

还有一个就是开机密码,这个和ID没毛关系的,开机密码也没用什么证书乱七八糟的,简单点估计就是类似于,我只是猜测,aes1024,aes2048这样的算法,加密了开机密码字符,而且输入次数过多还会锁定,这也是也没法破解苹果系统最重要的一点。aes算发是Linux独有的机制,iOS是基于Linux开发的,相必应该用了甚至高于aes复杂机制的内部算法。

3.最后说下,ID,这年头ID经常被盗,第一iCould被人攻破过,数据库外泄,这个和苹果官方ID系统不安全有关系,苹果这几年也一直在ID被盗上加大安全机制,甚至误锁手机也在所不惜,本人就有经历,被苹果锁了手机,资料准备审核经过了半年,才解锁了。还有途径就是拿数据库和其他数据库对比撞裤,破解你的ID密码,iD途径破解手机跟手机本身安全没关系,是苹果的问题。

1.所有只要ID不被盗取,开启二级两步认证,开启密码保护。

2.系统升级最新。

3.手机掉了紧急锁定。

4.关掉苹果下拉栏,为什么呢?这个还是一个的士司机给我说的,捡到你的手机,下拉栏先关流量,你就定位不了,然后他们也可以卖钱,只要不锁定,还是客户卖钱的

满足四点,你的苹果手机相对安全,但不是百分之百的安全,如果对方有目的的偷你手机,知道你详细资料,就算你解锁,他们去找苹果也能骗官方给解锁。


厦门方根科技有限公司


我知道的不多,苹果手机,软件与硬件同时都被加密啦,估计你的问题是id锁。苹果手机你要知道,需要开机激活通过网络来验证手机,验证通过发送给你的手机解锁密匙,这些都存储在苹果服务器上。一旦锁id软解是没办法的,因为基带与cpu两者是锁定捆绑的套件,一下子板子就废了,锁定的是硬件同时验证通过网络来激活,所以难以破解,


鼎盛达人


数字签名基于非对称算法实现

所谓的对称算法就是加密和解密都用一份秘钥

而非对称算法使用的是一对公钥和私钥

公钥加密的数据只有私钥才能解密 而私钥加密的数据也只有公钥才能解密

2.所谓的数字签名 就是签名者对原始数据的摘要(例如MD5特征值)用私钥进行加密后得到的文件

用户拥有签名者公布的公钥

在用户接收到签名和原始数据之后 用公钥解密签名 可以得到签名者的摘要

再对传过来的原始数据用相同的算法(例如MD5特征值)得到摘要

将两个摘要对比即可知道这份传过来的数据是否被篡改过

3.最简单的签名方式就是讲app当做原始数据 苹果公司将公钥内置于iOS系统

然后对appStore上的所有app用公司内部的私钥进行加密(签名)

但是实际上 iOS设备安装app的方式除了appStore 还有从xcode上安装 in-house企业内部分发等方式

所以这种简单的方式就行不通了

4.从xcode安装的app不需要上传到apple服务器

而且苹果对这里的安装也需要有控制权 包括只有经过苹果允许的app才能安装 非开发app不能安装

为此苹果提供了一种双层签名的机制

5.iOS中所谓的证书其实是对MAC开发机的【公钥】进行签名后得到的文件

我们将MAC开发机生成的密钥对成为私钥L 公钥L (L = Local)

而由苹果掌控的密钥对称为 私钥A 公钥A (A = Apple)

6.首先将公钥L上传到苹果服务器 苹果用私钥A对公钥L签名 得到证书

在编译app的时候 用私钥L对app进行签名

将证书和签名后的app打包安装到iOS设备中

此时 iOS先用私钥A对证书(也就是公钥L的签名)进行解密

我们知道签名可以保证被签名数据的可靠性 所以这里保证公钥L是可靠的

再用这个可靠的公钥L对app签名进行解密 以此保证app是可靠的

通过这一系列流程 我们保证了app可以直接通过xcode安装 也保证了app没有经过篡改

但是还没有解决安装的控制权的问题

7.我们在实际打包应用的时候 有一个Provisioning Profile

这个文件除了包含上面提到的证书外 苹果还加入了一些其他用于控制安装权的东西

比如说appID 设备IDs Entitlements权限控制等

由于这些打包进去的文件是在苹果后台进行的 也就是说是经过苹果允许的

这样也就保证了苹果对于安装的控制权

不过为了区分起见 证书和 appId 设备ID entitlements是分开签名的

他们打包在一起才叫做Provisioning Profile

签名后的Provisioning Profile称为embedded.mobileprovision

在iOS设备中用公钥A解密后 iOS就会用里面的设备IDs等进行验证 保证安装的控制

8.如果我们想别的电脑也能编译我的app代码怎么办

按照上述流程 别的电脑需要下载Provisioning Profile 并且需要拥有私钥L对app进行签名才行

所以需要原来的电脑那边导出私钥L 给别的电脑用

这个私钥L 导出后是.p12文件

9.总结下专有名词之间的对应关系:

证书:内容是公钥或私钥,由其他机构对其签名组成的数据包。

Entitlements:包含了 App 权限开关列表。

CertificateSigningRequest:本地公钥。

p12:本地私钥,可以导入到其他电脑。

Provisioning Profile:包含了 证书 / Entitlements 等数据,并由苹果后台私钥签名的数据包。

两对钥匙对:MAC生成的公私钥L 苹果的公私钥A

各自的作用:

①MAC的私钥L:加密app

②MAC的公钥L:用来解密app

③苹果的私钥A:加密MAC的公钥L(和其他相关文件) 加密后的公钥L称为证书 他和其他同样用私钥A加密后的文件一起构成Provisioning Profile

④苹果的公钥A:解密Provisioning Profile --> 解密得到的公钥L用来继续解密app


走在路上的烦恼


要讲清楚,为什么无法破解,那就要了解加密的基本概念。如何才能对明文进行加密,就得依赖算法和秘钥,古典(经典)加密往往都是算法和秘钥是合一的,比如说字母移位加密,这种算法和秘钥都是要保密的,才能达到安全通信的目的,而且加密和解密的秘钥都是一样的。而这样的加密方式,是无法满足普遍的商业加密需求的。经过研究,现代密码学一致认为至少符合如下两条件的加密方式才是可普遍商用的可信的加密方式:①加密算法必须是公开的,任何人都可以通过研究公开的算法来信任或挑战确认其安全性,确认其算法强度;②秘钥是严格保密的,确保私密。也就是说,彻底改变了古典加密依赖密码和算法都保密才能保证通信安全的情况。符合以上两条,加密和解密秘钥相同的叫对称加密(典型的如des算法,加密解密效率高),加密和解密秘钥不同的叫非对称加密(典型的如rsa算法,一个是私钥,一个是公钥,公钥加密只有私钥能解,私钥加密只有公钥能解,加密解密效率低)。现在一般是综合使用两种加密方式,用对称加密来加密传输的大量信息,用非对称加密来传输对称加密的秘钥。苹果手机采用的也应该是两种的综合,加密大量数据的对称加密秘钥应该是随机生成的,然后使用非对称加密方式保存,只有你的个人秘钥能解密对称加密的秘钥。你说的苹果加密无法破解也不是绝对的,只是在当前的计算机算力下,理论上要花上百年才能完成破解(不知解密秘钥情况下),以后量子计算机出来可能又得设计新的算法。


时间在这


在大多数iOS应用在开发者看来,封闭的iOS系统很安全,iOS应用也很安全,但事实上,iOS应用没有我们想象中的安全。如同安卓应用,iOS应用也面临着被破解的威胁,存在大量盗版情况,所以开发者对此一定要重视起来,应用在上市场之前还是要多做些相关的防护,例如:

1.本地数据加密

对NSUserDefaults,sqlite存储文件数据加密,保护帐号和关键信息。

2. URL编码加密

对程序中出现的URL进行编码加密,防止URL被静态分析

3. 网络传输数据加密

对客户端传输数据提供加密方案,有效防止通过网络接口的拦截获取

4. 方法体,方法名高级混淆

对应用程序的方法名和方法体进行混淆,保证源码被逆向后无法解析代码

5. 程序结构混排加密

对应用程序逻辑结构进行打乱混排,保证源码可读性降到最低


心中那遥远的天空


iOS底层是Unix内核,苹果只是拿来在其上封装了界面层和应用接口而已,Unix是老牌的操作系统,其安全和技术都很成熟。因而漏洞比较少,所以很难破解。苹果封装的iOS其实也有很多漏洞,只是因为系统封闭和沙盒机制,应用开发要审核,导致在其上的破解门槛较高。但众多黑客其实已经掌握了一定的iOS漏洞,只是看是否有价值的收益才会动用。另外涉及到支付NFC和指纹,苹果都是采用硬件芯片级别加密,从另一个角度来说,也是担心iOS被破解后读取核心隐私信息,而硬件加密是软件破解不能解决的。


分享到:


相關文章: