加密方法
对称加密 DES,3DES,AES
非对称加密 RSA
单向散列函数 MD4,MD4,SHA-1, SHA-2, SHA-3
混合密码
1 .先拿到接受者的公钥.
-
生成一个会话秘钥
-
使用对称加密算法,会话秘钥作为秘钥 对发送的内容进行加密
-
使用公钥对会话秘钥进行加密
-
之后把加密的内容和公钥加密后的会话秘钥发给接受者.
-
接受者使用私钥对会话秘钥进行解密,再使用会话秘钥对内容进行解密
解决了消息被窃听的问题
数字签名
-
使用自己的私钥对消息进行加密,得到密文(私钥只有自己才有,所以不可篡改)
-
把消息和密文发送给接受者
-
接受者使用公钥对密文进行解密,得到明文,明文和消息进行对比.
改进
-
消息生成散列值
-
使用私钥对散列值进行加密
-
把消息和 加密后的散列值 发给接受者
-
接受者也先进行散列值生成,
-
公钥解密加密后的散列值.
-
比较散列值
作用
- 防止消息被篡改
中间人攻击
- 中间人拦截到 接受者公钥的 传递. 把自己的公钥传给发送者.
- 发送者 公钥加密,发给中间人,中间人解密后,篡改消息,或者查看消息内容,使用接受者的公钥进行加密.
- 接受者使用私钥进行解密
混合密码和数字签名,都会受到中间人攻击
证书:验证公钥的合法性
证书都是由权威机构认证的.
包含 个人信息和公钥,以及认证机构的签名(签名是由机构的私钥签的)
- 消息接受者先把自己的个人信息和公钥传给权威机构, 进行认证
- 权威机构用自己的私钥对接受者的公钥和信息进行签名,生成证书
- 消息发送者,拿到证书和权威机构的公钥.
- 验证签名,(接受者的信息和公钥,单向散列函数后和公钥解密签名比较一致性)
- 验证通过后,直接使用接受者的公钥进行消息的传递
签名机制
生成CertificateSigningRequest.certSigningRequest文件(个人信息和公钥)
获得ios_development.cer\ios_distribution.cer证书文件(苹果的私钥进行签名)
注册device、添加App ID
获得*.mobileprovision文件
真机调试,Xcode已经自动帮开发者做了以上操作
事先准备
- apple用自己的私钥对 CertificateSigningRequest.certSigningRequest 里的个人信息和公钥进行签名.生成cer证书
- apple用自己的私钥对证书和应用的可安装device,app id entitilement(权限)进行签名,生成 mobileprovision 文件
编译之后的APP包
- 使用电脑的私钥对app包进行签名(一个签名在mach-O文件,另一个签名在 _CodeSignature文件夹)
- 把 mobileprovision 文件拷进app包
安装app
- 每台iphone都有apple的公钥
- 使用apple公钥验证 mobileprovision 文件,确保 证书和应用的可安装device,app id entitilement(权限) 是可靠的
- 使用apple公钥验证证书, 验证开发者的公钥是没有问题的
- 使用开发者的公钥验证代码签名,确保整个app文件是没问题的.
p12 文件
.p12是保存私钥和证书的组合格式,是最新的签名实用程序使用的格式。
网友评论