商洛市住房城乡建设厅网站,企业信息公示系统年报,湛江网站建设模板定位工厂,无锡电子商务网站制作椭圆曲线数字签名算法是DSA的一种椭圆曲线变体#xff0c;它发明的初衷只是避免使用Schnorr签名的专利。椭圆曲线数字签名算法依赖于验证器中的私钥和主机用于验证验证器的公钥。它的缺点和DSA一样#xff0c;它也没有提供安全性证明。
椭圆曲线算法
DSS#xff08;数字签…椭圆曲线数字签名算法是DSA的一种椭圆曲线变体它发明的初衷只是避免使用Schnorr签名的专利。椭圆曲线数字签名算法依赖于验证器中的私钥和主机用于验证验证器的公钥。它的缺点和DSA一样它也没有提供安全性证明。
椭圆曲线算法
DSS数字签名标准定义了两种用于ECC椭圆曲线密码学的椭圆曲线伪随机曲线其系数由种子密码散列函数的输出生成以及特殊曲线其系数和下伏场已被选择以优化椭圆曲线运算的效率。伪随机曲线可以定义在素域GFp以及二进制域GF2m上。
素数域是包含素数p个元素的域GFp。这个字段的元素是以p为模的整数场运算是根据整数模p的运算来实现的。适用的椭圆曲线的形式为y²x³axb。 密钥对生成
在ECDSA验证器能够工作之前它需要知道自己的私钥。公钥是从私钥和域参数派生而来的。密钥对必须位于验证器的内存中。顾名思义私钥是无法从外部世界访问的。相比之下公钥必须是可公开读取和访问的。
启动一个随机数生成器当其操作完成时它会传递成为私钥d标量的数值。
签名计算
数字签名允许消息的接收者使用验证器的公钥验证消息的真实性。首先使用安全散列算法将可变长度消息转换为固定长度消息摘要hm。
安全散列具有以下独特的特性
1不可逆性——从摘要中确定消息在计算上是不可行的
2 抗冲突-找到一个以上的消息来生成给定的摘要是不切实际的
3高雪崩效应消息中的任何变化都会在摘要中产生显著变化。在计算消息摘要之后激活随机数生成器以提供用于椭圆曲线计算的值k。
k永远不能重复使用它必须是不可预测的。否则恢复私钥将变得十分简单。通常nonce(k值)会由密码学库在后台生成但有时也会有算法调用方来提供。
另一种不易察觉的风险是如果nonce(k值)不是均匀随机选取的那么仍然存在能够立即恢复私钥的有效攻击(格攻击算法)。理论上我们称这些类型的密钥检索攻击为完全攻破攻击。 签名由两个整数r和s组成。
以下等式表示了根据随机数k和基点Gxy计算r
(x1, y1) k × G(x, y) mod p r x1 mod n
若要有效r必须不同于零。在r为0的罕见情况下必须生成一个新的随机数k并且需要再次计算r。 在成功计算r之后根据等式3使用标量运算来计算s。输入是消息摘要hm私钥dr以及随机数k
s ( (h(m) d * r) mod n
若要有效s必须不同于零。如果s为0则必须生成新的随机数k并且需要再次计算r和s。
签名验证
签名验证是签名计算的对应部分。其目的是使用验证器的公钥验证消息的真实性。使用与签名步骤中相同的安全散列算法计算由认证器签名的消息摘要该消息摘要与公钥Qxy以及数字签名分量r和s一起产生结果。
输入是消息摘要hm、公钥Qxy、签名分量r和s以及基点Gxy
w s-1 mod n u1 (h(m) * w) mod n u2 (r * w) mod n (x2, y2) (u1 × G(x, y) u2 × Q(x, y)) mod n
如果x2等于r则验证成功“通过”从而确认签名确实是使用私钥计算的。