做你喜欢做的事情,任何时候都不会太迟

0%

加密,签名,证书详解

对加密、签名、证书的一些总结

1、首先来了解一下加密解密

  • 根据密钥的使用方法,可以将密码分为 2 种

    • 对称密码

      加密解密1

    • 公钥密码(非对称密码)

      加密解密2

对称密码(Symmetric Cryptography)
  • 常见的对称密码算法有

    • DES
      • DES 是一种将 64bit 明文加密成 64bit 密文的对称密码算法,密钥长度是 56bit
      • 规格上来说,密钥长度是 64bit,但每隔 7bit 会设置一个用于错误检查的 bit,因此密钥长度实质上是 56bit
      • 由于 DES 每次只能加密 64bit 的数据,遇到比较大的数据,需要对 DES 加密进行迭代(反复)
      • 目前已经可以在短时间内被破解,所以不建议使用
    • 3DES
      • 3DES,将 DES 重复 3 次所得到的一种密码算法,也叫做 3 重 DE
      • 目前还被一些银行等机构使用,但处理速度不高,安全性逐渐暴露出问题
    • AES
      • 取代 DES 成为新标准的一种对称密码算法
      • AES的密钥长度有 128、192、256bit 三种
      • 在 2000 年时选择 Rijindael 算法作为 AES 的实现
      • 目前 AES,已经逐步取代 DES、3DES,成为首选的对称密码算法
      • 一般来说,我们也不应该去使用任何自制的密码算法,而是应该使用 AES,它经过了全世界密码学家所进行的高品质验证工作
  • 密钥配送问题

    • 在使用对称密码时,一定会遇到密钥配送问题

    • 假设,Alice 将使用对称密码加密过的消息发给了 Bob

    • 只有将密钥发送给 Bob,Bob 才能完成解密

    • 在发送密钥过程中,可能会被 Eve 窃取密钥,最后 Eve 也能完成解密

      加密解密3

  • 如何解决密钥配送问题

    • 事先共享密钥
    • 密钥分配中心
    • Diffie-Hellman 密钥交换
    • 公钥密码
公钥密码(Public-key Cryptography)
  • 在公钥密码中

    • 密钥分为加密密钥、解密密钥 2 种,它们并不是同一个密钥
    • 加密密钥,一般是公开的,因此该密钥称为公钥(public key)
    • 解密密钥,由消息接收者自己保管的,不能公开,因此也称为私钥(private key)
    • 公钥和私钥是一一对应的,是不能单独生成的,一对公钥和密钥统称为密钥对(key pair)
    • 由公钥加密的密文,必须使用与该公钥对应的私钥才能解密
    • 由私钥加密的密文,必须使用与该私钥对应的公钥才能解密
  • 解决密钥配送问题

    • 由消息的接收者,生成一对公钥、私钥

    • 将公钥发给消息的发送者

    • 消息的发送者使用公钥加密消息

      加密解密4

  • RSA

    • 目前使用最广泛的公钥密码算法是 RSA
混合密码系统(Hybrid Cryptosystem)
  • 对称密码的缺点

    • 不能很好地解决密钥配送问题
  • 公钥密码的缺点

    • 加密解密速度比较慢
  • 混合密码系统,是将对称密码和公钥密码的优势相结合的方法

    • 解决了公钥密码速度慢的问题

    • 并通过公钥密码解决了对称密码的密钥配送问题

  • 网络上的密码通信所用的SSL/TLS都运用了混合密码系统

混合密码-加密
  • 会话密钥(session key)

    • 为本次通信随机生成的临时密钥

    • 作为对称密码的密钥,用于加密消息,提高速度

  • 加密步骤(发送消息)

    1.首先,消息发送者要拥有消息接收者的公钥

    2.生成会话密钥,作为对称密码的密钥,加密消息

    3.用消息接收者的公钥,加密会话密钥

    4.将前 2 步生成的加密结果,一并发给消息接收者

  • 发送出去的内容包括

    • 用会话密钥加密的消息(加密方法:对称密码)

    • 用公钥加密的会话密钥(加密方法:公钥密码)

加密解密5

混合密码-解密
  • 解密步骤(收到消息)

    1.消息接收者用自己的私钥解密出会话密钥

    2.再用第 1 步解密出来的会话密钥,解密消息

加密解密6

