您好,欢迎来到 ios企业签名! 【快速注册】 【登录

您可以 “CTRL+D”一键收藏本站网址 ,下次访问更快速!

ios签名

iOS数字签名、代码签名、双重签名详解

更新时间:2020/11/29 / 阅读次数:986

  对于iOS的一些签名,如:数字签名,代码签名,双重签名等,不同的签名都是代表着什么意思呢?我们在这里具体的说说签名的那些事儿。

  例子:模拟下数据传递过程,客户端A传数据给服务端B:问题:a、如果直接明文传递,裸传,风险最大,例如http,很容易被抓包;b、后面有专门的Hash算法(专门是用来识别信息的),如果加上Hash算法,将明文跟Hash值传过去,对方收到后可以拿出HASH值来进行验证。如果Hash算法泄漏了,同样不安全,也很容易被篡改。c、所以这里我们要对数据进行加密,明文数据有时会比较大,不适合使用RSA非对称加密算法,那么数据的HASH值是比较小的。然后客户端A将签名后的数据跟明文一起传给服务端B。具体的过程如下:

  这就是整个数据签名的过程,总体来说,就是一句话:需要传输的数据,通过HASH算法,得到该数据的HASH值,该HASH值,在通过非对称加密RSA,对该数据的HASH值进行加密。加密完 ,在把该数据的原始数据和该数据的加密的HASH值一起传给对方。

  a、服务端B收到原始的数据和数字签名后,先进行校验.拿到原始数据,通过同样的HASH算法得到数据的HASH值.

  数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用Hash函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,反之说明信息被修改过,因此数字签名能够验证信息的完整性。

  苹果也是通过代码签名来保证每一个安装到iOS上的APP都是经过苹果官方允许的,防止盗版软件、病毒入侵、静默安装等。如果想要实现验证,最简单的方式就是通过苹果官方生成非对称加密的一对公私钥,在iOS系统中内置一个与服务器对应的公钥,私钥由苹果后台来保存,我们传APP到App Store时,苹果后来用私钥对APP数据进行签名,iOS系统下载这个APP后,用公钥验证这个签名,如果签名正确则这个APP肯定是由苹果后台认证的,并且没有被修改或损坏。

  整个过程很简单,这样就保证了苹果安装的每一个APP都是经过苹果官方允许的。对于大部分普通用户而言,这样一个数字签名就解决了安全隐患问题,但是实际上iOS设备安装APP并不是只有App Store这一个渠道,比如对于我们iOSer来说,我们在开发APP时还在真机调试,当然苹果还开放了企业内部分发的渠道,这时就无法通过简单的代码签名来满足这些需求了。

  苹果为了实现这些需求,iOS签名的复杂度也就开始增加了,这样双层代码签名(双重签名)就出现了。

  代码签名是对可执行文件或脚本进行数字签名,用来标识软件来源以及软件开发者的真实身份,确认软件在签名后未被修改或损坏的措施。和数字签名原理一样,只不过签名的数据是代码而已。

  a、请求证书开发过程中,首先Mac电脑(比如Xcode)会自动生成一对公私钥

  图中的证书就是公钥M,专用密钥就是私钥M(也就是我们导出的P12文件)用一个CSR文件(就是在钥匙串访问中,证书助理,从证书颁发机构中获取的)向苹果申请一个证书,这个CSR文件主要包含了一个公钥文件,还有一些信息,比如邮箱、名字、签名信息、Hash值等等,苹果收到请求后,会用私钥A将公钥M进行签名,以供苹果设备进行验证(用公钥A进行验证)。苹果服务器将公钥M和签名信息打包成证书,并把appID、证书、设备IDs、权限文件等放入描述文件一并返回给Mac电脑,以备Mac电脑用这个描述文件中的证书到iOS设备去验证。

  生成IPA文件,发送到iOS设备上iOS设备上的APP其实都是文件夹,最重要的是可执行文件MachO和framework,APP签名也就是对它俩进行签名,通过Mac电脑的私钥M对文件进行签名,把这个签名和从苹果申请的描述文件一并放入到APP中。当安装APP时,iOS设备用公钥A来解析描述文件中的证书进行验证证书的有效性,通过之后将证书中的公钥M拿出来,再去验证APP签名的有效性,这样就可以验证当前APP是否是苹果官方允许的。

  在开发阶段,我们需要频繁的改动程序跑真机,苹果不需要关心这些,所以iOS设备没有对APP的更改进行验证,只是验证证书(公钥M是不是合法的,APP签名的有效性)。这样解决了安装问题,但是如果这样的话,可以在任何一部iOS设备上安装APP,苹果防止开发者滥用,又加了两个限制:

  要在苹果后台注册过的设备才可以安装签名只能针对具体的某一个APP进行签名

  在开发中,编译一个APP后,用本地的私钥M对APP进行签名,同时把从苹果服务器得到的Provisioning Profile文件打包进APP中,文件名为embedded.mobileprovision,把APP安装到iOS设备后,系统进行验证。

  查看APP的包内容,里面会有_CodeSignature文件夹(里面的就是资源文件的签名),还有个可执行文件,可以用MachO查看,里面的Code signature就是应用签名。

  在真机调试时候,都会有一个描述文件,描述文件就是在建的,在Xcode中填入AppID后会代办创建,Xcode运行时会打包进APP中。为了系统安全,苹果除了控制APP滥用问题还控制了推送、iCloud、调试器等附加这些权限,苹果把这些权限开关统一称为Entitlements(授权文件)。并将这个文件放在了一个叫做Provisioning Profile(描述文件)文件中,描述文件里面就包括权限、证书等配置相关文件。

ios企业签名 http://www.yc23c.com

上一篇:强签协议、高薪诱骗…“培训贷”套路深受骗者维权难

下一篇:靠谱平台的苹果企业签名证书不掉签ios超级签名

最新文章

最热文章

收缩