笔记 | 普林斯顿公开课《比特币和数字货币技术》1.3

公开课地址: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

你可能感兴趣的:(笔记 | 普林斯顿公开课《比特币和数字货币技术》1.3)