最近我一直在深入研究区块链基础知识,才意识到大多数人其实并不真正理解工作量证明(proof-of-work)究竟是如何真正运作的。让我把这个贯穿其中的核心点拆解给你:随机数(nonce)。



事情是这样的。随机数基本上是一个数字,矿工用它来解开一个密码学谜题。这个名字字面意思就是“只用一次的数字”,它是确保区块链安全的关键机制。当矿工在创建一个新区块时,会在其中加入一个随机数,然后使用 SHA-256 把所有内容一起计算哈希。目标是找到一个满足网络难度目标的哈希值,通常意味着该哈希值前面有一定数量的前导零。

我觉得有意思的是,它能多么巧妙地防止篡改。如果有人试图改动某个区块的数据,那么他们就必须再次重新计算整个随机数——这在计算上是极其昂贵的。这就是全部关键所在。随机数带来的计算成本让攻击变得不切实际。

让我带你看看这在比特币挖矿中是如何具体运作的。矿工首先会把包含待处理交易的区块组装起来,然后把一个随机数加入到区块头里。他们对其进行哈希,检查是否满足难度目标。如果不满足,就增加随机数并再次尝试。这个“试错”过程会一直持续到找到一个有效的哈希值为止。它的巧妙之处在于,网络会根据挖矿算力自动调整难度,因此无论有多少矿工在竞争,区块大约每 10 分钟产生一次。

现在,当我们谈论随机数安全性时,这不只是挖矿方面的问题。这个概念延伸到密码学的各个领域。你会看到在安全协议中使用的密码学随机数,用于防止重放攻击,确保每次会话都有一个独特的值。还有用于改变输入从而改变输出哈希的哈希函数随机数。甚至在编程中,随机数也用来保证数据的唯一性,避免冲突。

但关键在于:与随机数相关的攻击是真实存在的。当有人恶意地在密码学运算中重复使用同一个随机数时,就会发生随机数复用攻击(nonce reuse attack),从而可能危及安全。还有可预测随机数攻击(predictable nonce attack),攻击者会提前推测随机数的模式,并操纵密码学运算。而“过时随机数攻击”(stale nonce attack)则是通过使用过期的随机数来欺骗系统。

防御这些攻击的关键在于:确保随机数是真正随机且不可预测的。密码学协议需要强制保证随机数的唯一性,使用正确的随机数生成方式,并设置机制来拒绝已被重复使用的随机数。尤其是在非对称密码学中,重复使用随机数可能会泄露密钥,或暴露加密通信内容。

另外,也值得把哈希(hash)和随机数(nonce)的区别讲清楚。哈希就像是数据的指纹,是由输入生成的固定长度输出。随机数则是矿工用来操作的变量,它用来生成满足特定要求的哈希值。它们是互补但又不同的概念。

需要理解的是:随机数对于区块链的完整性至关重要。它通过让欺诈性的篡改在计算上变得极其昂贵,从而防止双重支付。它还能通过对制造伪造身份设置成本来抵御 Sybil 攻击。并且它能维持不可篡改性,因为要改变任何区块数据,就必须重新完成所有那种计算工作。

如果你正准备深入加密安全领域,理解随机数在做什么以及为什么重要是必不可少的。这不仅仅是区块链术语,它是密码学如何在全局范围内保护数字系统的核心原则之一。
BTC-1.71%
查看原文
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 评论
  • 转发
  • 分享
评论
请输入评论内容
请输入评论内容
暂无评论