混合密码-加密解密流程
  • Alice >>>>> Bob

    • 发送过程,加密过程

      1.Bob 先生成一对公钥、私钥

      2.Bob 把公钥共享给 Alice

      3.Alice 随机生成一个会话密钥(临时密钥)

      4.Alice 用会话密钥加密需要发送的消息(使用的是对称密码加密)

      5.Alice 用 Bob 的公钥加密会话密钥(使用的是公钥密码加密,也就是非对称密码加密)

      6.Alice 把第 4、5 步的加密结果,一并发送给 Bob

    • 接收过程,解密过程

      1.Bob 利用自己的私钥解密会话密钥(使用的是公钥密码解密,也就是非对称密码解密)

      2.Bob 利用会话密钥解密发送过来的消息(使用的是对称密码解密)

2、单向散列函数(One-way hash function)

  • 单向散列函数,又被称为消息摘要函数(message digest function),哈希函数

  • 输出的散列值,也被称为消息摘要(message digest)、指纹(fingerprint)

  • 单向散列函数,可以根据消息内容计算出散列值

  • 散列值的长度和消息的长度无关,无论消息是 1bit、10M、100G,单向散列函数都会计算出固定长度的散列值

    加密解密7

  • 常见的几种单向散列函数

    • MD4、MD5
      • 产生 128bit 的散列值,MD 就是 Message Digest 的缩写,目前已经不安全
      • Mac 终端上默认可以使用 md5 命令
    • SHA-1
      • 产生 160bit 的散列值,目前已经不安全
    • SHA-2
      • SHA-256、SHA-384、SHA-512,散列值长度分别是 256bit、384bit、512bit
    • SHA-3
      • 全新标准
单向散列函数的特点
  • 根据任意长度的消息,计算出固定长度的散列值
  • 计算速度快,能快速计算出散列值
  • 消息不同,散列值也不同
  • 具备单向性

加密解密8

加密解密9

单向散列函数的应用 – 防止数据被篡改

加密解密10

3、数字签名

想象以下场景

加密解密11

  • Alice 发的内容有可能是被篡改的,或者有人伪装成 Alice 发消息,或者就是 Alice 发的,但她可以否认
  • 问题来了:Bob 如何确定这段消息的真实性?如何识别篡改、伪装、否认?
  • 解决方案:数字签名
数字签名

在数字签名技术中,有以下2种行为

  • 生成签名

    • 由消息的发送者完成,通过“签名密钥”生成
  • 验证签名

    • 由消息的接收者完成,通过“验证密钥”验

那么问题来了:如何能保证这个签名是消息发送者自己签的?

  • 用消息发送者的私钥进行签名

加密解密12

在公钥密码中,任何人都可以使用公钥进行加密

加密解密13

在数字签名中,任何人都可以使用公钥验证签名
数字签名的过程
  • Alice 生成密钥对,将公钥发送给 Bob

  • Alice 用自己的私钥进行加密(生成签名)

  • Alice 将消息和签名发送给 Bob

  • Bob 用公钥验证签名

    加密解密14

数字签名 – 疑惑
  • 如果有人篡改了文件内容或者签名内容,会是什么结果?
    • 签名验证失败,证明内容被篡改
  • 数字签名不能保证机密性?
    • 数字签名的作用不是为了保证机密性,仅仅是为了能够识别内容有没有被篡改
  • 数字签名的作用
    • 确认消息的完整性
    • 识别消息是否被篡改
数字签名无法解决的问题
  • 要正确使用签名,前提是

    • 用于验证签名的公钥必须属于真正的发送者
  • 如果遭遇了中间人攻击,那么

    • 公钥将是伪造的
    • 数字签名将失效
  • 所以在验证签名之前,首先得先验证公钥的合法性

  • 如何验证公钥的合法性?

    • 证书

加密解密15

4、证书

  • 密码学中的证书,全称叫公钥证书(Public-key Certificate,PKC),跟驾驶证类似

    • 里面有姓名、邮箱等个人信息,以及此人的公钥

    • 并由认证机构(Certificate Authority,CA)施加数字签名

  • CA就是能够认定“公钥确实属于此人”并能够生成数字签名的个人或者组织

    • 有国际性组织、政府设立的组织

    • 有通过提供认证服务来盈利的企业

    • 个人也可以成立认证机构

证书的利用

加密解密16

证书的注册和下载

加密解密17