转载链接:https://mp.weixin.qq.com/s/aWXzPTWhxFpJVP1s0iwAtw

2024年9月9日,微软(Microsoft)在其博客中宣布,已开始在其开源核心加密库SymCrypt中引入后量子算法的支持。目前,微软已经发布了包含ML-KEMXMSS算法的SymCrypt更新,并计划在接下来的几个月内推出其他算法。微软表示,这是他们为迎接量子时代并帮助客户防范未来量子威胁所迈出的重要一步。

SymCrypt是什么?

SymCrypt是Microsoft的主要加密库,用于Azure、Microsoft 365、Windows 11、Windows 10、Windows Server 2025、Windows Server 2022、Azure Stack HCI和 Azure Linux等产品和服务。这些产品和服务使用SymCrypt为电子邮件安全、云存储、Web浏览、远程访问和设备管理等场景提供加密安全。

SymCrypt通常使用对称和非对称算法为加密、解密、签名、验证、哈希和密钥交换提供一致的接口。该库于2006年开始提供操作和算法,开发人员可以使用它们在他们创建的应用中安全地实现安全加密、解密、签名、验证、散列和密钥交换。它旨在实现跨多个平台和架构的快速、安全和可移植性。在Windows操作系统中,SymCrypt加密库嵌入在经过多次FIPS 140验证的加密基元库 (bcryptprimitives.dll和cng.sys) 。SymCrypt还作为基于Linux的操作系统的加密模块经过了FIPS 140验证。

PQC算法

2024年8月13日,NIST 发布首批 3 个最终确定的后量子加密标准:

其中:

  • FIPS 203,旨在作为通用加密的主要标准。它的优点之一是双方可以轻松交换的相对较小的加密密钥,以及它的运行速度。该标准基于 CRYSTALS-Kyber 算法,该算法已更名为 ML-KEM,是 Module-Lattice-Based Key-Encapsulation Mechanism 的缩写。
  • FIPS 204,旨在作为保护数字签名的主要标准。该标准使用 CRYSTALS-Dilithium 算法,该算法已更名为 ML-DSA,即 Module-Lattice-Based Digital Signature Algorithm 的缩写。
  • FIPS 205,也是为数字签名设计的。该标准采用 Sphincs+ 算法,该算法已更名为 SLH-DSA,即无状态基于哈希的数字签名算法的缩写。该标准基于与 ML-DSA 不同的数学方法,旨在作为 ML-DSA 被证明易受攻击的备用方法。

将PQC标准引入SymCrypt

微软表示,随着NIST发布首批后量子加密标准,首先已经ML-KEM(FIPS 203)算法引入 SymCrypt

在接下来的几个月内,微软还将集成基于格的数字签名方案 ML-DSA(FIPS 204)和基于无状态哈希的签名方案 SLH-DSA(FIPS 205)

此外,NIST于2020年发布了SP 800-208指南,推荐具有状态哈希的签名方案,这些方案能够抵御量子计算威胁。NIST指出,这类算法并不适用于所有场景,因为其安全性依赖于对状态的严格管理,但在固件签名等特定应用中极为有效。

根据该建议,微软已将扩展的Merkle签名方案 (XMSS) 添加至SymCrypt,并计划在不久后引入 Leighton-Micali 签名方案(LMS)及其他算法。

“PQC算法【抗量子密码算法】经过NIST精心挑选,具备高安全性、高性能以及良好的兼容性。这些算法经过优化,提升了速度和效率,并通过了严格的安全性和稳健性测试。多个行业标准组织正在积极推动这些算法的应用,以确保其兼容现有标准和协议,如传输层安全性(TLS)、安全套接字外壳(SSH)和互联网协议安全性(IPSec)。同时,它们还能够与经典算法,如RSA、椭圆曲线Diffie-Hellman(ECDH)和椭圆曲线数字签名算法(ECDSA)在混合模式下共存。”微软强调,随着PQC标准的不断发展,他们将进一步将其他算法引入SymCrypt,以确保合规性、安全性和兼容性。

