2021-04-07 05:39 | 出处: 数字货币主义
从韭菜中来,到韭菜中去,我是韭哥,手握护宝锤,睁大小眼睛,甄选优质项目,锤死黑心项目,还币圈一片净朗的天空。
众所周知,随机数在密码学中非常重要,保密通信中大量运用的会话密钥的生成即需要真随机数的参与,真随机数作为底层技术,具有很大的发展空间和应用价值,在统计学、密码学、银行业等领域均有应用。如果一个随机数生成算法是有缺陷的,那么会话密钥可以直接被推算出来。若果真发生这种事故,那么任何加密算法都失去了意义。
今天韭哥跟大家一起研究芯链的杀手锏:硬件真随机数的技术原理,首先不管真假,我们要先搞懂什么是随机数,然后才能明白真假随机数的区别。
随机数这个概念其实也没那么复杂,在统计学中,它是专门的随机试验的结果,有一个最重要的特性就是它在产生时,后面的那个数与前面的那个数毫无关系。
那么怎样检验一个数或一组数字到底是不是随机数呢?根据密码学原理,随机数的随机性检验可以分为三个标准:
被统计学伪随机性:统计学伪随机性指的是在给定的随机比特流样本中,1的数量大致等于0的数量,同理,“10”“01”“00”“11”四者数量大致相等。类似的标准被称为统计学随机性。满足这类要求的数字在人类“一眼看上去”是随机的。
密码学安全伪随机性:其定义为,给定随机样本的一部分和随机算法,不能有效的演算出随机样本的剩余部分。
真随机性:其定义为随机样本不可重现。实际上只要给定边界条件,真随机数并不存在,可是如果产生一个真随机数样本的边界条件十分复杂且难以捕捉(比如计算机当地的本底辐射波动值),可以认为用这个方法演算出来了真随机数。
相应的,随机数也分为三类:
伪随机数:满足第一个条件的随机数。
密码学安全的伪随机数:同时满足前两个条件的随机数。可以通过密码学安全伪随机数生成器计算得出。
真随机数:同时满足三个条件的随机数。
真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等,这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高。
使用计算机产生真随机数的方法是获取cpu频率与温度的不确定性以及统计一段时间的运算次数每次都会产生不同的值,系统时间的误差以及声卡的底噪等。
芯链的硬件真随机数产生的原理就是基于物理现象产生的,只不过芯链技术团队的真随机数产品设计的非常巧妙,通过发生层、计算层、调用层这三个方面的底层设计,以从芯片内部电压 ADC (模数转换器)中获取当前电压量化值,并通过一系列过程获得随机数种子,再由HPB的高性能节点把随机数种子提交至区块中。
芯链的BOE硬件示意图
随机数种子只是组成真随机数的一个因子,因为随机数种子是实时采集BOE芯片的电压量化值,因此这个过程无法被操控或者程序预测到,这就是HPB真随机数产品的核心原理。
真随机数是如何产生的,在HPB的设计中,一共有两种方式可以生成真随机数,第一种是连续签名的版本,第二种是基于 commitment 的版本。
在基于连续签名的版本中,HPB 中每个区块的随机数生成,采用连续签名的方式生成,即采用算法,Sn = Sign(Sn-1,SK), HPB 的随机数要求系统对随机种子进行周期性的更换,系统中的周期按照区块进行划分。
Sn 表示区块 n 中的随机数;
Sn-1表示上一个区块随机数;
Sign 表示签名函数;
SK 表示统一对随机种子进行周期性的更换。
Sn = Sign(Sn-1,SK)算法示意图
在基于 commitment 的版本中,HPB 中每个区块的随机数生成,由轮次内的所有高性能节点提交的 commitment 对应的原始随机数共同决定。
以上就是芯链硬件真随机数产生的技术原理,想了解更多芯链的技术,请关注@数字货币主义,韭哥将详细为大家讲解。
想要了解更多芯链的信息,可加入芯链官方社群,扫描二维码即可加入社群与芯链团队零距离沟通,了解芯链最新的项目动态和开发信息。
如群二维码过期,可添加芯链小秘书夏薇vx:music9188进群,备注:芯链即可通过好友。