尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【2018-04-28】TLS简单笔记-SSL中的RSA、DHE、ECDHE、ECDH流程与区别
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2018-04-28 标题TLS简单笔记-SSL中的RSA、DHE、ECDHE、ECDH流程与区别分类编程 标签tlsTLS简单笔记-RSA/DHE/ECDHE/ECDH1RSA密钥交换算法2DHE密钥交换算法3ECDHE密钥交换算法4ECDHE与ECDH算法的区别5ECDHE与RSA的区别转自《 https://blog.csdn.net/mrpre/article/details/78025940 》在不安全信道上构建安全信道这是SSL的核心所谓安全包括身份认证、数据完整性、数据加密性。而非对称算法在SSL中的运用就是为了协商一个密钥密钥的目的就是为了后续数据能够被加密而加密密钥有且只有通信双方知道。通常网络上传输的数据一般都被认为是可见的。端对端传输的数据不仅经过交换机、路由器还经过各种DPI、IPS、WAF等审计安全设备甚至可能经过负载均衡等反向代理设备只要在任何一个环节抓包都可以轻松获取网络上传输的数据。所以如果A和B需要加密通信即通信的内容需要使用有且只有A和B知道的“密钥”加密那么必然需要传输这个“密钥”也就是说“密钥”本身需要在不安全传输的信道传输如果简单的传输“密钥”那么这个“密钥”就不再保密任何第三方都能获取“密钥”即任何第三方都能解密A和B发出来的密文数据。非对称算法就是为了解决“密钥”传输A和B共享的问题。1RSA密钥交换算法详细原理请参考我的这篇博客http://blog.csdn.net/mrpre/article/details/52609087本篇不讲解具体原理而是讲解交互过程。RSA的核心涉及公钥私钥的概念1使用公钥加密的数据只有私钥能解密2使用私钥加密的数据只有公钥能解密我们构建这么一种场景服务器配置有公钥私钥客户端是离散的。RSA算法流程文字描述如下1任意客户端对服务器发起请求服务器首先发回复自己的公钥到客户端公钥明文传输。2客户端使用随机数算法生成一个密钥S使用收到的公钥进行加密生成C把C发送到服务器。3服务器收到C使用公钥对应的私钥进行解密得到S。4上述交换步骤后客户端和服务器都得到了SS为密钥预主密钥。我们来看看上述过程中为何第三方无法得到S。首先第一步后客户端有公钥服务器有公钥和私钥。由于公钥是明文传输的所以可以假设第三方也有公钥。第二步后客户端发送C服务器能够使用自己的私钥进行解密而第三方只有公钥无法解密。即第三方无法计算得到S。上述中服务器发送的公钥在SSL中是通过certificate报文发送的certificate中的包含了公钥。C是通过Client key exchange报文发送的。其实在实际SSL实际设计中S其实并没有直接被当成密钥加密这里为了描述原理省去了对S后续进行KDF等操作并不影响实际理解RSA。RSA有一个问题就是如果私钥泄漏即私钥被第三方知道那么第三方就能从C中解密得到S即只要保存所有的A和B的报文等到私钥被泄漏的那一天或者有办法快从C中计算S的方法出现量子计算机分解大素数那么A和B就没有什么私密性可言了。这就是所谓的前向不安全私钥参与了密钥交换安全性取决于私钥是否安全保存。2DHE密钥交换算法详细原理请参考我的这篇博客http://blog.csdn.net/mrpre/article/details/52608867本篇不讲解具体原理而是讲解交互过程。DHE算法流程文字描述如下1客户端计算一个随机值Xa使用Xa作为指数即计算Pa q^Xa mod p其中q和p是全世界公认的一对值。客户端把Pa发送至服务器Xa作为自己私钥仅且自己知道。2服务器和客户端计算流程一样生成一个随机值Xb使用Xb作为指数计算Pb q^Xb mod p将结果Pb发送至客户端Xb仅自己保存。3客户端收到Pb后计算Sa Pb ^Xa mod p服务器收到Pa后计算Sb Pa^Xb mod p4算法保证了Sa Sb S故密钥交换成功S为密钥预主密钥。DHE密钥交换握手流程图上述图中Sa和Sb得到的结果是相同的即记为S。上述密钥交换流程中和RSA密钥交换有较大不同DHE密钥交换时服务器私钥没有参与进来。也就是说私钥即使泄漏也不会导致会话加密密钥S被第三方解密。实际使用过程中私钥的功能被削弱到用来身份认证上图中没有画出。上图中DHE参数和Pb都是通过server key exchange发送给客户端Pa通过client key exchange发送给服务器。server key exchange的结尾处需要使用服务器私钥对该报文本身进行签名以表明自己拥有私钥图中为了表明私钥没有参与密钥计算没有画出但不影响理解DHE算法。3ECDHE密钥交换算法详细原理请参考我的这几片篇博客http://blog.csdn.net/mrpre/article/details/72850486http://blog.csdn.net/mrpre/article/details/72850598http://blog.csdn.net/mrpre/article/details/72850644本篇不讲解具体原理而是讲解交互过程。只要理解DHE密钥交换原理那么理解ECDHE密钥交换原理其实并不难如果不想深究的话。ECDHE的运算是把DHE中模幂运算替换成了点乘运算速度更快可逆更难。ECDHE算法流程文字描述如下1客户端随机生成随机值Ra计算Pa(x, y) Ra * Q(x, y)Q(x, y)为全世界公认的某个椭圆曲线算法的基点。将Pa(x, y)发送至服务器。2服务器随机生成随机值Rb计算Pb(x,y) Rb * Q(x, y)。将Pb(x, y)发送至客户端。3客户端计算Sa(x, y) Ra * Pb(x, y)服务器计算Sb(x, y) Rb *Pa(x, y)4算法保证了Sa Sb S提取其中的S的x向量作为密钥预主密钥。ECDHE密钥交换握手流程图SSL协议中上图中椭圆曲线名和Pb通过server key exchange报文发送Pa通过client key exchange报文发送。4ECDHE与ECDH算法的区别字面少了一个EE代表了“临时”即在握手流程中作为服务器端ECDH少了一步计算Pb的过程Pb用证书中的公钥代替而证书对应的私钥就是Xb。由此可见使用ECDH密钥交换算法服务器必须采用ECC证书服务器不发送server key exchange报文因为发送certificate报文时证书本身就包含了Rb信息。5ECDHE与RSA的区别ECDHEDHE算法属于DH类密钥交换算法 私钥不参与密钥的协商故即使私钥泄漏客户端和服务器之间加密的报文都无法被解密这叫 前向安全forward secrity。由于ECDHE每条会话都重新计算一个密钥Ra、Rb故一条会话被解密后其他会话仍旧安全。然而ECDH算法服务器端的私钥是固定的即证书的私钥作为Rb故ECDH不被认为前向安全因为私钥泄漏相当于Rb泄漏Rb泄漏导致会话密钥可被第三方计算。
RELATED

