当年100个比特币只能买一个汉堡,很多人并不在意比特币丢失的问题,比较丢了一个汉堡不算什么,但如今,一个比特币就是几万块真金白银,比特币安全和网络安全又引起了人们的注意,而很多人更多关注的是安全领域中的“非对称算法”,“对称算法”,“哈希算法”在相关产品的应用,很少关注这些算法后面的最大功臣:随机数。
随机数很重要,对于比特币这种密码学电子货币来说,尤其重要,可以说:随机数是以现代密码学为基础的信息安全系统的基石。在现代信息安全系统中,密码体制和算法本身可以被公开,访问策略可以公布,密码设备可能丢失,而系统的安全性要求不受影响。整个系统的安全性完全依赖于随机数序列的生成效率和质量。随机数在基于计算机或Internet的通信和交易中有着广泛的应用。比如数据加密、密钥管理、公钥和私钥的产生、电子商务、数字签名、身份鉴定以及蒙特卡罗仿真等都要用到随机数。高质量的随机数的核心是:不可预测性。对于随机数来说分为两种:伪随机和真随机。
毫无疑问,任何人只要知道算法和种子,或者之前已经产生了的随机数,都可能获得接下来随机数序列的信息。因为它们的可预测性,在密码学上并不安全,所以我们称其为“伪随机”。这种随机数,用来让游戏里的小人跑跑路没多大问题,如果用来生成比特币私钥,那可就太不安全了。所以说为何在PC机等很多软件级别的安全行为都存在很多漏洞,就是因为使用的是伪随机发生器。
伪随机数发生器:(PseudoRandom Number Generator)
伪随机数发生器用于在系统需要随机数的时候,通过一系列种子值计算出来的伪随机数。由于这个种子其实很多时候是用一些计算机的自带计数器或者其他可量化的数字逻辑产生的,所以生成一个真正意义上的“随机数”对于计算机来说是不可能的,伪随机数也只是尽可能地接近其应具有的随机性,但是因为有“种子值”且种子可预测,所以伪随机数在一定程度上是可控可预测的。一些纯软件APP调用的一些库随机数接口,基本都是伪随机。很多比特币被盗的其中一个原因,也是在公私钥对生成的时候对随机数的不重视导致,其他数字货币的原理是类似。
真随机数发生器(True Random Number Generator, TRNG):
真随机数顾名思义,他的随机性基本是不可预测的,是真的随机,TRUG通常基于模拟电路设计,TRNG模拟电路容易受温度、电压、电磁场的干扰而影响生成的随机数质量,随机的不可预测性大大增加。
很多应用于金融领域的安全芯片会针对随机数发生器重点设计,并对各类FIB,电磁,激光等攻击设定特别的方案,真随机针对为了防止针对真随机数发生器的攻击,一种有效的防护手段是在使用随机数之前,先对生成的随机数进行自检。自检可以由硬件设计实现或者在随机数生成接口中软件实现,自检的方法可以参考国家密码管理局颁发的《随机性检测规范,201010》中的检测方法,可以根据实际的需要从15项检测项目中选择一项或者若干项,并选择合适的数据样本进行自检。若自检通过,说明随机数有一定的随机性保证,芯片遭受攻击的可能性较小;若自检不通过,可以重新生成随机数,当连续自检不通过的次数达到一个阈值时,说明芯片很大可能遭受到攻击,这时芯片可以产生中断、复位或者自毁,发出告警。
随机数自检的方式可以在使用随机数之前,对随机数发生器是否遭受攻击作出初步判断,预防不合格的随机数被使用,可有效增强随机数发生器的安全性。以上的真随机的一些方案,都能大大加强我们的安全级别,对于涉及金融和资产交易类的用户来说,重要性不言而喻。