应用于区块链的乱数产生方法、装置及乱数产生器
技术领域
本发明实施例涉及乱数技术领域,尤其涉及一种应用于区块链的乱数产生方法、装置及乱数产生器。
背景技术
近年来,区块链、物联网、智慧城市与新金融技术服务逐渐成为新兴应用发展的主力,进而对于数位货币、数位签章、加密资讯、个人资料保密及资讯安全性上,有着愈来愈严苛的需求。
目前,在各种不同的加密方式中,为确保资料的机密性、完整性、不可否认性及可用性,会先透过乱数产生器产生出一组乱数,然后以此乱数产生金钥或区块链种子来进行加密与解密。
然而,目前乱数产生器产生乱数的方式,所产生的乱数的乱度较低,容易被攻击者破解,进而威胁加密信息的安全性。
发明内容
本发明实施例提供一种应用于区块链的乱数产生方法、装置及乱数产生器,以克服目前区块链中产生乱数的方式所产生的乱数乱度较低的技术问题。
第一方面,本发明实施例提供一种应用于区块链的乱数产生方法,基于乱数产生器,所述乱数产生器包括储存组件与被动组件,所述方法包括:
获取基于所述储存组件生成的第一乱数种子;
获取基于所述被动组件生成的第二乱数种子;
混合所述第一乱数种子与所述第二乱数种子,得到第三乱数种子;
对所述第三乱数种子进行加密处理,得到目标乱数。
在一种可行的设计中,所述获取基于所述储存组件生成的第一乱数种子,包括:
采集所述储存组件在运行过程中的运行参数;
基于所述运行参数,生成所述第一乱数种子。
在一种可行的设计中,所述运行参数包括所述储存组件的存储区域参数、表更新参数、闪存块页参数、电流参数、坏块表格参数中的一项或多项。
在一种可行的设计中,所述被动组件包括振荡电路,所述获取基于所述被动组件生成的第二乱数种子,包括:
采集所述振荡电路在运行过程中产生的振荡信号;
基于所述振荡信号,生成所述第二乱数种子。
在一种可行的设计中,所述混合所述第一乱数种子与所述第二乱数种子,得到第三乱数种子,包括:
混合所述第一乱数种子与所述第二乱数种子,并对混合后的乱数种子进行加扰,得到所述第三乱数种子。
在一种可行的设计中,所述对所述第三乱数种子进行加密处理,得到目标乱数,包括:
调用预设的哈希加密算法对所述第三乱数种子进行加密处理,得到所述目标乱数。
第二方面,本发明实施例提供一种应用于区块链的乱数产生装置,基于乱数产生器,所述乱数产生器包括储存组件与被动组件,所述装置包括:
第一获取模块,用于获取基于所述储存组件生成的第一乱数种子;
第二获取模块,用于获取基于所述被动组件生成的第二乱数种子;
混合模块,用于混合所述第一乱数种子与所述第二乱数种子,得到第三乱数种子;
加密模块,用于对所述第三乱数种子进行加密处理,得到目标乱数。
在一种可行的设计中,所述第一获取模块,包括:
第一采集模块,用于采集所述储存组件在运行过程中的运行参数;
第一生成模块,用于基于所述运行参数,生成所述第一乱数种子。
在一种可行的设计中,所述运行参数包括所述储存组件的存储区域参数、表更新参数、闪存块页参数、电流参数、坏块表格参数中的一项或多项。
在一种可行的设计中,所述被动组件包括振荡电路,所述第二获取模块,包括:
第二采集模块,用于采集所述振荡电路在运行过程中产生的振荡信号;
第二生成模块,用于基于所述振荡信号,生成所述第二乱数种子。
在一种可行的设计中,所述混合模块用于:
混合所述第一乱数种子与所述第二乱数种子,并对混合后的乱数种子进行加扰,得到所述第三乱数种子。
在一种可行的设计中,所述加密模块,用于:
调用预设的哈希加密算法对所述第三乱数种子进行加密处理,得到所述目标乱数。
第三方面,本发明实施例提供一种应用于区块链的乱数产生器,包括:储存组件、被动组件与至少一个处理器和存储器;
所述存储器存储计算机执行指令;
所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如第一方面所提供的应用于区块链的乱数产生方法。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如第一方面所提供的应用于区块链的乱数产生方法。
本发明实施例所提供的应用于区块链的乱数产生方法、装置及乱数产生器,乱数产生器包括储存组件与被动组件,通过获取基于储存组件生成的第一乱数种子,以及基于被动组件生成的第二乱数种子,然后混合第一乱数种子与第二乱数种子,得到第三乱数种子,并对第三乱数种子进行加密处理后,即可得到目标乱数。本发明实施例中,由于储存组件与被动组件所产生的两种乱数种子本身就具较高的随机性,在将这两种乱数种子混合后,所生成的第三乱数种子便会具有更高的随机性,因此能够有效保证利用第三乱数种子生成的目标乱数具有较高的乱度,且不可预测,有助于提升区块链的保密性与安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中提供的应用于区块链的乱数生成方法的流程示意图一;
图2为本发明实施例中提供的一种储存组件的架构示意图;
图3为本发明实施例中提供的一种振荡电路的电路结构示意图一;
图4为本发明实施例中提供的一种振荡电路的电路结构示意图二;
图5为本发明实施例中提供的应用于区块链的乱数生成方法的流程示意图二;
图6为本发明实施例中提供的应用于区块链的乱数生成装置的模块示意图;
图7为本发明实施例中提供的一种应用于区块链的乱数产生器的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
其中,本发明实施例中的术语“第一”、“第二”、“第三”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例,例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
目前,区块链中产生乱数的方式所产生的乱数的乱度较低,容易被攻击者破解,进而威胁区块链中加密信息的安全性。为了解决该技术问题。本发明实施例提供了一种应用于区块链的乱数产生方法,该方法基于乱数产生器(也叫随机数产生器)实现。其中,该乱数产生器用来产生包含若干个数字或字符的乱数序列(也叫随机数序列)。具体的,该乱数产生器包括储存组件与被动组件,本发明通过获取基于储存组件生成的第一乱数种子,以及基于被动组件生成的第二乱数种子,然后混合第一乱数种子与第二乱数种子,得到第三乱数种子,并对第三乱数种子进行加密处理后,即可得到目标乱数。由于储存组件与被动组件所产生的两种乱数种子本身就具较高的随机性,在将这两种乱数种子混合后,所生成的第三乱数种子便会具有更高的随机性,因此能够有效保证利用第三乱数种子生成的目标乱数具有较高的乱度,且不可预测,有助于提升区块链的保密性与安全性。
其中,储存组件可以采用包括多个存储单元的存储器,例如高速随机存取存储器存储器(Random Access Memory,简称RAM)、非易失性存储器(Non-volatile memory,简称NVM)、磁盘存储器等。另外,还可以为USB闪存盘(简称U盘)、移动硬盘、只读存储器、磁盘或光盘等。被动组件又称为无源组件,可以由电阻、电容及电感等元件组成。其自身不消耗电能,只需输入信号,不需要外加电源就能正常工作。
参照图1,图1为本发明实施例提供的应用于区块链的乱数生成方法的流程示意图一。本发明实施例中,上述应用于区块链的乱数产生方法包括:
步骤S101,获取基于所述储存组件生成的第一乱数种子。
其中,储存组件作为一种记忆部件,只要开始运行,其内部的运行参数就会发生变化,例如随着储存组件老化造成的数据储存单元改变、不同数据的读取与写入、不同区块的数据储存位置改变等原因,其内部的运行参数都会发生变化。因此,通过采集上述不断发生变化的运行参数,即可得到高质量、高随机性的乱数种子。
即在本发明实施例中,可以将储存组件作为一个乱数种子生成装置,来生成第一乱数种子。
步骤S102,获取基于所述被动组件生成的第二乱数种子。
其中,上述被动组件作为一种由物理器件组成的组件,其输出信号只与输入信号与自身的物理特性有关,不受计算机程序的控制,具有较强的抗干扰能力。通常是通过重复采样统计学随机的“噪声”讯号,来生成一系列的随机数种子,整个过程在理论上是完全不可预测的。
即在本发明实施例中,可以将被动组件作为一个乱数种子生成装置,来生成第二乱数种子。
应当理解的是,上述步骤S101与S102之间并无先后顺序关系,在本发明可行的实施例中,可以先获取基于储存组件生成的第一乱数种子,再获取基于被动组件生成的第二乱数种子;也可以先获取基于被动组件生成的第二乱数种子,再获取基于储存组件生成的第一乱数种子;还可以同时获取基于储存组件生成的第一乱数种子与基于被动组件生成的第二乱数种子。
步骤S103,混合所述第一乱数种子与所述第二乱数种子,得到第三乱数种子。
可以理解的是,由于第一乱数种子与所述第二乱数种子本身就具有较高的随机性,因此在将第一乱数种子与第二乱数种子混合之后,所得到的第三乱数种子在理论上要比第一乱数种子与第二乱数种子具有更高的随机性。
本发明实施例中,将第一乱数种子与第二乱数种子混合在一起后,还可以对混合后的乱数种子进行扰乱,从而进一步提升第三乱数种子的随机性。
步骤S104,对所述第三乱数种子进行加密处理,得到目标乱数。
其中,可以将上述第三乱数种子作为乱数生成器的初始数值,然后利用特定的算法进行加密运算,即可产生高乱度的乱数序列。
其中,上述乱度用于表示乱数的混乱程度,乱度越高,表示乱数的随机性越好。
本发明实施例所提供的应用于区块链的乱数产生方法,基于乱数产生器,该乱数产生器包括储存组件与被动组件,通过获取基于储存组件生成的第一乱数种子,以及基于被动组件生成的第二乱数种子,然后混合第一乱数种子与第二乱数种子,得到第三乱数种子,并对第三乱数种子进行加密处理后,即可得到目标乱数。由于储存组件与被动组件所产生的两种乱数种子本身就具较高的随机性,在将这两种乱数种子混合后,所生成的第三乱数种子便会具有更高的随机性,因此能够有效保证利用第三乱数种子生成的目标乱数具有较高的乱度,且不可预测,有助于提升区块链的保密性与安全性。
在本发明一种可行的实施例中,上述步骤S101中获取基于储存组件生成的第一乱数种子,包括:
采集储存组件在运行过程中的运行参数,基于该运行参数,生成第一乱数种子。
其中,上述运行参数包括储存组件的存储区域参数、表更新参数、闪存块页参数、电流参数、坏块表格参数中的一项或多项。
具体的,参照图2,图2为本发明实施例中提供的一种储存组件的架构示意图。在本发明实施例中,上述储存组件包括逻辑层(Logic layer)、软件中间层(Flash translationlayer,简称FTL)以及物理层(Physical layer)。
采集储存组件在读写数据过程中产生的运行参数包括获取逻辑层中的逻辑定位信息,如获取数据的写入位置、“Unit”(自定义的逻辑单位)和相对应的表更新参数等;以及获取FTL层中的物理定位信息,如实际写下的闪存块页(Flash Block Page)的数据、电气特性(包括电流值、电压值等)、表深度(table depth)、存储深度(Current Depth)、块结束计数(Block end count)、坏块表格参数等。
在本发明一种可行的实施例中,被动组件包括振荡电路,上述步骤S102中获取基于被动组件生成的第二乱数种子,包括:
采集振荡电路在运行过程中产生的振荡信号,基于该振荡信号,生成第二乱数种子。
其中,上述振荡电路可以采用RLC振荡电路。
在本发明一种可行的实施例中,上述振荡电路可以由多个金属氧化物半导体场效应管(metal oxide semiconductor,简称mos管)、电阻等器件经过串联和/或并联组成。
为了更好的理解本发明实施例,参照图3与图4,图3为本发明实施例中提供的一种振荡电路的电路结构示意图一,图4为本发明实施例中提供的一种振荡电路的电路结构示意图二。
在图3中,R表示电阻,Iin表示输入信号,Iout表示输出的振荡信号,I表示电流。
在图4中,Iin表示输入信号,Iout表示输出的振荡信号,IQ表示电流,Vb表示基准电压,CLK表示时钟信号,C表示电容。
在本发明另一种可行的实施例中,步骤S103中混合第一乱数种子与第二乱数种子,得到第三乱数种子,具体包括:
混合第一乱数种子与第二乱数种子,并对混合后的乱数种子进行加扰,得到第三乱数种子。
其中,加扰可以理解为采用扰码或伪随机数,与上述混合后的乱数种子进行特定的运算,从而得到上述第三乱数种子。
例如,本实施例中,可以将加法运算用于加扰运算。在基于加法运算的加扰运算中,先确定一组扰码,然后在该扰码与上述混合后的乱数种子之间进行加法运算,生成的新乱数种子即可确定为上述第三乱数种子。
本发明实施例中,通过混合上述第一乱数种子与第二乱数种子,并进行加扰操作,可以进一步改变第一乱数种子与第二乱数种子的随机性,从而使得到的第三乱数种子能够具有更高的随机性,且不可预测,有助于提升区块链的保密性与安全性。
在本发明一种可行的实施例中,上述步骤S104中对第三乱数种子进行加密处理,得到目标乱数,包括:
调用预设的哈希加密算法对第三乱数种子进行加密处理,得到目标乱数。
其中,哈希加密算法可以把任意长度的第三乱数种子作为输入,通过散列算法将该输入变换成固定长度的输出,重新建立一个哈希值作为上述目标乱数。其中,哈希值通常用一个短的随机字母和数字组成的字符串来代表。
本发明实施例中,通过调用预设的哈希加密算法对第三乱数种子进行加密的优势在于:不需要对第三乱数种子提前进行加密,在没有碰撞或溢位的情况下,只需一次读取数据即可找到需要的数据,且搜寻速度与数据量的大小无关;另外,还具有保密性高、节省存储空间等优势。
基于上述实施例描述的内容,为了更好的理解本发明实施例中提供的应用于区块链的乱数产生方法,参照图5,图5为本发明实施例中提供的应用于区块链的乱数生成方法的流程示意图二。
在本发明实施例中,先采集储存装置中的运行参数,基于该运行参数生成第一乱数种子,以及采集被动元件中的振荡信号,并基于该振荡信号生成第二乱数种子,然后将第一乱数种子与第二乱数种子混合为第三乱数种子后,对第三乱数种子进行加密处理,即可得到目标乱数。由于储存组件与被动组件所产生的两种乱数种子本身就具较高的随机性,在将这两种乱数种子混合后,所生成的第三乱数种子会具有更高的随机性,因此能够有效保证利用第三乱数种子生成的目标乱数具有较高的乱度。
进一步的,本发明实施例中还提供一种应用于区块链的乱数产生装置,该装置基于乱数产生器,该乱数产生器包括储存组件与被动组件。参照图6,图6为本发明实施例中提供的乱数生成装置的模块示意图。本发明实施例中提供的乱数产生装置60包括:
第一获取模块601,用于获取基于储存组件生成的第一乱数种子。
第二获取模块602,用于获取基于被动组件生成的第二乱数种子。
混合模块603,用于混合第一乱数种子与第二乱数种子,得到第三乱数种子。
加密模块604,用于对第三乱数种子进行加密处理,得到目标乱数。
本发明实施例提供的应用于区块链的乱数产生装置60,其所记载的技术方案与上述图1中所描述的应用于区块链的乱数产生方法中的技术方案,其实现原理和技术效果类似,具体可以参见前述实施例中的相关描述,本实施例此处不再赘述。
本发明实施例所提供的应用于区块链的乱数产生装置60,由于储存组件与被动组件所产生的两种乱数种子本身就具较高的随机性,在将这两种乱数种子混合后,所生成的第三乱数种子便会具有更高的随机性,因此能够有效保证利用第三乱数种子生成的目标乱数具有较高的乱度,且不可预测,有助于提升区块链的保密性与安全性。
在本发明一种可行的实施例中,第一获取模块601包括:
第一采集模块,用于采集储存组件在运行过程中的运行参数,和第一生成模块,用于基于上述运行参数,生成第一乱数种子。
在本发明一种可行的实施例中,上述运行参数包括储存组件的存储区域参数、表更新参数、闪存块页参数、电流参数、坏块表格参数中的一项或多项。
在本发明一种可行的实施例中,上述被动组件包括振荡电路,第二获取模块602包括:
第二采集模块,用于采集振荡电路在运行过程中产生的振荡信号,和第二生成模块,用于基于上述振荡信号,生成第二乱数种子。
在本发明一种可行的实施例中,混合模块603用于:
混合第一乱数种子与第二乱数种子,并对混合后的乱数种子进行加扰,得到第三乱数种子。
在本发明一种可行的实施例中,加密模块604用于:
调用预设的哈希加密算法对第三乱数种子进行加密处理,得到目标乱数。
本发明实施例所提供的应用于区块链的乱数产生装置60,先采集储存装置中的运行参数,基于该运行参数生成第一乱数种子,以及采集被动元件中的振荡信号,并基于该振荡信号生成第二乱数种子,然后将第一乱数种子与第二乱数种子混合为第三乱数种子后,对第三乱数种子进行加密处理,即可得到目标乱数。由于储存组件与被动组件所产生的两种乱数种子本身就具较高的随机性,在将这两种乱数种子混合后,所生成的第三乱数种子会具有更高的随机性,因此能够有效保证利用第三乱数种子生成的目标乱数具有较高的乱度。
进一步的,本发明实施例中还提供一种应用于区块链的乱数产生器。参照图7,图7为本发明实施例中提供的一种应用于区块链的乱数产生器的硬件结构示意图。如图7所示,本实施例提供的应用于区块链的乱数产生器70包括储存组件701、被动组件702与至少一个处理器703和存储器704。
其中,储存组件701与被动组件702即为上述各实施例中所描述的储存组件与被动组件。
存储器704存储计算机执行指令;上述至少一个处理器703执行存储器704存储的计算机执行指令,使得上述至少一个处理器703执行如上述各实施例中所描述的应用于区块链的乱数产生方法,具体可以参见前述实施例中的相关描述,此处不再赘述。
可选地,存储器704既可以是独立的,也可以跟储存组件701或处理器703集成在一起。
当存储器602独立设置时,该乱数产生器70还包括总线705,用于连接储存组件701、被动组件702、处理器703和存储器704。
本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上所述的应用于区块链的乱数产生方法。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。
应理解,上述处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本申请附图中的总线并不限定仅有一根总线或一种类型的总线。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称:ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。