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

TLS协议

目录

什么是TLS协议?

TLS的基本流程?

两种密钥交换算法?

基于ECDHE密钥交换算法的TLS握手过程?

基于RSA密钥交换算法的TLS握手过程?

基于RSA的握手和基于ECDHE的握手有什么区别?

什么是前向保密?


什么是TLS协议?

        TLS是(Transport Layer security)的缩写中文叫传输层安全协议,是一种加密协议,用于保护网络通信的安全。

TLS的基本流程?

        1)客户端向服务器索要并验证服务器的公钥

        2)双方协商生产会话密钥

        3)双方采用会话密钥进行通信

两种密钥交换算法?

        RSA和ECDHE,基于不同的密钥交换算法的TLS握手过程有些区别。另外,TLS1.3及其以上版本已经不在支持RSA密钥交换算法。

基于ECDHE密钥交换算法的TLS握手过程?

        1)第一次握手是客户端发送Client Hello消息。(包含TLS版本,支持的密码套件,以及一个随机数)

        2)第二次握手是服务端发送Server Hello消息。(服务器确认的TLS版本号,以及一个随机数,并选择了一个合适的密码套件)。另外服务端为了证明自己的身份,还会发送一个证书给客户端。除此之外,还会发送给客户端一个Server Key Exchange(将选择的椭圆曲线,以及基点G和服务端的椭圆曲线公钥发送给客户端),以及还有一个是Server Hello done告诉客户端我发送完毕了。

        3)第三次握手是客户端发送Client Key Exchange消息,将客户端的椭圆曲线公钥发送给服务端。并生成一个随机数作为自己的私钥。发送change cipher spec消息,告诉服务端之后客户端要用加密通信。接着客户端会将之前发送的消息的摘要进行加密发送给服务端。

        4)第四次握手是服务端向客户端发送Change Cipher Spec,接着会将之前发送的信息进行加密发送给客户端。如果双方的加解密都没有问题,则握手完成,之后就可以进行加密通信。

基于RSA密钥交换算法的TLS握手过程?

        1)第一次握手是客户端向服务端发送Client Hello消息。(包含TLS版本,支持的密码套件和客户端生成的随机数)

        2)第二次握手是服务端向客户端发送Server Hello消息(包含确认的TLS版本,选择的密码套件和服务端生成的随机数)并发送证书(包含服务端的公钥)

        3)第三次握手:客户端验证证书的可信性后,客户端会生成一个新的随机数(pre-master),用服务器的RSA公钥加密该随机数,通过Client Key exchange消息发送给服务端。至此客户端和服务端共享了三个随机数,客户端随机数(Client Random),服务端随机数(Server Random)以及刚刚生成的随机数(pre-master)。将三个随机数进行计算生成会话密钥。生成会话密钥后,和发送Change Cipher Spec,告诉服务端开始使用加密的方式发送消息。然后客户端再发送一个加密消息供服务端解密验证。

        4)第四次握手:服务端收到客户端的加密随机数(pre-master)后,用私钥进行解密。计算出会话密钥,解密服务端的加密消息。之后对客户端发送change cipher spec,以及再发送一个加密消息供客户端解密验证。

基于RSA的握手和基于ECDHE的握手有什么区别?

        1)ECDHE安全。RSA密钥协商算法不支持前向保密(服务端的公私钥是不变的,一旦服务端私钥泄漏,之前的通信内容全部会被破解),而ECDHE密钥协商算法支持前向保密。

        2)ECDHE抢跑。使用了RSA密钥协商算法,TLS完成四次握手后才能进行应用数据传输。而ECDHE算法,客户端可以不用等服务端的最后一次TLS握手,就可以提前发出加密的HTTP数据,节省了一个消息的往返时间

        3)在第二次握手中,ECDHE多了一个Server Key Exchange

什么是前向保密?

        前向保密是密码学中通讯协议的安全属性,指的是长期使用的主密钥泄漏不会导致过去的会话密钥泄漏。

http://www.lryc.cn/news/121621.html

相关文章:

  • Academic Inquiry|国外文献查找
  • opencv图片灰度二值化
  • 短肥网络的 RTT 敏感性
  • Nonebot实战之编写插件1
  • Linux-C++开发项目:基于主从Reactor模式的高性能并发服务器
  • 【Linux的开胃小菜】Linux系统安装后初始化配置操作
  • Java批量下载书籍图片并保存为PDF的方法
  • flutter 创建lib
  • 深度剖析堆栈指针
  • C++笔记之静态成员函数的使用场景
  • Nginx的优化和防盗链
  • 第二十次CCF计算机软件能力认证
  • 一篇文章带你了解Java发送邮件:使用JavaMail API发送电子邮件的注意事项、发送附件等
  • kubernetes的日志
  • 设计HTML5文本
  • msvcr120.dll丢失怎样修复?总结三个dll修复方法
  • 选择题方法论——颉斌斌
  • 23.8.8 杭电暑期多校7部分题解
  • 《24海南大学835软件工程考研经验贴》
  • 【yolo系列:运行报错AttributeError: module ‘torch.nn‘ has no attribute ‘Mish‘】
  • Leetcode 剑指 Offer II 039. 直方图最大矩形面积
  • SpringBoot案例-部门管理-修改
  • element-ui表格数据为空,图片占位提示
  • C++ STL vector 模拟实现
  • 51单片机学习--红外遥控(外部中断)
  • 后端开发10.规格模块
  • 腾讯出了一个新聊天软件M8
  • C++ QT(一)
  • 微信小程序时钟
  • HttpRunner自动化工具之设置代理和请求证书验证