尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Authelia 生成 ML-DSA 后量子密钥对:authelia crypto pair mldsa generate 命令详解

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),仅供参考
返回列表