谷歌的后量子密码学威胁模型

news2024/11/19 6:25:29

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1521365.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux下Arthas(阿尔萨斯)的简单使用-接口调用慢排查

使用环境 k8s容器内运行了一个springboot服务,服务的启动方法是main()方法 下载并启动 arthas curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar选择应用 java 进程 就一个进程org.apache.catalina.startup.Bootstrap,输…

Unity PS5开发 天坑篇 之 申请开发者与硬件部署01

腾了好几天终于把PS5开发机调试部署成功, 希望能帮到国内的开发者, 主机游戏PlayStation/Nintendo Switch都是比较闭塞的,开发者账号是必须的。 开发环境有两个部分,一是DEV Kit 开发机, TEST Kit测试机两部分组成,二是Unity的支持库(安装后…

Android的三种动画详解(帧动画,View动画,属性动画)

Android的三种动画详解(帧动画、View动画、属性动画)_android动画效果大全-CSDN博客 1、帧动画 缺点是:占用内存较高,播放的是一帧一帧的图片,很少使用。 顺序播放预先定义的图片,类似于播放视频。 步骤…

数据结构 第3章:栈与队列

文章目录 1. 栈1.1 栈的基本概念1.2 栈的基本操作1.3 栈的顺序存储实现1.4 栈的链式存储实现 2. 队列2.1 队列的基本概念2.2 队列的基本操作2.3. 队列的顺序存储实现2.4 队列的链式存储实现2.5 双端队列 3. 栈与队列的应用3.1 栈在括号匹配中的应用3.2 栈在表达式求值中的应用3…

k8s的pod和svc相互访问时网络链路解析

k8s的pod和svc相互访问时网络链路解析 1. k8s环境中pod相互访问1.1. k8s中pod相互访问的整体流程1.2. k8s的相同机器的不同pod相互访问1.3. k8s的不同机器的不同pod相互访问 2. k8s访问svc2.1 nat操作2.2 流量进入到后端pod 3. 疑问和思考3.1 访问pod相互访问为什么不用做nat?…

【Linux】从零开始认识进程 — 前篇

我从来不相信什么懒洋洋的自由。我向往的自由是通过勤奋和努力实现的更广阔的人生。。——山本耀司 从零开始认识进程 1 认识冯诺依曼体系2 操作系统3 进程3.1 什么是进程???3.2 进程管理PCB 3.3 Linux中的进程深入理解 3.4 进程创建总结 送给…

【vue baidu-map】实现百度地图展示基地,鼠标悬浮标注点展示详细信息

实现效果如下&#xff1a; 自用代码记录 <template><div class"map" style"position: relative;"><baidu-mapid"bjmap":scroll-wheel-zoom"true":auto-resize"true"ready"handler"><bm-mar…

JVMJava虚拟机

JVM的内存区域 程序计数器&#xff1a; 字节码解释器通过改变程序计数器来依次读取指令&#xff0c;从而实现代码的流程控制&#xff0c;如&#xff1a;顺序执行、选择、循环、异常处理。 在多线程的情况下&#xff0c;程序计数器用于记录当前线程执行的位置&#xff0c;从而当…

python—gui-计算图像像素两点间距离

代码&#xff1a; import tkinter as tk from tkinter import ttkdef create_gui():# 创建Tkinter窗口root tk.Tk()# 设置窗口标题root.title("显示图片")# 图片文件路径image_path path_to_your_image.jpg# 加载图片img load_image(image_path)# 创建标签&#…

产品推荐 - ALINX XILINX FPGA开发板 Artix-7 XC7A100T-2FGG484I

01开发板介绍 此款开发板采用核心板扩展板的模式&#xff0c;方便用户对核心板的二次开发利用。FPGA使用的是Xilinx公司的ARTIX-7系列的芯片&#xff0c;型号为XC7A100T-2FGG484I。在核心板使用了2片MICRON公司的MT41J256M16HA-125 DDR3芯片&#xff0c;组合成32bit的数据总线…

联想拯救者刃7000K2024游戏电脑主机仅售6999元

这款联想拯救者刀锋7000K 2024游戏电脑主机在京东促销中售价仅为6999元&#xff0c;相比原价7499元有相当大的折扣。 这是一款功能强大的游戏电脑&#xff0c;配备了全新的 15-14400(F) 处理器和 RTX™ 4060 显卡&#xff0c;以及 16GB DDR5 内存和 1TB 固态硬盘。 外观方面&a…

STL_vector简化模拟—详解深层次深拷贝问题

文章目录 迭代器框架和成员变量基础成员函数容量相关的成员函数关于深拷贝中的深拷贝问题operator[ ]重载和内容修改函数类模板内的嵌套类型全部代码 根据原码看出vector的成员并不像string类的一个指针加一个size和一个capacity。 而是三个指针&#xff0c;_start , _finish ,…

IntelliJ IDEA 面试题及答案整理,最新面试题

IntelliJ IDEA中的插件系统如何工作&#xff1f; IntelliJ IDEA的插件系统工作原理如下&#xff1a; 1、插件架构&#xff1a; IntelliJ IDEA通过插件架构扩展其功能&#xff0c;插件可以添加新的功能或修改现有功能。 2、安装和管理&#xff1a; 通过IDEA内置的插件市场下载…

【海贼王的数据航海】排序——直接选择排序|堆排序

目录 1 -> 选择排序 1.1 -> 基本思想 1.2 -> 直接选择排序 1.2.1 -> 代码实现 1.3 -> 堆排序 1.3.1 -> 代码实现 1 -> 选择排序 1.1 -> 基本思想 每一次从待排序的数据元素中选出最小(或最大)的一个元素&#xff0c;存放在序列的起始位置&…

springCloudeAlibaba的使用

父pom文件&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.o…

【Docker篇】数据卷相关操作

文章目录 &#x1f388;前言&#x1f354;数据卷&#x1f6f8;操作命令⭐创建一个数据卷&#xff0c;并查看数据卷在宿主机的目录位置 &#x1f339;挂载数据卷 &#x1f388;前言 在前面文章的nginx案例中&#xff0c;修改nginx的html页面时&#xff0c;需要进入nginx内部。并…

k8s-高可用etcd集群 26

reset掉k8s2&#xff0c;k8s3&#xff0c;k8s4节点 清理完网络插件后重启 快速创建一个k8s集群 修改初始化文件 添加master节点 备份 查看etcd配置 启动docker 将etcd二进制命令从容器拷贝到本机 备份 查看快照状态 删除集群资源 恢复 停掉所有的核心组件 从快照恢复 重启所有…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:StepperItem)

用作Stepper组件的页面子组件。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 支持单个子组件。 接口 StepperItem() 属性 参数名参数类型参数描述prevLabelstring设置左侧文本按钮内…

python 统计中国观鸟记录中心官网已观测的鸟类种类

python 统计中国观鸟记录中心官网已观测的鸟类种类 中国观鸟记录中心网站&#xff1a;https://www.birdreport.cn/ 先下载官网 Excel 文件 文件放置目录如下&#xff1a; home dataset xxx.xlsxxxx.xlsxxxx.xlsx Excelgrep.py &#xff08;进行文件内容提取的程序&#xff…

day-21 前 K 个高频元素

思路&#xff1a;用ans[]存储频次最高的k个元素&#xff0c;用anslen[]存储对应的索引&#xff0c;将nums进行排序依次统计每个元素出现次数&#xff0c;再判断是否需要对ans[]和anslen[]进行替换&#xff0c;最后ans即为答案 注意点&#xff1a;遍历结束后&#xff0c;还需要…