【学习笔记】SSL密码套件之密钥交换

本篇将介绍密钥交换常用的协议,分别是ECDHE,DHE,ECDH,DH,RSA,PSK

  • 密钥交换的目的:建立种子值(Seed Value)
    • 种子值(二进制数字)用于生成额外的对称会话密钥
    • 密钥交换包含非对称加密
      • 慢且需要更多CPU处理
      • 只需要做1次(一旦种子值在Client和Server上建立,我们就能用该种子值派生出许多对称密钥)
    • 因而,本篇开头提到的不同的协议,是创建种子值的不同方式
  • PSK - Pre-Shared-Key,预共享密钥
    • 种子值在 TLS 握手之前被手动指定
    • 最不安全,但不需要任何CPU成本
    • 及其罕见,我们不会在互联网见到,但PSK可能会用于IOT设备
  • RSA
    • 实际上我们所描述的"混合加密"(Hybrid Encryption)
      • Client随机生成种子值
      • Client用Server的公钥进行加密,并在线传输给Server
      • Server用自己的私钥进行解密,以提取出原始的种子值
    • 关于RSA的担忧
      • 种子值只被私钥所保护(只要别人获得了私钥就能提取出原始种子值)
      • 需要有效且不可预测的随机数生成器(如果我们能够预测Client生成的随机数,就算需要百万次或者十亿次去暴力破解一个RSA 2048私钥,这也是很简单的事),这是RSA主要的弊病,因而我们将讨论ECDHE,DHE,ECDH,DH这4个协议
  • ECDHE,DHE,ECDH,DH这4个协议都包含了Diffie-Hellman
    • Diffie-Hellman通过不安全的媒介创建共享秘密(Shared Secret)
      • 这个Shared Secret被用来在Client和Server上创建Seed Value
    • 相比RSA,DH的优势:需要双方共献一个随机数(这意味着,密钥交换的安全不取决于单一的实体,比如Client)
      • 如果Client有一个较弱的随机数生成器,密钥交换的整体的安全也不会受影响
  • Diffie-Hellman Ciphers:
    • DH = Diffie-Hellman
    • EC... = Elliptic Curve,椭圆曲线
      • 比没有EC地DH版本更安全、更高效
    • ...E = Ephemeral(这个E很重要)
      • 参考的DH起始参数(直译是"短暂的")
        • 非Ephemeral - DH参数是静止的,写入证书和密钥文件里的
        • Ephemeral - DH参数每次会话会生成并且丢弃
      • Ephemeral Diffie-Hellman 提供了前向保密(Forward Secrecy
  • Diffie-Hellman的过程:我们进行DH时,我们确认双方都开始于2个值(Prime Number和Generator),之后生成私钥,然后通过3者生成公钥,并相互进行在线共享,然后双方都用共享的公钥,结合各自的私钥来生成种子值(Seed Value)

参考文献

1、Practical Networking.net:Practical TLS

相关推荐
kkeeper~9 小时前
0基础C语言积跬步之数据在内存中的存储
c语言·数据结构·算法
wabs66610 小时前
关于贪心算法的一些自我总结【力扣45.跳跃游戏II】【灵感来源:代码随想录】
算法·贪心算法·复盘
2401_8769641310 小时前
【湖北专升本】2026湖北专升本真题PDF+备考资料汇总
数据结构·人工智能·经验分享·深度学习·算法·计算机视觉
嗝o゚11 小时前
CANN GE 算子融合——融合算法与调度策略
算法·昇腾·cann·ge
小江的记录本11 小时前
【JVM虚拟机】垃圾回收GC:垃圾回收算法:标记-清除、标记-复制、标记-整理、分代收集(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·算法·安全·面试
Ulyanov13 小时前
用声明式语法重新定义Python桌面UI:QML+PySide6现代开发入门(一)
开发语言·python·算法·ui·系统仿真·雷达电子对抗仿真
数据科学小丫13 小时前
特征工程处理
人工智能·算法·机器学习
z落落13 小时前
C#参数区别
java·算法·c#
c2385614 小时前
vector(下)
数据结构·算法
z落落14 小时前
C# 冒泡排序+选择排序 + Array.Sort 自定义排序
数据结构·算法