密码学与博弈论基础
1. ECDSA算法与应用
ECDSA(椭圆曲线数字签名算法)背后有着复杂的数学原理。在生成密钥和签名时,我们会使用随机数,且确保这些随机数是真正的密码学随机数极为重要。在许多应用场景中,会使用160位的ECDSA,因为它需要与SHA - 1哈希函数相匹配。
ECDSA在数字证书领域有广泛应用。简单来说,数字证书是一个公钥,与设备ID和证书过期日期捆绑在一起。这样,我们可以通过证书确认公钥的所有者,以及设备是否是所考虑网络的合法成员。这些证书对于防止密钥建立协议中的“冒充攻击”非常重要。许多TLS证书都基于ECDSA密钥对,并且这种应用还在不断增加。
验证签名的步骤如下:
1. 计算 ( v = x1 \bmod n )
2. 如果 ( r = v ),则接受签名;否则,拒绝签名
以下是Python中ECDSA算法的代码示例:
import ecdsa
# SECP256k1是比特币椭圆曲线
signingKey = ecdsa.SigningKey.generate(curve=ecdsa.SECP256k1)
# 获取验证密钥
verifyingKey = signingKey.get_verifying_key()
# 生成消息的签名
signature = signingKey.sign(b"signed message")
# 验证消息签名是否有效
verifyingKey.verify(signature, b"signed message") # True. 签名有效
# 验证消息签名是否无效
assert verifyin
超级会员免费看
订阅专栏 解锁全文
28

被折叠的 条评论
为什么被折叠?



