首页 > 其他分享 >QUIC握手加密过程详解

QUIC握手加密过程详解

时间:2024-09-15 12:20:48浏览次数:13  
标签:公钥 加密 证书 Packet 详解 密钥 QUIC 服务器 客户端

一、 术语解释

1. 公钥:公钥主要用于加密数据。数据一旦用公钥加密,只有对应的私钥才能解密。公钥还用于验证使用相应私钥生成的数字签名,确保数据的完整性和来源的真实性。公钥是可以公开分享的密钥,任何人都可以使用它。

2. 私钥:私钥用于解密用公钥加密的数据。私钥用于生成数字签名,以证明数据的来源和完整性。私钥是必须保密的密钥,只有密钥的所有者才能使用。

3. 证书:指的是数字证书,用于验证一个实体(服务器或客户端)的身份。每个证书都包含一个公钥和数字签名,证书是用来证明这个公钥是有效的、可信的。

4. 证书链:证书链指的是一系列的数字证书,这些证书具有上下级关系,分别为实体证书、中间证书、根证书。证书链的作用是可以通过逐级验证上一级证书的有效性来证明实体证书的有效性,例如可以用上一级证书的公钥来验证下一级证书的数字签名是否正确,如果正确的话那么说明下一级证书是被上一级证书认可的。对于根证书来说,他是自签名的(就是只能通过根证书的公钥来验证这个根证书的签名)一般由广被信任的机构颁发。

  • 实体证书(也称为终端证书或叶子证书):这是证书链的起点,直接属于请求证书的实体(如服务器或客户端)。它包含实体的公钥和一些身份信息。
  • 中间证书:这些证书由更高级别的证书颁发机构(CA)颁发。中间证书用于签名下一级的证书,可以有多个层级。
  • 根证书:这是证书链的终点,由根证书颁发机构(Root CA)颁发。根证书是自签名的,它自己证明自己是可信的

二、 QUIC握手加密过程

1. 客户端发送Initial Packet给服务器,这个Packet是不加密的

2. 服务器收到Initial Packet后,生成一个相应的Initial Packet,这个Packet包括服务器的证书链

3. 客户端收到服务器的Initial Packet后通过自己的证书池验证对方的证书链,并从实体证书中获取服务器的公钥。客户端发送Handshake Packet,并用这个公钥对该Packet进行加密。此外,客户端还会生成一个临时秘钥对,并把这个临时秘钥对中的公钥封装在Handshake Packet中

4. 服务器收到Handshake Packet后通过自己的私钥对这个Packet进行解密,并生成自己的一个临时秘钥对。服务器使用客户端的临时公钥和自己的临时私钥生成一个共享秘钥材料,并通过客户端发来的随机数、服务器随机数和这个共享密钥生成主密钥。最后其临时公钥封装在Handshake Packet发送给客户端

5.客户端收到Handshake后使用自己的私钥解密,获得服务器临时公钥和服务器随机数。通过服务器临时公钥、自己的临时私钥生成和服务器相同的共享密钥材料,并通过这个共享秘钥、客户端随机数和服务器随机数生成主密钥。

6. 当客户端和服务器都有主密钥后,就可以通过主密钥派生出的秘钥进行加密和解密了,派生出的秘钥包括

  • 客户端发送密钥(用于加密从客户端到服务器的数据)。
  • 客户端接收密钥(用于解密从服务器到客户端的数据)。
  • 服务器发送密钥(用于加密从服务器到客户端的数据)。
  • 服务器接收密钥(用于解密从客户端到服务器的数据)

标签:公钥,加密,证书,Packet,详解,密钥,QUIC,服务器,客户端
From: https://blog.csdn.net/xingxinbg/article/details/142133902

相关文章

  • 【Go语言】quic-go实现0-RTT传输
    核心思路:在客户端的tls文件中缓存第一次连接留下来的会话票据,在第二次连接中就可以实现0-RTT。为此,重要的是实现tls.Config.ClientSessionCache这个接口的具体结构体文件目录tlscfg.go代码:这个模块主要用于实现客户端和服务器的tls配置packagetlscfgimport( "crypto......
  • V-By-One协议详解
    V-By-One协议详解V-By-One协议简介V-by-One是一种高速串行接口技术,由日本赛恩电子公司(THineElectronics)开发,主要用于平板显示器的信号传输。它旨在替代传统的LVDS(LowVoltageDifferentialSignaling)技术,提供更高的传输速率和更低的功耗。V-By-One协议特点及优势V-by-One协议......
  • HTTPS的加密流程:保护你的数据传输
    目录1.什么是HTTPS?2.HTTPS的加密流程2.1 客户端发起HTTPS请求2.2 服务器响应并发送证书2.3 客户端验证证书2.4 客户端生成加密密钥2.5 客户端使用服务器的公钥加密密钥2.6 服务器解密密钥2.7 建立加密通道2.8 数据传输2.9 会话结束3.总结在当今这个......
  • python+flask计算机毕业设计基于数据加密的高校奖学金评定系统的设计与实现(程序+开题+
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高校规模的不断扩大和学生数量的激增,奖学金评定工作逐渐成为一项复杂而繁重的任务。传统的奖学金评定方式往往依赖于人工收集、整理和......
  • 2024-09-14:用go语言,给定一个正整数数组 nums,定义一个加密函数 encrypt(x),其将一个整数
    2024-09-14:用go语言,给定一个正整数数组nums,定义一个加密函数encrypt(x),其将一个整数x的每一位数字都替换为x中的最大数字,然后返回加密后的数字。例如,encrypt(523)会返回555,encrypt(213)会返回333。现在需要计算数组中所有元素加密后的和,然后返回这个和。输入:nums=[10,2......
  • 法国的Mistral AI大语言模型详解
    MistralAI概述MistralAI是一家法国人工智能(AI)公司,专注于开发开源大型语言模型。该公司成立于2023年4月,由前Meta平台和GoogleDeepMind的员工创立。MistralAI在AI领域迅速崛起,成为全球领先的开源模型提供商之一。历史背景MistralAI由ArthurMensch、GuillaumeLample和Tim......
  • 马斯克xAI公司的Grok大语言模型详解
    Grok详细介绍Grok是由xAI开发的生成式人工智能聊天机器人,基于大型语言模型(LLM),由埃隆·马斯克发起。该聊天机器人以“具有幽默感”和直接访问X的能力为卖点。目前,Grok正处于测试阶段,仅对XPremium用户开放。背景埃隆·马斯克于2015年与SamAltman共同创立了AI研......
  • 加密解密工具类
    加密解密工具类packagecom.example.modules.util;importjavax.crypto.Cipher;importjavax.crypto.KeyGenerator;importjavax.crypto.SecretKey;importjavax.crypto.spec.SecretKeySpec;importjava.security.SecureRandom;importjava.util.Base64;publ......
  • Python的Scapy库详解
    目录前言一、Scapy简介二、基本功能1.构建数据包2.发送与接收数据包3.捕获数据包三、高级功能1.协议栈与数据包叠加2.网络扫描3.数据包注入与攻击模拟四、应用场景五、总结前言Python的Scapy库是一个强大且灵活的网络数据包处理库,常用于网络安全、渗透测......
  • git命令使用详解——帮你应对各种代码管理情况
        日程使用git,不出错的时候gitpull、gitadd、gitcommit、gitpush、gitrebase等命令,就能覆盖绝大多数工作场景了。但是,实际工作中会遇到些让我们十分棘手的情况,这时候就需要一些不常用但不可少的git命令了,接下来为大家详细介绍下各种git命令:一、初始化仓库......