相关推荐

ArrayList vs LinkedList:性能对决全解析!

ArrayList vs LinkedList:性能对决全解析!

全文目录:开篇语一、ArrayList:一间会自动扩建的“顺序仓库”1.1 底层结构1.2 扩容机制(grow 策略)1.3 时间复杂度分析(ArrayList)二、LinkedList:一条会插队的“双向人链”2.1 底层结构&#x…

📅 2026/9/30 7:16:51
HashSet与TreeSet底层原理深度解析!

HashSet与TreeSet底层原理深度解析!

全文目录:开篇语摘要一、HashSet:表面是 Set,内心其实是个 HashMap1.1 先别被骗了:HashSet 其实是“借壳上市”1.2 HashSet 如何判重?—— hashCode equals 双保险1.3 HashSet 的性能:增删查改到底多快&am…

📅 2026/9/30 7:16:51
Maven 从入门到实战:项目管理与构建工具完全指南

Maven 从入门到实战:项目管理与构建工具完全指南

1. 什么是 Maven Maven 是一个基于项目对象模型(POM)的项目管理和构建自动化工具,主要用于 Java 项目的构建、依赖管理和项目信息管理。它由 Apache 软件基金会维护,是目前 Java 生态中最流行的构建工具之一。 Maven 的核心思想…

📅 2026/9/30 7:11:51
MORE NEWS

更多资讯

📰

段式内存管理地址变换与越界检查:课堂练习4.1复盘

课堂练习4.1 的题目发下来的时候,我第一反应是这题应该不难——段式内存管理翻来覆去就那几个公式:拆地址、查段表、做检查、加基址。结果真拿起笔算第一道小题,还是卡了两分钟。卡的点不在于公式本身,而在于题干给的那组数字里藏…

📰

基于YOLOv8的舰船目标检测系统:从数据集标注到PyQt5界面集成

舰船目标检测这个方向,我前后折腾过三套方案,从最早的 YOLOv5 改配置文件,到后来用 YOLOv8 重新搭一套带界面的完整系统,中间踩的坑足够写一本小册子。很多人第一次接触这类项目,会觉得"不就是拿个预训练权重跑一…

📰

JMeter实战入门:以飞致云平台为靶标快速掌握接口测试核心技能

1. 为什么飞致云平台成了JMeter入门的“黄金练兵场”很多人第一次打开JMeter,面对空白的测试计划树和密密麻麻的线程组、HTTP请求、断言、监听器,第一反应是:这玩意儿到底在测什么?测谁?测完又怎么知道对不对&#xff…

📰

Mac读写NTFS移动硬盘的三种实用方案:从驱动到exFAT

朋友抱着一块移动硬盘来找我:“这个盘在Windows上拷满了资料,插到你Mac上试试能不能读?”我接过硬盘插上去,系统确实认出了分区,可当我试着往盘里拖新文件夹时,Mac直接弹窗拒绝。这块盘是NTFS格式&#xff…

📰

逐行拆解one-skill-to-rule-them-all的bash脚本:ID推导、归档扫描,以及你必须防住的三种静默失败

逐行拆解one-skill-to-rule-them-all的bash脚本:ID推导、归档扫描,以及你必须防住的三种静默失败 【免费下载链接】one-skill-to-rule-them-all The meta-skill that builds and improves all your skills, including itself. Watches your work session…

📰

银河麒麟v10 SP1安装Docker:前置问题、内核参数与离线部署指南

简介:银河麒麟V10 SP1 Server上安装Docker的实操手册,面向国产化服务器环境下的运维与开发人员,专门解决官方源未收录Docker服务端软件包、直接yum安装失败的问题。资料包含一个docx格式文档,压缩包体积仅17KB,篇幅短小…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