Authelia 生成 ML-DSA 后量子密钥对:authelia crypto pair mldsa generate 命令详解
Authelia 生成 ML-DSA 后量子密钥对authelia crypto pair mldsa generate 命令详解【免费下载链接】autheliaThe Single Sign-On Multi-Factor portal for web apps. OpenID Certified™ and Post-Quantum Cryptography Ready.项目地址: https://gitcode.com/GitHub_Trending/au/autheliaauthelia crypto pair mldsa generate是 Authelia CLI 中用于生成 ML-DSAFIPS 204 模块化格基数字签名密钥对的子命令服务于项目的Post-Quantum Cryptography Ready目标为 OIDC 签名等场景提前准备抗量子算法的密钥资产。本文基于命令参考文档结合仓库源码逐参数讲解该命令的用法、默认值、参数集选择规则与底层调用链读完即可掌握如何为 Authelia 生成并妥善存放 ML-DSA-44/65/87 三档参数集的密钥对。命令概览与用途该命令的完整调用形式为authelia crypto pair mldsa generate [flags]它属于命令树authelia crypto pair下的一个算法分支与rsa、ecdsa、ed25519并列。执行后会在指定目录中生成两个 PEM 文件私钥默认private.pem与公钥默认public.pem。命令的 help 示例为authelia crypto pair mldsa generate --help从源码看命令树在 crypto.go 中通过newCryptoPairCmd与newCryptoPairSubCmd注册mldsa分支常量cmdUseMLDSA mldsa见 const.go最终挂接generate子命令两者共用同一个执行入口CryptoGenerateRunE。完整参数说明参考文档列出的全部选项如下-d, --directory string directory where the generated keys, certificates, etc will be stored --file.extension.legacy string string to include before the actual extension as a sub-extension on the PKCS#1 and SECG1 legacy formats (default legacy) --file.private-key string name of the file to export the private key data to (default private.pem) --file.public-key string name of the file to export the public key data to (default public.pem) -h, --help help for generate --legacy enables the output of the legacy PKCS#1 and SECG1 formats when enabled -b, --parameters string Sets the ML-DSA parameter set which can be ML-DSA-44, ML-DSA-65, or ML-DSA-87 (default ML-DSA-65)逐项展开-d, --directory密钥、证书等输出文件存放的目录。未指定时输出到当前目录路径解析见 crypto_helper.go 中的cryptoGetWritePathsFromCmd最终写入路径为目录 文件名的组合。--file.private-key私钥导出文件名默认private.pem注册于 cmdFlagsCryptoPrivateKey。--file.public-key公钥导出文件名默认public.pem注册于 cmdFlagsCryptoPairGenerate。-b, --parametersML-DSA 参数集取值ML-DSA-44、ML-DSA-65、ML-DSA-87默认ML-DSA-65。参数注册在 cmdFlagsCryptoPrivateKeyMLDSA默认值引用常量utils.KeyMLDSAParameters65。--legacy与--file.extension.legacy用于 RSA/ECDSA 的 PKCS#1、SECG1 旧格式输出。对 ML-DSA 密钥实际不生效源码中legacy legacy legacyKey而cryptoKeyAlgorithm对 ML-DSA 密钥返回legacyKey false见 crypto_helper.go因此即使传入--legacy也不会产生额外的 legacy 文件这是与 RSA/ECDSA 子命令的重要差异。-h, --help显示帮助。此外还继承父命令的两个全局选项-c, --config strings configuration files or directories to load, for more information run authelia -h authelia config (default [configuration.yml]) --config.experimental.filters strings list of filters to apply to all configuration files, for more information run authelia -h authelia filters参数集选择规则与解析细节-b/--parameters的取值解析逻辑集中在 GenerateMLDSAKeyfunc GenerateMLDSAKey(parameters string) (key any, err error) { params, ok : MLDSAParametersFromString(parameters) if !ok { return nil, fmt.Errorf(invalid parameters %s were specified: parameters must be %s, parameters, StringJoinOr(MLDSAParameterSets())) } if key, err mldsa.GenerateKey(params); err ! nil { return nil, err } return key, nil }MLDSAParametersFromString的解析规则是将输入转大写后剥离ML-DSA-前缀再按44/65/87匹配见 crypto_mldsa.go。由此可得三条实操结论简写数字也可用--parameters 44与--parameters ML-DSA-44等价大小写不敏感ml-dsa-65同样有效无效值会报错并提示合法取值错误信息形如invalid parameters ML-DSA-99 were specified: parameters must be ML-DSA-44, ML-DSA-65, or ML-DSA-87。上述行为均有测试印证crypto_helper_test.go 覆盖了ML-DSA-44、裸87以及非法值ML-DSA-99的用例crypto_mldsa_test.go 覆盖了全名、裸安全级别与小写形式的解析。三档参数集名称常量定义在 const.goconst ( KeyMLDSAParameters44 ML-DSA-44 KeyMLDSAParameters65 ML-DSA-65 KeyMLDSAParameters87 ML-DSA-87 )从源码结构看ML-DSA-65作为默认值对应中等安全级别ML-DSA-44更小更快ML-DSA-87最强签名与验签耗时、公钥尺寸随参数集上升。参数集还决定了后续签名算法标识MLDSASignatureAlgorithmFromString将参数集映射到x509.MLDSA44/MLDSA65/MLDSA87见 crypto_mldsa.go且 ML-DSA 不提供哈希或填充的选择空间参数集即唯一决定签名算法。前置条件Go 1.27 构建实现文件顶部带有构建标签//go:build go1.27见 crypto_mldsa.go。源码注释明确说明crypto/mldsa包在 Go 1.27 才进入标准库由更早工具链构建的二进制将完全不支持任何 ML-DSA 参数集MLDSAParameterSets()返回空列表。因此使用本命令的适用前提是使用 Go 1.27 或更新版本构建/获取的 Authelia 二进制。另外值得注意的是随机性来源ML-DSA 密钥生成不走 Authelia 内部注入的随机源crypto/mldsa直接从crypto/rand取熵且无法外部指定见 GenerateMLDSAKey 的注释这是它与其他几种密钥生成路径的区别。执行流程与底层调用链一次authelia crypto pair mldsa generate的完整链路如下CryptoGenerateRunEcrypto.go先调用cryptoGenPrivateKeyFromCmd按父命令Use分派算法ML-DSA 分支读取--parameters并调用utils.GenerateMLDSAKeycrypto_helper.go由于父命令层级是pair而非certificate流程转入CryptoPairGenerateRunEcrypto.go读取--legacy、--file.extension.legacy与输出目录后调用runCryptoPairGeneraterunCryptoPairGeneratecrypto.go依次完成打印Algorithm如ML-DSA-65、Output Paths目录 文件名调用utils.WriteKeyToPEM写私钥再通过utils.PublicKeyFromPrivateKey导出公钥并写入公钥文件。PEM 编码细节在 crypto.go 中ML-DSA 私钥以PKCS#8封装PRIVATE KEY块x509.MarshalPKCS8PrivateKey公钥以PKIX封装PUBLIC KEY块x509.MarshalPKIXPublicKey。文件落盘使用 WritePEMBlocksToPath权限固定为0600保证私钥文件默认仅属主可读写。命令成功时的标准输出形如字段来自 runCryptoPairGenerate 的打印逻辑Generating key pair Algorithm: ML-DSA-65 Output Paths: Directory: /path/to/dir Private Key: private.pem Public Key: public.pem使用示例以下示例展示了典型的调用方式仅为说明用法不会修改仓库内容# 使用默认参数集 ML-DSA-65在当前目录生成 private.pem / public.pem authelia crypto pair mldsa generate # 输出到指定目录并改用最强参数集 authelia crypto pair mldsa generate -d /etc/authelia/crypto --parameters ML-DSA-87 # 自定义文件名 简写参数集裸数字 44 合法 authelia crypto pair mldsa generate -d ./pq-keys -b 44 \ --file.private-key authelia.private.pem \ --file.public-key authelia.public.pem生成后可以用标准工具校验 PEM 结构如openssl pkey -in private.pem -noout -text并确认目录中不存在任何*.legacy.*文件——这是 ML-DSA 分支不产生 legacy 输出的预期行为。与证书子命令及 OIDC 的衔接生成的密钥对并非孤立产物而是同一套crypto子命令族的一部分authelia crypto certificate mldsa generate/authelia crypto certificate mldsa request复用同一个-b/--parameters参数同为默认ML-DSA-65可将 ML-DSA 密钥用于自签或 CA 签发的 X.509 证书、CSR参考 authelia_crypto_certificate_mldsa.md 与 authelia_crypto_certificate_mldsa_generate.md在 OIDC 侧mldsa.go 定义了SigningAlgsMLDSA [MLDSA44, MLDSA65, MLDSA87]这组 JWS 签名算法并根据密钥参数集反查alg值。注释中特别说明授权服务器对外宣告或接受的算法列表是由当前二进制实际能执行的算法扩展而来因此用pair mldsa generate产出的密钥可以无缝进入 OIDC 签名链路而旧工具链构建不含 ML-DSA 支持则不会宣告这些算法。小结authelia crypto pair mldsa generate以极少的参数提供了完整的后量子密钥生成能力-b选择三档参数集默认ML-DSA-65支持简写与大小写不敏感-d、--file.private-key、--file.public-key控制输出位置与命名PEM 采用 PKCS#8/PKIX 标准封装并以0600权限落盘。使用时需注意两点前提二进制必须由 Go 1.27 工具链构建--legacy系列选项对 ML-DSA 不产生任何额外输出。相关参考文档见 authelia_crypto_pair_mldsa_generate.md 与 authelia_crypto_pair_mldsa.md。【免费下载链接】autheliaThe Single Sign-On Multi-Factor portal for web apps. OpenID Certified™ and Post-Quantum Cryptography Ready.项目地址: https://gitcode.com/GitHub_Trending/au/authelia创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

