美文网首页
iOS的签名与证书机制(一):加密解密

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

作者: Calabash_Boy | 来源:发表于2019-03-13 14:18 被阅读0次

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

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

    高能高能!.gif
    要回答上面的问题,我们需要按照下面的知识体系来学习:
    学习流程.png
    为了保护小伙伴的眼睛和膀胱,我会分4篇文章慢慢讲述;
    来,坐下品一品小弟的茶.

    加密解密

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

    窃听.png
    对的,你们的悄悄话就这样被无情的窃听,如果涉及到了银行存款,婆媳不和,小三住址啊等等,简直让人头大; 头大.jpeg
    这可咋办?
    防止窃听.png
    哎呦不错喔!我们可以通过加密解密的手段来防止被窃听,加密解密需要秘钥,我们在这里不深入介绍密码学,只引入足够我们学习该知识体系使用的知识;密钥我们在这里暂时理解为一段天知地知你知我知的字符串;
    加密的时候我们需要一把密钥,解密的时候也需要一把密钥(敲黑板:划重点了!!),
    根据密钥使用的方法,可以将密码分为两类
    • 对称密码:加密与解密的时候使用的密钥是相同的;
    • 公钥密码(非对称密码):加密与解密的时候使用的密钥是不同的;

    我们先来看看对称密码:


    对称密码.png

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

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

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

    密钥配送问题.png
    这样的话,你们的小情话还是会被监听,这可如何是好?!
    • 事先约定密钥
    • 密钥分发中心KDC(Key Distribution Center)
    • Diffie-Hellman密钥交换方法(只用于密钥交换,不能进行信息的加密解密)
    • 公钥密码(今日主角)

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

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


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

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

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

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

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

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


    混合密码系统的加密.png

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

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

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


    混合密码系统的解密.png

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

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


    令人愉悦.jpeg

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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/dsvnpqtx.html