【HTTPS】HTTPS ECDHE握手解析

HTTPS常用的密钥交换算法有两种,分别是RSA和ECDHE算法。

其中,RSA是比较传统的密钥交换算法,它不具备前向安全的性质,因此现在很少服务器使用它。而ECDHE算法具有前向安全,所以被广泛使用。

离散对数

ECDHE秘要协商算法是DH算法严禁过来的,所以我们先从DH算法说起。

DH算法是非对称算法,因此它可以用于秘钥交换,该算法的核心数学思想是离散对数。

离散对数是【离散+对数】的两个数学概念的组合。对数和指数互为反函数。

对数运算的取值是可以连续的,而离散对数的取值是不能连续的,因此也以【离散】得名。

离散对数是在对数运算的基础上加了模运算,也就是取余数,对应编程语言的操作符是%,也可以用mod表示。如下所示:

其中,如果对于一个整数b和质数p的一个原根a,可以找到一个唯一的指数i,使得:

a^i (mod p) = b

成立,那么指数i称为b的以a为底的模p的离散对数。其中,底数a和模数p是离散对数的公共参数,也就是说是公开的,b是真数,i是对数。知道了对数,就可以用上面的公式计算出真数。但反过来,知道真数却很难推算出对数。

特别是当模数p是一个很大的指数,即使知道底数a和真数b,在现有的计算机的计算水平是几乎无法算出离散对数的,这就是DH算法的数学基础。

DH算法

认识了离散对数,我们来看看DH算法是如何密钥交换的。

现假设小红和小明约定使用DH算法来交换密钥,那么基于离散对数,小红和小明需要先确定模数和底数作为算法的参数,这两个参数是公开的,用P和G来代替。

然后小红和小明各自生成一个随机整数作为私钥,双方的私钥要各自严格保管,不能泄漏,小红的私钥用a代替,小明的私钥用b代替。

现在小红和小明双方都有了P和G以及各自的私钥,于是就可以计算出公钥:

  • 小红的公钥记作A,A = G^a(mod P);
  • 小明的公钥记作B,B = G^b(mod P);

A和B也是公开的,因为根据离散

### HTTPS加密的工作原理 HTTPS通过SSL/TLS协议实现了数据的加密传输,其核心在于结合了非对称加密和对称加密的优点来完成通信的安全性[^1]。在建立连接的过程中,客户端与服务器之间会经历一系列复杂的握手操作以协商加密算法、交换密钥以及验证身份。 #### 一、TLS/SSL握手阶段 当浏览器访问一个基于HTTPS的网页时,它首先向目标站点发起TCP三次握手请求建立基础链接之后进入真正的TLS/SSL握手环节: 1. **Client Hello**: 客户端发送一条消息给服务端表明支持哪些版本号(如TLSv1.2)、密码套件列表以及其他参数。 2. **Server Hello and Certificate Exchange**: 接收到客户端的消息后,服务器回应自己的首选配置,并附带一份由可信CA签发的数字证书用于证明身份合法性的同时也包含了公钥信息供后续使用[^2]. 3. **Key Exchange (Ephemeral Diffie-Hellman or RSA)**: 此步涉及到了如何生成共享秘密的过程。如果是DHE/ECDHE模式,则双方各自计算临时私钥并通过公开部分传递给对方;若是传统的RSA方式,则客户机会随机产生一段预主秘钥(pre-master secret),再利用之前获取的服务端公钥对其进行封装后再传回后者那里解锁得到原始内容[^3]. 4. **Finished Messages Verification**: 经过以上几步处理完毕后,两端分别独立推导出会话所需的最终实际使用的对称密钥材料(即master-secret), 并互相告知已完成准备状态以便正式开启受保护的数据交互活动. #### 二、应用层数据传输阶段 一旦完成了初始设置动作,在接下来的应用过程中所有的HTTP报文都将被事先商定好的方法予以编码转换成不可读形式然后再经网络通道送达目的地解析还原出来显示给接收方查看[^1]. ```python import ssl context = ssl.create_default_context() with socket.create_connection(("www.example.com", 443)) as sock: with context.wrap_socket(sock, server_hostname="www.example.com") as ssock: print(ssock.version()) ``` 此代码片段展示了Python中创建一个简单的SSL上下文环境并与远程主机建立安全连接的例子[^2].
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值