TLSv1.2密钥交换算法安全性及性能比较(RSA, DHE, ECDHE)

本文对比了TLSv1.2中三种密钥交换算法——RSA、DHE和ECDHE的安全性和性能。DHE耗时约23秒,ECDHE耗时约28秒,而RSA耗时仅为0.1秒。DHE和ECDHE通过大数运算和椭圆曲线乘法生成密钥,而RSA依赖服务器已有私钥进行解密操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


想当初, 某次将服务器容器jetty升级之后, 公司的小霸王服务器直接就跪了, 当时还不知道 DHE, ECDHE是什么鬼. 只是通过分析jvm stack发现, 大量线程卡在这两个相关算法中. 于是果断地配置jetty, 这两个算法剔除掉了.
不过. ECDHE是趋势, 苹果公司指定要用这种算法, 等迫不得已的时候再开吧.
今天测试了一下 RSA, DHE, ECDHE这三种方式的性能.

先上总结

TLSv1.2密钥交换算法 安全性 本次测试耗时(秒)
RSA 低, 如果RSA私钥泄露或被破解, 全完蛋 0.1
DHE 较高, 即使RSA私钥泄露, 也没事. 即使某个人的连接被破解, 其他人也不受影响
算法难度等同于
解方程: 2e % p = q, 已知p和q , 求e等于多少?
23
ECDHE 很高. 同上.
算法难度等同于:
已知有限域椭圆曲线方程E, 曲线上两点g和Q, k * g = Q, 求k为多少?
28

测试DHE

分析:

  1. DH每次需要随机生成一个大素数p, 大指数e, 基数为固定值g=2
  2. 执行一次大数模幂运算 g e m o d   p g^e mod\ p
### TLSv1.2 加解密流程解释 #### 客户端和服务端握手阶段 在TLSv1.2协议中,为了建立安全通信通道,在实际数据传输之前会经历一系列复杂的握手过程。此过程中涉及到了多种密码学技术的应用。 当客户端尝试连接到服务器时,它发送Client Hello消息给服务端,其中包含了支持的最高版本号、随机数以及所支持的加密套件列表等信息[^1]。随后,服务器回应Server Hello消息,选定双方都认可的一个加密方案,并提供自身的公钥证书用于验证其身份合法性;同时也会返回一个随机数值作为后续运算的一部分输入材料之一[^2]。 接着进入密钥协商环节,依据选用的具体算法不同而有所差异: - 如果采用RSA方式,则客户机会利用接收到的服务商公开密钥对预主秘钥(pre-master secret)实施保护后再传回; - 对于DHE/ECDHE这类基于Diffie-Hellman原理的方法来说,两端各自生成一对临时性的私钥与对应的公共参数并互相分享后者,最终共同推导得出一致的秘密值即所谓的master secret。 上述操作完成后,双方均能独立计算得到相同的master secret,进而派生出会话所需的读写MAC密钥(read/write MAC key),客户端及服务器编码工作秘密(client/server write working secret)。 ```python import hashlib from cryptography.hazmat.primitives.asymmetric import rsa, padding from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import hashes def generate_master_secret(premaster_secret, client_random, server_random): seed = b"master secret" + client_random + server_random master_secret = hashlib.sha256(premaster_secret + seed).digest() return master_secret ``` #### 数据传输阶段 一旦完成了前面提到的一系列初始化活动之后,就可以正式开启受保护的信息交流了。此时所有的应用层负载都会先经过特定处理再发出——具体而言就是按照先前确立好的规则进行分割打包成记录(record),然后运用共享出来的对称型密钥完成内容混淆(Confidentiality),再加上哈希函数产生的验证码(MAC)确保完整性(Integrity)。 每当一方准备向另一方传递某些东西的时候,就会创建一条新的SSL/TLS Record Protocol单元,里面封装着真实有效载荷加上额外附加的安全特性描述字段。这些被精心包装过的实体将以流的形式沿着TCP/IP栈向下流动直至抵达目的地为止。 接收者拿到这样的包裹以后,首先要做的便是剥离外层防护措施恢复原始面貌,这期间涉及到解开由AES/GCM之类的分组变换所提供的屏障,同时也需检验附带的消息鉴别码是否匹配预期结果以证明未遭篡改破坏。如果一切正常无误的话,那么就能顺利解析出内部真正携带的内容片段供应用程序进一步消费使用了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值