基于NandFlash闪存的安全存储方法及系统的制作方法

文档序号:10613195阅读:488来源:国知局
基于Nand Flash闪存的安全存储方法及系统的制作方法
【专利摘要】本发明公开一种基于Nand Flash闪存的安全存储方法及系统,基于机密数据在闪存中的物理存储位置不断变化的思想,保证机密数据存储的安全性。初始化阶段,在闪存转换层中设置触发器来控制机密数据的位置移动机制;在闪存设备工作时,启动触发器,闪存转换层监听上层文件系统的读、写等操作命令。当满足触发机密数据移动机制的条件时,启动机密数据移动操作。机密数据移动阶段,重新选择合适的安全存储区存放机密数据,对安全块进行垃圾回收后将机密数据转移到安全块。机密数据移动完成后,伪装安全块的状态,避免暴露机密数据的存放位置。本方法增加了机密数据存储位置的不确定性和不可预见性,实现了机密数据在闪存设备中的安全存储。
【专利说明】
基于Nand FI ash闪存的安全存储方法及系统
技术领域
[0001]本发明属于数据保护技术领域,特别涉及一种基于NandFlash闪存的存储设备的数据安全存储方法及系统。
【背景技术】
[0002]闪存是一种非易失性存储器(Non-volatileMemory),目前主要有两种实用的Flash存储器件:Nand Flash和Nor Flash。这二者具有不同的特点和用途:Nor Flash是1983年由Intel公司推出,单位容量价格相对较高,目前主要集成在一些嵌入式芯片之中,替代EEPROM非易失存储单元,用于存储可执行代码及少量数据;Nand Flash是1989年由东芝公司设计推出,主要作为大容量数据存储器件。Nand Flash由于其体积小、质量轻,抗震性强、噪声小、耐高温、低功耗等优点,已经广泛地应用在常见的电子产品中。智能手机、数码相机、GPS导航仪、汽车行车记录仪等电子消费产品中使用的SD卡,U盘,固态硬盘(SolidState Disk,SSD),均以Nand Flash作为非易失存储器。随着生产技术的逐渐成熟,固态硬盘在桌面存储、移动存储乃至存储服务等领域也必将得到越来越广泛的使用。
[0003]作为普通消费类电子产品中的主要(多数情况下也是唯一的)非易失存储介质,闪存中可能存储着大量的个人或集体隐私数据;此外,一些系统安全机制涉及的安全参数,如加解密密钥、用户口令等,大多数情况下也是以明文或者密文的形式存放在存储介质之中。鉴于此,针对闪存的攻击已经逐渐成为黑客攻击的焦点,闪存的数据窃取、数据恢复等攻击手段不断被提出,基于闪存的数据安全存储问题已越来越受到重视。
[0004]针对闪存中数据的攻击方法,根据对闪存芯片进行的处理方法及破坏程度的不同,可以分为非入侵式攻击,半入侵式攻击与入侵式攻击。其中入侵式攻击方法攻击力度较大,通过拆卸芯片可以暴力读取闪存芯片上的所有数据的比特内容。
[0005]英国剑桥大学计算机科学高级研究员Sergei P.Skorobogatov在书中详细记录了入侵式攻击方法的实现过程。入侵式攻击的第一步就是解封装(Decapsulat1n)操作,从集成电路板上拆卸闪存芯片。大多数芯片在出厂时都封装在TS0P(Thin Small OutlinePackage,薄型小尺寸封装)或者BGA(Ball Grid Array,焊球阵列封装)中,需要借助特殊的设备从电路板上拆卸闪存芯片。解封装过程比较复杂,稍有不慎会破坏闪存芯片而导致数据丢失。第二步就是剥层处理(Deprocessing),剥层处理是芯片制造的逆过程。标准的闪存芯片通常包含许多层次的封装,剥层处理主要是去除芯片表面的钝化层(Passivat1n),最好的方法是借助一个激光切割机除去钝化层,暴露出芯片表面的金属层,以便于后续使用微探测技术读取芯片数据。最后一步就是通过一个微探测站(主要组件是光学显微镜和探针)读取芯片中的数据。直接从芯片上单个的存储单元读取数据是很困难的,借助微探测技术通过显微镜观察探针移动到的数据总线,记录所访问的存储单元的值。Marce IBreeuwsma在2007年通过类似的入侵式攻击方法成功读取出闪存芯片中的所有数据。
[0006]对基于闪存的存储设备的入侵式攻击方法,可以实现按比特读取出存储在闪存上的数据。如果闪存介质中存储机密数据的物理位置相对固定,攻击者可以通过入侵式攻击方法,定位分析出机密数据的存放位置,获取闪存设备中存储的机密数据。一旦攻击成功,同种类型的闪存设备都将受到安全威胁。

