发明内容
本发明实施例的目的在于提供一种随机化电路,旨在解决现有技术中PN码随机化程度不高、无序性不够等问题。
本发明实施例是这样实现的,一种随机化电路,包括:
种子生成器,用于根据输入的信息数据,在用户写入的数据序列或者待发送的数据序列随机化或解随机化操作开始之前,生成并输出初始种子;
PN码生成器,用于根据所述种子生成器输出的初始种子,对所述数据序列进行随机化或解随机化。
本发明实施例的另一目的在于提供一种存储器控制单元,所述存储器控制单元包括:
控制器状态机,用于向存储器发送命令、地址、数据;
ECC编码单元,用于在写数据时,生成用户数据的纠错码冗余位;
以及ECC解码单元,用于在读取数据时,检查与纠正错误,
所述存储器控制单元还包括:
种子生成器,用于根据输入的信息数据,在用户写入的数据序列随机化或解随机化操作开始之前,生成并输出初始种子;
随机化用PN码生成器,用于根据所述种子生成器输出的初始种子,对所述数据序列进行随机化,产生伪随机码序列;
解随机化用PN码生成器,用于根据所述种子生成器输出的初始种子,对所述伪随机码序列进行解随机化,还原所述数据序列。
本发明实施例的另一目的在于提供一种包含存储器控制单元的存储器,所述存储器控制单元包括:
控制器状态机,用于向存储器发送命令、地址、数据;
ECC编码单元,用于在写数据时,生成用户数据的纠错码冗余位;
以及ECC解码单元,用于在读取数据时,检查与纠正错误,
所述存储器控制单元还包括:
种子生成器,用于根据输入的信息数据,在用户写入的数据序列随机化或解随机化操作开始之前,生成并输出初始种子;
随机化用PN码生成器,用于根据所述种子生成器输出的初始种子,对所述数据序列进行随机化,产生伪随机码序列;
解随机化用PN码生成器,用于根据所述种子生成器输出的初始种子,对所述伪随机码序列进行解随机化,还原所述数据序列。
本发明实施例的另一目的在于提供一种通信系统,包括发送单元以及接收单元,所述通信系统还包括:
第一种子生成器,用于根据来自信息数据输入端的信息数据,在有效数据序列随机化操作开始之前,生成并输出初始种子;
随机化用PN码生成器,用于根据所述第一种子生成器输出的初始种子,对所述有效数据序列进行随机化,产生伪随机码序列;
第二种子生成器,用于根据来自接收单元的信息数据,在所述伪随机码序列解随机化操作开始之前,生成并输出初始种子;
解随机化用PN码生成器,用于根据所述第二种子生成器输出的初始种子,对所述伪随机码序列进行解随机化,还原所述有效数据序列。
本发明实施例的另一目的在于提供一种随机化方法,所述方法包括以下步骤:
根据输入的信息数据而生成并输出初始种子;
将所述初始种子用于初始化随机化操作以及解随机化操作时的初始值。
本发明实施例通过在随机化电路中加入用于改变随机化电路的初始值的种子生成器,提高了PN码的随机化程度以及无序性,从而使包含该随机化电路的存储器的存储的稳定性以及包含该随机化电路的通信系统的数据传输的安全性得以提高。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例通过在随机化电路中加入用于改变随机化电路的初始值的种子生成器,提高了PN码的随机化程度以及无序性,从而使包含该随机化电路的存储器的存储的稳定性以及包含该随机化电路的通信系统的数据传输的安全性得以提高。
本发明实施例是这样实现的,一种随机化电路,包括:
种子生成器,用于根据输入的信息数据,在用户写入的数据序列或者待发送的数据序列随机化或解随机化操作开始之前,生成并输出初始种子;
PN码生成器,用于根据所述种子生成器输出的初始种子,对所述数据序列进行随机化或解随机化。
实施例一:
图4示出了本发明实施例提供的随机化电路的工作原理,为了便于说明只示出了与本发明实施例相关的部分。
其中,种子生成器12,用于根据输入的信息数据,在用户写入的数据序列或者待发送的数据序列随机化或解随机化操作开始之前,生成并输出初始种子,该初始种子为在PN码生成器11随机化或解随机化操作开始之前,由种子生成器12向PN码生成器11提供的二进制数,该二进制数的长度与PN码生成器的LFSR的级数n一致。也就是说,用种子生成器的输出来初始化ai。
PN码生成器11,用于根据种子生成器12输出的初始种子,对数据序列进行随机化或解随机化。
种子生成器12的算法固定时,其输出值完全取决于输入种子生成器12中的信息数据,该信息数据包括为以下信息中的任一种或多种:用户写入或者待发送的数据中的部分数据、地址信息、头信息、时间戳信息。在随机化处理前,将信息数据输入给种子生成器12,种子生成器12内部将这些信息数据经过变换处理,得到一个随机的输出数。该随机的输出数将输出到PN码生成器11,作为PN码生成器11随机化或解随机化的初值。在当PN码随机化时,利用该初值可以使用户写入的数据序列或者待发送的数据序列具有更大的无序性;当PN码解随机化时,只需要按照与随机化时同样的算法,即可以还原出上述数据序列。
输入种子生成器12的信息数据一般是包含了本次传输信息的数据,这样在解随机化的过程中,可以轻易地获取这些信息,从而正确无误地还原出上述用户写入的数据序列或者发送的数据序列。通常,这些信息数据可以是用户数据之前的报文头,帧头信息或数据地址,数据长度、部分数据、地址、时间戳等,这些信息数据不用被随机化。这些输入种子生成器12的信息数据,可以是1个字节或是多个字节,但经过种子生成器12输出的数据长度的必须与PN码生成器11匹配,即输出的数据长度与PN码生成器的LFSR的级数n一致,且输出要尽可能的随机。另外,输入种子生成器12的信息数据,在整个传输过程中需要保持不变,不能被打乱,即不经过PN码生成器进行随机化过程。
本发明实施例通过在随机化电路加入种子生成器,利用种子生成器产生的种子作为PN码生成器的初值,从而使最终产生的PN码具有更大的随机化程度以及无序性。
实施例二:
图5示出了本发明实施例提供的第一种种子生成器的工作原理,为了便于说明只示出了与本发明实施例相关的部分。
逻辑运算模块41,用于对来自信息数据输入端的信息数据以及寄存器42反馈的信息数据进行逻辑运算。
寄存器42,用于对逻辑运算模块41输出的信息数据进行移位或异或、取反、加减等逻辑运算,并将经逻辑运算处理后的特定信息数据反馈给逻辑运算模块41。
输出端开关S,用于在寄存器42反馈一定次数后导通,使逻辑运算模块41向种子输出端输出所述初始种子。
当输出端开关S断开时,寄存器42继续对逻辑运算模块41输出的信息数据进行移位,并将移位后的信息数据向逻辑运算模块41反馈,当输出端开关S闭合时,逻辑运算模块41向种子输出端输出初始种子。
在实际工作中,逻辑运算模块41利用常数K对输入其中的信息数据W0做简单按位逻辑运算操作或加法操作。与此同时,在输出端开关S闭合前,寄存器42在对逻辑运算模块41输出的信息数据W(t)进行移位、取反等逻辑运算,也将其反馈到逻辑运算模块41中,使逻辑运算模块41每经过一个周期后又对其输出的结果进行逻辑或加法的操作,从而将输出的信息数据处理得更加散乱,在经过几个周期后,输出端开关S闭合,经逻辑运算模块41处理后的最终的信息数据作为初始种子向种子输出端输出。其中输出端开关S闭合的条件可以人为地事先设定,如事先将开关设置为经过多个数据处理周期后闭合,如可以设定经过三个数据处理周期后或六个数据处理周期后闭合;也可以通过控制器根据逻辑运算模块41输出的信息数据的具体情况进行控制。
该实施例中,常数K可以是预先设置在逻辑运算模块中的,也可以是一赋值单元赋值后发送至逻辑运算模块的,且常数K可以为任意常数。
作为本发明实施例提供的种子生成器,利用移位以及简单的逻辑运算等方法即可将原始的数据序列打散,相比于依靠纯软件生成种子的方法,具有运算周期短的优点;相比于用硬件查表搜索的方法,具有占用资源少等特性。
实施例三:
图6示出了本发明实施例提供的第二种种子生成器的工作原理,为了便于说明只示出了与本发明实施例相关的部分。
输入数据处理模块43,用于对输入的信息数据进行移位和/或取反处理,并将处理后的信息数据向逻辑运算模块41输出。
逻辑运算模块41,用于对来自输入数据处理模块43的信息数据以及寄存器42反馈的信息数据进行逻辑运算。
寄存器42,用于对逻辑运算模块41输出的特定信息数据进行移位或异或、取反、加减等逻辑运算,并将经逻辑运算处理后的特定信息数据反馈给逻辑运算模块41。
输出端开关S,用于在寄存器42反馈一定次数后导通,使逻辑运算模块41向种子输出端输出所述初始种子。
当输出端开关S断开时,寄存器42继续对逻辑运算模块41输出的信息数据进行移位,并将移位后的信息数据向逻辑运算模块41反馈,当输出端开关S闭合时,逻辑运算模块41向种子输出端输出作为初始种子的信息数据。
在实际工作中,种子生成器输入一定的作为初始信息的信息数据W0,信息数据W0可能只需要一个时钟输入,而种子生成器可能需要几个时钟周期处理,所以输入数据处理模块43自身可以做一些简单的取反和/或循环移位等操作,使每个处理周期的信息数据W(t)不同,但各时刻信息数据W(t)与初始时刻的信息数据W0相关。逻辑运算模块41利用常数K对信息数据W(t)做简单按位逻辑运算操作或加法操作。与此同时,在输出端开关S闭合前,寄存器42在对逻辑运算模块41输出的信息数据进行移位、取反等逻辑运算的同时,也将其反馈到逻辑运算模块41中,使逻辑运算模块41每经过一个周期后又对其输出的结果进行逻辑或加法的运算,从而将输出的信息数据处理得更加散乱,在经过几个周期后,输出端开关S闭合,经逻辑运算模块41最终处理后的信息数据向种子输出端输出。其中输出端开关S闭合的条件可以人为地事先设定,如事先将开关设置为经过多个数据处理周期后闭合,如可以设定经过三个或六个数据处理周期后闭合;也可以通过控制器根据逻辑运算模块41输出的信息数据的具体情况进行控制。
根据PN码生成器的特点,种子生成器输出的种子值不能为全0,所以在实际的种子生成器输出前,需要判断结果是否为全0,如果是全0,可以人为用一个固定的非0的二进制数替代,不影响实际使用效果。
作为本发明实施例提供的种子生成器,利用移位以及简单的逻辑运算等方法即可将原始数据打散,相比于依靠纯软件生成种子的方法,具有运算周期短的优点;相比于用硬件查表搜索的方法,具有占用资源少等特性。
实施例四:
图7示出了本发明实施例提供的存储器控制单元的工作原理,为了便于说明只示出了与本发明实施例相关的部分。
存储器控制单元包括:
控制器状态机211,用于向存储器发送命令、地址、数据;
ECC编码单元213,用于在写数据时,生成用户数据的纠错码冗余位;
以及ECC解码单元214,用于在读取数据时,检查与纠正错误;
存储器控制单元还包括:
种子生成器51,用于根据输入的信息数据,在用户写入的数据序列随机化或解随机化操作开始之前,生成并输出初始种子;
随机化用PN码生成器212,用于根据种子生成器51输出的初始种子,对数据序列进行随机化,产生伪随机码序列;
解随机化用PN码生成器215,用于根据种子生成器51输出的初始种子,对伪随机码序列进行解随机化,还原数据序列;
初始种子为与随机化用PN码生成器212以及解随机化用PN码生成器215的级数一致的二进制数。
以NAND Flash作为本发明实施例的一个示例,该实施例中用于生成初始种子的信息数据为地址信息,该NAND Flash的页大小为4096字节,扇区大小为1024字节,每页有4个扇区,用户数据使用全零数据。用户在对NAND Flash的每次物理层写操作时,除了要准备数据之外,还要发送写到NAND Flash中的地址,包括行(Row)地址和列(Column)地址;用户在对NAND Flash的每次物理层写操作时,也要发送相应的行、列地址。行地址包含NAND Flash的块号、页号信息,列地址则包含了每一个页中扇区号信息。写NAND Flash时,利用这些带有页、扇区信息的地址,本发明实施例提供的种子生成器51的输入一个随机的初始种子,供PN码生成器使用。由于读写同一个存储单元时,地址总是一致的,所以解随机化时同样是利用地址信息就可以将数据序列还原,因此采用地址信息作为生成初始种子的信息数据更简单、更直接。
基于本发明实施例提供的PN码生成器在每一个时钟周期能够处理的用户数据有限的特性。目前一般的NAND Flash有8条数据线,称作DQ0~DQ7。为了不影响数据传输速度,避免并串转换等过程带来的额外耗时,具体实施方案可以采用8路PN码生成器的方法。8路PN码生成器相互独立,使用同样的本源多项式,设置不同的是初始值,可以保证8路PN码生成器的输出互相独立,这8路PN码生成器分别与DQ0~DQ7的数据异或,得到以字节为单位的随机数序列。8路初值同时由一个种子生成器得到,即种子生成器接收一次地址信息,一次性计算出所有需要的种子。经过本实施用例随机化的数据序列,字节与字节之间不相关,且每个字节内部的8比特数据也不相关。
在实际运用中,可以保证不仅是单个NAND Flash页内,而且在整个物理块的所有页之间,数据是非相关的,且不存在任何周期性。这种物理块内的全部数据打散对NAND Flash数据读写的稳定性和使用寿命的提升,要比仅仅以扇区为单位的打散更有效果。图8为普通固定种子的存储器控制单元随机化1个物理页后数据的自相关函数图,在用户全零数据经随机化电路后,这种方案每个扇区的随机数都是相同的。在一个扇区内部,可以保证数据的非相关性,但这种方案有一个明显的缺点:整个NAND Flash页中的所有数据具有周期性,且必然以扇区字节数目为周期;图9为本发明实施例的示例提供的存储器控制单元随机化1个物理页后数据的自相关函数图,在用户全零数据经随机化电路后,4096字节数据有很好的非相关性,所有数据可以被认为是随机数,无周期性循环。通过对比图8和图9,可以直观地看出本发明实施例提供的存储器控制单元所能取得的效果。
本发明实施例通过种子生成器为随机化用提供的种子,使得不管用户输入的数据是什么,随机化之后存入存储单元的数据完全被打乱,不存在周期性的重复,这样就可以将物理块中所有存储单元的不稳定因素减至最小。
实施例五:
本发明实施例提供的存储器控制单元可以广泛应用于NAND Flash等存储器中。
实施例六:
图10示出了本发明实施例提供的通讯系统的工作原理,为了便于说明只示出了与本发明实施例相关的部分。
其中,第一种子生成器61,用于根据来自信息数据输入端的信息数据,在有效数据序列随机化操作开始之前,生成并输出初始种子;
随机化用PN码生成器33,用于根据第一种子生成器61输出的初始种子,对有效数据序列进行随机化,产生伪随机码序列;
第二种子生成器62,用于根据来自接收单元的信息数据,在伪随机码序列解随机化操作开始之前,生成并输出初始种子;
第二种子生成器接收的信息数据与第一种子生成器接收的信息数据一致,两者生成的种子值也一致。
解随机化用PN码生成器34,用于根据第二种子生成器62输出的初始种子,对伪随机码序列进行解随机化,还原有效数据序列;
初始种子为与随机化用PN码生成器33以及解随机化用PN码生成器34的级数一致的二进制数。
作为本发明实施例提供的通讯系统,在现有的通讯系统中加入了种子生成器。在实际工作中,将不需要加密发送的信息数据作为第一种子生成器61的输入,发送信息数据的同时,生成随机化用PN码生成器33的初始种子值。该信息数据包括为以下信息中的任一种或多种:用户待发送的数据中的部分数据、地址信息、头信息、时间戳信息。以头信息作为本发明实施例的一个示例,当头信息发送完成时,种子值也生成出来,同时将生成后的种子值用于对有效数据序列进行随机化,产生伪随机码序列。接收单元32接收到头信息后,使用第二种子生成器62直接生成解随机化用PN码生成器34的初始种子,随机化用PN码生成器34利用该初始种子对接收到的有效数据序列进行解密,从而向用户端输出还原后的数据序列。
头信息可以根据不同的传输协议来定义,相同的传输协议也可以根据需要自行定义的种子生成器而输入不同的参数。只要保证定义的头信息不参与加密,且发送单元发送的头信息和接收单元接收的头信息一致即可。
本实施例提供的通信系统对通信数据进行加密/解密的方法,加密性较强。如果想破解加密数据,必须要知道3个方面的信息:PN码生成器的级数n和本源多项式结构、头信息的定义以及种子生成器电路的算法。如上文所述,PN码生成器的级数n和本源多项式结构,可能的情况有限,理论上可以破解。但种子生成器电路可以做得很高效很复杂,没有破解的可能性。另外,如果不知道发送/接收的头信息到底是如何定义的,即使知道种子生成器的算法,也无法破解加密后的数据。
实施例七:
图11示出了本发明实施例提供的随机化方法的实现流程,为了便于说明只示出了与本发明实施例相关的部分。
在步骤S1101中,根据输入的信息数据而输出初始种子。
在步骤S1102中,将所述初始种子用于初始化随机化操作以及解随机化操作时的初始值。
在实际工作中,根据输入的信息数据输出初始种子,该信息数据包括为以下信息中的任一种或多种:用户发送的数据中的部分数据、地址信息、头信息、时间戳信息。此外,输出的初始种子为级数与伪随机码的级数一致的二进制数。该初始种子用于在每组数据序列进行随机化操作之前,初始化用于上述操作的初始值,从而产生无序性更大、稳定性以及安全性更强的伪随机码;并在每组数据序列进行接随机化操作之前,以同样的形式初始化进行解随机化操作所需的初始值,还原出用户所需要的数据序列。
本发明实施例具有如下有益效果:
1、通过在随机化电路加入种子生成器,利用种子生成器产生的种子作为PN码生成器的初值,对于一个n级PN码生成器,本发明实施例突破其2n-1的周期限制,可以达到所有序列无周期性的特点,可显现出真正的随机特性。
2、利用移位以及简单的逻辑运算等方法即可将原始的数据序列打散,相比于依靠纯软件生成种子的方法,具有运算周期短的优点;相比于用硬件查表搜索的方法,具有占用资源少等特性。
3、在存储器领域,通过种子生成器为随机化用提供的种子,使得不管用户输入的数据序列是什么,随机化之后存入存储单元的数据序列完全被打乱,不存在周期性的重复,这样就可以将物理块中所有存储单元的不稳定因素减至最小。
4、在通信系统领域,通过在随机化电路中加入种子生成器,增加了破解加密数据所需要获知的信息,提高了数据在传输过程中的安全性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。