C++物业管理系统代码剖析:面向对象、文件持久化与数据校验

C++物业管理系统代码剖析:面向对象、文件持久化与数据校验

简介:C物业管理系统是一份完整的课程设计与实战项目资源,适合学习C面向对象编程、文件读写、GUI开发及数据库应用的开发者参考。压缩包共99个文件,包含32个cpp源文件、31个头文件、29个ui界面文件,另有sql数据库脚本、Qt工程配置与…

2026/9/13 18:55:48 阅读更多 →
Claude-Red AI安全模块:对抗性攻击与防御的智能解决方案完整指南

Claude-Red AI安全模块:对抗性攻击与防御的智能解决方案完整指南

Claude-Red AI安全模块:对抗性攻击与防御的智能解决方案完整指南 【免费下载链接】Claude-Red claude-red is a curated library of offensive security skills designed for the Claude skills system. Each skill is a structured SKILL.md file that primes Clau…

2026/9/13 18:55:48 阅读更多 →
Symfony 命令行测试避坑指南:runCommand 与 verbosity 一次讲透

Symfony 命令行测试避坑指南:runCommand 与 verbosity 一次讲透

Symfony 命令行测试避坑指南:runCommand 与 verbosity 一次讲透 【免费下载链接】nuclei-templates Community curated list of templates for the nuclei engine to find security vulnerabilities. 项目地址: https://gitcode.com/GitHub_Trending/nu/nuclei-te…

