iOS 签名
流程:加密/解密 -- 单向散列函数 -- 数字签名 -- 证书 -- iOS 签名机制
1、加密/解密
1、常用加密/解密算法
加密/解密常用算法包括:对称加密(AES、DES、3DES)和非对称加密(RSA)。
单向散列函数包括:MD4、MD5、SHA-1、SHA-2、SHA-3 等。
注:
对称加密:加密和解密用的是同一个密钥。如:AES、DES、3DES。
非对称加密:加密和解密用的是不同的密钥。如:RSA。
2、对称加密
DES:
1、DES 是一种将 64bit 明文加密成64bit 密文的对称密码算法,密钥的长度是 56bit。
2、规格上来讲,密钥的长度是 64bit,但每隔 7bit 会设置一个用于错误检查的 bit,因此密钥长度实质上是 56bit。
3、由于 DES 只能加密 64bit 的数据,所以遇到比较大的数据,需要对 DES 加密进行迭代。
4、需要说明的是,DES 在目前已经可以在短时间内破解,不建议使用。
3DES:
又叫 3 重 DES,是将 DES 重复 3 次所得到的加密算法。
AES:
1、用来取代 DES 的一种对称加密算法。
2、AES 的密钥长度有 128bit、192bit、256bit 三种。
3、非对称加密
1、非对称加密中,有加密密钥和解密密钥两种,并且者两个密钥并不相同。
2、在非对称加密中,用于公开的密钥称为公钥。
3、在非对称加密中,由接收者自己保管不能公开的密钥称为私钥。
4、公钥和私钥是一一对应的,不能单独存在。
5、由公钥加密的密文,必须由该公钥对应的私钥才能解密。
6、由私钥加密的密文,必须由该私钥对应的公钥才能解密。
7、常用的非对称加密为 RSA。
4、混合加密
对称加密存在的问题:密码在网络传输过程中安全的问题。
非对称加密存在的问题:加密和解密速度慢。
混合加密:即将对称加密和非对称加密相结合的加密方式。
1、由接收者生成非对称加密,并将非对称加密的公钥公布。
2、发送者生成对称加密。
3、用接收者公布的公钥加密发送者的密钥。
4、将加密后的密文发送给接收者,接收者用自己的私钥进行解密,获得发送过来的对称加密密钥。
5、消息用对称加密密钥加密后进行消息传递。
6、综述:通过非对称加密获取对称加密密钥,获取后对称加密密钥后,在后续消息传递中使用对称加密。
注:SSL/TLS 就是使用了混合加密。
2、单向散列函数
根据消息内容计算出散列值。散列值的长度和消息的长度无关,无论消息长度有多少,单向散列函数都会计算出固定长度的散列值。又称为消息摘要函数或者哈希函数。
1、特点
1、无论消息长度有多少,最终计算出来散列值的长度是固定的。
2、计算速度快,能够快速的计算出散列值。
3、消息不同,散列值不同。即使消息相近,得到的散列值也会相差很大。
4、具备单向性。即可以通过消息计算出散列值,但不能通过散列值计算出消息。
2、常用哈希函数
1、MD4、MD5
产生 128bit 的散列值,目前已经不安全。
2、SHA-1
产生 160bit 的散列值,目前已经不安全。
3、SHA-2
SHA-256、SHA-384、SHA-512,散列值长度分别为256bit、384bit、512bit。
4、SHA-3
3、应用
防止数据被篡改。
先将发送文件事先进行哈希加密,得到源散列值。然后将文件和源散列值发送给接收者。接收者接收到文件后进行哈希加密,得到一个新散列值。最后比较源散列值和新散列值,相同则没被篡改过,否则被篡改过。
3、数字签名
1、流程
1、发送端:生成公钥私钥对,并将公钥发送给接收端。
2、发送端:将消息通过哈希函数得到一个散列值,并用发送端的私钥对散列值进行加密,得到签名。
3、发送端:将消息和得到的签名发送给接收端。
4、接收端:将签名用发送端的公钥进行解密,得到解密后的散列值。
5、接收端:将接收到的消息通过哈希函数得到一个散列值。
6、接收端:将以上得到的两个散列值进行对比,相同,则签名验证成功。
2、数字签名的作用
1、确认消息的完整性。
2、识别消息是否被篡改。
3、防止消息发送人否认。
3、数字签名存在的问题
如何保证用于验证签名的公钥属于真正的发送者?
中间人攻击,伪造公钥。故在验证签名之前,首先要通过证书验证公钥的合法性。
4、证书
由权威机构认证的,包含个人信息及公钥,由认证机构添加数字签名。
流程:
1、接收端:生成密钥对。
2、接收端:在认证机构注册自己的公钥。
3、认证机构:用自己的私钥对接收端的公钥施加数字签名并生成证书。
4、发送端:接收到由认证机构认证的、带有接收端公钥的证书。
5、发送端:运用认证机构的公钥对证书进行解密,验证证书是否合法。
6、发送端:用验证通过后的证书中的公钥,对消息进行加密,发送给接收端。
7、接收端:运用自己的私钥对消息进行解密。
5、iOS 签名机制
1、iOS 签名机制的作用?
保证安装到用户手机上的 APP 是经过 APPLE 官方允许的。
2、真机/发布 APP 需要的证书文件?
1、生成 CertificateSigningRequest.certSigningRequest 文件。
2、获得 ios_development.cer/ios_distribution.cer 证书文件。
3、注册 device、添加 App ID。
4、获得 *.mobileprovision 文件。
3、流程
![](https://img.haomeiwen.com/i1742120/ef1f9d4ac92cf622.png)
1、如何生成 mac 设备的公私钥?
钥匙串访问 -- 证书助理 -- 从证书颁发机构请求证书,生成的 CertificateSigningRequest.certSigningRequest 文件就是 Mac 设备的公钥。
2、获取证书
![](https://img.haomeiwen.com/i1742120/2d8210ed7706d3c7.png)
![](https://img.haomeiwen.com/i1742120/39b5c59982c572e1.png)
3、生成 mobileprovision
![](https://img.haomeiwen.com/i1742120/8fba0d5a1fda2c42.png)
![](https://img.haomeiwen.com/i1742120/03c0828e1eaa3a17.png)
4、安全检测
![](https://img.haomeiwen.com/i1742120/31891cee0d76094a.png)
5、AppStore 中 APP 校验流程
![](https://img.haomeiwen.com/i1742120/5f71edf1a120eef5.png)
问 & 答
如何解决对称加密加密密钥在传输过程中被窃取?
1、事先共享密钥
2、密钥分配中心
3、Diffie-Hellman密钥交换
4、非对称加密
非对称加密流程:(消息的发送至用 S 表示,消息的接收者用 R 表示)
1、由 R 生成公钥私钥对,并将公钥公布到网络中。
2、S 拿到 R 的公钥,将要发送的内容用 R 的公钥进行加密。
3、S 将加密后的密文发送给 R。
4、R 收到消息后,用私钥进行解密。