谷歌的后量子密码学威胁模型
1. 引言
若现在不使用量子安全算法来加密数据,能够存储当前通信的攻击者最快十年内就能对其解密。这种先存储后解密的攻击是当前采用后量子密码学 (post-quantum cryptography,PQC) 背后的主要动机,但其他未来的量子计算威胁也需要一个深思熟虑的计划——将当前的经典密码算法迁移到PQC。
本文探讨优先考虑量子威胁的主要考虑因素是:
- 所讨论的量子攻击的可行性。
- 存在先存储后解密攻击。
- 需要具有数十年使用寿命的固定公钥的应用场景。
- 需 对可能需要大量重新设计才能与后量子算法配合使用的系统进行探索性研究,特别是在需要更广泛的行业协作的情况下。
量子计算机主要通过两种算法威胁密码学:
- 用于分解整数和求解离散对数的 Shor 算法
- 可反转黑盒函数的 Grover 搜索算法。
如前所述,确定优先级的一个主要考虑因素是:
- 若对手将来能够访问量子计算机,那么当前的系统是否已经面临风险。现在存储密文并稍后解密是一个典型的例子,需要在量子计算机出现之前就部署 PQC。
基于此,可将密码学大致分为四种不同的技术:
- 非对称加密和密钥协商:使用私钥/公钥对建立可用于对称加密的密钥。受 Shor 算法影响,容易受到“先存储后解密”攻击。
- 数字签名:使用私钥/公钥对来验证数据并提供不可否认性。受 Shor 算法影响,但不容易受到“先存储后解密”攻击。
- “Fancy”密码学:此类取决于特定算法和用例,但许多隐私保护技术(如 盲签名、 Oblivious pseudorandom function, ORPF等)将受到 Shor 算法的影响,且部分容易受到“先存储后解密”的影响。其中许多技术需要进一步研究。建议仔细评估量子威胁对这些计划的影响。
- 对称密码学:使用单个密钥来加密和验证数据。目前认为对称密码学不会在所有实际用途上受到量子计算机的影响。Grover 算法可用作攻击手段,但目前认为即使对于medium-term量子计算机也是不可行的。(详情参见2017年论文Reassessing Grover’s Algorithm。)
2. 密码学算法及混合部署
NIST一直致力于标准化新的量子安全算法,以解决非对称加密和密钥协议以及数字签名问题。相关算法有:
算法 | 类型 | 公钥大小 | 密文/签名大小 |
---|---|---|---|
ECDH(经典算法) | 密钥协商 | 32字节 | 32字节 |
ECDSA(经典算法) | 数字签名 | 32字节 | 64字节 |
Kyber-768/ML-KEM-768 | 密钥协商 | 1184字节 | 1088字节 |
Dilithium3/ML-DSA-65 | 数字签名 | 1952 字节 | 3309字节 |
SPHINCS±128s/SLH-DSA-128s | 数字签名 | 32字节 | 7856 字节 |
NIST 计划发布更多密钥协商和签名标准,详情见:
- Post-Quantum Cryptography PQC Round 4 Submissions
- Post-Quantum Cryptography: Digital Signature Schemes
以便制定基于更广泛的数学假设的方案,并允许在公钥大小和密文/签名大小之间进行不同的权衡。
虽然目前提出的 PQC 算法在过去十年中已接受了大量的密码分析,但它们仍然不如经典密码学成熟,建议是以混合方式来使用经典密码学和PQC,这要求攻击者同时破解经典算法和后量子算法。
3. 密码学应用场景
经典密码学广泛应用于现代软件和基础设施中。后量子密码学将影响许多现有的部署。接下来将针对不同的用例给出了建议,但请注意,标准仍在制定中,这些标准将成为使用哪种算法的更明确的指导。
3.1 传输中的加密
传输中的加密主要包括 TLS、SSH、安全消息传递(如RCS, Messages End-to-End Encryption Overview和 MLS中使用的 Signal )以及 Google 的 ALTS。这里的主要威胁是先存储后解密。
因此,部署像 Kyber(ML-KEM、FIPS 203)这样的 PQC 密钥封装方案迫在眉睫。
为了减轻这种威胁:
- 只需要在初始密钥协议中添加一个临时 PQC 密钥即可。
- 长期 PQC 密钥(如公共或私有 CA)属于公共密钥基础设施,并且需要社区达成共识才能进行有意义的部署。
传输中加密的好消息是堆栈数量有限。与 Google 最相关的有:
- TLS, Protecting Chrome Traffic with Hybrid Kyber KEM
- SSH, Secure Shell (SSH) Key Exchange Method Using Hybrid Streamlined NTRU Prime sntrup761 and X25519 with SHA-512: sntrup761x25519-sha512
- Signal, The PQXDH Key Agreement Protocol
- ALTS, Securing tomorrow today: Why Google now protects its internal communications from quantum threats
在撰写本文时,这些都已开始推出 PQC 算法。传输中加密所需的密钥的短暂性,使得这个用例虽然最紧迫,但出于技术和社会原因也是相对最简单的。
当前对传输中加密的建议是使用 Kyber768 与 X25519 或 P256 混合进行密钥协商。
3.2 固件签名
固件签名用于保护 安全启动信任链的根。这些签名的公钥通常必须被刻录到硅芯片中,或以其他方式防止被更改和篡改。
这使得在大多数情况下无法更改此用例的签名方案。对于寿命长达十年或更长的设备,最终会遇到与“先存储后解密”攻击类似的情况,现在需要实施量子安全算法,因为无法稍后对其更改。由于加密算法的硬件实现通常涉及较长的生产时间,这使得情况变得更加复杂。
当前对固件签名的建议是使用基于无状态哈希的签名方案 SPHINCS+(FIPS 205、SLH-DSA)。
3.3 软件签名
软件签名与固件签名类似,需要保证安全启动并使部署能够防止二进制文件和源代码被篡改。与固件签名不同,软件签名的公钥通常可以更新,并依赖较低级别的签名来确保真实性。最重要的是,二进制文件和源代码通常都相当大,并且签名和验证都不是特别受资源限制。这为该应用场景提供了最大的灵活性和相对宽松的时间表。
该应用场景正在大量开发,尽管时间表相对宽松,但将 PQ 签名包含在当前正在编写的标准中可能是有意义的。
对此,当前的建议是:
- 使用 Dilithium3(FIPS 204、ML-DSA)与 ECDSA/EdDSA/RSA 混合,或使用 SPHINCS+(FIPS 205、SLH-DSA)。
3.4 公钥基础设施
公钥基础设施是用于为传输中的加密提供真实性以及机器和人员的可靠身份的基础设施。
PKI 通常依赖于证书链,即带有附加签名的公钥,该签名可由链中较高级别的密钥验证。这使得当前形式的 PKI 极易受到后量子方案规模增加的影响。单个 Dilithium3 签名 + 公钥大于 5kB,使得任何带有中介的 PKI 部署都非常昂贵。特别是对于 Web PKI,当数据包增长超过 10 - 30 kB 时,某些设备就会开始出现故障(详情见2021年11月8日博客Sizing Up Post-Quantum Signatures)。这个问题可能是可以解决的,但无论如何都会造成严重的性能损失。
有几种替代方法可以简单地用量子安全签名替换经典签名,这可以解决 PKI 的性能问题。目前正在寻求在这个领域进行试验,以收集数据以提供更可靠的建议。
3.5 token
数字签名的另一个广泛使用是无状态非对称令牌,如JSON Web Token(JWT)。使用对称加密技术或使用状态技术作为纵深防御措施的令牌不会受到量子威胁的影响。对于非对称令牌来说,主要困难是它们经常带来的大小限制。如,应该保存为 cookie 的令牌对于整个令牌可用的上限为 4096 字节。若以二进制编码,Dilithium3 签名将占用其中的 3309 个字节,而在采用 Base64 编码时,则需要4412 个字节将不符合此要求。
无状态令牌具有独立的安全问题,转向有状态令牌是谨慎的做法,只是为了确保系统更健壮。NIST 竞赛的第二个入口中的一些方案具有非常小的签名,但却又很大的公钥——可为解决令牌场景的另一种工具。
建议是:
- 尽可能使用有状态令牌,因为它们具有额外的安全优势。
此外,希望在这个领域进行试验,收集数据以获得更可靠的建议。
3.6 其它
还有一些不属于以上分类的其它应用场景,如:
- 在某些情况下,文档必须进行非对称加密,与传输中的加密分开。该用例主要包括通过 S/MIME 加密和签名的电子邮件,但也包括使用 HPKE 或 PGP 的各种协议,或直接使用数字签名。
另一种更重要的非对称加密协议是 HSM 的密钥导入。
这些用例对密文大小不太敏感,因此将 Kyber (FIPS 203/ML-KEM) 与 ECDH/X25519 混合使用应该不会带来太多挑战。特别是对于 S/MIME,多收件人设置可能会产生额外的困难。
与上面讨论的 HSM 相关但不等同的另一个用例是硬件信任根,如安全密钥或 TPM,它们在硬件限制方面面临着自己的困难。
隐私保护和其他更奇特的方案将需要额外的研究才能安全部署。
4. 威胁者和时间表
缺乏量子安全机密性和缺乏量子安全真实性都可能被威胁者利用。虽然对机密性的威胁更为直接,但对真实性的威胁往往影响范围更广,更具破坏性。
4.1 威胁者:国家
国家最有可能首先实现与密码相关的量子计算机。他们很可能会尝试以可否认的方式部署量子计算机,以避免向对手透露其能力。国家最有可能针对其他国家客户的云部署,并可能针对政治异见人士和其他监视目标。国家也可能出于军事或经济原因而针对谷歌或其他基础设施提供商。
虽然构建与密码相关的量子计算机很困难,但一旦机器建成,破解任何给定的公钥应该不会太昂贵。考虑到传输密钥加密的短暂性,最有可能的第一个目标将是 PKI 等所需的更多静态密钥,以及破坏被认为高度感兴趣的存储通信。随着量子计算机变得越来越便宜,它们可能会瞄准越来越多的受害者。
一些人担心国家可能会试图对 NIST 发布的算法进行后门或削弱,就像过去在 Dual_EC_DRBG, Dual EC: A Standardized Back Door的情况下所做的那样。为了消除此类担忧,NIST 标准是在 公开竞赛中设计的。此外,如果大多数部署都是混合方式,那么在量子计算机问世之前,单独破解 PQC 算法将无济于事,这让公众有几年的时间来发现任何潜在的后门。
4.2 威胁者:内部威胁
谷歌和其他公司正在致力于构建量子计算机,该计算机最终可能与密码学相关。与其他珍贵技术一样,内部威胁仍然是一个媒介。为此,公司需要采取必要的预防措施来保护他们的皇冠上的宝石,以避免被国家威胁和其他有动机的攻击者盗窃或利用。
4.3 威胁者:勒索软件和其他出于经济动机的威胁者
对于出于经济动机的威胁者来说,主要考虑因素是量子计算机的可用性。如果量子计算机的用例仍然有限,那么对于出于经济动机的威胁者来说,访问它们可能会太困难。如果它们可以直接或通过云部署以相对便宜的价格获得,很可能会看到它们通过利用尚未迁移到量子安全协议的领域来提取赎金或进行工业间谍活动。
4.4 威胁者:监管环境
PQC 已成为美国多项行政命令的热门话题,要求美国政府努力部署量子安全密码技术。CNSA 2.0, Announcing the Commercial National Security Algorithm Suite 2.0等监管框架 要求在相当短的时间内使用 PQC,FIPS 等其他合规框架也将很快跟进。除美国之外, 德国BSI 和 法国ANSSI 也一直活跃在这一领域,并开始要求提供 PQC 路线图以进行长期部署。
4.5 量子威胁时间表
全球风险研究所, 2023 Quantum Threat Timeline Report在上图中总结出所拥有的量子计算机风险的最佳总体时间线估计 。
根据这个时间表,并得到谷歌量子计算团队 Google Quantum AI的证实,与密码相关的量子计算机的主要风险是在 10 到 15 年的时间范围内。我们预计到 2030 年该领域将取得显着进步,这应该作为时间表的一个良好的中点检查。
不过,Steve Weis 2024年3月12日twitter Google’s threat model for post-quantum cryptography中指出,其认为谷歌评估“与加密相关的量子计算机的主要风险在 10 到 15 年的时间范围内”的可能性不大。需要增加约 4-5 个数量级的量子位,并将错误率降低约 2 个数量级。但不是每两年就有 10Xing 量子位。
5. 结论
尽管距离密码学相关的量子计算机的普及还有很长的时间,希望通过本文给出的概述能够帮助了解哪些领域面临的风险最大,以及目前应该开始关注的地方。
参考资料
[1] Steve Weis 2024年3月12日twitter Google’s threat model for post-quantum cryptography
[2] LANDSCAPE OF QUANTUM COMPUTING IN 2023
[3] 2024年3月11日博客 Google’s Threat model for Post-Quantum Cryptography
相关文章:

