基于细胞神经网络的伪随机数生成方法与流程

文档序号:11949451阅读:942来源:国知局
本发明属于信息安全领域,尤其涉及一种伪随机数生成方法,可用于网络信息加密。
背景技术
:随机数在密码学的应用中随处可见,如密钥、数字签名和身份认证。常见的随机数生成方法主要有两大类:真随机数生成器TRNG和伪随机数生成器PRNG。真随机数生成器TRNG具有很好的不可预测性,已有很多研究利用噪声作为外部随机源来构造发生器,如吴晓勇、王新亚的专利(专利公开号:CN103049243A)真随机数产生方法及装置,通过将模数转换和数模转换过程中的量化误差的放大过程,再与引入的热噪声求和放大来产生随机数;周昕杰、于宗光、罗静、王栋、田海燕的专利(专利公开号:CN203909778U)多源输入真随机数发生器电路架构,公开了一种通过中间变量对不同类型噪声产生电路进行选择作为噪声源,再用采样校正电路和随机数计数器对其处理得到真随机数的方法。但噪声具有不稳定性,易受到攻击者对外部噪声源的攻击,且真随机数生成器TRNG的生成方法大多数需要基于硬件来实现,生成速率相对较慢。伪随机数生成器PRNG生成随机数的速率快,易于在软硬件中实现,虽然不是真正的随机,但若周期足够大,其特性也足以在很多科学领域得到应用,如随机过程的仿真和电脑算法中的统计采样与性能评估。孙云刚、孙才、陈曦的专利(专利公开号:CN102314332B)伪随机数生成装置和方法,利用位移方向相反的两个线性反馈移位寄存器产生随机比特数;周旭、张飞的专利(专利公开号:CN103034473B)一种伪随机数生成器,通过m序列在数字逻辑电路中生成数字信号,再用数模转换将其转化为模拟信号来作为随机数源;金银军、李晓龙、宁振虎、周端阳、王博、喻贤成的专利(专利公开号:CN102520908B)一种伪随机数生成器及伪随机数生成方法,利用高曲平方算法高效的生成高质量的伪随机数。但这些方法生成的伪随机数序列的统计性能并不十分好,不能很好的应用到信息加密中。技术实现要素:本发明的目的在于针对上述已有技术的不足,提出一种基于细胞神经网络的伪随机数生成方法,以避免随机数生成器的生成效率低和统计性能不够好的缺陷,提高信息加密的安全性。为实现上述目的,本发明包括:(1)用六维细胞神经网络生成随机序列P,并将序列P中的数据按照从左到右、从上到下的顺序依次存入大小为6×6的第一矩阵p[i][j],其中i和j的取值范围均为[0,5];(2)用逻辑斯蒂映射生成随机序列X,并将序列X中的数据按照从上到下、从左到右的顺序依次存入大小为6×6的第二矩阵x[i][j];(3)对第一矩阵p[i][j]和第二矩阵x[i][j]中的数据进行整数化处理;(4)用处理后的第一矩阵p[i][j]和第二矩阵x[i][j]生成大小为6×6的二维数组r[i][j];(5)用二维数组r[i][j]生成64bits的伪随机数;(6)重复步骤(1)到(5),每次循环生成64bits的伪随机数,直到生成所需大小的伪随机数。本发明的优点在于:1.本发明通过用六维细胞神经网络和逻辑斯蒂映射生成伪随机数,提高了伪随机序列的统计性能;2.本发明通过每次循环可生成64bits的伪随机数,提高了伪随机数的生成效率;3.本发明通过提高伪随机数的统计性能和生成效率,增强了信息加密的安全性。附图说明图1为本发明的实现流程图。具体实施方式以下参照附图,对本发明的技术方案和效果作进一步详细说明。参照图1,本发明的实现步骤如下:步骤1:用六维细胞神经网络生成随机序列P。六维细胞神经网络属于连续混沌系统,具有复杂的动力学特性和快速并行处理能力,当时间t趋于无穷时,该系统有两个大于零的李雅普诺夫指数,是一种超混沌系统,基于该系统生成的序列具有更好的随机性和安全性,可以很好地应用于随机数的生成方法中。本实例用六维细胞神经网络生成随机序列P的步骤如下:(1a)迭代六维细胞神经网络1000次消除瞬时效应,使其进入混沌状态,得到新的六个六维细胞神经网络的初始值:x1′=-x3-x4x2′=2x2+x3x3′=14x1-x2x4′=100x1-100x4+100(|x4+1|-|x4-1|)x5′=18x2+x1-x5x6′=4x5-4x6+100x2]]>该公式中状态值x1、x2、x3、x4、x5、x6表示当前时刻六个不同状态的取值,即状态值x1表示当前时刻状态x1的取值、状态值x2表示当前时刻状态x2的取值、状态值x3表示当前时刻状态x3的取值、状态值x4表示当前时刻状态x4的取值、状态值x5表示当前时刻状态x5的取值、状态值x6表示当前时刻状态x6的取值,其状态初始值均由密钥设置;状态值x1'、x2'、x3'、x4'、x5'、x6'表示下一时刻六个不同状态的取值,即状态值x1'是状态值x1下一时刻的取值、状态值x2'是状态值x2下一时刻的取值、状态值x3'是状态值x3下一时刻的取值、状态值x4'是状态值x4下一时刻的取值、状态值x5'是状态值x5下一时刻的取值、状态值x6'是状态值x6下一时刻的取值;(1b)用新的六个初始值继续迭代六维细胞神经网络,每次迭代生成六个数据,将迭代多次生成的数据设为随机序列P,每次迭代前对上次迭代得到的六个数据作如下处理:将第一个数据更新为其与第二个数据的小数部位求和的平均值,将第二个数据更新为其与第三个数据的小数部位求和的平均值,将第三个数据更新为其与第四个数据的小数部位求和的平均值,将第四个数据更新为其与第五个数据的小数部位求和的平均值,将第五个数据更新为其与第六个数据的小数部位求和的平均值,将第六个数据更新为其与第一个数据的小数部位求和的平均值。步骤2:用逻辑斯蒂映射生成随机序列X。逻辑斯蒂映射是一种离散混沌系统,该系统对初始值的选取非常敏感,即当初始值的选取有微小差异时,该系统经过一段时间的演化后会发生非常大的改变;调整该映射的控制参数λ,系统可出现周期分叉的现象,进入混沌状态。由于逻辑斯蒂映射具有的初值敏感性、随机不确定性和遍历性,使其在随机数生成方法中得到了广泛的应用。本实例用逻辑斯蒂映射生成随机序列X的步骤如下:(2a)迭代逻辑斯蒂映射1000次,消除瞬时效应,使其进入混沌状态:逻辑斯蒂映射的公式如下:xn+1=λxn(1-xn),λ∈(0,4),xn∈(0,1)其中xn表示当前状态,其初始值由密钥设置,xn+1是xn迭代得到的下一状态;λ是控制参数,其取值为3.9999;(2b)继续迭代逻辑斯蒂映射,每次迭代生成一个数据,将迭代多次生成的数据设为随机序列X。步骤3:对数据进行整数化处理。由于六维细胞神经网络生成的随机序列P和逻辑斯蒂映射生成的随机序列X中的数据均是小数形式,需对其进行整数化处理,以提取其小数部位的随机性,进一步得到随机性能更好的序列。本实例对数据进行整数化处理的步骤如下:(3a)将(1b)随机序列P中的数据按照从左到右、从上到下的顺序依次存入大小为6×6的第一矩阵p[i][j],将p[i][j]中的数据更新为:p'[i][j]=|p[i][j]|×215modN;(3b)将(2b)随机序列X中的数据按照从上到下、从左到右的顺序依次存入大小为6×6的第二矩阵x[i][j],将x[i][j]中的数据更新为:x'[i][j]=x[i][j]×215modN,其中i和j的取值范围均为[0,5];N是一个正整数;|P[i][j]|代表对P[i][j]取绝对值。步骤4:用处理后的数据生成二维数组r[i][j]。对更新后的第一矩阵p[i][j]和更新后的第二矩阵x[i][j]进行简单数学运算,以进一步优化其数据的随机性能,其步骤如下:(4a)设置大小为6×6的二维数组r[i][j]中的初始值均为0;(4b)对二维数组r[i][j]中的数据进行更新,得到更新后的二维数组r'[i][j]:r′[i][j]=p[i][j]⊕x[i][j]⊕K⊕r[i][j],]]>其中代表异或运算;K是可变参数,其更新公式为:K'=(αK2+β)modN,α为第一更新参数,β为第二更新参数,这两个更新参数的初始值均由密钥设置;(4c)重复(4b)共L次,即对二维数组r[i][j]进行L次更新,得到生成的二维数组r[i][j],1≤L≤4;每次更新前,用步骤1、步骤2、步骤3重新生成第一矩阵p[i][j]和第二矩阵x[i][j]中的数据。步骤5:用二维数组r[i][j]生成64bits的伪随机数。(5a)用(4b)二维数组r[i][j]生成八个8bits的数据,每个数据均为二维数组r[i][j]中若干数据的异或和,即:第一个8bits数据为:第二个8bits数据为:第三个8bits数据为:第四个8bits数据为:第五个8bits数据为:第六个8bits数据为:第七个8bits数据为:第八个8bits数据为:(5b)将生成的八个8bits数据依次输出,得到64bits的伪随机数。步骤6:重复步骤(1)到(5),每次循环生成64bits的伪随机数,直到生成所需大小的伪随机数;每次循环后,将(4b)第一更新参数α更新为与二维数组r[i][j]中所有值的异或和,将(4b)第二更新参数β更新为与二维数组r[i][j]中所有值的异或和。本发明的效果可通过以下检测结果进一步说明:1.检测方法:采用美国国家标准与技术研究所NIST提供的随机性测试SP800-22对上述生成的随机序列的随机性进行检测,该测试包含15个测试项,其中每一项的测试结果均包含P值P-value和通过率Propotion。2.检测结果:用美国国家标准与技术研究所NIST提供的随机性测试SP800-22对用本发明生成的1000组1M的随机序列进行检测,检测结果如表1:表1检测结果StatisticalTestP-valuePropotionResultFrequence0.6935810.9907PassBlockFrequence0.8322730.9842PassCumulativeSums0.2510360.9870PassRuns0.5093530.9870PassLongestRun0.5099060.9814PassRank0.5823790.9860PassFFT0.2513490.9860PassOverlappingTemplate0.1491710.9851PassUniversal0.7038260.9879PassLinearComplexity0.1229870.9888PassApproximateEntropy0.1509730.9870PassSerial0.3763660.9842PassNonOverlappingTemplate0.2141200.9832PassRandomExcursions0.3015710.9852PassRandomExcursionsVariant0.8116440.9867Pass由表1可知,每一项测试结果中的P值P-value不低于0.001且通过率Propotion不低于0.9806,即15个测试项全部通过,被测序列是随机的。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1