当前位置: 首页 > article >正文

【学习笔记】SSL证书之混合加密(Hybrid Encryption)与签名(Signatures)

1、非对称密钥对可以用来进行加密(Confidentiality保密性)

        举个栗子,现在有2个人,Pam和Jim,两人之间需要通过非对称密钥对来给另一方发送数据。Pam通过某种途径将公钥分享给Jim,两人都各自保存着自己的私钥而别人获取不到他们的私钥(要知道的是私钥和公钥是匹配的,即密钥对)。

        我们将介绍在加密过程中,公钥和私钥是如何使用的。

  • Jim想要发送一段秘密信息给Pam
  • Jim需要做的是用Pam给的公钥来加密信息
  • 只有与公钥相匹配的私钥才能进行解密并提取明文(这时世界上能解密这段信息的只有Pam的私钥,因为私钥不共享给别人)

        以上,非对称密钥就提供了数据的保密性(Confidentiality)

2、公钥和私钥还可以用与签名(Signatures)

        还是Pam和Jim,假设Pam不介意别人能看到信息(即care Confidentiality)

  • 但是Pam想要确保是她发送的信息(Jim能确定这是Pam发送的)
  • Pam能做的是,用她自己的私钥来加密该信息(现在能解密这段信息的只有Pam的公钥,Jim有相同的公钥,需要注意的是,别人也可能获得这个公钥,因为公钥不是私有的)
  • 被公钥加密的信息被在线传输给Jim,如果Jim能够成功地用Pam的公钥解密信息,那么就证明的2件事:
    • Jim知道一定是Pam一定发送了该信息(Authentication)
    • Jim知道信息在传输时没有被修改(Integrity)。如果其他人从传输中截获信息,并修改了其中的内容,那么当Jim尝试用Pam的公钥解密信息时,Jim会得到混乱的信息。

        如果Jim能成功地用Pam的公钥解密信息,那我们就知道从Pam用自己的私钥加密信息时,该信息就没有被修改过。因而,我们可以用非对称密钥对来创建签名(Signature),它们为我们的Signatures提供了Authentication和Integrity。

        以上内容可知,非对称密钥对能够为我们提供加密(Encryption)和签名(Signatures),但在实际生活中,并不是这么简单。

        我们之前提到过非对称加密存在一定的局限性,例如:不能用于批量数据(更慢、更吃CPU),只能用于有限数据。

        取而代之,批量数据应该使用对称加密(Symmetric Encryption)来加密数据,然而对称加密也有它的问题,我们需要让它更安全。

        因此,我们为什么不用非对称密钥来分享对称密钥呢?(这就是SSL/TLS实际做的事)

3、通过非对称密钥来分享对称密钥

  • Pam随机生成了一个对称密钥(该密钥是一连串的1或0)
  • Pam用Jim的公钥来加密对称密钥(世界上能将该加密后的对称密钥解密到原先的状态的,就是Jim独有的私钥),Pam能它安全地进行在线传输。
  • Jim用自己的私钥来解密Pam发送过来的信息,并提取得到初始的对称密钥

        现在双方就能够用安全的方式来建立完全相同的对称密钥

  • 批量数据现在就能够用对称密钥进行加密
  • 现在Pam想要给Jim发送信息,这时她会用她的对称密钥来加密该信息(世界上能够解密该信息的只有相同的用于加密的对称密钥)
  • Jim用相同的对称密钥来进行解密并提取其中的内容

        这可以用于对任意数量的数据进行任意方向的操作。Jim也可以用加密后的对称密钥来安全地给Pam传输信息。现在双方都有了完全相同的对称密钥,他们可以用该对称密钥加密他们想加密的数据。

        以上所讨论的就是Hybrid Encryption(混合加密)

