AWSLC FIPS 30 首个将 MLKEM 纳入 FIPS 1403 验证的密码库

关键要点

AWSLC FIPS 30 获得 NIST 验证,首次支持基于晶格的密钥封装机制MLKEM。MLKEM 为后量子密码算法,可以增强敏感数据的长期保密性。AWSLC 现在成为首个在 FIPS 模块中提供后量子算法支持的开源密码模块。新版本库随着性能提升和新算法的验证,致力于持续满足 FIPS 1403 认证要求。

我们很高兴地宣布 AWSLC FIPS 30 已被纳入 美国国家标准与技术研究院 (NIST) 的 密码模块验证程序 (CMVP) 的在处理模块列表中。此次 AWSLC 的最新验证引入了基于晶格的密钥封装机制MLKEM,这一新标准的后量子密码算法在增强客户工作流的长期保密性方面意义重大,尤其是对于美国联邦政府通信。

这一验证使得 AWS LibCrypto (AWSLC) 成为首个在 FIPS 模块中提供后量子算法支持的开源密码模块。要求 FIPS 验证密码模块的组织如 FedRAMP、FISMA、HIPAA 及其他联邦合规框架现在可以在 AWSLC 中使用这些算法。

迅猛兔加速器电脑版

此次公告是 AWSLC 对于持续验证的新承诺的一部分,旨在获取新的 FIPS 1403 证书。AWSLC 于 2023 年 10 月取得了首个证书,随后于 2024 年 10 月对库的后续版本 AWSLCFIPS 20 进行了认证。在本文中,我们讨论了后量子密码算法 MLKEM 的 FIPS 验证、AWSLC FIPS 20 和 30 现有算法的性能提升,以及新版本 30 的新算法支持。还将介绍如何使用新算法实现混合后量子密码套件以及可以立即配置的选项,以帮助抵御未来的威胁。

AWS

FIPS 后量子密码学

大型量子计算机对当前保护下的公钥密码学数据的长期保密性构成威胁。在所谓的“记录之后解密”攻击中,攻击者在当前记录互联网流量,捕获密钥交换和加密通信。在足够强大的量子计算机可用后,攻击者可以回溯性地通过解决底层困难问题来恢复共享秘密和加密密钥。

MLKEM 是 NIST 正在标准化的新密钥封装机制之一,旨在保护公钥密码学免受量子威胁。它的工作原理与 RSA、DiffieHellman (DH) 或椭圆曲线 DiffieHellman (ECDH) 密钥交换类似,旨在在两个参与方之间建立共享秘密。然而,与 RSA 或 DH 不同的是,MLKEM 使密钥交换基于一个被认为对量子计算机而言难以解决的底层问题。

目前,我们尚不知道如何构建如此大规模的量子计算机。需要进行显著的科学研究才能实现该计算机的构建。然而,通过将后量子算法如 MLKEM引入您的密钥交换协议,可以缓解“记录之后解密”攻击的风险。我们建议采用混合密钥交换方法,结合传统密钥交换方法如 ECDH与 MLKEM,以对抗当前和未来的对手。在本文后面,我们将展示如何今天就可以实现混合后量子密码套件,以防范未来的威胁。

AWSLC FIPS 30 包含 MLKEM 算法的三个参数集:MLKEM512、MLKEM768 和 MLKEM1024。这三个参数集提供了 NIST 指定的不同安全强度级别详见 FIPS 203 [9 Sect 56] 或 后量子安全评估标准。MLKEM768 推荐用于一般用途,MLKEM1024 专为要求更高安全级别或遵守明确指令的应用设计,例如 商业国家安全算法套件 (CNSA) 20,供国家安全系统的所有者和运营商使用。

算法NIST 安全类别公钥 (B)私钥 (B)密文 (B)MLKEM51218001632768MLKEM7683118424001088MLKEM10245156831681568

与 s2ntls 的集成

MLKEM 现在可通过我们开源的 TLS 实现 s2ntls 进行混合密钥交换,支持 TLS 13draftietftlshybriddesign。我们还增加了 TLS 13 中混合 ECDHEMLKEM 密钥协商的支持draftkwiatkowskitlsecdhemlkem,并为 Curve x25519 和 MLKEM768 添加了新的密钥分享标识符。

在 FIPS 140 批准模式下,混合密钥建立的一个组件算法必须是 NIST 批准的机制详细信息请参见 NIST 后量子常见问题。由于 MLKEM 被添加到 NIST 批准算法列表中,现在可以将非 FIPS 标准化算法,如 Curve x25519,包含在混合密码套件中。通过将您的 TLS 密码套件配置为使用 MLKEM768 和 x25519draftkwiatkowskitlsecdhemlkem,您现在可以首次在 FIPS 验证的密码模块中使用 x25519,这可以通过 AWSLC 提供的高度优化和功能验证的 Curve x25519 实现来实现更高效的密钥交换。

新算法和新实现

AWSLC FIPS 持续验证的两大核心部分是将新算法作为批准的密码服务纳入并提供现有算法的新实现,以提高性能和功能的正确性。

新算法

我们致力于不断验证新算法,以便构建者可以通过引入最新修订的批准加密算法并支持新的密码原语,来采用 FIPS 验证的密码。验证最新标准修订中的新算法有助于确保我们的密码工具包提供符合全球认可标准的高保证实现。

