iOS 应用的签名原理是什么?

作者:Edison Z

链接:https://www.zhihu.com/question/22153061/answer/26238013

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在公钥密码体制里面,密钥被分为了私钥和公钥两个部分,最出名的是RSA所形成的PKCS标准,由于密钥不对称,在原本可以支持加密的基础上,又支持了一种认证的方式,就是签名。

其实签名就是加密的逆过程,加密是用公钥加密,私钥解密,这样就只有私钥拥有者才可以查看明文,其他人都可以给私钥拥有者发信息。一般来说,密钥对是由私钥拥有者产生的,自己保留私钥,公钥公开出来。

如果反过来,用私钥进行加密,那么公钥也可以解密,这个就叫签名。因为私钥只有私钥拥有者一个人知道(不泄露的前提下),但是公钥是可以公开出来的,大家可以验证是不是由正确私钥加密的(这里可以简单的考虑为固定了一个明文签名,这样只有私钥拥有者的签名大家才可以正确解密得到这个明文,其他人是无法伪造的)。至于怎么签名,是对整个程序签名还是片段签名,这个就是基于实际的 考虑。

在实际中应用,由于还要考虑到重放攻击等,一般来说是有一个完整的证书体制,比较出名的就是rsa基础上建立的PKCS。证书本身的构成是比较复杂的,而且需要一个大家公认的第三方来维护证书,当然,在苹果的体制下,自然这个第三方就是苹果公司,他为每一个开发者维护了每个开放者的证书(当然包括身份信息,密钥对等等很多信息),也为自己维护了一个机构证书。

如果按我判断,上传的时候利用开发者的证书对程序签名上传,apple验证签名的有效性,如果有效,apple用机构证书再次对程序签名。

用户下载的时候,会验证是否是apple签名的。至于如何签名,这个很难说,很可能是对每一个程序页都签名了,这样可以保证程序完全无法被修改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值