龙空技术网

『学概念找员外』数字签名算法与实践中的考量

刘员外999 184

前言:

而今同学们对“比特币签名算法流程”可能比较讲究,我们都需要分析一些“比特币签名算法流程”的相关知识。那么小编同时在网摘上网罗了一些有关“比特币签名算法流程””的相关知识,希望我们能喜欢,咱们一起来学习一下吧!

「力场」——公链挖矿第一社区。

实践中的考量

要将算法概念转化为现实中可执行的数字签名机制,我们还需要考虑许多实际问题。例如,很多签名算法是随机的(特别是比特币使用的算法),因此我们需要随机性的良好来源。我们不能低估这一点的重要性,因为不良随机性会使你认为安全的算法变得不安全。

员外觉得在这儿有必要解释一下这个随机性的良好来源是什么意思,对于没有计算机基础的同学来说确实无法理解。在计算机里面会有各种各样的用来产出随机数的函数,但是有些函数产出的随机数并不是绝对意义上的随机,而是存在一定的偶然性,因为计算机中的随机函数只是在尽可能的模拟人们理想中的随机。所以如果你恰好遇上这种偶然性,那你最后生成的私钥就有可能跟某个人相同,或者就直接泄漏了。

另一个实际问题是关于被加密信息的大小,因为这一特性,就会让被加密的信息量受到限制。不过也没事,还有我们之前说过的哈希函数嘛,我们可以对被加密信息先哈希一下,无论这个文件有多大,都可以得到一个大小统一的 256 位的哈希值。这样我们直接加密这个哈希值就可实现对源文件的签名。同时哈希函数还具备了碰撞阻力,因此这种方式是安全的。

我们后面会用到的另一个技巧是,可以对于哈希指针进行签署。如果你签署了哈希指针,那么该签名覆盖(或者说保护)整个结构,这不仅仅是哈希指针本身,还包括哈希指针指向的整个区块链。比如,如果签署了区块链末尾的哈希指针,其结果就是你有效地数字签署了整条区块链。

椭圆曲线数字签名算法

比特币使用的数字签名方案叫作椭圆曲线数字签名算法(ECDSA)。ECDSA为美国政府的标准,是早前DSA算法利用了椭圆曲线的升级版。这些算法经过了数年的细致密码分析,且被普遍认为是安全的。

更具体地说,比特币使用ECDSA算法,而不是标准椭圆曲线“secp256k1”。虽然这个曲线是公开标准,但除比特币以外鲜有使用,其他使用ECDSA的应用(如安全网络浏览时的TLS密钥交换)通常都使用更常见的“secp256k1”曲线。这就是比特币的一个古怪之处,因为在比特币系统早期实施中被中本聪选定,现在已很难改变。

对于ECDSA的详细原理,因为这涉及一些过于复杂的数学知识,员外也不懂,同时这些知识对于咱们读者来说,也没有必要。虽然我们这么说,但对于了解各种参数也许会很有必要:

个人密钥:256位公钥(未压缩):512位公钥(压缩):257位待签名信息:256位签名:512位

注意,严格来讲,虽然ECDSA只能签署256位的信息,但这存在问题,因为信息在签署之前总是已经经过哈希压缩,因此,任何大小的信息都能被有效签署。

标签: #比特币签名算法流程