1. 首页
  2. 资讯

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

数字签名基于非对称算法实现所谓的对称算法就是加密和解密都用一份秘钥而非对称算法使用的是一对公钥和私钥公钥加密的数据只有私钥才能解密 而私钥加密的数据也只有公钥才

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

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

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

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

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

IOS和安卓系统的运行机制,确实对内存的需求有很大的差别。也就导致了本质上内存大小的不同。且手机带来的效果也不一样。

通俗的讲,安卓机为什么这么耗费内存,却没有那么好的运行效果,主要是安卓的运行机制和我们用的电脑windows系统相似。安卓系统下的应用程序,在系统运行起来之后,会有一些程序也随着系统同时启动。

对于大多数用户来讲,不是很熟悉系统的启动项,要么找不到什么东西在运行,要么不知道能不能删除,导致很多的程序长时间随系统启动,又用不上,却影响系统的流畅度。这也是很多用户抱怨,为什么安卓系统用着用着就很卡了。

但是,如果你对电脑的运行机制有所了解,或者善用一些优化工具,其实安卓系统,也可以运用的相对流畅一些的。

和安卓系统本质的区别不同。IOS系统是苹果公司自主开发的。系统上没有特别多余的东西,并且IOS只有苹果公司自己使用,也没有对外开放,对于系统上的应用,都是经过苹果公司严格的审核。

但凡不符合苹果的要求,都无法上架应用商店的,所以说,苹果公司对系统的运行程度上,有很严格的要求。并且,和安卓运行机制不同,IOS系统,虽然也可以随机启动程序,但是凡是被切换到后台的程序,系统都不在对他进行运行,而是进入休眠状态,系统不会把过多资源留给后台程序。

系统资源尽可能的都调给正在使用的程序上。所以对于系统的内存需求。相对就比安卓少了很多。

所以,这也就解释了,为什么安卓系统普遍是IOS系统内存的2倍了。

本文来自投稿,不代表本站立场,如若转载,请注明出处。