谷歌的后量子密码学威胁模型
1. 引言 若现在不使用量子安全算法来加密数据,能够存储当前通信的攻击者最快十年内就能对其解密。这种先存储后解密的攻击是当前采用后量子密码学 (post-quantum cryptography,PQC) 背后的主要动机,但其他未来的量子计算威胁也需要一个深思熟…...

机器人在果园内行巡检仿真
文章目录 创建工作空间仿真果园场景搭建小车模型搭建将机器人放在仿真世界中创建工作空间 mkdir -p ~/catkin_ws/src cd ~/catkin_ws仿真果园场景搭建 cd ~/catkin_ws/src git clone https://gitcode.com/clearpathrobotics/cpr_gazebo.git小车模型搭建 DiffBot是一种具有两个…...
蓝桥杯算法基础(14):十大排序算法(归并排序)c语言版
归并排序 基于分而治之的思想,拿两个已经有序的序列重新组合成一个新的有序序列. 这是一个简单的合并函数,需要两个序列都有序 //默认a和b数组都是有序的 //temp为一个数组的首地址 void mergeSort(int a[],int,alen,int b[],int blen,int* temp){int …...

力扣刷题(DAY09-DAY11)
Day09 0958. 二叉树的完全性检验 知识点:完全二叉树:在一棵完全二叉树中,除了最后一层外,所有层都被完全填满,并且最后一层中的所有节点都尽可能靠左。最后一层(第 h 层)中可以包含 1 到 个节点…...
IPC之管道
什么是管道? 管道的本质是操作系统在内核中创建出的一块缓冲区,也就是内存 管道的应用 $ ps aux | grep xxx ps aux 的标准输出写到管道,grep 从管道这块内存中读取数据来作为它的一个标准输入,而且 ps 和 grep 之间是兄弟关系&a…...

