小科普:真随机数和伪随机数 - 律动BlockBeats
文章推薦指數: 80 %
大部分计算机程序和语言中的随机函数,都是伪随机数生成器,它们都是由确定的算法,通过一个「种子」(比如「时间」),来产生「看起来随机」的结果。
首頁快訊播客视频專題聯系我們小科普:真随机数和伪随机数项目动态随机数2020年03月05日23:20分享微信掃描二維碼历史上多起钱包用户丢币事件,都是因为随机函数存在问题。
原文标题:《小科普:真随机数和伪随机数》原文来源:bitpieteam比特币用户很喜欢讨论「非对称加密」、「椭圆曲线」、「量子计算机」这类高深莫测的话题,然后再以一种非常莫名其妙的方式把币弄丢,比如说:「随机」。
历史上多起各品牌的钱包用户丢币事件,都是因为随机函数存在问题。
随机很重要,对于比特币这种密码学电子货币来说,尤其重要。
可惜社区内对于随机的讨论并不多,导致很多人缺乏正确的认识,因此,我们今天就和大家聊聊随机。
说到随机,有两个必须要搞清楚的概念:「真随机数生成器」(TRNG)和伪随机数生成器(PRNG)。
大部分计算机程序和语言中的随机函数,都是伪随机数生成器,它们都是由确定的算法,通过一个「种子」(比如「时间」),来产生「看起来随机」的结果。
毫无疑问,任何人只要知道算法和种子,或者之前已经产生了的随机数,都可能获得接下来随机数序列的信息。
因为它们的可预测性,在密码学上并不安全,所以我们称其为「伪随机」。
这种随机数,用来让游戏里的小人跑跑路没多大问题,如果用来生成比特币私钥,那可就太不安全了。
再说说真随机数生成器,中文维基中,将「硬件随机数生成器」(HRNG)等同于真随机数生成器,这其实并不十分准确,严格意义上的真随机可能仅存在于量子力学之中,我们当前所想要的(或者所能要的),并不是这种随机。
我们其实想要一种不可预测的、统计意义上的、密码学安全的随机数,只要能做到这一点的随机数生成器,都可以称其为真随机数生成器。
这种真随机,并不一定非得是特殊设计的硬件,Linux操作系统内核中的随机数生成器(/dev/random),维护了一个熵池(搜集硬件噪声,如:键盘、鼠标操作、网络信号强度变化等),使得它能够提供最大可能的随机数据熵,因此同样是高品质的真随机数生成器。
不过/dev/random是阻塞的,也就是说,如果熵池空了,对于/dev/random的读操作将被挂起,直到收集到足够的环境噪声为止。
因此,在开发程序时,我们应使用/dev/urandom,作为/dev/random的一个副本,它不会阻塞,但其输出的熵可能会小于/dev/random。
好了,在说了这么多之后,在我们开发比特币应用时,应该使用何种随机数生成器来生成私钥呢?答案很简单:urandom。
永远只用urandom。
不要使用任何第三方的随机数解决方案,哪怕是一些高级的安全库,所提供的声称「非常安全」的随机函数。
因为它们都是用户态的密码学随机数生成器,而urandom是内核态的随机数生成器,内核有权访问裸设备的熵,内核可以确保,不在应用程序间,共享相同的状态。
历史上,无数次随机数失败案例,大多出现在用户态的随机数生成器,而且,用户态的随机数生成器几乎总是要依赖于,内核态的随机数生成器(如果不依赖,那风险则更大),除了没准儿能简化您的某些开发工作,丝毫看不出任何额外的好处,反而增加了因引入第三方代码,所可能导致的潜在安全风险。
因此,开发者在需要密码学安全的随机数时,应使用urandom。
最后,有小朋友问,你们的BITHD硬件钱包生成的是真随机数吗?这里回答一下:当然是啦~BITHD的芯片是有硬件随机数发生器的,它会通过获取物理噪声源来生成真随机数,这个是不可预测,不可探测的,是真正的随机源。
来源链接:weixin.qq.com律动BlockBeats提醒,根据银保监会等五部门于2018年8月发布《关于防范以「虚拟货币」「区块链」名义进行非法集资的风险提示》的文件,请广大公众理性看待区块链,不要盲目相信天花乱坠的承诺,树立正确的货币观念和投资理念,切实提高风险意识;对发现的违法犯罪线索,可积极向有关部门举报反映。
项目动态栏目前沿动态,一手掌握随机数2020-03-05分享微信掃描二維碼你可能感興趣DAO激励设计分析系列之一:ArrowDAO一个很特别的DAO-ArrowDAO,它的体系简单易懂,做的东西也足够有趣。
项目动态6小时前Chainge:打造加密市场高流动性Web3.0交易平台Chainge为DeFi用户提供了最直观、最可靠和利益最大化的工具。
项目动态1天前10个新项目,以太坊HackMoney黑客松获奖项目一览黑客松Grant项目中藏着下一个周期的明星项目动态05-30研究院更多05-30在宏观机构眼里,市场是否到底了?05-24如何防止撸空投被举报:从Hop官方报告梳理判定逻辑05-118400万美元撬动400亿金融帝国,UST崩盘始末04-28Near原生稳定币USN解析:与UST有本质不同04-19算法稳定币的魔戒梦:LUNA之后,不会再有下一个UST相關快訊更多25分钟前BinanceLabs负责人即将离职,执行董事NicoleZhang已于上月离职BlockBeats消息,6月3日,据TheBlock报道,知情人士透露,Binance风险投资和孵化部门BinanceLabs负责人BillQian即将离开该公司,Binance方面发言人已确认该消息。
此外,Binance执行董事NicoleZhang已于上月离职,前往LingfengCapital担任合伙人,负责管理其创新基金。
29分钟前Terra生态DEXAstroport已在Terra2.0测试网上运行BlockBeats消息,6月3日,Terra生态DEXAstroport宣布其智能合约已在Terra2.0测试网上运行,接下来将启动主网。
此前Astroport发布Terra2.0计划,计划将智能合约在Terra新网络上重新部署。
1小时前CertiK:微软新的零日漏洞允许黑客访问浏览器插件,建议用户使用硬件钱包BlockBeats消息,据InvestorPlace报道,CertiK安全团队表示,本周早些时候,美国网络安全与基础设施安全局(CISA)在微软的Office产品套件中发现了一个关键的零日漏洞「Follina」(编号CVE-2022-30190),攻击者可使用微软的微软支持诊断工具(MSDT),从远程URL检索并执行恶意代码。
据悉,由于该漏洞允许攻击者绕过密码保护,黑客能够查看并获得受害者的系统和个人信息,并允许黑客提升在受害者系统里的权限,以获得对本地系统和运行进程的额外访问,包括目标用户的互联网浏览器和浏览器插件(如Metamask)。
CertiK安全团队强调了离线存储私钥的重要性,建议使用像Trezor这样的硬件钱包。
2小时前GameFi项目KawaiiIslands新版本更新,新增朋友邀请功能并推出2万美元KOL传播活动BlockBeats消息,6月3日,GameFi项目KawaiiIslands新版本更新,更新日志中说明了新版本的功能迭代,其中新功能包括朋友邀请链接的推出、人像和框架系统的更新、教程改进和六种新内置语言的加入。
另外,团队还推出了「FindingthegreatK-Ambassadors」活动,玩家可以通过标记最喜爱的KOL来推广游戏,活动总奖金为2万美元。
延伸文章資訊
- 1偽隨機數_百度百科
顯然,該算法的缺點是較難確定g與c。 偽隨機數發生器. 因此,偽隨機數生成器(PRNG)一般採用逆轉法,其基礎 ...
- 2簡介亂數 - iT 邦幫忙
密碼學安全偽隨機性,當有一部分的樣本與演算法時,依然無法推測下一個亂數為何。 ... 僞隨機數產生器(PRNG,全名為Pseudo-random Number Generator):滿足第一個 ...
- 3偽隨機數生成器- 維基百科,自由的百科全書
偽隨機數生成器(pseudo random number generator,PRNG),又被稱為確定性隨機比特生成器(deterministic random bit generator,DR...
- 4Random number - 随机数生成器的发展历史 - NKDACS
C语言用来产生伪随机数的库函数rand()的种子是固定的值,因此每次调用该函数产生的随机数数列都是相同的。所以为了获得随机性更好的数列,种子应为一个变量,该变量可以与 ...
- 5小科普:真随机数和伪随机数 - 律动BlockBeats
大部分计算机程序和语言中的随机函数,都是伪随机数生成器,它们都是由确定的算法,通过一个「种子」(比如「时间」),来产生「看起来随机」的结果。