[发明专利]一种基于闪存产生满熵随机数的方法和装置有效
申请号: | 201510026059.2 | 申请日: | 2015-01-19 |
公开(公告)号: | CN104615407B | 公开(公告)日: | 2017-10-10 |
发明(设计)人: | 夏鲁宁;贾世杰;马原;王雷;张琼露 | 申请(专利权)人: | 中国科学院信息工程研究所 |
主分类号: | G06F7/58 | 分类号: | G06F7/58 |
代理公司: | 北京君尚知识产权代理事务所(普通合伙)11200 | 代理人: | 余长江 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开一种基于闪存产生满熵随机数的方法和装置,利用闪存(主要是Nand Flash芯片)不同生产工艺所确定的隧道氧化层厚度,存储单元的物理组织结构以及对存储单元编程擦除操作时产生的随机电子噪声,改变对特定的存储单元进行编程或擦除操作时的参数,利用部分编程法、部分擦除法、或重复编程法提取数据,对数据进行处理后,作为随机数输出。经实验验证所提取的随机数,均具有满熵的性质。本发明不需要专门的电路设计即可产生满足一定要求的随机数,能够降低随机数发生器的使用条件及成本。 | ||
搜索关键词: | 一种 基于 闪存 产生 随机数 方法 装置 | ||
【主权项】:
一种基于闪存产生满熵随机数的方法,其特征在于,采用闪存芯片自身的物理特性作为随机源,改变对特定存储单元编程或擦除操作时的时间与位置参数,从而对存储单元产生随机性的扰动,然后从闪存芯片中提取满熵随机数;所述闪存芯片为Nand Flash芯片时,利用部分编程法、部分擦除法或者重复编程法从Nand Flash中提取满熵随机数;所述部分编程法包括:首先确定每次部分编程的时间T,然后对Nand Flash的1块进行擦除操作,使该块内所有页存储的信息均变为逻辑“1”,A页是此块内的一页,对A页进行多次部分编程,每次持续时间T,每次部分编程结束后,读A页所有存储单元的内容,判断存储单元是否发生位翻转,若某存储单元发生位翻转,则记录此时对A页进行的部分编程数;当A页的99%的存储单元发生位翻转时,将A页的各个存储单元发生位翻转现象时,对应的对A页的部分编程数依次组合起来组成一串数据,并将数据输出;由于对Nand Flash相同页提取的不同组随机数具有很大的相关性,为保证随机数的熵值,对提取的数据进行处理,对数据进行异或运算或求模运算,将处理后的数据作为随机数输出;对相同页进行多组部分编程操作提取随机数,计算多组随机数的信息熵,信息熵的稳定值与每组随机数的大小相同,说明每组随机数都是满熵的;所述部分擦除法包括:首先确定每次部分擦除的时间T,然后对Nand Flash的1块进行擦除操作,使该块内所有页存储的信息均变为逻辑“1”,A页是此块内的一页,对A页进行编程操作,将A页内的所有存储单元变为“0”,接下来对此块进行多次部分擦除操作,每次持续时间T,每次部分擦除结束后,读A页所有存储单元的内容,判断存储单元是否发生位翻转,若某存储单元发生位翻转,则记录此时对此块进行的部分擦除数;当A页的99%的存储单元发生位翻转时,将A页的各个存储单元发生位翻转现象时,对应的对此块的部分擦除数依次组合起来组成一串数据,并将数据输出;由于对Nand Flash相同块和页提取的不同组随机数具有很大的相关性,为保证随机数的熵值,对提取的数据进行处理,对数据进行异或运算或求模运算,将处理后的数据作为随机数输出;对相同块和页进行多组部分擦除操作提取随机数,计算多组随机数的信息熵,信息熵的稳定值与每组随机数的大小相同,说明每组随机数都是满熵的;所述重复编程法包括:首先对Nand Flash的1块进行擦除操作,使该块内所有页存储的信息均变为逻辑“1”,A页和B页是此块内的物理上相邻的两页;然后对该块内的A页进行重复编程操作,每次对A页编程操作之后,对B页进行读操作,观察B页上的各存储单元的是否发生了位翻转现象,若B页上的某存储单元发生了位翻转现象,记录此时对A页的编程次数;若对A页若干次编程操作后,B页上的某存储单元未发生位翻转,则记编程次数为0;当B页的99%的存储单元发生位翻转时,将B页的各个存储单元发生位翻转现象时,对应的A页的重复编程数依次组合起来组成一串数据,并将数据输出;由于对Nand Flash相同两页提取的不同组随机数具有很大的相关性,为保证随机数的熵值,对提取的数据进行处理,可采取对数据进行异或运算或求模运算,将处理后的数据作为随机数输出;对相同两页进行多组重复编程操作提取随机数,计算多组随机数的信息熵,信息熵的稳定值与每组随机数的大小相同,说明每组随机数都是满熵的;所述闪存芯片为Nor Flash芯片时,采用部分擦除法从Nor Flash芯片中提取满熵随机数,其方法为:首先确定每次部分擦除的时间T,然后对Nor Flash的1块进行擦除操作,使该块内所有存储单元的信息均变为逻辑“1”,再对此块进行编程操作,使该块内所有存储单元的信息均变为逻辑“0”,接下来对此块进行多次部分擦除操作,每次持续时间T,每次部分擦除结束后,读该块内所有存储单元的内容,判断存储单元是否发生位翻转,若某存储单元发生位翻转,则记录此时对此块进行的部分擦除数;当此块的99%的存储单元发生位翻转时,将各个存储单元发生位翻转现象时,对应的对此块的部分擦除数依次组合起来组成一串数据,并将数据输出;由于对Nor Flash相同块提取的不同组随机数具有很大的相关性,为保证随机数的熵值,对提取的数据进行处理,对数据进行异或运算或求模运算,将处理后的数据作为随机数输出;对相同块进行多组部分擦除操作提取随机数,计算多组随机数的信息熵,信息熵的稳定值与每组随机数的大小相同,说明每组随机数都是满熵的。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201510026059.2/,转载请声明来源钻瓜专利网。