VUE-组件间通信(二)$emit
$emit 1、单向绑定 子组件向父组件传值 2、使用示例 父组件 <template><div id"app"><!-- 监听自定义触发事件 emitInvokeEvents--><SonDemo emitInvokeEvents"fatherFunction"></SonDemo></div> </template&…...
java 程序连接 redis 集群 的时候报错 MUTLI is currently not supported in cluster mode
找了半天找不到,为什么国内文章环境是真的差, redis 集群不支持事务,而你的方法上面估计使用了 spring 的事务导致错误具体解决: Transactional(propagation Propagation.NOT_SUPPORTED)public <T> void removeMultiCacheMapValue…...

AVP-SLAM:自动泊车系统中的语义SLAM_
AVP-SLAM:自动泊车系统中的语义SLAM 附赠最强自动驾驶学习资料:直达链接 ●论文摘要 在自动代客泊车系统中车辆在狭窄且拥挤且没有GPS信号的停车场中进行导航,具备准确的定位能力是至关重要的。传统的基于视觉的方法由于在停车场中由于缺少…...

PHP反序列化--pop链
目录 一、了解pop链 1、pop链: 2、pop链触发规则: (1)通过普通函数触发: (2)通过魔术方法触发: 3、pop链魔术方法例题: 一、了解pop链 1、pop链: pop链…...
单片机中的几种周期(振动/时钟,状态,机械,指令周期)表示的含义(51为例)
几种周期含义及个人理解描述 参考:短文,参考,百度 个人理解简述:对于几个周期性来说,可以认为是小单位的时间组合成了长时间。就像把一个数据赋值,这个是简单的一个机械周期能完成的动作,但需要…...

