转载链接: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. 瞧瞧别人的Controller,那叫一个优雅!

    前言 在实际工作中,我们需要经常跟第三方平台打交道,可能会对接第三方平台Controller接口,或者提供Controller接口给第三方平台调用. 那么问题来了,如果设计一个优雅的Controlle ...

  2. SPI接口,如何对W25Q64进行读写操作?深度解析

    ​ 一.SPI概述 SPI(SerialPeripheralInterface)是一种同步串行通信协议,广泛应用于微控制器和外围设备之间的数据传输.它由摩托罗拉公司开发,具有全双工通信能力,即可以同时 ...

  3. Cmocka 单元测试配置与使用

    0. 前言 在 Windows 环境下配置 Cmocka 单元测试,并使用该框架进行单元测试. 1. Cmocka介绍 Cmocka 是一个 C 单元测试框架,支持 mock objects(打桩). ...

  4. 玩转AI工作流:一步步搭建灵活的自动化流程

    我们之前搭建了许多不同类型的智能体,其中最受欢迎的就是在智能体中搭建各种工作流--这也是我最喜欢探索和玩的领域.那么,究竟什么是工作流?如何在后端实现一个工作流呢?今天我们就先简单了解下. 什么是工作 ...

  5. vue中使用elementUI的全选表格,点击全选,选中子表格的checkbox

    效果图如下: 由于elementUI提供的表格没办法满足需求,我就在elementUI表格的基础上又做了一些改动 首先,全选的checkbox不是表格自带的,是自己加上去的,子表格中的checkbox ...

  6. python虚拟环境管理之Pipenv

    GitHub:pypa/pipenv: Python Development Workflow for Humans. (github.com) 介绍: pipenv就是把pip和virtualenv ...

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

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

  8. 记一次 .NET某差旅系统 CPU爆高分析

    一:背景 1. 讲故事 前些天训练营里的一位学员找到我,说他们的差旅后台系统出现了CPU爆高的情况,爆高之后就下不去了,自己分析了下也没找到原因,事情比较紧急,让我帮忙看下是什么回事,手里也有dump ...

  9. 自有Jar包生成Docker镜像

    前言 经常会有些自己写的一些SpringBoot小项目,为了实现一些小的功能/需求,但是部署的时候,不管是生成jar包,还是war包部署到tomcat中,都容易因为需要部署的环境(比如java版本.t ...

  10. OS之《死锁》

    什么是死锁 一组进程中的每一个进程都在等待仅由该组进程中其他进程才能引发的事件,这样就形成死锁了. 死锁的原因 竞争不可抢占的资源 竞争可消耗资源 进程推进顺序不当 死锁产生的必要条件 1.互斥条件: ...