使用 AWS KMS 和 ML-DSA 创建后量子签名
随着量子计算能力的发展,AWS 致力于帮助客户应对公钥密码学面临的新威胁。我们宣布将 FIPS 204 模块化格基数字签名标准(ML-DSA)集成到 AWS 密钥管理服务(KMS)中。客户现在可以通过熟悉的 AWS KMS API(包括 CreateKey、Sign 和 Verify 操作)创建和使用 ML-DSA 密钥。此新功能已正式发布,您可以在以下 AWS 区域使用 ML-DSA:美国西部(北加州)和欧洲(米兰),其他商业区域将在未来几天跟进。
新增功能
AWS KMS 提供三种新的密钥规格:
这些密钥规格与新的签名算法 ML_DSA_SHAKE_256 配合使用,该算法采用 NIST 标准化的 SHAKE256 哈希函数。
创建 ML-DSA 密钥
使用 AWS CLI 创建非对称 KMS 密钥:
aws kms create-key --key-spec ML_DSA_65 --key-usage SIGN_VERIFY
复制代码
签名操作示例
RAW 签名模式(消息小于 4096 字节)
aws kms sign \
--key-id <your-key-id> \
--message 'eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJNTC1EU0EtNjUifQ...' \
--message-type RAW \
--signing-algorithm ML_DSA_SHAKE_256 \
--output text \
--query Signature | base64 --decode > ExampleSignature.bin
复制代码
EXTERNAL_MU 签名模式(大消息处理)
获取公钥:
aws kms get-public-key --key-id <your-key-id> --output text --query PublicKey | base64 --decode > public_key.der
复制代码
生成 mu 摘要:
{
openssl asn1parse -inform DER -in public_key.der -strparse 17 -noout -out - 2>/dev/null |
openssl dgst -provider default -shake256 -xoflen 64 -binary;
printf '\x00\x00';
echo -n "your_message_here"
} | openssl dgst -provider default -shake256 -xoflen 64 -binary > mu.bin
复制代码
使用 KMS 签名:
aws kms sign \
--key-id <your-key-id> \
--message fileb://mu.bin \
--message-type EXTERNAL_MU \
--signing-algorithm ML_DSA_SHAKE_256 \
--output text \
--query Signature | base64 --decode > ExampleSignature.bin
复制代码
签名验证
使用 AWS KMS 验证
aws kms verify \
--key-id <your-key-id> \
--message "your_message_here" \
--message-type RAW \
--signing-algorithm ML_DSA_SHAKE_256 \
--signature fileb://ExampleSignature.bin
复制代码
本地使用 OpenSSL 验证
echo -n "your_message_here" | \
openssl dgst -verify public_key.der -signature ExampleSignature.bin
复制代码
结论
AWS KMS 对 ML-DSA 的支持标志着我们在后量子密码学承诺中的重要里程碑。通过三种安全级别的 ML-DSA 和两种签名模式,您可以根据安全需求灵活选择,为量子计算时代做好准备。此功能特别适合需要:
评论