小科普:真随机数和伪随机数

比特币用户很喜欢讨论“非对称加密”、“椭圆曲线”、“量子计算机”这类高深莫测的话题,然后再以一种非常莫名其妙的方式把币弄丢,比如说:“随机”。

历史上多起各品牌的钱包用户丢币事件,都是因为随机函数存在问题。

随机很重要,对于比特币这种密码学电子货币来说,尤其重要。可惜社区内对于随机的讨论并不多,导致很多人缺乏正确的认识,因此,我们今天就和大家聊聊随机。

美国参议院投票赞成对加密货币行业实施税收制度,后续将进行30小时辩论:8月9日消息,美国参议院以68-29的压倒性优势投票赞成拜登总统基础设施法案中的Warner-Sinema-Portman的修正案。此前,该修正案受到了加密货币社区的广泛批评,因为它对矿工和软件开发商等不记录客户信息的非监管行为者提出了报税要求。参议员Cynthia Lummis(R-WY)是Wyden-Toomey-Luumis修正案的共同起草人之一,该修正案免除了这些高额的税收要求,她在推特上表示:“我理解我同事的立场。但是,如果我们不改变这个法案中的语言,真正的人将会受到伤害。”据悉,参议院允许在投票后将进行30小时的辩论,若有异议,参议院仍然可以投票改变基础设施法案,但之后它将被签署成为法律。(Decrypt)[2021/8/9 1:44:17]

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

成都影达CEO姜疆:NFTs使得患者、医生、研究机构等组织进行更好的数据资产变现:金色财经现场报道,4月23日,数御未来——2021数据与存储产业峰会在成都举办。在会议现场,成都影达科技CEO姜疆指出,其实我们已经进入虚拟世界了,可以结合区块链的方式发行虚拟资产。NFTs使得患者、医生、研究机构等医疗行业的组织进行更好的数据资产变现。医疗世界NFT的第一步是:按照深度表型分析模板对医疗数据进行NFT资产发行; 对医生品牌和IP进行虚拟NFT资产发行。[2021/4/23 20:50:46]

大部分计算机程序和语言中的随机函数,都是伪随机数生成器,它们都是由确定的算法,通过一个“种子”(比如“时间”),来产生“看起来随机”的结果。

华尔街金融分析师:继Ripple之后,SEC将瞄准其他“垃圾”币:近日,华尔街金融分析师、比特币支持者Max Keiser在接受采访时表示,在对Ripple提起诉讼后,SEC不会就此罢休。它将作为比特币的无人机,瞄准其他“垃圾”币,如Stellar和Cardano。Keiser称,BTC正在“大力摧毁任何绊脚石。比特币将改变你,而你不能改变比特币。”(Crypto Potato)[2020/12/25 16:31:40]

毫无疑问,任何人只要知道算法和种子,或者之前已经产生了的随机数,都可能获得接下来随机数序列的信息。因为它们的可预测性,在密码学上并不安全,所以我们称其为“伪随机”。这种随机数,用来让游戏里的小人跑跑路没多大问题,如果用来生成比特币私钥,那可就太不安全了。

再说说真随机数生成器,中文维基中,将“硬件随机数生成器”(HRNG)等同于真随机数生成器,这其实并不十分准确,严格意义上的真随机可能仅存在于量子力学之中,我们当前所想要的(或者所能要的),并不是这种随机。

我们其实想要一种不可预测的、统计意义上的、密码学安全的随机数,只要能做到这一点的随机数生成器,都可以称其为真随机数生成器。这种真随机,并不一定非得是特殊设计的硬件,Linux操作系统内核中的随机数生成器(/dev/random),维护了一个熵池(搜集硬件噪声,如:键盘、鼠标操作、网络信号强度变化等),使得它能够提供最大可能的随机数据熵,因此同样是高品质的真随机数生成器。

不过/dev/random是阻塞的,也就是说,如果熵池空了,对于/dev/random的读操作将被挂起,直到收集到足够的环境噪声为止。

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

好了,在说了这么多之后,在我们开发比特币应用时,应该使用何种随机数生成器来生成私钥呢?

答案很简单:urandom。永远只用urandom。

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

历史上,无数次随机数失败案例,大多出现在用户态的随机数生成器,而且,用户态的随机数生成器几乎总是要依赖于,内核态的随机数生成器(如果不依赖,那风险则更大),除了没准儿能简化您的某些开发工作,丝毫看不出任何额外的好处,反而增加了因引入第三方代码,所可能导致的潜在安全风险。

因此,开发者在需要密码学安全的随机数时,应使用urandom。

最后,

有小朋友问,你们的BITHD硬件钱包生成的是真随机数吗?

这里回答一下:当然是啦~

BITHD的芯片是有硬件随机数发生器的,它会通过获取物理噪声源来生成真随机数,这个是不可预测,不可探测的,是真正的随机源。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

区块分享

USDTSubstrate 区块链框架:用十几分钟开发出一条区块链

在柏林举行的 Web3 峰会上,Parity 的创始人 Gavin Wood 演示了在不到 60 分钟的时间内,在一台全新笔记本电脑上开发出一条区块链,并宣布了 2018 年 11 月发布 Substrate 1.0-beta。Polkadot 的基石 Substrate,被称为 “反对区块链最大化主义的最大注”,现在成为了一个独立的区块链框架。

DOGE金色趋势丨BTC再度站回至前期上行趋势线

前期价格触及10500美元开始回落,并一路下探至接近120日线附近,成交量逐步衰减,下跌动能放缓,今日迎来反弹,价格再次站回至5日线上方,同时站上6433美元启动的上涨第一阶段趋势线上方,后续站稳不破,继续震荡上行的概率大,前期提示,减半行情并未走完,近期持续下杀,价格偏离均线较远,需要维持一段时间的震荡修复,形成短线多头趋势。

UNI如何理解ETH2.0:先从理解术语开始

前言:ETH2.0有很多新内容新术语,对于刚接触的读者来说,会有不少疑惑。本文简要地将其中比较常用的术语进行简单阐述,以帮助大家理解。本文适合ETH2.0的初学者阅读。本文作者是Alex T,由“蓝狐笔记”的“SIEN”翻译。 ETH2.0等待时间很长,如果将网络从PoW迁移至PoS,这个等待时间还会更长,与此同时,在可扩展性方面也有一些重大的升级。

[0:0ms0-0:484ms