数字签名在实践中的考量
原文精选:要将算法概念转化为现实中可执行的数字签名机制,我们还需要考虑许多实际问题。例如,很多签名算法是随机的(特别是比特币使用的算法),因此我们需要随机性的良好来源。我们不能低估这一点的重要性,因为不良随机性会使你认为安全的算法变得不安全。
另一个实际问题是关于信息大小。在实践中,你能够签署的信息大小是有限制的,因为真实的方案将在位数长度有所限制的字符串中运行。有一个简单的方法可以解决这个限制:对信息的哈希值进行签署,而非对信息本身进行签署。如果我们使用输出值为256位的加密的哈希函数,那么我们可以有效地签署任何长度的信息,只要我们的签名方案能够签署256位的信息。如上所述,我们可以将信息的哈希值作为信息摘要,哈希函数具有碰撞阻力,因此这种方式是安全的。
我们后面会用到的另一个技巧是,可以对于哈希指针进行签署。如果你签署了哈希指针,那么该签名覆盖(或者说保护)整个结构——这不仅仅是哈希指针本身,还包括哈希指针指向的整个区块链。比如,如果签署了区块链末尾的哈希指针,其结果就是你有效地数字签署了整条区块链。
读书笔记:
1,很多签名算法是随机的(特别是比特币使用的算法),因此我们需要随机性的良好来源,不良随机性会使算法变得不安全。
2,对信息的哈希值进行签署,而非对信息本身进行签署,可以解决签署信息的大小限制。
3,如果针对哈希指针进行签署,那么相当于签名了哈希指针指向的整个区块链。
4,如果签署了区块链末尾的哈希指针,其结果就是你有效地数字签署了整条区块链(相当于从末尾一直追溯到了开头)。
椭圆曲线数字签名算法
原文精选:现在让我们来看一下具体的细节。比特币使用的数字签名方案叫作椭圆曲线数字签名算法(ECDSA)。ECDSA为美国政府的标准,是早前DSA算法利用了椭圆曲线的升级版。这些算法经过了数年的细致密码分析,且被普遍认为是安全的。
更具体地说,比特币使用ECDSA算法,而不是标准椭圆曲线“secp256k1”[预计提供128位安全保障,即打破这个算法的难度与执行2128对称性密钥运算(如破解哈希函数)一样困难]。
虽然这个曲线是公开标准,但除比特币以外鲜有使用,其他使用ECDSA的应用(如安全网络浏览时的TLS[2]密钥交换)通常都使用更常见的“secp256k1”曲线。这就是比特币的一个古怪之处,因为在比特币系统早期实施中被中本聪选定(参见原版前言),现在已很难改变。
我们不会详细地讨论ECDSA的原理,因为这涉及一些过于复杂的数学知识,且对于本书的其他内容没有太多帮助。如果你对ECDSA感兴趣,请参见本章末尾延伸阅读部分。虽然我们这么说,但对于了解各种参数也许会很有必要:
个人密钥:256位
公钥(未压缩):512位
公钥(压缩):257位
待签名信息:256位
签名:512位
注意,严格来讲,虽然ECDSA只能签署256位的信息,但这存在问题,因为信息在签署之前总是已经经过哈希压缩,因此,任何大小的信息都能被有效签署。
读书笔记:
1,比特币使用的数字签名方案叫作椭圆曲线数字签名算法(ECDSA)。
2,如果一个哈希函数具备谜题友好特性,意味着谜题没有解决策略,比只是随机地尝试x取值稍好一些。
3,虽然ECDSA只能签署256位的信息,但因为信息在签署之前已经经过哈希压缩,因此,任何大小的信息都能被有效签署。
原文精选:使用ECDSA时,确保随机性良好来源至关重要,因为不良来源将可能导致密钥信息的泄露。这一点不难理解,如果你使用了不良随机来生成密钥,那么该密钥就可能不安全。但是ECDSA的古怪就在于,即使你仅仅只是在生成签名时使用了不良随机,而你使用的密钥完美无缺,你的个人密钥还是有可能泄露(熟悉DSA的人都知道这是DSA的古怪之处,但并不针对椭圆曲线)。
接着游戏就结束了,如果你的个人密钥泄露,对手就可以伪造你的签名。因此,我们在实践中要特别注意使用良好随机来源,使用不良随机来源是安全系统的一个常见缺陷。
读书笔记:
1,使用ECDSA时,确保随机性良好来源至关重要,因为不良来源将可能导致密钥信息的泄露。
2,如果你的个人密钥泄露,对手就可以伪造你的签名。
3,使用不良随机来源是安全系统的一个常见缺陷。
一叶之秋带你一分钟速读经典书籍,每天一分钟(只需阅读读书笔记部分),天天获新知。
一叶之秋——非著名股票分析师
CCTV证券资讯频道特邀分析师
币乎,币问内测作者;区分节点分析师
陀螺财经,币快报专栏作家
《区块链编年史》 《区块链重塑未来》系列作者
量价时空战法体系,一分钟读书俱乐部创始人
公众号:区块链项目评测
007er
网友评论