我们在真机调试和打包的时候配置正确的证书才能运行App,那么可能有小伙伴要问了:
1.什么是证书?签名与证书有什么区别?
2.为什么安装一个App需要安装证书呢?
3.iOS在配置证书的时候.cer文件以及.mobileprovision文件到底是个啥?
4.为什么...
要回答上面的问题,我们需要按照下面的知识体系来学习:
学习流程
为了保护小伙伴的眼睛和膀胱,我会分4篇文章慢慢讲述;
来,坐下品一品小弟的茶.
加密解密
先看一个网上广为流传的例子:
窃听
对的,你们的悄悄话就这样被无情的窃听,如果涉及到了银行存款,婆媳不和,小三住址啊等等,简直让人头大;
这可咋办?
防止窃听
哎呦不错喔!我们可以通过加密解密的手段来防止被窃听,加密解密需要秘钥,我们在这里不深入介绍密码学,只引入足够我们学习该知识体系使用的知识;密钥我们在这里暂时理解为一段天知地知你知我知的字符串;
加密的时候我们需要一把密钥,解密的时候也需要一把密钥(敲黑板:划重点了!!),
根据密钥使用的方法,可以将密码分为两类
我们先来看看对称密码:
对称密码
我们怎么通过密钥来给明文加密呢?
1. 对称密码算法
这不就已经解决问题了么?非也!
如果使用的是对称密码,一定会遇到密钥配送的问题,我的密钥该怎么发送给小花,小芳们,才能让她们解密我的信息呢?
邮箱?微信?还是飞过去,一个个用悄悄话说?
都避免不了在这个过程中密钥被拦截:
密钥配送问题
这样的话,你们的小情话还是会被监听,这可如何是好
2. 公钥密码(非对称加密)
对比上面的对称密码,公钥密码也可以称作非对称加密,那么有聪明的小伙伴已经猜到了,加密跟解密使用的密钥不一样,所以称之为非对称:
正是因为公钥密码的这些特性,公钥随意公开,不怕被窃取,只要保证消息接受者的私钥是安全的,那么就可以安全通信,也解决了密钥配送的问题.
公钥密码流程
消息的两端,一个是消息发送者,一个是消息接受者,请小伙伴先记住这两个角色,方便后面的签名理解;
这里的密钥对是由消息接受者生成的,为了保证我收到的消息是安全的;
对称密码有DES,AES等算法,公钥密码对应的算法是RSA,也是最广泛的公钥密码算法;
RSA,截取的是三位开发者的姓氏首字母:Ron Rivest、Adi Shamir、Leonard Adleman;
RSA算法强度复杂,从1978年公布于世,经过无数的攻击验证,被证明是最优秀的公钥方案之一,凡事两面看,算法复杂保证了数据安全,但是加密与解密消耗的时间就会相对增加,因此在效率上不如对称密码的算法;
讲完了两种密码系统,我们来总结一下各自的优缺点:
对称密码:不能解决密钥配送的问题,加密解密的速度快;
公钥密码:解决密钥配送问题,加密解密的速度慢;
哎呀呀,两个都很优秀呢,要选哪个呢?
小孩子才做选择题,大人是我都要!接下来我们介绍鱼和熊掌兼得之法:混合密码系统(Hybrid Cryptosystem).
3. 混合密码系统(Hybrid Cryptosystem)
名之为混合,也正是因为这个系统同时采取了对称密码与公钥密码,利用其各自的优势做其擅长的工作;
混合密码系统的加密.png
当然,前提是消息的发送者要有消息接受者的公钥;
加密的步骤如图所示:
对于消息接受者,收到消息后进行解密的步骤与之相反;
这就是整个混合密码系统的流程,网络上的SSL/TLS都采用了混合密码系统