【发明内容】

[0007]本发明提供了一种基于NandFlash闪存的存储设备数据安全存储方法及系统,实现了闪存数据的安全存储机制,提高了数据存储的安全性。
[0008]为减少上述对闪存的入侵式攻击的可能性,本发明在闪存转换层(FTL)设计了一种基于位置跳变的闪存数据安全存储方案。在闪存设备的使用过程中,设置一个触发器,如果触发器条件满足,则触发机密数据移动机制。在基于闪存的存储设备系统运行过程中,不断的移动、改变机密数据的存储的物理位置,增加机密数据存储位置的不确定性,增加攻击者分析、寻找定位机密数据存储位置的难度,减小同类型存储设备机密数据存储位置的可预见性,从而提高存储设备的安全性。
[0009]具体来说,本发明采用的技术方案如下:
[0010]一种基于Nand Flash闪存设备的数据安全存储方法,包括以下步骤:
[0011]I)在闪存的转换层中维护两级地址映射:一级地址映射维护文件系统逻辑地址到用户数据区逻辑地址的映射表;二级地址映射维护用户数据区逻辑地址到闪存中物理地址的映射表;对于普通用户数据,记录其两级地址映射(用户通过逻辑接口,闪存系统查询两级地址映射,可以直接读取普通用户数据);对于机密数据,在一级地址映射表中不记录其文件系统逻辑地址到用户数据区逻辑地址的映射(使用户不能通过逻辑接口直接读取机密数据);
[0012]2)运行基于闪存的存储设备,循环监听文件系统下传的操作指令的次数并作为控制机密数据移动的触发器,当满足触发器条件时,触发机密数据移动机制,将机密数据转移至闪存中的安全块;
[0013]3)在机密数据转移至安全块后,对安全块中的机密数据进行伪装;
[0014]4)更新二级地址映射,将存放机密数据的用户数据区逻辑地址映射到存储机密数据的安全块物理地址。
[0015]进一步地,步骤I)在固件中固化一个用户数据区逻辑地址作为机密数据的用户数据区逻辑地址;在用户读取机密数据时,通过固化的用户数据区逻辑地址查找二级地址映射得到机密数据存放在闪存的物理地址,然后从闪存相应位置读取机密数据。
[0016]或者,步骤I)不在固件中固化一个用户数据区逻辑地址作为机密数据的用户数据区逻辑地址,而是在系统数据区的冗余空间中记录机密数据的用户数据区逻辑地址;当机密数据移动时,更新机密数据的用户数据区逻辑地址,同时也更新二级地址映射;在用户读取机密数据时,首先在系统数据区冗余空间恢复出机密数据的用户数据区逻辑地址,然后查找二级地址映射,得到机密数据存放在闪存的物理地址,然后从闪存相应位置读取机密数据。
[0017]进一步地,用户直接对闪存读取数据时,需要通过文件系统逻辑地址首先查找一级地址映射,再查找二级地址映射,然后到闪存相应的物理地址读取数据;一级地址映射表中并没有记录机密数据的文件系统逻辑地址到用户数据区逻辑地址的映射,以保证用户不能通过闪存逻辑接口直接读取机密数据,增加机密数据的安全性。用户需要读取机密数据信息时,通过输入正确的用户口令访问机密数据;用户身份认证通过后,在二级地址映射表中,通过机密数据在用户数据区的逻辑地址查找机密数据存放在闪存物理区的物理地址,然后从闪存相应的物理位置中读取机密数据。
[0018]进一步地,所述触发器包括两种:闪存空闲时控制机密数据移动的闲时移动触发器,以及闪存工作时控制系统移动的被动移动触发器;所述闲时移动触发器设置相对较小的阈值,所述被动移动的计时器设置相对较大的阈值。根据不同的安全要求的应用场景,控制和调整机密数据移动的频率,既保证机密数据的安全性,又使得对系统性能的影响尽可能小。
[0019]进一步地,步骤2)中机密数据的移动过程包括:
[0020]2-1)选择机密数据需要转移到的安全块;
[0021]2-2)对安全块进行垃圾回收;
[0022]2-3)将机密数据移动到安全块中;
[0023]2-4)重置触发器继续进行下次监听,并更新闪存中记录的机密数据存放的位置信息。
[0024]进一步地,步骤2-1)在选择存放机密数据的安全块时,首先按照闪存块中无效页数目的多少对闪存块排序,然后在无效页数目足够多的闪存块中任意选取一个闪存块作为安全块。
[0025]进一步地,步骤3)对安全块中的机密数据进行伪装的方法是:在安全块中剩余的空白页中写入随机数据;或者将安全块作为闪存系统中下次使用的工作块,在安全块中剩余的空白页中存储正常的用户数据,并跳过已经存放机密数据的物理页,防止机密数据因重复写而被破坏。
[0026]一种采用上述方法的基于Nand Flash闪存设备的数据安全存储系统,包括闪存数据安全存储装置,以及分别与其连接的初始化装置、机密数据移动装置、安全块伪装装置、机密数据读取装置;所述闪存数据安全存储设备设置触发器,当触发器条件满足时触发机密数据移动机制;所述初始化装置用于设置所述触发器;所述机密数据移动装置用于控制机密数据的转移;所述安全块数据伪装装置用于对安全块状态实现伪装;所述机密数据读取装置用于实现用户对机密数据的读取。
[0027]进一步地,所述闪存数据安全存储装置通过USB总线分别于初始化装置、机密数据移动装置、安全块数据伪装装置、用户读取机密数据装置连接,并通过USB接口与终端连接。
[0028]本发明基于机密数据在闪存中的物理存储位置不断变化的思想,保证机密数据存储的安全性。初始化阶段,在闪存转换层中设置触发器来控制机密数据的位置移动机制;在闪存设备工作时,启动触发器,闪存转换层监听上层文件系统的读、写等操作命令。当满足触发机密数据移动机制的条件时,启动机密数据移动操作。机密数据移动阶段,占用系统资源,重新选择合适的安全存储区(安全块)存放机密数据,对安全块进行垃圾回收后将机密数据转移到安全块。安全块伪装阶段,机密数据移动完成后,在安全块剩余页中写入随机数据,或者将安全块作为闪存后续使用的工作块,在安全块的剩余页中写入正常的用户数据,从而伪装安全块的状态,避免因安全块特殊的块状态而暴露机密数据的存放位置。本方法增加了机密数据存储位置的不确定性和不可预见性,提高了数据存储的安全性,实现了机密数据在闪存设备中的安全存储。
【附图说明】
[0029]图1为本发明一种闪存数据安全存储方法的流程示意图;
[0030]图2为本发明一种闪存数据安全存储方法的初始化步骤示意图;
[0031 ]图3为本发明一种闪存数据安全存储方法的机密数据移动步骤示意图;
[0032]图4为本发明一种闪存数据安全存储方法的用户读取机密数据的步骤示意图;
[0033]图5为本发明一种闪存数据安全存储方法的结构示意图。
[0034]图6为本发明另一种闪存数据安全存储方法的流程示意图。
【具体实施方式】
[0035]为了使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
[0036]实施例1:
[0037]如图1所示,本实施例提供了一种基于NandFlash闪存的安全存储方法,包括:
[0038]在闪存转换层中维护着两级地址映射:一级地址映射维护文件系统逻辑地址到用户数据区逻辑地址的映射表;二级地址映射维护用户数据区逻辑地址到闪存中物理地址的映射表。初始化时,在固件中确定一个用户数据区逻辑地址,并将其保留为机密数据的用户数据区逻辑地址。
[0039]I)初始化步骤:
[0040]初始化阶段,当基于闪存的存储设备连接到PC主机等终端设备后,闪存设备初始化控制机密数据移动的触发器,并启动触发器。触发器分为两种,分别是控制系统闲时机密数据移动的触发器,以及控制系统工作时机密数据移动的触发器。
[0041]2)基于闪存的存储设备中机密数据的移动步骤:
[0042]在闪存设备工作时,如果满足初始设置的阈值,则启动机密数据移动机制。
[0043]闪存工作时,循环监听文件系统下传的读、写等操作指令并执行相应的读、写等操作,根据循环监听文件系统下传命令的次数,可以大致等效于控制时间。当系统处于空闲状态时,因为不用执行读、写等操作,监听一定次数的文件系统指令所经历的时间比较小;当系统处于工作状态时,因为需要执行文件系统的读、写等指令,监听同样次数的文件系统指令所经历的时间比较大。因此。通过循环监听文件系统下传指令的次数,可以大致的作为机密数据移动的时间触发器,并且闲时阈值小,被动移动的阈值大。通过不同的安全要求的应用场景,可以自行调整系统参数和阈值(即循环监听文件系统下传指令的次数),从而控制和调整机密数据移动的频率,既保证机密数据的安全性,又使得对系统性能的影响尽可能小。
[0044]由于在系统处于工作状态时移动机密数据会搁置文件系统命令,对闪存性能造成一定程度的影响,因此可以在文件系统下传的指令队列为空,即所有文件系统指令均已处理完毕,当前不再存在读、写等指令时,判断是否达到设置的循环监听次数阈值,使得每次机密数据的移动均在系统空闲状态,不会对闪存系统的性能造成太大影响,也不会造成系统工作时文件系统指令执行的延迟。
[0045]首先,需要确定机密数据应该转移到的位置,即安全块的物理位置。由于闪存块具有不可重复写(erase-before-write)的物理特性,在数据移动到安全块之前,必须先擦除该闪存块,因此,需要对安全块先进行垃圾回收。
[0046]由于垃圾回收时的读、写和擦除操作会增加系统的负载,因此若此时文件系统存在读、写命令,系统也会处于阻塞等待状态。为减少安全块垃圾回收时对系统负载的影响,提高闪存系统的性能,需要选择合适的安全块,即闪存块中无效页数目足够多的块。对安全块中的数据回收完成后,将机密数据移动到安全块中,实现机密数据的转移。
[0047]机密数据转移后,更新二级地址映射,将存放机密数据的用户数据区逻辑地址映射到闪存中新的安全物理块。机密数据转移到安全块后,重置触发器。
[0048]3)安全块中的机密数据伪装步骤:
[0049]由于闪存中存放机密数据的安全块的状态与正常闪存块生命周期内可能出现的各种状态均不相同,因此比较容易被定位到机密数据的存储位置,从而获取机密数据内容。因此需将安全块进行伪装。
[0050]在机密数据转移后,可以在安全块剩余页中写入随机数据,或者将安全块作为闪存系统中下次使用的工作块,在安全块中剩余的空白页中存储正常的用户数据,但跳过存储机密数据的闪存页,防止对机密数据的破坏,实现对安全块状态的伪装。
[0051]4)读取机密数据步骤:
[0052]合法用户通过输入正确的用户口令,访问机密数据。用户身份认证通过后,在二级地址映射表中,通过机密数据在用户数据区的逻辑地址查找机密数据存放在闪存物理区的物理地址,然后从闪存相应的物理位置中读取机密数据。
[0053]具体的,通过以下实例并结合附图2?附图5对本发明进行详细说明:
[0054]初始化步骤如图2所示,包括:
[0055]初始化闪存设备,并设置合适的触发器控制机密数据的移动。主要包括闪存系统空闲时控制机密数据移动的闲时移动触发器和闪存工作时控制系统移动的被动移动触发器两种。
[0056]闲时移动,在闪存系统处于空闲状态时达到触发器条件时启动的对机密数据的移动机制。闲时移动机制发生时,闪存系统中不存在读、写命令,因此,不会影响闪存性能。闲时移动的触发器设置相对较小的阈值。
[0057]被动移动,在闪存系统长时间持续工作达到触发器条件时启动的对机密数据的移动机制。被动移动机制发生时,闪存系统中存在读、写命令,因此,对闪存性能会产生一定的影响。被动移动的计时器设置为相对较大的阈值。
[0058]机密数据移动步骤,具体如图3所示,包括:
[0059]机密数据的移动主要包括三步:首先选择机密数据本次需要转移到的安全块;其次,对安全块进行垃圾回收;最后,将机密数据移动到安全块中。机密数据转移到安全块后,重置触发器进行下次监听。
[0060]首先,安全块的选择问题。为降低对安全块进行垃圾回收的系统负载,提高闪存系统的性能,减小文件系统读、写命令的等待时间,需要选择合适的安全块,即闪存块中无效页数目足够多的块,以此减少对安全块的垃圾回收时的系统开销。在选择存放机密数据的安全块时,首先需要按照闪存块中无效页数目的多少对闪存块排序。闪存块排好序后,在足够脏的闪存块中任意选取一个闪存块作为安全块,既减小了垃圾回收时的系统负载,同时也保证了安全块的不可预测性。
[0061]其次,就是对安全块的垃圾回收和机密数据的转移。由于闪存块不可重复写的物理特性,在机密数据移动到安全块之前,必须先擦除安全块。在选择好存放机密数据的安全块之后,需要对安全块垃圾回收,然后擦除安全块,最后从原始位置读取机密数据后转移到安全块中,并重置二级映射表,将机密数据的用户数据区逻辑地址映射到新的安全块物理地址。
[0062]更新闪存二级地址映射的步骤,包括:
[0063]本方法中机密数据存放在闪存中的物理地址是不断变化的,从而提高机密数据的存储安全性。为保证合法用户通过机密数据在闪存用户数据区固定的逻辑地址正确查找到机密数据存放的物理地址,需要更新二级地址映射表。在完成机密数据转移后,更新二级地址映射,将机密数据的用户数据区逻辑地址映射到新的安全块物理地址。
[0064]安全块的伪装步骤,包括:
[0065]在一个正常块的生命周期内只可能出现三种状态:I)空状态,即该块被擦除后还未使用,所有页的数据均为逻辑“I” ;2)分配状态,即该块是当前正在使用的闪存块,部分页已写入数据(有“I”有“O”),部分页仍未使用(全“I”);3)满状态,块中的所有页均已写入数据(有“I”有“O”)。由于安全块的状态有别于这三种状态,因此容易被敌手定位到机密数据的存放位置,获取机密数据。要实现安全块的伪装和隐藏,可以在安全块剩余页中写入随机数据,或者将安全块作为后续的系统工作块,向安全块中的空白页写入正常的用户数据,并跳过已经存放机密数据的物理页,防止机密数据因重复写而被破坏。
[0066]用户读取机密信息的步骤,具体如图4所示,包括:
[0067]当用户需要读取机密数据信息时,首先需要正确输入用户口令,身份认证通过后,在二级地址映射表中查找机密数据逻辑地址对应在闪存块中的物理地址,然后从闪存相应的物理地址读取机密数据。
[0068]实施例2:
[0069]如图5所示,本实施例提供了一种实现上述闪存数据安全存储方案的系统,包括闪存数据安全存储装置(即闪存本身)、初始化装置、机密数据移动装置、安全块伪装装置、机密数据读取装置。其中,闪存数据安全存储设备通过USB总线分别于初始化装置、机密数据移动装置、安全块数据伪装装置、用户读取机密数据装置连接,闪存数据安全存储设备通过USB接口与终端连接。
[0070]闪存数据安全存储设备用于初始化阶段,在闪存转换层设置触发器;在闪存设备工作时,启动触发器,FTL监听文件系统下传的读、写等操作命令。当触发器条件满足时触发机密数据移动机制,占用系统资源,重新选择合适的安全存储区(安全块)存放机密数据,对安全块进行垃圾回收后将机密数据转移到安全块,然后更新闪存中记录的机密数据存放的位置信息。机密数据移动完成后,将安全块作为闪存后续使用的工作块,在安全块的空白页中写入正常的用户数据,从而伪装安全块的状态,避免因安全块特殊的块状态而暴露机密数据的存放位置。合法用户读取机密数据信息时,身份认证通过后,系统从闪存安全块中读取机密数据内容。
[0071 ]初始化装置用于设置控制机密数据移动的触发器。
[0072]机密数据移动装置用于控制机密数据的转移。
[0073]安全块数据伪装装置用于对安全块状态实现伪装。
[0074]机密数据读取装置用于用户对机密数据的读取。
[0075]初始化装置,进一步包括闪存系统空闲时控制机密数据移动的闲时移动触发器和闪存工作时控制系统移动的被动移动触发器两种。闲时移动触发器,即在闪存系统处于空闲状态时启动的触发器。闲时移动触发器启动时,闪存系统中不存在读、写命令,闲时移动的触发器设置为相对较小的阈值。被动移动触发器,在闪存系统处于工作状态时启动的触发器。被动移动触发器启动时,闪存系统中存在读、写命令,被动移动的触发器设置为相对较大的阈值。
[0076]机密数据移动步骤,进一步包括以下内容:
[0077]首先,安全块的选择问题。为降低对安全块进行垃圾回收的系统负载,提高闪存系统的性能,减小文件系统读、写命令的等待时间,需要选择合适的安全块,即闪存块中无效页数目足够多的块,以此减少对安全块的垃圾回收时的系统开销。在选择存放机密数据的安全块时,首先需要按照闪存块中无效页数目的多少对闪存块排序。闪存块排好序后,在足够脏的闪存块中任意选取一个闪存块作为安全块,既减小了垃圾回收时的系统负载,同时也保证了安全块的不可预测性。
[0078]其次,就是对安全块的垃圾回收和机密数据的转移。由于闪存块不可重复写的物理特性,在机密数据移动到安全块之前,必须先擦除安全块。在选择好存放机密数据的安全块之后,需要对安全块垃圾回收,然后擦除安全块,最后从原始位置读取机密数据后转移到安全块中。
[0079]本方法中机密数据存放在闪存中的物理地址是不断变化的,从而提高机密数据的存储安全性。为保证合法用户通过机密数据在闪存用户数据区固定的逻辑地址正确查找到机密数据存放的物理地址,需要更新二级地址映射表。在完成机密数据转移后,更新二级地址映射,将机密数据的用户数据区逻辑地址映射到新的安全块物理地址。
[0080]安全块数据伪装步骤,进一步包括:由于安全块的状态不同于正常闪存块生命周期中可能出现的状态,因此容易被敌手定位到机密数据的存放位置,获取机密数据。要实现安全块的伪装和隐藏,可以在安全块剩余页中写入随机数据,或者将安全块作为后续的系统工作块,向安全块中的空白页写入正常的用户数据,并跳过已经存放机密数据的物理页,防止机密数据因重复写而被破坏。
[0081 ]用户读取机密数据步骤,进一步包括:首先需要正确输入用户口令,身份认证通过后,在二级地址映射表中查找机密数据逻辑地址对应在闪存块中的物理地址,然后从闪存相应的物理地址读取机密数据。
[0082]实施例3:
[0083]本实施例在初始时,无需在固件中确定一个用户数据区逻辑地址。但是,系统中需要记录机密数据存放位置的相关信息(实际记录的是用户数据区逻辑地址,确切说是用户数据区逻辑地址与用户口令进行数学运算后的结果)。在系统数据保留区(比如页映射表等)的冗余空间中,记录机密数据存放的位置(用户数据区逻辑地址)。在机密数据移动后,不更新一级地址映射表,保证不能通过文件系统逻辑接口直接读取机密数据,增加数据安全性,但需要在系统数据保留区更新机密数据存放的位置信息(即机密数据的用户数据区逻辑地址)。在记录机密数据存储位置时,为保证机密性,将机密信息存放的位置信息与用户口令进行一些数学运算(比如,异或运算等)后存入闪存系统数据存储区。用户读取机密数据时,输入用户口令,身份验证通过后,系统将存放的地址信息与用户口令再经过数学运算后恢复出机密数据存放的位置信息(即机密数据的用户数据区逻辑地址),通过查询二级地址映射表获取机密数据存放在闪存的物理地址,然后从闪存相应的位置读取机密数据。其他步骤均与前述方法相同。图6为该方法的步骤流程图。
[0084]以上实施例中,对于普通用户数据,系统中会记录两级地址映射,用户通过逻辑接口,闪存系统查询两级地址映射,可以直接读取普通用户数据;对于机密数据,系统中并没有在一级地址映射中记录其文件系统逻辑地址—用户数据区逻辑地址的映射,因此,用户不同通过逻辑接口直接读取机密数据(因为一级映射表中没有相应的映射项)。对于实施例1的方案,在固件中(通过代码)固化一个用户数据区逻辑地址(因此系统中也不必记录该地址)。当机密数据移动时,正常更新二级地址映射。读取机密数据时,通过固化的用户数据区逻辑地址查找二级地址映射得到机密数据存放在闪存的物理地址,然后从闪存相应位置读取机密数据。对于实施例3的方案,无需在固件中固化一个用户数据区逻辑地址,因此需要在系统数据区的冗余空间记录该信息(即机密数据的用户数据区逻辑地址)。当机密数据移动时,需要更新机密数据的用户数据区逻辑地址(随着机密数据的移动也是变化的),同时也要正常的更新二级地址映射(将新的机密数据用户数据区逻辑地址映射到新的闪存物理地址)。读取机密数据时,首先在系统数据区冗余空间恢复出机密数据的用户数据区逻辑地址,然后查找二级地址映射,得到机密数据存放在闪存的物理地址,然后从闪存相应位置读取机密数据。
[0085]以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。
【主权项】
1.一种基于NandFlash闪存设备的数据安全存储方法,其特征在于,包括以下步骤: 1)在闪存的转换层中维护两级地址映射:一级地址映射维护文件系统逻辑地址到用户数据区逻辑地址的映射表;二级地址映射维护用户数据区逻辑地址到闪存中物理地址的映射表;对于普通用户数据,记录其两级地址映射;对于机密数据,在一级地址映射表中不记录其文件系统逻辑地址到用户数据区逻辑地址的映射; 2)运行基于闪存的存储设备,循环监听文件系统下传的操作指令的次数并作为控制机密数据移动的触发器,当满足触发器条件时,触发机密数据移动机制,将机密数据转移至闪存中的安全块; 3)在机密数据转移至安全块后,对安全块中的机密数据进行伪装; 4)更新二级地址映射,将存放机密数据的用户数据区逻辑地址映射到存储机密数据的安全块物理地址。2.根据权利要求1所述的方法,其特征在于,步骤I)在固件中固化一个用户数据区逻辑地址作为机密数据的用户数据区逻辑地址;在用户读取机密数据时,通过固化的用户数据区逻辑地址查找二级地址映射得到机密数据存放在闪存的物理地址,然后从闪存相应位置读取机密数据。3.根据权利要求1所述的方法,其特征在于,步骤I)在系统数据区的冗余空间中记录机密数据的用户数据区逻辑地址;当机密数据移动时,更新机密数据的用户数据区逻辑地址,同时也更新二级地址映射;在用户读取机密数据时,首先在系统数据区冗余空间恢复出机密数据的用户数据区逻辑地址,然后查找二级地址映射,得到机密数据存放在闪存的物理地址,然后从闪存相应位置读取机密数据。4.根据权利要求1所述的方法,其特征在于,所述触发器包括两种:闪存空闲时控制机密数据移动的闲时移动触发器,以及闪存工作时控制系统移动的被动移动触发器;所述闲时移动触发器设置相对较小的阈值,所述被动移动的计时器设置相对较大的阈值;根据不同的安全要求的应用场景,控制和调整机密数据移动的频率,既保证机密数据的安全性,又使得对系统性能的影响尽可能小。5.根据权利要求4所述的方法,其特征在于,在文件系统下传的指令队列为空,即所有文件系统指令均已处理完毕,当前不再存在操作指令时,判断是否达到设置的循环监听次数阈值,使得每次机密数据的移动均在系统空闲状态。6.根据权利要求1所述的方法,其特征在于,步骤2)中机密数据的移动过程包括: 2-1)选择机密数据需要转移到的安全块; 2-2)对安全块进行垃圾回收; 2-3)将机密数据移动到安全块中; 2-4)重置触发器继续进行下次监听,并更新闪存中记录的机密数据存放的位置信息。7.根据权利要求6所述的方法,其特征在于,步骤2-1)在选择存放机密数据的安全块时,首先按照闪存块中无效页数目的多少对闪存块排序,然后在无效页数目足够多的闪存块中任意选取一个闪存块作为安全块。8.根据权利要求1所述的方法,其特征在于,步骤3)对安全块中的机密数据进行伪装的方法是:在安全块中剩余的空白页中写入随机数据;或者将安全块作为闪存系统中下次使用的工作块,在安全块中剩余的空白页中存储正常的用户数据,并跳过已经存放机密数据的物理页,防止机密数据因重复写而被破坏。9.一种采用权利要求1所述方法的基于NandFlash闪存设备的数据安全存储系统,其特征在于,包括闪存数据安全存储装置,以及分别与其连接的初始化装置、机密数据移动装置、安全块伪装装置、机密数据读取装置;所述闪存数据安全存储设备设置触发器,当触发器条件满足时触发机密数据移动机制;所述初始化装置用于设置所述触发器;所述机密数据移动装置用于控制机密数据的转移;所述安全块数据伪装装置用于对安全块状态实现伪装;所述机密数据读取装置用于实现用户对机密数据的读取。10.根据权利要求9所述的系统,其特征在于,所述闪存数据安全存储装置通过USB总线分别于初始化装置、机密数据移动装置、安全块数据伪装装置、用户读取机密数据装置连接,并通过USB接口与终端连接。
【文档编号】G06F21/78GK105975878SQ201610370911
【公开日】2016年9月28日
【申请日】2016年5月30日
【发明人】夏鲁宁, 汤胜军, 贾世杰, 张琼露, 张国柱, 嵇亚飞, 林璟锵
【申请人】中国科学院信息工程研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1