最近一直在研究一些区块链基础知识,我觉得关于随机数(nonces)有很多人都忽略了,虽然它在整个系统的运作中非常核心。



那么,什么是安全中的随机数?基本上,它是“number used once”的缩写,是矿工在挖矿过程中使用的一个关键变量。可以把它看作是使工作量证明系统正常运作的密码谜题的一部分。矿工不断调整这个随机数,直到找到一个满足网络特定要求的哈希输出,通常是像前面有一定数量的零那样。这个反复试错的过程就是我们所说的挖矿,它实际上保障了整个区块链的安全。

这为什么对安全很重要:随机数正是让篡改数据变得计算成本高昂的原因。如果有人想修改一个区块,他们就必须重新计算整个随机数,这在工作量巨大几乎不可能完成。这就是它的全部意义。它防止了双重支付,保持系统的诚信。随机数增加了计算成本,阻止攻击者试图接管网络。就像在门口放了个保镖,让捣乱者费尽心思才能进去。

以比特币为例,这个过程非常简单。矿工获取待确认的交易,将它们打包成一个区块,在区块头中加入一个新的随机数,然后用SHA-256进行哈希。他们检查这个哈希是否满足网络的难度目标。如果不符合,就调整随机数再试一次。反复如此,直到找到符合条件的哈希。然后网络会动态调整难度,以保持区块生成时间的一致性。当更多矿工加入,算力增加,难度也会提高;当算力下降,难度就会降低。这是一个优雅的自我平衡系统。

有趣的是,随机数在密码学中以不同的形式出现。你有在安全协议中用来防止重放攻击的密码随机数,用于生成唯一会话值。还有哈希函数中的随机数,用来改变输入以得到不同的输出。甚至在普通编程中,随机数也用来确保数据的唯一性,避免冲突。核心思想都是一样的:唯一性和不可预测性。

现在,人们常常把随机数和哈希搞混。哈希就像数据的指纹,是固定长度的输出,输入不同,输出也不同。而随机数是你用来调整输入,从而生成不同哈希的那个数字。它们在安全体系中相辅相成。

但问题在于:随机数相关的攻击。主要有随机数重用攻击,即攻击者重复使用同一个随机数,危及安全;可预测随机数攻击,即随机数的模式变得可以猜测;以及过时随机数攻击,利用旧的随机数值。为了防范这些攻击,协议必须保证随机数的唯一性和不可预测性。良好的随机数生成器至关重要。系统还需要检测并拒绝重复使用的随机数。在非对称加密中,重复使用随机数可能泄露密钥或破坏加密的隐私,所以绝不能掉以轻心。

总结一下:一个坚实的随机数在安全架构中至关重要。不断更新密码学库、定期审查实现细节、严格遵循标准算法,都是我们应对不断演变威胁的方式。这些基础性的工作,确保了整个系统的可信赖性。
BTC-1.47%
查看原文
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 评论
  • 转发
  • 分享
评论
请输入评论内容
请输入评论内容
暂无评论