4、混合加密(Hybrid Encryption)

        定义:同时使用非对称加密和对称加密来加密信息

  • 非对称加密用来促进密钥交换
  • 有了该密钥就可以用对称加密来加密批量数据

        现在,我们重温下非对称加密和对称加密的优缺点:        

  • 非对称加密
    • 劣势:更慢 - 需要更大的密钥长度;密文扩展
    • 优势:更安全 - 私钥不会被共享
  • 对称加密
    • 优势:更快 - 低CPU占用;密文和明文大小相同
    • 劣势:不那么安全 - 密钥必须被共享

        混合加密结合了2个加密方式的优点,这种方式就是任何安全通信协议所使用的,这也就是SSL/TLS保护批量数据传输的方式,也是IP设置保护批量数据传输的方式。

5、利用非对称密钥进行签名(Signatures)的过程

        前文提到用私钥加密签名来获得数据完整性(Integrity)和真实性(Authentication),但是用私钥加密整条信息似乎不太可能,因为,非对称密钥有其局限性。那么我们能否对信息固定且具有代表性的样本进行签名呢?

        之前提到过哈希算法(将任意长度的信息输入,产出原始信息的“指纹”的算法),签名就是用哈希来简化这一过程。

  • Pam计算出信息的哈希值,生成特定摘要(Digest)
  • Pam用自己的私钥加密生成的摘要
    • 这才是实际的签名
    • 该签名被添加到要发送的信息中

  • 另一侧,Jim用Pam的公钥对签名进行解密(这会得到Pam创建的摘要)

  • Jim计算出收到的信息的哈希值,如果得到的摘要和Pam发送的摘要相匹配,这就证明了2件事情:
    • 信息从Pam签名开始就没有被更改过(如果信息被修改过,Jim就会得到不同的摘要),这就提供了数据的完整性(Integrity)
    • 只有Pam才可能创建该签名(该签名是Pam用自己的私钥加密摘要所形成),如果Jim能够用Pam的公钥进行解密,就证明了绝对是Pam的私钥签的名,因为世界上只有Pam自己拥有自己的密钥。这就为我们提供了数据的真实性(Authentication)

        因此,通过这种方式,用非对称密钥对生成签名,为签名的内容提供了完整性与真实性

        此外,还有许多东西可以被签名,例如:信息、证书、软件、邮件等等(you can sign everything)

混合加密:

  • 用非对称加密来安全地创建对称密钥
  • 对称密钥之后可用来对称加密来保护批量数据

签名:

  • 用发送方的私钥来加密一串数据的哈希值
  • 为被签名的东西提供数据完整性和真实性

参考文献

1、网站:Practical Networking.net:Practical TLS


http://www.kler.cn/a/291126.html

相关文章:

  • 迅为龙芯2K1000开发板/核心板流畅运行Busybox、Buildroot、Loognix、QT5.12系统
  • maven 微服务项目多 包版本问题
  • 解决conda create速度过慢的问题
  • PyTorch使用教程(13)-一文搞定模型的可视化和训练过程监控
  • 《Linux服务与安全管理》| 邮件服务器安装和配置
  • 【Linux】gawk编辑器二
  • CityHash、FarmHash
  • 数据迁移文档240905
  • go语言使用defer+recover处理error
  • 工业必备:SLM34x系列SLM340CK-DG 1A兼容光耦的单通道隔离驱动器
  • 代码随想录训练营 Day50打卡 图论part01 理论基础 98. 所有可达路径
  • lua脚本保证多条命令原子性
  • 面向对象程序设计原则——里氏替换原则(LSP)
  • 【Linux操作系统】线程控制
  • 16 C语言连接
  • ***萌新6:24点(爆搜)
  • C++类与对象---日期类
  • 【陪诊系统-PC管理端】axios的二次封装
  • OpenCV图像与视频分析笔记 — 视频部分
  • python---爬取QQ音乐
  • 时序预测 | 基于MAMbaS+transformer时间序列预测模型(pytorch)
  • 【JAVA入门】Day32 - 可变参数
  • Readelf 获取Android So `.note.android.ident`
  • C#自定义控件的放置与拖动
  • oh my posh随机选择主题
  • 大坝安全监测设备的工作原理