美文网首页
苹果APP验证原理(1):双向签名

苹果APP验证原理(1):双向签名

作者: 铸造中 | 来源:发表于2019-07-31 16:56 被阅读0次

    双向签名:

    手机和苹果服务器还有开发人员的MAC电脑,他们一共维护着2对公私钥,利用这两对公私钥分别完成双向签名与验证,从而已到达苹果服务器对苹果手机里的appstore的控制权,辨别此app是否是经过授权的。


    图1.png

    Mac电脑作为开发者的电脑,自己有一组公私钥M,然后苹果服务器自己有一个私钥A,然后手机端保存了一份苹果服务器的公钥A。公钥加密的文件只有对应的私钥才能解开,反之私钥加密的文件只有对应的公钥才能解开。

    第一步:从苹果服务器获取开发者证书过程

    请求证书.png
    1.Mac先发送自己的公钥M向服务器,请求app打包证书。
    这里的公钥M CSR文件从哪来呢?他其实就是我们要生成证书之前从“钥匙串访问>证书助理”获取的那个文件: 公钥M.png

    这个文件很熟悉吧,这就是MAC端的公钥M,当然口说无凭,我们可以打开看一下。

    openssl asn1parse -i -in CertificateSigningRequest.certSigningRequest
    
    结果如下: csr文件.png

    注意这个红圈的位置,他指定了采用sha256 RSA加密方式。 这就是你与苹果服务器之间的加密方式。

    2.苹果下发证书

    苹果拿到公钥M之后,会采用自己的私钥A对你的公钥M和CSR文件里面的hash值进行加密然后发送给你,这个就是你申请到的开发者证书。

    这里有个小tip: 证书.png
    为什么请求证书的MAC电脑可以直接打包编译,而给另一台MAC就必须要给他P12文件才能编译app? 其实就是因为你给别人P12文件里面包含了私钥M,而直接给证书是不包含私钥M的。就是图上的那个小钥匙。

    第二步:Mac电脑拿到证书后生成App

    生成app.png

    生成应用的时候,Mac用自己的私钥M对我们的App进行了一次签名,然后将真正的可执行文件Macho+App的签名+苹果下发的证书共同打包生成了我们的app包,这个就是安装在手机的上的文件。
    当然口说无凭,我们可以对app包打开看一下


    APP包文件.png

    这里三个划红线的地方分别就是我们的APP签名信息、Macho可以行文件、证书。

    第三步:验证App是否有效

    验证.png
    1.获取公钥M

    我们的iphone利用自己的公钥A,解开苹果服务器私钥A签名的证书,获取到里面的公钥M。

    2.利用公钥M验证签名

    利用得到的公钥M继续解开Mac电脑私钥M的App签名,从而验证APP是否有效。
    这就是苹果的APP的双向签名原理。

    第二篇:描述文件与签名信息

    相关文章

      网友评论

          本文标题:苹果APP验证原理(1):双向签名

          本文链接:https://www.haomeiwen.com/subject/tidorctx.html