前言
在移动开发中,iOS系统下的app和andorid系统下的app一个很大的区别是:android系统下,app的安装很方便,可以从多个应用商店下载(小米应用商店、华为应用商店),也可以直接下载apk的包安装。而在iOS系统下,对app的安装限制比较严格,非开发的app,只能从App Store下载。即使是开发人员,拥有开发者帐号,所开发的app 也不能随意的安装,有最多100台设备的限制,还需要知道设备的UDID……苹果这样做的目的是保证每个app都是经过检验的,都是经过苹果官方审核允许的。那么苹果是如何做到这一点的呢?这就和本文要介绍的内容相关,iOS app的签名机制。
在介绍iOS app签名机制之前,先介绍一些关于加密的知识。
常用的加密方式
目前主流的加密方式有对称密钥加密和非对称密钥加密。
对称密钥加密
维基百科中对对称密钥加密的定义如下:
对称密钥加密(英语:Symmetric-key algorithm)又称为对称加密、私钥加密、共享密钥加密,是密码学中的一类加密算法。这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥
简单来说,就是加密方和解密方使用的是同一个密钥。
常见的对称密钥加密有AES、DES 等。
非对称密钥加密
非对称密钥加密,又称为公开密钥加密。
非对称密钥加密需要两个密钥,一个是公开密钥,一个是私有密钥。私有密钥用来加密,公开密钥用来解密。私有密钥由加密方保管,公有密钥则公布出来。
实际上,私有密钥和共有密钥在数学上是有一定的关系的。但是仅仅从共有密钥是推断不出私有密钥的,这也是共有密钥可以公布出来的原因。
通过共有密钥推断私有密钥和质数分解有关。目前质数分解没有特别快的算法,通常是通过暴力枚举的方法来分解。当质数非常大时(如2的1024次方级别),暴力分解质数是不现实的,因此非对称加密是安全的。
非对称加密的安全还依赖于加密方对私钥的管理,一旦私钥暴露,也就毫无加密可言。
常见的非对称加密有RSA、DSA。
MD5加密
MD5全称MD5消息摘要算法(MD5 Message-Digest Algorithm)。严格来说,MD5并不是一种加密方式,MD5只是一个哈希算法,对同一个明文生成的密文(哈希值)是统一的。MD5相较于普通加密来说还有一个优点:MD5生成的密文长度很短(16位或者32位字符)。
数字签名
了解了常用加密方式之后,介绍一下数字签名,