美文网首页
iOS的签名与证书机制(三):数字签名与证书

iOS的签名与证书机制(三):数字签名与证书

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

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

    在开始学习数字签名之前,我们来看一个例子:

    消息.png
    四娃看了后还没面子,于是质问大娃:"你为什么发群里?"
    大娃:"我不知道呀,不是我发的!"
    四娃空口无凭,怎么才能确定大娃发的这条消息是被中间拦截后修改的呢?还是这条消息就是大娃发的呢?
    四娃看了我的文章,灵机一动,有了,用数字签名来解决!
    在数字签名中也有公钥与私钥的概念,大家还记得我们在第一章讲解公钥密码的时候,也使用到了公钥与私钥;
    公钥密码是为了保证信息的安全性,消息发送者使用消息接收者的公钥加密信息,消息接收者使用自己的私钥解密信息;
    数字签名是为了能够识别信息有没有被篡改,不是为了保证消息的安全,使用消息发送者的私钥进行签名,消息接收者使用消息发送者的公钥验证签名;
    别慌,慢慢向下看.
    公钥密码与数字签名.png

    不论对于公钥密码与数字签名,公钥是任何人都可以持有的,但是私钥只能自己持有;
    我们来看看数字签名的一般流程:

    数字签名一般流程.png
    从图中的流程可以了解:
    • Alice用自己的私钥(签名密钥)对信息进行加密生成签名
    • Alice发给Bob的信息有两部分:消息 + 签名
    • Bob用Alice的公钥验证签名,然后与消息对比,如果一致,那么可以确认两件事情:这条消息就是Alice发的,这条消息没有被篡改过;

    这就是数字签名的基本流程,但是还有些漏洞:

    • 发送的内容因为有两部分:消息 + 签名,签名是对原有消息直接加密,这样的话,发送的内容很大.怎么办呢?这就用到我们上一章学到的单向散列函数,我们可以对消息的散列值进行签名,这样发送的内容就可以大大减少.消息接收者在接收到内容后,只需要比较解密后的散列值与消息的散列值即可;
    • 要保证解密使用的公钥的确是Alice的,则需要使用证书,防止中间人攻击,这部分内容我们下面再说;

    那么改进后的流程如下:


    数字签名的改进流程.png

    四娃学习到这里,底气十足,这次大娃再也不能耍赖了!
    我敲了敲四娃的头:"小子,葫芦报仇,10年不晚!",因为虽然改进流程解决了发送内容尺寸的问题,但是,第二个漏洞,中间人攻击的问题还是没有解决,我们先来看看什么是中间人攻击;
    在发送公钥的过程中,如果被人监听,那么就会出现下面的问题:


    中间人攻击.png

    你看,这个中间人是不是很厉害?你以为跟你聊天的是美如花的小芳,却不知是抠脚的大壮;


    令人心碎.png

    那我怎么才能知道跟我聊天的是不是小芳的呢?这时候我们可以找德高望重的村长作证:"狗蛋啊,跟你聊天的确是小芳!"而CA(Certificate Authority),就是这样的存在;
    CA是为了证明"公钥的确属于此人"的权威机构,怎么证明?通过它们发布的证书.
    这个证书的全称为公钥证书(Public-key Certificate,PKC),既然是为了证明公钥属于某人,那么里面肯定包括了此人的公钥,以及此人的姓名,邮箱,公司地址等信息,然后CA通过The Public-Key Cryptography Standards (PKCS)协议对这些内容进行数字签名(对内容的散列值加密),生成的内容就是证书;

    CA机构生成证书.png

    目前的CA机构有国际性的组织,通过认证服务盈利的企业,甚至个人也能设置认证机构;
    到这里,我们明确了证书的作用就是检验公钥的合法性,这样消息发送者与消息接收者之间不直接发送公钥,而是通过CA机构验证,可以避免中间人的攻击:

    证书的下载与安装.png
    通过CA机构的证书,数字签名就可以安全的使用了,迫不及待的四娃终于找到了背后凶手,原来是隐身的6娃!!

    有了这些知识,最终章我们要开始讲解iOS的签名与证书机制;

    相关文章

      网友评论

          本文标题:iOS的签名与证书机制(三):数字签名与证书

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