iOS的签名与证书机制(一):加密解密

完整文章列表:
iOS的签名与证书机制(一):加密解密
iOS的签名与证书机制(二):单向散列函数
iOS的签名与证书机制(三):数字签名与证书
iOS的签名与证书机制(四):iOS的签名

我们在真机调试和打包的时候配置正确的证书才能运行App,那么可能有小伙伴要问了:
1.什么是证书?签名证书有什么区别?
2.为什么安装一个App需要安装证书呢?
3.iOS在配置证书的时候.cer文件以及.mobileprovision文件到底是个啥?
4.为什么...

iOS的签名与证书机制(一):加密解密_第1张图片
高能高能!.gif

要回答上面的问题,我们需要按照下面的知识体系来学习:
iOS的签名与证书机制(一):加密解密_第2张图片
学习流程.png

为了保护小伙伴的眼睛和膀胱,我会分4篇文章慢慢讲述;
来,坐下品一品小弟的茶.

加密解密

先看一个网上广为流传的例子:

iOS的签名与证书机制(一):加密解密_第3张图片
窃听.png

对的,你们的悄悄话就这样被无情的窃听,如果涉及到了银行存款,婆媳不和,小三住址啊等等,简直让人头大;
iOS的签名与证书机制(一):加密解密_第4张图片
头大.jpeg

这可咋办?
iOS的签名与证书机制(一):加密解密_第5张图片
防止窃听.png

哎呦不错喔!我们可以通过加密解密的手段来防止被窃听,加密解密需要秘钥,我们在这里不深入介绍密码学,只引入足够我们学习该知识体系使用的知识;密钥我们在这里暂时理解为一段天知地知你知我知的字符串;
加密的时候我们需要一把密钥,解密的时候也需要一把密钥(敲黑板:划重点了!!),
根据密钥使用的方法,可以将密码分为两类

  • 对称密码:加密与解密的时候使用的密钥是相同的;
  • 公钥密码(非对称密码):加密与解密的时候使用的密钥是不同的;

我们先来看看对称密码:


iOS的签名与证书机制(一):加密解密_第6张图片
对称密码.png

我们怎么通过密钥来给明文加密呢?

1. 对称密码算法
  • DES(Data Encryption Standard)
    • DES是一种将64bit明文加密成64bit密文的对称密码算法
    • 密钥长度为64bit,但每隔7位都有一个校验位,因此实际长度为56bit
    • 加密的时候会把58->1,50->2...也就是把数据的位置进行移动
    • 由于只能对64bit明文加密,大数据则需要反复加密
    • 目前已经不安全,不推荐使用
  • 3DES(将DES重复三次的算法)
    翠花,上个图!(理解其概念,想深入研究的小伙伴请自行找资料)
    iOS的签名与证书机制(一):加密解密_第7张图片
    3DES.png
    • 并不是一种全新的密码算法,只是进行了多次DES算法
    • 为什么原来不直接用3DES?因为计算机性能当时不支持...现在翅膀硬了,多加几次木得问题
  • AES(Advanced Encryption Standard)
    Advanced!说明这个算法更加高级,更先进,人如其名,这个算法的确是取代DES的新的标准算法;
    • 加密的明文必须为128bit
    • 密钥长度可以是128,192,256bit中的一种,供君选择
    • 主流的对称加密算法

这不就已经解决问题了么?非也!
如果使用的是对称密码,一定会遇到密钥配送的问题,我的密钥该怎么发送给小花,小芳们,才能让她们解密我的信息呢?
邮箱?微信?还是飞过去,一个个用悄悄话说?
都避免不了在这个过程中密钥被拦截:

iOS的签名与证书机制(一):加密解密_第8张图片
密钥配送问题.png

这样的话,你们的小情话还是会被监听,这可如何是好?!

  • 事先约定密钥
  • 密钥分发中心KDC(Key Distribution Center)
  • Diffie-Hellman密钥交换方法(只用于密钥交换,不能进行信息的加密解密)
  • 公钥密码(今日主角)

2. 公钥密码(非对称加密)

对比上面的对称密码,公钥密码也可以称作非对称加密,那么有聪明的小伙伴已经猜到了,加密跟解密使用的密钥不一样,所以称之为非对称:


iOS的签名与证书机制(一):加密解密_第9张图片
公钥密码.png
  • 加密密钥是公开的,称之为公钥(Publik Key)
  • 解密密钥是消息接受者们自己保管的,只有自己知道,称之为私钥(Private Key)
  • 公钥跟私钥不能单独生成,两者一一对应,一对公钥和私钥
  • 公钥加密的密文,只能用对应的私钥来解密
  • 私钥加密的密文,也只能用对应的公钥来解密
  • 公钥一般放在客户端(剧透下,每个iPhone手机中都有一个公钥)
  • 私钥一般放在服务器端

正是因为公钥密码的这些特性,公钥随意公开,不怕被窃取,只要保证消息接受者的私钥是安全的,那么就可以安全通信,也解决了密钥配送的问题.

iOS的签名与证书机制(一):加密解密_第10张图片
公钥密码流程.png

消息的两端,一个是消息发送者,一个是消息接受者,请小伙伴先记住这两个角色,方便后面的签名理解;
这里的密钥对是由消息接受者生成的,为了保证我收到的消息是安全的;
对称密码有DES,AES等算法,公钥密码对应的算法是RSA,也是最广泛的公钥密码算法;
RSA,截取的是三位开发者的姓氏首字母: Ron Rivest、Adi Shamir、Leonard Adleman;
RSA算法强度复杂,从1978年公布于世,经过无数的攻击验证,被证明是最优秀的公钥方案之一,凡事两面看,算法复杂保证了数据安全,但是加密与解密消耗的时间就会相对增加,因此在效率上不如对称密码的算法;

讲完了两种密码系统,我们来总结一下各自的优缺点:
对称密码:不能解决密钥配送的问题,加密解密的速度快;
公钥密码:解决密钥配送问题,加密解密的速度慢;
哎呀呀,两个都很优秀呢,要选哪个呢?
小孩子才做选择题,大人是我都要!,接下来我们介绍鱼和熊掌兼得之法:混合密码系统(Hybrid Cryptosystem).

3. 混合密码系统(Hybrid Cryptosystem)

名之为混合,也正是因为这个系统同时采取了对称密码与公钥密码,利用其各自的优势做其擅长的工作;


iOS的签名与证书机制(一):加密解密_第11张图片
混合密码系统的加密.png

当然,前提是消息的发送者要有消息接受者的公钥;
加密的步骤如图所示:

  1. 消息发送者生成会话密钥,作为对称密码的密钥;
  2. 用生成的会话密钥对明文信息进行加密;
  3. 用消息接受者的公钥对会话密钥加密;
  4. 把两部分信息组合到一起发送给消息接受者;

对于消息接受者,收到消息后进行解密的步骤与之相反;


iOS的签名与证书机制(一):加密解密_第12张图片
混合密码系统的解密.png

这就是整个混合密码系统的流程,网络上的SSL/TLS都采用了混合密码系统;

第一章的内容先到这里,可以保证你的小情话安全传输;


iOS的签名与证书机制(一):加密解密_第13张图片
令人愉悦.jpeg

修整一下,下一章我们开始单行散列函数的学习;

你可能感兴趣的:(iOS的签名与证书机制(一):加密解密)