RSA应用之苹果双重签名验证

做过iOS或者Mac软件开发的朋友都知道,在正式开发前,需要先配好证书,才可以进行真机调试,上架到App Store,而且在iOS的真机调试过程中,还必须要先将设备号与证书绑定,才可以将我们的App安装到手机上,否则就会提示当前应用无法安装的提示。同时我们也发现一个账号最多只能添加100台测试设备,有效地防止了绕过App Store这一唯一官方平台,滥发应用。那么苹果是怎么做到的呢?今天就和大家一起探讨一下。

其实这里面用到的也是RSA非对称加密技术,只不过比我们平时所见到的多了一层防护,用到了两套公钥和私钥,我们称之为双重签名验证。

我们以iOS开发为例。在开发过程中,有三个角色,一个是我们开发所用的苹果电脑,一个是App Store,另外就是我们自己的手机。这两套公钥和私钥就分布在这三个角色里面。

第一套,我们称之为公钥M和私钥M,存放在我们的苹果电脑中。

第二套,我们称之为公钥A和私钥A,私钥存放在App Store,公钥存放在我们的iPhone手机中。

如图所示:

好,下面我们来逐一分解一下整个流程:

1、首先,Mac电脑通过钥匙串中的证书助理,从证书颁发机构请求CSR文件,填写常用邮箱并选择将其保存在磁盘,即可。CSR文件包含我们的公钥M。

2、拿到CSR文件后,移步至苹果开发者中心,创见证书,上传我们刚刚创建好的CSR文件,一路Next下去,最终会给我们生成一个cer证书文件,下载到电脑中,双击安装到钥匙串。这个cer文件包含了两个信息,即图中所标明的hash值和公钥M。这个hash值是用私钥A对公钥M的数字签名,这个hash很有意思,也是整个双重验签过程中最重要的一环。

3、在我们开发完成后,将我们的应用打包生成IPA。在通过Xcode导出IPA的过程中,大家有没有注意到要导入证书文件,这个证书文件其实就是步骤二拿到的证书。同时会用电脑的私钥M对IPA进行签名。此时我们的IPA包中就包含了步骤二中的证书和用私钥M进行加签的App签名。

4、拿到IPA包以后,就可以安装到我们的iPhone手机上了。这也是决定我们的IPA文件能否装到iPhone手机上最关键的一步了,此前所有的努力,都是为了这一刻的验证。那我们来看一下这里发生了些什么。

还记得我们在上面提到的,我们的iOS手机中存有公钥A,可以对IPA包中的cer文件进行验签。因为cer文件是通过私钥A进行加签的,私钥A加签,公钥A验签没毛病,第一层验签。这里主要是为了保证所安装的应用是通过App Store允许的,不被允许的应用第一道关口就通不过。所以苹果手机能否安装应用,这个控制权还是牢牢掌控在App Store手中。

现在开始第二次验签,验签通过后,就可以拿到公钥M。由于在生成IPA时候,苹果电脑会用私钥M对IPA进行签名。此时我们拿到了公钥M,就可以对App进行验签了。验签成功后,IPA包就可以顺利的安装到手机上了,否则安装失败。这一步保证了安装到我们苹果手机上的应用都是经过开发者开发的App,包括从App Store或者直接通过电脑安装的应用。杜绝了往手机上安装非开发App的情况。

至此苹果的双重验证机制已经完成。

简单回顾一下,其实整个流程非常简单,就是我们之前讲到的RSA加签、验签的整个流程。公钥是公开的,所以就在网络间进行传递,私钥始终保存在本地。为了保证公钥在传递过程中不被篡改,就用了另一对公私钥A对其进行加签和验签。从而最终实现了双重验证。

知其然更要知其所以然,苹果花了这么大工夫,绕了这么大一圈,究竟是为了什么呢?

1、安装包不需要上传到App Store,也可以直接安装到手机中;

2、安装到手机上的应用,一定是经过苹果允许的应用。

如果大家对此还有疑问的话,欢迎在评论区探讨。

你可能感兴趣的:(RSA应用之苹果双重签名验证)