2026/9/14 21:02:54 阅读更多 →

最新新闻

上帝视角技术全解析:无人机航拍与三维实景建模实战

上帝视角技术全解析:无人机航拍与三维实景建模实战

1. 概念解析:什么是“上帝视角”,为什么它让人着迷 1.1 从地图App到航拍大片,这个词到底在说什么 我第一次被“gods-eye-view”这个概念触动,是在用地图App的卫星图层看老家的屋顶时——那个瞬间,我熟悉的街道、河流、…

2026/9/14 21:03:34 阅读更多 →
Flink高级之CEP深度剖析:Pattern API、NFA引擎与风控实战

Flink高级之CEP深度剖析:Pattern API、NFA引擎与风控实战

摘要:连续 N 次登录失败、下单后 10 分钟未支付、大额转账后小额试探——这类"事件序列模式"需求,手写状态机维护成本极高,Flink CEP 用声明式 Pattern API 一键解决。这篇文章拆透 CEP:定位与场景边界、四大语法族&…

2026/9/14 21:03:34 阅读更多 →
Dify vs Astron:AI Agent低代码平台选型实战对比

Dify vs Astron:AI Agent低代码平台选型实战对比

1. 先搞清楚两个平台各自是什么定位 做AI Agent落地的这几年,我前后接触过的低代码/可视化Agent平台至少有十几个,从纯开源的到厂商闭源的都有。这次拿Dify和Astron(讯飞星辰Agent)放在一起对比,是因为它们代表了当下最…