在 AWSLC FIPS 30 中,我们将最新版本的安全散列算法标准 SHA3 添加到模块中。SHA3 系列是一种密码原语,用于支持各种算法。在 AWSLC FIPS 30 中,我们整合了与 SHA3 及后量子算法 MLKEM 相结合的 ECDSA 和 RSA 签名生成及验证。MLKEM 在 AWSLC 中调用我们经过 FIPS 验证的 SHA3 函数,使得 SHA3 和 SHAKE 哈希过程的实现得到优化。这意味着,随着我们不断优化 AWSLC 中的 SHA3 实现,使用这一原语的算法例如 MLKEM将继续提高性能。

EdDSA 是基于椭圆曲线的数字签名算法,使用的是曲线 Ed25519。它被加入到 NIST 更新后的数字签名标准DSSFIPS 1865 中。这个签名算法现在作为 AWSLC 30 FIPS 模块的一部分提供。至于密钥协商,单步密钥派生函数SSKDF用于依据共享秘密SP 80056Cr2派生密钥,提供基于摘要和 HMAC 的规范。例如,它可用于从 KMS 的 ECDH 产生的共享秘密中派生密钥。还可以使用基于 HMAC 的计数器模式的密钥基础密钥派生函数KBKDFSP 800108r1 从原始密钥中派生出更多密钥。

性能改善

我们专注于提高广泛应用于传输协议如 TLS 协议的公钥密码算法的性能。例如,在 Graviton2 上,2048 位长度的 RSA 签名速度提高了 81,3072 位提高了 33,而 4096 位则提高了 94,并增加了主要操作的功能正确性形式验证。借助从第 3 代英特尔至强处理器开始可用的英特尔 AVX512 整数融合加法IFMA指令,英特尔开发人员贡献了一个 RSA 实现,该实现使用这些指令以及更广泛的 AVX512 寄存器,速度是现有实现的两倍。

我们还将 EdDSA 签名的吞吐量提高了平均 108,而验证性能提高了 37。这一平均值是在 Graviton2、Graviton3 和 Intel Ice Lake英特尔至强铂金 8375C CPU三种环境下计算得出的。通过集成核心操作的汇编实现,这一性能提升得以实现。此外,通过对核心操作的精心恒定时间实现,每一项操作都得到了功能性验证。

在接下来的图 1 中,我们重点展示了相较于 AWSLC FIPS 10 在版本 20 和 30 中的性能提升百分比。版本 20 中所取得的改进在 30 中得以保持,并未在图中重复。同时,图中还包含了对称密钥改进的内容。在 AES256GCM 中,广泛应用于 TLS 中加密会话建立后的通信,在 Intel Ice Lake 和 Graviton4 中加密 16 KB 消息的速度平均提高了 115。在 AES256XTS 中,为磁盘存储加密 256 B 输入的速度在 Intel Ice Lake 上提升了 360,在 Graviton4 上提升了 90。

如何今日使用 MLKEM

您可以通过启用 X25519MLKEM768 和 SecP256r1MLKEM768 进行密钥交换,对 s2ntls 和 AWSLC TLS 库进行配置,为后量子安全启用混合 MLKEM。目前,我们已通过各自的 TLS 配置 API 在 AWSLC libssl 和 s2ntls 中集成了这两种混合算法。要协商 TLS 连接,请使用以下命令:

bash

AWSLC 客户端 CLI 示例

/awslc/build/tool/bssl sclient curves X25519MLKEM768SecP256r1MLKEM768X25519 connect

S2Ntls 客户端 CLI 示例

/s2n/build/bin/s2nc c defaultpq i

结论

在本文中,我们描述了通过我们的开源密码库 AWSLC 提供给客户和产品的持续开发、优化和验证工作。我们引入了 FIPS 验证的后量子算法,并提供配置选项,以便今日即可开始使用这些算法来保护免受未来的威胁。

AWSLCFIPS 30 是我们承诺持续验证 AWSLC 新版本的一部分,以便将新算法添加到符合 FIPS 边界内的规范。此外,我们还将提升现有算法的性能和正式验证标准。通过这一承诺,我们继续支持 Rust、Java 和 Python 开发者的广泛社区,提供集成到 AWS Libcrypto for Rust (awslcrs) 和 ACCP 20 库 的能力。我们还促进了与 CPython 的集成,方便您构建基于 AWSLC 进行 Python 标准库的所有加密操作。我们也为 rustls 提供了 FIPS 支持的能力。

如果您对本文有反馈,请在评论部分提交您的意见。如果您有关于本文的问题,请联系 AWS 支持。

Jake MassimoJake 是 AWS 密码团队的应用科学家。他的工作与全球的密码社区接轨,通过参与国际会议、学术文献和标准组织,旨在影响后量子云规模密码技术的采用。最近,他的重点是开发 AWS 密码库以支持后量子迁移。

Nevine EbeidNevine 是 AWS Cryptography 的高级应用科学家,专注于算法开发、机器级优化和 AWSLC 的 FIPS 1403 要求。在加入 AWS 之前,Nevine 曾在汽车和移动安全应用中研究和开发各种密码库和协议。

标签

合规、密码学、联邦信息处理标准、FIPS、FIPS 140、FIPS 1402、NIST、开源、后量子、安全博客

订阅邮箱