公开课地址:https://www.coursera.org/learn/cryptocurrency/home/welcome
第一周:密码学和加密货币介绍
章节1.3笔记:数字签名
签名:
1、只有你能签名,但任何人都能验证
2、签名和文档唯一对应,不能把签名复制到另一个文档
电子签名的API定义:
1、generateKeys(keysize) => (sk, pk)
sk: secrete signing key
pk: public verification key
2、sign(sk, message) => sig
3、verify(pk, message, sig) => isValid
签名需要:
1、有效签名能够通过验证
verify(pk, message, sign(sk, message)) => true
2、无法伪造签名
攻击者知道:(1)pk,(2)其构造的消息的签名,无法伪造对另一消息的签名
实际问题:
1、算法的随机性
需要非常好的随机源
2、消息大小的限制
使用hash(message)
3、fun trick: sign a hash pointer
签名要“覆盖”整个文档
bitcoin uses ECDSA, Elliptic Curve Digital Signature Algorithm
relies on hairy math, 略。。。 哈哈哈
QY 2018-03-15