主页 > 怎么下载imtoken苹果版 > 加密 RNG 正在危害您的比特币私钥

加密 RNG 正在危害您的比特币私钥

怎么下载imtoken苹果版 2023-06-26 05:54:31

加密随机数生成器正在危害您的比特币私钥! 比特币用户喜欢讨论“非对称加密”、“椭圆曲线”、“量子计算机”等高深莫测的话题,然后以一种非常莫名其妙的方式丢币,比如:“随机”。

日前,火星人@Ryan_XxOo在微博上爆料,brainwallet.org网站用户因随机函数问题丢币。

随机性非常重要,尤其是比特币这种加密电子货币。 遗憾的是,社区对随机性的讨论不多,导致很多人缺乏正确的认识。 所以小太今天就和大家聊聊随机性。

密码随机数生成器正在危及你的比特币私钥安全

说到随机性,有两个概念必须要弄清楚:“真随机数发生器”(TRNG)和伪随机数发生器(PRNG)。

大多数计算机程序和语言中的随机函数确实是伪随机数发生器。 它们都使用“种子”(例如“时间”)通过确定性算法生成“看起来随机”的结果。

毫无疑问比特币交易生成器app,任何人只要知道算法和种子,或者之前生成的随机数,就有可能获得下一个随机数序列的信息。 由于它们的可预测性,它们在密码学上并不安全,因此我们称它们为“伪随机”。 这种随机数对于游戏中的反派逃跑问题不大。 如果用来生成比特币私钥,太不安全了。

让我们谈谈真正的随机数生成器。 中文维基将“硬件随机数生成器”(HRNG)等同于真随机数生成器。 这实际上不是很准确。 严格意义上的真正随机性可能只存在于量子力学中。 在 中,我们目前想要(或能够想要)的不是这种随机性。

我们实际上想要一个不可预测的、统计的和加密安全的随机数。 只要能做到这一点的随机数生成器就可以称为真随机数生成器。 这种真正的随机性不一定非得是专门设计的硬件。 Linux操作系统内核中的随机数生成器(/dev/random)维护着一个熵池(收集硬件噪声,如:键盘、鼠标操作、网络信号强度变化等),从而提供最大可能的随机数据熵,所以它也是一个高质量的真随机数发生器。

然而 /dev/random 是阻塞的,也就是说,如果熵池为空,对 /dev/random 的读取操作将被暂停,直到收集到足够的环境噪声。

因此,在开发程序时,我们应该将/dev/urandom作为/dev/random的一个副本,它不会阻塞,但它的输出熵可能小于/dev/random。

好了,说了这么多,我们在开发比特币应用的时候应该使用什么样的随机数生成器来生成私钥呢?

答案很简单:随机数。 始终只使用 urandom。

不要使用任何第三方的随机数方案,即使是一些提供随机函数的高级安全库,号称“非常安全”。 因为它们都是用户态的密码随机数生成器,而urandom是内核态的随机数生成器。 内核可以访问原始设备的熵,内核可以确保它不会在应用程序之间共享相同的状态。

历史上无数的随机数失败案例大多发生在用户态的随机数生成器,而用户态的随机数生成器几乎总是依赖于内核态的随机数生成器(如果不依赖,那么风险就更大了),除了可能简化你的一些开发工作之外,没有任何额外的好处可言,反而增加了引入第三方代码可能带来的潜在安全风险。

因此,开发人员在需要加密安全随机数时应使用 urandom。

密码随机数生成器正在危及你的比特币私钥安全

最后说一下在安卓手机上使用比太钱包如何安全生成比特币私钥:

1、如果您使用比特币冷钱包,请确保您的手机处于断网状态,永久断网;

2、您可以安全地使用比太钱包生成任意数量的比特币私钥;

3、如果你特别在意“真”随机性,担心熵池不够用,那么手机开机后,随便做点什么,玩游戏,看视频,刷微博比特币交易生成器app,聊聊微信,然后去Generate a Bitcoin private key,你能得到的随机性可能比很多硬件随机数生成器要“真实”得多;