在Windows平台上,建议通过Cryptography API: Next Generation (CNG)来使用SymCrypt,而在Linux平台上,用户可以选择直接调用SymCrypt API,或通过OpenSSL的SymCrypt引擎(SCOSSL)或SymCrypt Rust Wrapper来使用。

在接下来的几个月内,这些接口将增加对PQC算法的支持,使客户能够在各自的环境和应用程序中进行测试和实验。

使用PQC算法保护TLS通信是一个快速发展的领域。虽然NIST算法的最终确定标志着这一领域的重大进展,但要实现广泛应用,仍需完成量子安全密钥交换和量子安全签名认证这两个关键标准。

微软表示,他们正在与IETF密切合作,开发并标准化这些关键标准,适用于TLS和其他IETF协议。

随着这些标准的最终敲定,微软将在Windows TLS堆栈(Schannel)和Linux上的OpenSSL SymCrypt引擎中提供这些标准。

此外,微软首席产品经理Aabha Thipsay强调:“PQC 算法为密码学的未来提供了一种有希望的解决方案,但它们也有一些缺点。例如,与传统算法相比,这些算法通常需要更大的密钥大小、更长的计算时间和更多的带宽。因此,在实际应用中实施PQC需要仔细优化并与现有系统和标准集成。

未来展望

微软表示,PQC算法仍处于较新的阶段,因此不应将第一代PQC算法视为最终解决方案,而应把它视作一个不断发展的领域。

这突显了“加密敏捷性”的重要性,即设计能够适应不同算法的解决方案,或随着PQC标准的发展而升级到未来算法。

微软提倡构建加密敏捷的解决方案,并推广使用混合PQC操作模式的解决方案。“随着PQC算法和标准的成熟,我们预计将逐步转向纯PQC部署。

“为底层加密引擎添加后量子算法支持是迈向量子安全的第一步。随着我们在更多系统组件和应用程序中启用PQC支持,我们将能够实现受PQC保护的端到端服务场景,并让客户在其环境和应用程序中进行试验和应用。”

同时,微软表示,向PQC的过渡是一个复杂而长期的过程,需要认真规划和关注。“我们建议组织首先创建正在使用的加密资产清单,以更好地了解现状并制定基于风险的PQC过渡计划。”

微软宣布更新SymCrypt加密库,新增对PQC算法的支持的更多相关文章

  1. 著名加密库收集 Encrypt

    CryptoAPI 微软的CryptoAPI crypt32.lib,advapi32.lib,cryptui.lib #include <wincrypt.h>#include < ...

  2. 【Java库】如何使用优秀的加密库Jasypt来保护你的敏感信息?

    1 简介 今天我们介绍一个Java库-Jasypt,全称为Java Simplified Encryption,用于加密解密.它能够让开发者用花费最小的工作而把加密集成到项目中,并且不需要对加密/解密 ...

  3. 12. 前后端联调 + ( proxy代理 ) + ( axios拦截器 ) + ( css Modules模块化方案 ) + ( css-loader ) + ( 非路由组件如何使用history ) + ( bodyParser,cookieParser中间件 ) + ( utility MD5加密库 ) + ( nodemon自动重启node ) + +

    (1) proxy 前端的端口在:localhost:3000后端的端口在:localhost:1234所以要在webpack中配置proxy选项 (proxy是代理的意思) 在package.jso ...

  4. SharePoint 更新文档库文档标题(Title)字段

    前言:记录下写代码中遇到的小问题,帮同事写一个批量更新文档库标题字段的小程序,本来以为就Update一下就可以了,10分钟可以搞定.结果10分钟过去了,代码写好了,执行起来不报错,调试也没问题,只是要 ...

  5. AES加密 C++调用Crypto++加密库 样例

    这阵子写了一些数据加密的小程序,对照了好几种算法后,选择了AES,高级加密标准(英语:Advanced Encryption Standard,缩写:AES).听这名字就非常厉害的样子 预计会搜索到这 ...

  6. 批量自动更新SVN版本库 - Windows

    开发过程中每天都要从SVN代码库里一个一个的update各个项目代码,不仅效率实在是低,也不符合程序员的"懒"精神,由于是在Windows环境做开发,自然就想到了使用bat来实现自 ...

  7. app 下载更新 file-downloader 文件下载库的简单介绍和使用

    app 下载更新 file-downloader 文件下载库的简单介绍和使用 今天介绍一个下载库:file-downloader 文件下载库 说明: * 本文内容来自原 file-downloader ...

  8. Node.js_密码明文_密文_加密库_sha1

    加密库 sha1 加密模块,能够将指定 明文 加密成一个长度相等的 密文 let pwd = 'qwe123456'; const secret = sha1(pwd); 同样的明文,加密得到同样的密 ...

  9. JS 的加密库简介

    作为前端,数据提交到后台之前,重要的数据要进行加密一下,虽然已经有 https 等技术,但是增加一道前端的加密还是相对更安全的.虽然,前端的加密很容破解,但是有总比没有强. 尤其是涉及到用户名和密码, ...

  10. 【JS加密库】SJCL :斯坦福大学JS加密库

    斯坦福大学Javascript加密库简称SJCL,是一个由斯坦福大学计算机安全实验室创立的项目,旨在创建一个安全.快速.短小精悍.易使用.跨浏览器的JavaScript加密库. 斯坦福大学下载地址:h ...