Spring Boot+Vue前后端分离项目如何部署到服务器
🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…...
【学习总结】Ubuntu中vscode用ROS插件调试C++程序
1、教程 参考博客: 【ROS】 在VScode中 ROS Debug 配置方法非常详细版 关于launch文件的配置: launch.json {"version": "0.2.0","configurations": [{"name": "ROS: Launch","request"…...

html--蝴蝶
<!DOCTYPE html> <html lang"en" > <head> <meta charset"UTF-8"> <title>蝴蝶飞舞</title> <link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.cs…...
线程的 sleep()方法和 yield()方法有什么区别?为什么 Thread 类的 sleep()和 yield ()方法是静态的?
该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 线程的 sleep()方法和 yield()方法有什么区别 sleep()方法: sleep()方法使当前线程进入休眠状态,即暂停执行一段时间。它是静态方法,属于Thread类,调用…...

Java进阶 Maven基础
资料格式 配置文件 com.itheima Java代码 Statement stat con.createStatement(); 示例 com.itheima 命令 mvn test - Maven简介 传统项目管理状态分析 Maven 是什么 Maven的本质是一个项目管理工具,将项目开发过程抽象成一个项目对象模型(POM&…...
Spring Boot(六十八):SpringBoot 整合Apache tika 实现文档内容解析
1 Apache Tika 介绍 Apache Tika 是一个开源的内容检测和分析框架,由Apache软件基金会开发和维护的顶级项目。它可以从各种格式的文件中提取元数据和文本内容。Tika非常适合处理全文搜索、内容分析、翻译、内容提取等需要大量处理和分析文档内容的任务。Apache Tika提供了多种…...

jQuery+CSS3自动轮播焦点图特效源码
jQueryCSS3自动轮播焦点图特效源码,源码由HTMLCSSJS组成,双击html文件可以本地运行效果,也可以上传到服务器里面 下载地址 jQueryCSS3自动轮播焦点图特效源码...

面试经典150题(114-118)
leetcode 150道题 计划花两个月时候刷完之未完成后转,今天完成了5道(114-118)150 gap 了一周,以后就不记录时间了。。 114.(70. 爬楼梯) 题目描述: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不…...

HTML表单标签详解:如何用HTML标签打造互动网页?
在互联网的世界中,表单是用户与网站进行互动的重要桥梁。无论是注册新账号、提交反馈、还是在线购物,表单都扮演着至关重要的角色。在网页中,我们需要跟用户进行交互,收集用户资料,此时就需要用到表单标签。 HTML提供…...

Web 服务器-Tomcat
文章目录 Web服务器一、Tomcat简介二、基本使用三、在IDEA中创建Maven Web项目四、在IDEA中使用Tomcat Web服务器 一、Tomcat简介 二、基本使用 三、在IDEA中创建Maven Web项目 四、在IDEA中使用Tomcat...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...

uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...

实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...