GM/T 0044.2-2016
SM9标识密码算法第2部分:数字签名算法
发布时间:2016-03-28 实施时间:2016-03-28


SM9标识密码算法是我国自主研发的一种密码学算法,是国际上首个基于椭圆曲线密码学的标识密码算法。SM9算法具有高安全性、高效率、高灵活性等优点,已被广泛应用于数字证书、数字签名、身份认证等领域。

数字签名是一种用于保证数据完整性、真实性和不可抵赖性的技术。数字签名算法是数字签名技术的核心,其主要功能是生成数字签名和验证数字签名。本标准规定了SM9标识密码算法的数字签名算法,包括签名生成和验证两个过程。

签名生成过程包括以下步骤:

1. 选择一个随机数k,计算椭圆曲线点[k]P;
2. 计算消息的哈希值h,将其转换为一个整数;
3. 计算r = h + x([k]P) mod n,其中x([k]P)表示[k]P的x坐标;
4. 如果r=0或r+k=n,则返回步骤1重新选择k;
5. 计算s = (1 + dA)^-1 (k - r)dA + k mod n,其中dA为私钥;
6. 如果s=0,则返回步骤1重新选择k;
7. 签名值为(r, s)。

验证过程包括以下步骤:

1. 验证r和s是否在[1, n-1]范围内,如果不是则验证失败;
2. 计算消息的哈希值h,将其转换为一个整数;
3. 计算u1 = s^-1h mod n和u2 = s^-1r mod n;
4. 计算椭圆曲线点[u1]P + [u2]QA,其中QA为公钥;
5. 如果该点为无穷远点,则验证失败;
6. 计算v = x([u1]P + [u2]QA) mod n;
7. 如果v=r,则验证成功,否则验证失败。

本标准还规定了SM9算法的签名长度、密钥长度、哈希算法等相关要求。

相关标准
GB/T 35275-2017 数字证书格式
GB/T 35276-2017 数字证书验证
GB/T 35277-2017 数字证书撤销列表格式
GB/T 35278-2017 数字证书撤销列表验证
GB/T 32918-2016 信息安全技术 SM9密码算法