随机推荐

  1. .NET 9正式发布,亮点是.NET Aspire和AI

    Microsoft 今天正式发布了 .NET 9,这是迄今为止最高效.最现代.最安全.最智能.性能最高的 .NET 版本.这是来自世界各地的数千名开发人员又一年努力的结果.此新版本包括数千项性能.安全 ...

  2. Mysql 通用分页

    第一步,建立数据库: create table student( id int primary key auto_increment, code varchar(50), name varchar(5 ...

  3. Redis集群搭建-多服务器

    条件 l 基于redis5.0.*版本进行集群的搭建 l 集群要求至少六个节点,即每个主节点配置1个从节点,本集群是使用了3个主节点并每个下面挂一个从节点,三个主节点分布在3台服务器上 l 集群配置信 ...

  4. Blazor 小技巧之 lambda传参

    我们的按钮点击事件,基本上都是一个无参的方法或者是一个MouseEnvent方法. 这里以BootstrapBlazor的Button为例,它的点击回调是这样的: EventCallback<M ...

  5. Nuxt.js 应用中的 dev:ssr-logs 事件钩子

    title: Nuxt.js 应用中的 dev:ssr-logs 事件钩子 date: 2024/11/28 updated: 2024/11/28 author: cmdragon excerpt: ...

  6. Nuxt.js 应用中的 close 事件钩子

    title: Nuxt.js 应用中的 close 事件钩子 date: 2024/12/2 updated: 2024/12/2 author: cmdragon excerpt: close 钩子 ...

  7. 微服务应用整合SEATA实现分布式事务

    概要 seata 是alibaba 出的一款分布式事务管理器,他有侵入性小,实现简单等特点.我们能够使用seata 实现分布式事务管理, 是微服务必备的组件.他可以实现在微服务之间的事务管理,也可以实 ...

  8. PLC编程—基本知识

    1. OB.FB.FC功能 OB(组织块):用于执行特定的任务(CPU启动.循环扫描.时间中断.硬件中断等),每个OB块均有一个特定的功能和优先级(特定事件发生时被触发). FB(功能块):具有内部存 ...

  9. Mysql8.0修改配置参数lower_case_table_names

    现象 今天在配置一个环境的数据库,所使用的系统要求该数据库 lower_case_table_names = 1 (对数据库表明.列名大小写不敏感) 我看了一下,在 Windows 上,默认值为 1. ...

  10. 解读GaussDB的BTree索引和UBTree索引,如何带来更强并发能力

    本文分享自华为云社区<[GaussTech技术专栏]GaussDB的BTree索引和UBTree索引>,作者:GaussDB 数据库. 1. 简介 数据库通常使用索引来提高业务查询的速度. ...