2026/9/14 21:03:34 阅读更多 →
红外车辆行人检测实战:YOLOv5训练与Qt界面部署全解析

红外车辆行人检测实战:YOLOv5训练与Qt界面部署全解析

简介:针对红外图像对比度低、目标辨识难的问题,这份基于YOLOv5与PyTorch的完整工程,覆盖从数据集标注、模型训练到界面部署全流程,适合初学者系统学习,也适合工程师快速搭建红外车辆与行人检测原型。资源内含在几千张红…

2026/9/14 21:03:34 阅读更多 →
Kubernetes中CORS跨域问题的解决方案与实践

Kubernetes中CORS跨域问题的解决方案与实践

1. 项目背景与问题定位mcp-server-chart作为一款基于Kubernetes的中间件配置管理工具,其跨域问题在实际部署中频繁出现。当Web应用前端与后端API服务部署在不同域名或端口时,浏览器安全策略会阻止跨域请求,导致接口调用失败。典型的错误提示包…

2026/9/14 21:03:34 阅读更多 →
Tauri+iDevice真机调试:跨平台Web兼容性验证新方案

Tauri+iDevice真机调试:跨平台Web兼容性验证新方案

1. 项目概述:一个被误读的工具名,背后是跨平台桌面应用开发的新路径“iloader”这个词最近在开发者社区里频繁出现,但很多人一搜就懵——它既不是苹果官方工具,也不是某个知名开源库的主项目名,更不是某款流行App的代号…

2026/9/14 21:02:33 阅读更多 →

日新闻

AI音乐侵权案中的测试工程与版权保护技术

AI音乐侵权案中的测试工程与版权保护技术

1. 项目概述:当测试工程师遇上AI音乐侵权案去年夏天,我作为技术顾问参与了一起特殊的著作权纠纷案——某音乐平台AI作曲功能被指控批量侵权。这起案件的特殊性在于:原告方并非传统音乐人,而是一家拥有百万级曲库的数字音乐发行商&…

2026/9/14 0:00:26 阅读更多 →
嵌入式面试I2C与SPI深度解析:从协议到量产调试

嵌入式面试I2C与SPI深度解析:从协议到量产调试

1. 这份“高频知识点洞察”到底是什么,又为什么值得你花时间细读? 如果你最近在刷嵌入式开发岗位的招聘JD,或者正坐在工位上改第7版简历,又或者刚被面试官一句“讲讲I2C和SPI的区别”问得手心冒汗——那你不是一个人。过去两年我带…

2026/9/14 0:00:26 阅读更多 →
51单片机开环控制磁阻传感器的硬件匹配与代码实现

51单片机开环控制磁阻传感器的硬件匹配与代码实现

简介:本资源是一份面向嵌入式初学者与单片机课程实践者的51单片机开关磁阻电机(SRM)开环控制教学方案,聚焦磁阻位置检测、固定时序驱动与基础状态可视化。资源包含1个C语言主程序文件(zhuang600.c)实现电机…

2026/9/14 0:00:26 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/14 5:45:49 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/14 0:52:26 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/14 0:06:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/14 17:35:10 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/14 16:59:29 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/14 5:45:14 阅读更多 →