CN104615407B - 一种基于闪存产生满熵随机数的方法和装置 - Google Patents

一种基于闪存产生满熵随机数的方法和装置 Download PDF

Info

Publication number
CN104615407B
CN104615407B CN201510026059.2A CN201510026059A CN104615407B CN 104615407 B CN104615407 B CN 104615407B CN 201510026059 A CN201510026059 A CN 201510026059A CN 104615407 B CN104615407 B CN 104615407B
Authority
CN
China
Prior art keywords
random number
memory cell
pages
flash
page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510026059.2A
Other languages
English (en)
Other versions
CN104615407A (zh
Inventor
夏鲁宁
贾世杰
马原
王雷
张琼露
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Information Engineering of CAS
Original Assignee
Institute of Information Engineering of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Information Engineering of CAS filed Critical Institute of Information Engineering of CAS
Priority to CN201510026059.2A priority Critical patent/CN104615407B/zh
Publication of CN104615407A publication Critical patent/CN104615407A/zh
Application granted granted Critical
Publication of CN104615407B publication Critical patent/CN104615407B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Read Only Memory (AREA)
  • Semiconductor Memories (AREA)

Abstract

本发明公开一种基于闪存产生满熵随机数的方法和装置,利用闪存(主要是Nand Flash芯片)不同生产工艺所确定的隧道氧化层厚度,存储单元的物理组织结构以及对存储单元编程擦除操作时产生的随机电子噪声,改变对特定的存储单元进行编程或擦除操作时的参数,利用部分编程法、部分擦除法、或重复编程法提取数据,对数据进行处理后,作为随机数输出。经实验验证所提取的随机数,均具有满熵的性质。本发明不需要专门的电路设计即可产生满足一定要求的随机数,能够降低随机数发生器的使用条件及成本。

Description

一种基于闪存产生满熵随机数的方法和装置
技术领域
本发明属于随机数产生技术领域,特别涉及一种基于闪存产生满熵随机数的方法和装置。
背景技术
随着网络的发展,对安全通信技术有了更高的要求,密码技术的重要性与日俱增。由于随机数是大多数密码技术的核心,因此特别需要能产生真随机数的装置,以此来产生真正不可预测的随机数。
大多数数学库中的伪随机数发生器虽能产生具有较好统计特性的伪随机数序列,但这些软件运行在具有确定性的计算机上,因此并不是真的不可预测。真随机性需要用到一些硬件装置,如二极管,放射性样品等,由于电子噪声或不可控变量的原因,它们的行为是真正不可预测的。
为产生真正不可预测的随机数,已有一些方法被提出来了,其中大多数是基于硬件的随机数发生器,并且需要专门的电路设计,它们可能具有非常好的速度与安全性能,但通常由于其昂贵的价格或缺少普遍可用性而不实用。
当前,闪存(即Flash存储芯片,包括Nand Flash和Nor Flash)作为一种非易失性(在断电情况下仍能保持所存储的信息)的存储器件,已经广泛地应用于各种消费类电子产品中。智能手机、数码相机等所使用的SD卡、TF卡,日常所用的U盘,以及逐渐普及的固态硬盘等都是以Nand Flash作为存储器件的数据存储装置。Nand Flash芯片采用浮栅结构的晶体管作为存储单元,如附图1所示,这类结构具有两个多晶硅栅极,其中一个有电气连接,称为控制栅,也就是一般意义上的栅极。另外一个没有外引线的栅极,被完全包裹在一层二氧化硅绝缘层(隧道氧化层)内,因为这个特殊的栅极是浮空的,所以称之为“浮置栅”。与隧道氧化层相连的是晶体管的源极,漏极以及硅衬底。浮栅晶体管的工作原理是利用浮置栅上根据是否储存有电荷或储存电荷的多少来改变晶体管的阈值电压,从而改变存储单元的外部特性。
如附图2所示,Nand Flash的若干个存储单元的晶体管的控制栅极通过“字线”连接,构成一页(Page),相邻的多页构成一块(Block)。相邻晶体管的漏极和源极头尾相连,最高端的漏极接“位线”,最低端的源极与公共源极相连。通过位线相连的同一块上的相邻的两个存储单元属于不同的页。一个Nand Flash芯片中含有多个块(常见的有8192块或4096块等),一个块包含多页(常见的为32页或者64页),一页包含若干个字节(常见的为512Bytes或者2Kbytes)。
Nand Flash的编程和擦除操作,对Nand Flash的存储单元进行编程(充电)操作,即通过在对应晶体管的控制栅极施加一定电压,使得电子通过隧道氧化层进入浮置栅极,代表存储信息“0”。对Nand Flash的存储单元进行擦除(放电)操作,即通过将应晶体管的控制栅极接地,源极与漏极开路,使得电子从浮置栅极通过隧道氧化层进入硅衬底,代表存储信息“1”。
在对Nand Flash的存储单元不断进行编程和擦除(充电和放电)的操作过程中,在靠近硅衬底的隧道氧化层中,交替的捕获和释放电子,从而产生离散的电流变化,导致产生了在电子设备中常见的随机电子噪声(RTN,Random Telegraph Noise)。由于RTN的存在,使得捕获和释放电子的时间是随机的,即对Nand Flash的存储单元的充电和放电时间是随机的。
RTN的振幅与栅极的面积成反比(栅极面积越小,其振幅越大),且与隧道氧化层的厚度有关。随着Nand Flash生产工艺的提高,其存储单元的单位面积逐渐减小,不同NandFlash芯片生产工艺的差别,使得各存储单元的隧道氧化层厚度存在微小差异,导致RTN对Nand Flash存储单元的编程和擦除时间的影响增大且各异,即导致各存储单元的编程完成时所需的部分编程次数,擦除完成时所需的部分擦除次数是随机的。
由于属于不同的页的存储单元在物理结构上是相邻的,因此对1页的存储单元进行编程操作时,会对其相邻页的存储单元的晶体管的浮置栅极与源极之间的电压产生间接的影响,即产生间接的控制栅电压。对1页经过多次编程操作后,这种影响会导致其相邻页的存储单元的栅极与硅衬底之间的二氧化硅绝缘层存储电荷,并导致浮置栅中产生电荷,从而发生位翻转现象,即存储单元所存储的信息由逻辑“1”变为逻辑“0”。相邻页各个存储单元发生位翻转的时间与各自隧道氧化层的厚度有关,由于Nand Flash芯片生产工艺的差别,使得各存储单元的隧道氧化层厚度存在微小差异,导致各个存储单元发生位翻转的时间是随机的。
另一种类型的Nor Flash与Nand Flash的物理结构类似,有相同结构的晶体管构成,虽存储单元的组织方式,连接方式与Nand Flash有较大区别,但其物理特性也能部分地产生上述随机性。
Nor Flash的各个存储单元均引出独立的位线,然后并联接到一根总位线上,而且每个存储单元的源极和漏极之间虽然物理上是串联的,但是电路上不再是串联,而是有各自的接地端,即每个存储单元的源极和漏极之间的通断,不再取决于其他存储单元里源极和漏极的通断,只取决于本身是否导通。其优点是存储单元可以用地址线独立寻址,读取效率比Nand Flash高,所以可以直接当做RAM用,一般用于存储可执行的代码,但是写入时擦除效率比Nand Flash低,所以不用于写频繁的应用场景。
Nor Flash的编程单位是字节,擦除单位是块,Nor Flash中并没有页的概念。同样在对Nor Flash的存储单元不断进行编程和擦除(充电和放电)的操作过程中,在靠近硅衬底的隧道氧化层中,交替的捕获和释放电子,从而产生离散的电流变化,导致产生了在电子设备中常见的随机电子噪声。由于随机电子噪声的存在,使得捕获和释放电子的时间是随机的,即对Nor Flash的存储单元的充电和放电时间是随机的。
Nor Flash中随机电子噪声的振幅与存储单元栅极的面积成反比(栅极面积越小,其振幅越大),且与隧道氧化层的厚度有关。随着Nor Flash生产工艺的提高,其存储单元的单位面积逐渐减小,不同Nor Flash芯片生产工艺的差别,使得各存储单元的隧道氧化层厚度存在微小差异,导致随机电子噪声对Nor Flash存储单元的擦除时间的影响增大且各异,即导致各存储单元擦除完成时所需的部分擦除次数是随机的。
发明内容
本发明的主要目的在于利用闪存(主要是Nand Flash)的以上特性作为产生随机数的随机源,提供一种基于闪存产生满熵随机数的方法,利用存储功能器件闪存产生满熵的随机数,可满足一定要求的应用场景,而不需专门的电路设计。该方法产生的真随机数与每个闪存芯片自身的物理特性相关,这些物理特性是在芯片生产过程中所确定的。
为实现上述目的,本发明采用如下技术方案:
一种基于闪存产生满熵随机数的方法,采用闪存芯片自身的物理特性作为随机源,改变对特定存储单元编程(写)或擦除操作时的时间与位置参数,从而对闪存芯片的存储单元产生随机性的扰动,然后从闪存芯片中提取随机数。
上述方法主要适用于Nand Flash芯片,为验证从Nand Flash中提取的随机数是满熵的,本发明采用的方法是:首先采用上述方法从Nand Flash中提取多组随机数,然后计算多组随机数信息熵的变化情况,判断信息熵稳定值与每组随机数的大小关系,若信息熵的稳定值与每组随机数的大小(位数)相同,则可证明输出的每组随机数都是满熵的,从而得到满熵的随机数。这是利用取多组数据,以频率趋近概率的原理得出的结论。经实验证明利用本方法所得的随机数都是满熵的。
进一步地,所述闪存芯片自身的物理特性如背景技术中所述,包括:对Nand Flash存储单元编程擦除操作时产生的随机电子噪声,生产工艺差异造成的不同Nand Flash颗粒的差异,Nand Flash存储单元的物理组织结构等。生产工艺差异造成的不同Nand Flash颗粒的差异,主要是指Nand Flash颗粒的各个存储单元晶体管内的隧道氧化层厚度的细微差异。
进一步地,利用部分编程法、部分擦除法或者重复编程法从闪存芯片中提取随机数。
进一步地,所述部分编程法包括:
首先确定每次部分编程的时间T,然后对Nand Flash的1块进行擦除操作,使该块内所有页存储的信息均变为逻辑“1”,A页是此块内的一页,对A页进行多次部分编程,每次持续时间T,每次部分编程结束后,读A页所有存储单元的内容,判断存储单元是否发生位翻转(即由“1”变为“0”),若某存储单元发生位翻转,则记录此时对A页进行的部分编程数;
当A页的99%的存储单元发生位翻转时,将A页的各个存储单元发生位翻转现象时,对应的对A页的部分编程数依次组合起来组成一串数据,并将数据输出;
由于对Nand Flash相同页提取的不同组随机数具有很大的相关性,为保证随机数的熵值,对提取的数据进行处理,可采取对数据进行异或运算或求模运算,将处理后的数据作为随机数输出;
对相同页进行多组部分编程操作提取随机数,计算多组随机数的信息熵,信息熵的稳定值与每组随机数的大小相同,说明每组随机数都是满熵的。
进一步地,所述部分擦除法包括:
首先确定每次部分擦除的时间T,然后对Nand Flash的1块进行擦除操作,使该块内所有页存储的信息均变为逻辑“1”,A页是此块内的一页,对A页进行编程操作,将A页内的所有存储单元变为“0”,接下来对此块进行多次部分擦除操作,每次持续时间T,每次部分擦除结束后,读A页所有存储单元的内容,判断存储单元是否发生位翻转(即由“0”变为“1”),若某存储单元发生位翻转,则记录此时对此块进行的部分擦除数;
当A页的99%的存储单元发生位翻转时,将A页的各个存储单元发生位翻转现象时,对应的对此块的部分擦除数依次组合起来组成一串数据,并将数据输出;
由于对Nand Flash相同块和页提取的不同组随机数具有很大的相关性,为保证随机数的熵值,对提取的数据进行处理,可采取对数据进行异或运算或求模运算,将处理后的数据作为随机数输出;
对相同块和页进行多组部分擦除操作提取随机数,计算多组随机数的信息熵,信息熵的稳定值与每组随机数的大小相同,说明每组随机数都是满熵的。
需要说明的是,采用部分擦除法时,除上述Nand Flash外,也可以采用Nor Flash,具体流程如图7所示,具体是:
首先确定每次部分擦除的时间T,然后对Nor Flash的1块进行擦除操作,使该块内所有存储单元的信息均变为逻辑“1”,再对此块进行编程操作,使该块内所有存储单元的信息均变为逻辑“0”,接下来对此块进行多次部分擦除操作,每次持续时间T,每次部分擦除结束后,读该块内所有存储单元的内容,判断存储单元是否发生位翻转(即由“0”变为“1”),若某存储单元发生位翻转,则记录此时对此块进行的部分擦除数;
当此块的99%的存储单元发生位翻转时,将各个存储单元发生位翻转现象时,对应的对此块的部分擦除数依次组合起来组成一串数据,并将数据输出;
由于对Nor Flash相同块提取的不同组随机数具有很大的相关性,为保证随机数的熵值,对提取的数据进行处理,可采取对数据进行异或运算或求模运算,将处理后的数据作为随机数输出;
对相同块进行多组部分擦除操作提取随机数,计算多组随机数的信息熵,信息熵的稳定值与每组随机数的大小相同,说明每组随机数都是满熵的。
进一步地,所述重复编程法包括:
首先对Nand Flash的1块进行擦除操作,使该块内所有页存储的信息均变为逻辑“1”,A页和B页是此块内的物理上相邻的两页;
然后对该块内的A页进行重复编程操作,每次对A页编程操作之后,对B页进行读操作,观察B页上的各存储单元的是否发生了位翻转现象(即由“1”变为“0”),若B页上的某存储单元发生了位翻转现象,记录此时对A页的编程次数;若对A页若干次编程操作后,B页上的某存储单元未发生位翻转,则记编程次数为0;
当B页的99%的存储单元发生位翻转时,将B页的各个存储单元发生位翻转现象时,对应的A页的重复编程数依次组合起来组成一串数据,并将数据输出;
由于对Nand Flash相同两页提取的不同组随机数具有很大的相关性,为保证随机数的熵值,对提取的数据进行处理,可采取对数据进行异或运算或求模运算,将处理后的数据作为随机数输出;
对相同两页进行多组重复编程操作提取随机数,计算多组随机数的信息熵,信息熵的稳定值与每组随机数的大小相同,说明每组随机数都是满熵的。
一种采用上述方法的基于闪存产生满熵随机数的装置,其包括:
闪存芯片,其自身的物理特性作为随机源;
随机数产生模块,通过改变闪存芯片中特定存储单元编程或擦除操作时的时间与位置参数,对存储单元产生随机性的扰动,并从闪存芯片中提取随机数。
进一步地,还包括满熵随机数验证模块,从所述随机数产生模块中接收多组随机数,并计算多组随机数信息熵的变化情况,若信息熵的稳定值与每组随机数的大小相同,则可验证输出的每组随机数都是满熵的,即得到满熵的随机数。
与现有技术相比,本发明的有益效果如下:
本发明在采用闪存(主要是Nand Flash)作为非易失存储器的设备上,利用闪存芯片的物理特性作为产生随机数的随机源,输出多组随机数,计算多组随机数信息熵的变化情况,若信息熵稳定值与每组随机数的大小相同时,则可认为输出的每组随机数是满熵的。相比于专用随机数发生器芯片,闪存作为一种存储的功能芯片,不需要专门的电路设计即可产生满足一定要求的随机数,降低了随机数发生器的使用条件及成本。利用本发明产生的随机数的方法,虽无法达到较高速率,但可适用于对时间非敏感的应用场景。
附图说明
图1为Nand Flash的存储单元结构示意图;
图2为Nand Flash的内部组织结构示意图;
图3为本发明基于Nand Flash产生满熵随机数的方法的总体流程图。
图4为本发明对Nand Flash采用部分编程法提取随机数流程示意图;
图5为本发明对Nand Flash采用部分擦除法提取随机数流程示意图;
图6为本发明对Nand Flash采用重复编程法提取随机数流程示意图;
图7为本发明对Nor Flash采用部分擦除法提取随机数流程示意图。
具体实施方式
以下参照附图并举实施例,对本发明作进一步详细说明。
本实施例提供基于Nand Flash产生随机数的方法,并经过进一步验证得到满熵的随机数,图3是该方法的总体流程图,该方法利用Nand Flash芯片不同生产工艺所确定的隧道氧化层厚度,存储单元的物理组织结构以及对Nand Flash存储单元编程擦除操作时产生的随机电子噪声,改变对Nand Flash特定的存储单元进行编程或擦除操作时的参数,利用部分编程法,部分擦除法,或重复编程法提取数据,对数据进行处理后,作为随机数输出。经实验验证所提取的随机数,具有满熵的性质。以下根据上述原理对Nand Flash提取随机数的方法进行详细说明。
以三星公司生产的K9K8GO8U0型号的Nand Flash为例,具体介绍对Nand Flash提取随机数的方法,该型号Nand Flash共有8192个块,每块64页,每页(2K+64)Bytes,其中64字节为页扩展区,可不用来进行提取随机数操作。
附图4示出了部分编程法对Nand Flash提取随机数的流程,以下结合K9K8GO8U0型号的Nand Flash详细介绍:
确定对K9K8GO8U0型号的Nand Flash每次部分编程的时间T为10微秒(datasheet中页编程平均时间为200微秒,约为1/20)。然后对Nand Flash的第3072块进行擦除操作,使第3072块内所有页存储的信息均变为“1”,对第3072块的第1页进行重复的部分编程,每次持续时间10微秒,每次部分编程结束后,读第3072块的第1页内容,判断该页的存储单元是否发生位翻转(即由“1”变为“0”),若某存储单元发生位翻转,则记录此时对该页进行的部分编程数。
根据实验表明,当对1页进行256次部分编程时,该页内的99%以上的存储单元已经发生位翻转,所以固定对1页进行256次(需用1字节表示)重复编程操作。将第3072块的第1页的各个存储单元发生位翻转现象时,对应的对该页的部分编程数依次组合起来组成一串数据,得到(2K*8*1)Bytes=16KBytes(每一页2Kbyes,每字节8bit,每bit提取1Bytes数据)数据,并将16KBytes数据输出。
如果重复对第3072块的第1页提取不同的多组随机数,各组数据具有很大的相关性,为保证随机数的熵值,对提取的16KBytes数据进行求模运算,可进行mod2(也可mod4或者mod8)运算,求模运算后得2KBytes数据,将处理后的数据作为随机数输出。
对第3072块的第1页,进行100组部分编程操作提取随机数,并做mod2处理,得100组2KByets的数据,计算并观察这100组随机数逐组递增的信息熵变化情况,实验结果显示,熵值稳定在16Kbits,则可认为每组2KBytes的数据的熵值为16Kbits=2KBytes,即输出随机数满熵。
附图5示出了部分擦除法对Nand Flash提取随机数的流程,以下结合K9K8GO8U0型号的Nand Flash详细介绍:
确定对K9K8GO8U0型号的Nand Flash每次部分擦除的时间T为180微秒(datasheet中块擦除平均时间为1500微秒,约为3/25)。然后对Nand Flash的第3073块进行擦除操作,使第3073块内所有页存储的信息均变为“1”,对第3073块的第1页进行编程,使该页所存储的信息均变为“0”。然后对第3073块进行重复的部分擦除操作,每次持续时间180微秒,每次部分擦除结束后,读第3073块的第1页内容,判断该页的存储单元是否发生位翻转(即由“0”变为“1”),若某存储单元发生位翻转,则记录此时对该页进行的部分擦除数。
根据实验表明,当对1页进行256次部分擦除时,该页内的99%以上的存储单元已经发生位翻转,所以固定对1页进行256次(需用1字节表示)重复擦除操作。将第3073块的第1页的各个存储单元发生位翻转现象时,对应的对该页的部分擦除数依次组合起来组成一串数据,得到(2K*8*1)Bytes=16KBytes(每一页2Kbyes,每字节8bit,每bit提取1Bytes数据)数据,并将16KBytes数据输出。
如果重复对第3073块的第1页提取不同的多组随机数,各组数据具有很大的相关性,为保证随机数的熵值,对提取的16KBytes数据进行求模运算,可进行mod2(也可mod4或者mod8)运算,求模运算后得2KBytes数据,将处理后的数据作为随机数输出。
对第3073块的第1页,进行100组部分编程操作提取随机数,并做mod2处理,得100组2KByets的数据,计算并观察这100组随机数逐组递增的信息熵变化情况,实验结果显示,熵值稳定在16Kbits,则可认为每组2KBytes的数据的熵值为16Kbits=2KBytes,即输出随机数满熵。
附图6示出了重复编程法对Nand Flash提取随机数的流程,以下结合K9K8GO8U0型号的Nand Flash详细介绍:
选取K9K8GO8U0号的Nand Flash中的第4086块,首先该块进行擦除操作,使该块内所有页存储的信息均变为逻辑“1”,选取4086块内的第1页和第2页,这两页是4086块内的物理上相邻的两页。然后对4086块内的第1页的2KBytes进行重复编程操作,每次对第1页编程操作之后,对第2页的2KBytes进行读操作,观察第2页上的各存储单元的是否发生了位翻转现象(即由“1”变为“0”),若第2页上的某存储单元发生了位翻转现象,记录此时对第1页的编程次数;若对第1页若干次编程操作后,第2页上的某存储单元未发生位翻转,则记其编程次数为0。
根据实验表明,当对第1页进行5000次重复编程时,第2页的99%以上的存储单元已经发生位翻转,所以固定对第1页进行5000次(需用2Bytes表示)重复编程操作。将第2页的各个存储单元发生位翻转现象时,对应的第1页的重复编程数依次组合起来组成一串数据,得到(2K*8*2)Bytes=32KBytes(每一页2Kbyes,每字节8bit,每bit提取2Bytes数据)数据,并将32KBytes数据输出。
如果重复对4086块的第1页和第2页提取不同的多组随机数,各组数据具有很大的相关性,为保证随机数的熵值,对提取的32KBytes数据进行求模运算,可进行mod2(也可mod4或者mod8)运算,求模运算后得4KBytes数据,将处理后的数据作为随机数输出。
对4086块的第1页和第2页,进行100组重复编程操作提取随机数,并做mod2处理,得100组4KByets的数据,计算并观察这100组随机数逐组递增的信息熵变化情况,实验结果显示,熵值稳定在32Kbits,则可认为每组4KBytes的数据的熵值为32Kbits=4KBytes,即输出随机数满熵。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。

Claims (5)

1.一种基于闪存产生满熵随机数的方法,其特征在于,采用闪存芯片自身的物理特性作为随机源,改变对特定存储单元编程或擦除操作时的时间与位置参数,从而对存储单元产生随机性的扰动,然后从闪存芯片中提取满熵随机数;
所述闪存芯片为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相同块提取的不同组随机数具有很大的相关性,为保证随机数的熵值,对提取的数据进行处理,对数据进行异或运算或求模运算,将处理后的数据作为随机数输出;对相同块进行多组部分擦除操作提取随机数,计算多组随机数的信息熵,信息熵的稳定值与每组随机数的大小相同,说明每组随机数都是满熵的。
2.根据权利要求1所述的方法,其特征在于:所述闪存芯片为Nand Flash芯片时,其自身的作为随机源的物理特性包括:随机电子噪声、生产工艺差异造成的不同Nand Flash颗粒的差异、Nand Flash存储单元的物理组织结构;所述生产工艺差异造成的不同NandFlash颗粒的差异,包括Nand Flash颗粒的各个存储单元晶体管内的隧道氧化层厚度的差异。
3.根据权利要求1所述的方法,其特征在于:所述闪存芯片为Nor Flash芯片时,其自身的作为随机源的物理特性包括:随机电子噪声、生产工艺差异造成的不同Nor Flash颗粒的差异、Nor Flash存储单元的物理组织结构;所述生产工艺差异造成的不同Nor Flash颗粒的差异,包括Nor Flash颗粒的各个存储单元晶体管内的隧道氧化层厚度的差异。
4.一种采用权利要求1所述方法的基于闪存产生满熵随机数的装置,其特征在于,包括:
闪存芯片,以其自身的物理特性作为随机源;
随机数产生模块,通过改变闪存芯片中特定存储单元编程或擦除操作时的时间与位置参数,对存储单元产生随机性的扰动,并从闪存芯片中提取随机数。
5.根据权利要求4所述的装置,其特征在于:还包括满熵随机数验证模块,从所述随机数产生模块中接收多组随机数,并计算多组随机数信息熵的变化情况,若信息熵的稳定值与每组随机数的大小相同,则可验证输出的每组随机数都是满熵的,即得到满熵的随机数。
CN201510026059.2A 2015-01-19 2015-01-19 一种基于闪存产生满熵随机数的方法和装置 Active CN104615407B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510026059.2A CN104615407B (zh) 2015-01-19 2015-01-19 一种基于闪存产生满熵随机数的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510026059.2A CN104615407B (zh) 2015-01-19 2015-01-19 一种基于闪存产生满熵随机数的方法和装置

Publications (2)

Publication Number Publication Date
CN104615407A CN104615407A (zh) 2015-05-13
CN104615407B true CN104615407B (zh) 2017-10-10

Family

ID=53149872

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510026059.2A Active CN104615407B (zh) 2015-01-19 2015-01-19 一种基于闪存产生满熵随机数的方法和装置

Country Status (1)

Country Link
CN (1) CN104615407B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107179911B (zh) * 2017-05-19 2020-08-18 苏州浪潮智能科技有限公司 一种重启管理引擎的方法和设备
CN110249299A (zh) * 2017-12-13 2019-09-17 深圳市汇顶科技股份有限公司 生成随机数的方法、芯片和电子设备
CN110908924A (zh) * 2018-09-17 2020-03-24 北京兆易创新科技股份有限公司 一种写入检测方法、装置、终端及存储介质
US11321475B2 (en) 2018-10-04 2022-05-03 Hewlett Packard Enterprise Development Lp Entropy data based on error correction data
CN112466376B (zh) * 2020-12-24 2021-11-30 芯天下技术股份有限公司 基于真实建模的过擦除验证方法、装置、存储介质和终端
CN117149136B (zh) * 2023-10-30 2024-03-29 华中师范大学 一种产生随机电报噪声的方法及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1503121A (zh) * 2002-11-20 2004-06-09 智慧第一公司 具随机数产生器及用于存储随机数数据的指令的微处理器
CN102119425A (zh) * 2008-08-12 2011-07-06 美光科技公司 存储器装置及将数据存储于存储器装置上的方法
CN102760052A (zh) * 2012-03-30 2012-10-31 中国科学院西安光学精密机械研究所 基于光子空间和时间随机性的随机源及随机数提取方法
WO2013068546A1 (en) * 2011-11-09 2013-05-16 Novomatic Ag Method of and device for generating true random numbers and a gaming system
US8762625B2 (en) * 2011-04-14 2014-06-24 Apple Inc. Stochastic block allocation for improved wear leveling

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1503121A (zh) * 2002-11-20 2004-06-09 智慧第一公司 具随机数产生器及用于存储随机数数据的指令的微处理器
CN102119425A (zh) * 2008-08-12 2011-07-06 美光科技公司 存储器装置及将数据存储于存储器装置上的方法
US8762625B2 (en) * 2011-04-14 2014-06-24 Apple Inc. Stochastic block allocation for improved wear leveling
WO2013068546A1 (en) * 2011-11-09 2013-05-16 Novomatic Ag Method of and device for generating true random numbers and a gaming system
CN102760052A (zh) * 2012-03-30 2012-10-31 中国科学院西安光学精密机械研究所 基于光子空间和时间随机性的随机源及随机数提取方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Flash Memory for Ubiquitous Hardware Security Functions: True Random Number Generation and Device Fingerprints;Yinglei Wang,et al.;《2012 IEEE Symposium on Security and Privacy》;20121231;第33-47页 *
闪存存储器中的随机电报信号噪声的研究;温菁.;《中国优秀硕士学位论文全文数据库 信息科技辑》;20100115(第01期);第I137-32页 *

Also Published As

Publication number Publication date
CN104615407A (zh) 2015-05-13

Similar Documents

Publication Publication Date Title
CN104615407B (zh) 一种基于闪存产生满熵随机数的方法和装置
CN103714856B (zh) 存储器系统及其读取回收方法
US8526605B2 (en) Data encryption to provide data security and memory cell bit wear leveling
CN103578550A (zh) 产生随机数的存储系统与产生随机数的方法
CN101611386A (zh) 将数据写入半导体存储器中的方法以及存储器控制器
CN103730151B (zh) 半导体存储器件
CN106409341A (zh) 半导体存储装置
CN107393592A (zh) 半导体存储器件及其操作方法
KR20100099961A (ko) 불휘발성 메모리 장치 및 그 동작 방법
CN107230497A (zh) 半导体器件及其操作方法
CN103226975B (zh) 存储设备、存储系统、块管理方法、编程和擦除方法
CN105321569A (zh) 半导体存储器件及其操作方法
CN109542394A (zh) 控制器、半导体存储器装置及具有它们的存储器系统
CN106373609A (zh) 包括半导体存储装置的存储系统及其操作方法
CN108511023A (zh) 半导体存储器装置及其操作方法
CN105321562A (zh) 半导体存储器件、包括其的存储系统及其操作方法
CN109390019A (zh) 存储系统及其操作方法
CN106205719A (zh) 半导体器件及其操作方法
CN109949839A (zh) 存储器控制器及存储器控制器的操作方法
Hasan et al. Data recovery from {“Scrubbed”}{NAND} flash storage: Need for analog sanitization
CN106653078A (zh) 外围电路、半导体存储器件及其操作方法
CN106205712A (zh) 半导体存储器件及其操作方法
CN106849956A (zh) 压缩方法、解压缩方法、装置和数据处理系统
CN106775443A (zh) 存储器系统及其操作方法
CN109979513A (zh) 半导体存储器装置及其操作方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant