美文网首页
ios 签名原理

ios 签名原理

作者: qlh831 | 来源:发表于2019-02-12 15:23 被阅读0次

    ## RSA

    ### 获取公私密钥

    1. 生成公私密钥 pub和priv

        >>> import rsa

        >>> (pubkey, privkey) = rsa.newkeys(512)

    2. 读入公私密钥文件

        >>> import rsa

        >>> with open('private.pem', mode='rb') as privatefile:

        ...    keydata = privatefile.read()

        >>> privkey = rsa.PrivateKey.load_pkcs1(keydata)

    ### 加密和解密

        # 公钥加密,私钥解密

        >>> import rsa

        >>> (bob_pub, bob_priv) = rsa.newkeys(512)

        >>> message = 'hello Bob!'.encode('utf8')

        >>> crypto = rsa.encrypt(message, bob_pub)

        >>> message = rsa.decrypt(crypto, bob_priv)

        >>> print(message.decode('utf8'))

        hello Bob!

    ### 签名和验证

        # 私钥签名,公钥验证

        >>> (pubkey, privkey) = rsa.newkeys(512)

        >>> message = 'Go left at the blue tree'

        >>> signature = rsa.sign(message, privkey, 'SHA-1')

        >>> rsa.verify(message, signature, pubkey)

        True

    ## ios 签名

    1. mac电脑本地生成公私密钥 mac_priv_l, mac_pub_l

    2. 苹果公司有一对公私密钥 apple_priv, apple_pub。私钥保存在苹果服务器,公钥保存在ios手机上

    3. 申请证书:把公钥 mac_pub_l 传到苹果后台,用苹果后台里的私钥 apple_priv 去签名公钥 mac_pub_l。得到一份数据包含了公钥 mac_pub_l 以及其签名,把这份数据称为证书。

    4. ipa签名:在开发时,编译完一个 APP 后,用本地的私钥 mac_priv_l 对这个 APP 进行签名,同时把第三步得到的证书一起打包进 APP 里,安装到手机上。

    5. 安装ipa:在安装时,iOS 系统取得证书,通过系统内置的公钥 apple_pub,去验证证书的数字签名是否正确。

    6. 安装ipa:验证证书后确保了公钥 mac_pub_l 是苹果认证过的,再用公钥 mac_pub_l 去验证 APP 的签名,这里就间接验证了这个 APP 安装行为是否经过苹果官方允许。

    这里只验证安装行为,不验证APP 是否被改动,因为开发阶段 APP 内容总是不断变化的,苹果不需要管。

    这一步保证了:

    1. mac_pub_l 是经过苹果认证的,合法开发者所拥有的公钥

    2. 安装到手机上的ipa包,经过了开发者的公私钥验证,是完整的安装包

    3. 安装包不需要传到苹果服务器,可以直接安装到手机上

    相关文章

      网友评论

          本文标题:ios 签名原理

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