发明内容
为了解决上述技术问题,本发明实施例提供了在闪存介质上实现安全删除的方法和装置,以实现安全删除,减少甚至避免安全隐患的发生。
本发明实施例公开了如下技术方案:
一种在闪存介质上实现安全删除的方法,其特征在于,所述闪存介质中的所有数据块都写满数据,其中,至少一个数据块写满随机数据,除所述至少一个数据块以外的其它数据块写满文件数据;所述方法包括:
驱动响应于上层的闪存介质文件系统发送的删除文件数据的第一删除请求,将所述文件数据所在的数据块标记为无用;
驱动响应于上层的闪存介质文件系统发送的写入随机数据的第一写入请求,在所述闪存介质中查找空白的数据块或有剩余空白区域的数据块,当在所述闪存介质中查找不到空白的数据块和有剩余空白区域的数据块时,对标记为无用的数据块进行物理擦除,从而变为空白的数据块,向所述空白的数据块写满所述随机数据;
其中,所述第一删除请求和第一写入请求用于触发所述驱动完成一次删除操作。
一种在闪存介质上实现安全删除的方法,其特征在于,所述闪存介质中的所有数据块都写满操作文件,其中,一个操作文件的数据量与N个数据块的数据量总和相等,至少N个数据块写满待填充的操作文件,除所述至少N个数据块之外的其它数据块写满已填充的操作文件,所述待填充的操作文件中的所有数据为随机数据,所述已填充的操作文件中的所有数据为文件数据,N为非零整数;所述方法包括:
上层的文件系统向下层的闪存介质文件系统发送删除一个已填充的操作文件的第一删除请求,所述第一删除请求用于触发驱动将所述已填充的操作文件所在的N个数据块标记为无用;
在删除成功后,上层的文件系统向下层的闪存介质文件系统发送创建一个操作文件并写满随机数据的第一写入请求,所述第一写入请求用于触发驱动将标记为无用的N个数据块进行物理擦除,从而变为空白的数据块,向所述空白的数据块写满所述随机数据;
其中,所述第一删除请求和第一写入请求用于触发驱动完成一次删除操作。
一种在闪存介质上实现安全删除的装置,其特征在于,所述闪存介质中的所有数据块都写满数据,其中,至少一个数据块写满随机数据,除所述至少一个数据块以外的其它数据块写满文件数据;所述装置包括:
第一删除请求响应单元,用于响应于上层的闪存介质文件系统发送的删除文件数据的第一删除请求,将所述文件数据所在的数据块标记为无用;
第一写入请求响应单元,用于响应于上层的闪存介质文件系统发送的写入随机数据的第一写入请求,在所述闪存介质中查找空白的数据块或有剩余空白区域的数据块,当在所述闪存介质中查找不到空白的数据块和有剩余空白区域的数据块时,对标记为无用的数据块进行物理擦除,从而变为空白的数据块,向所述空白的数据块写满所述随机数据;
其中,所述第一删除请求和第一写入请求用于触发所述驱动完成一次删除操作。
一种在闪存介质上实现安全删除的装置,其特征在于,所述闪存介质中的所有数据块都写满操作文件,其中,一个操作文件的数据量与N个数据块的数据量总和相等,至少N个数据块写满待填充的操作文件,除所述至少N个数据块之外的其它数据块写满已填充的操作文件,所述待填充的操作文件中的所有数据为随机数据,所述已填充的操作文件中的所有数据为文件数据,N为非零整数;所述装置还包括:
第一删除请求发送单元,用于向下层的闪存介质文件系统发送删除一个已填充的操作文件的第一删除请求,所述第一删除请求用于触发驱动将所述已填充的操作文件所在的N个数据块标记为无用;
第一写入请求发送单元,用于在删除成功后,向下层的闪存介质文件系统发送创建一个操作文件并写满随机数据的第一写入请求,所述第一写入请求用于触发驱动将标记为无用的N个数据块进行物理擦除,从而变为空白的数据块,向所述空白的数据块写满所述随机数据;
其中,所述第一删除请求和第一写入请求用于触发所述驱动完成一次删除操作。
由上述实施例可以看出,与现有技术相比,本发明的优点在于:
从底层驱动来看,当闪存介质中的所有数据块都已经写满数据时,通过对一个写满随机数据的数据块先后执行一次数据删除操作和一次数据写入操作,最终就可以实现将文件数据写入到该数据块中的结果。另外,通过对一个写满文件数据的数据块先后执行一次数据删除操作和一次数据写入操作,最终可以实现将随机数据写入到该数据块中的结果,也就是说,达到了利用随机数据覆盖原来的文件数据的效果,原来的文件数据彻底消失不见,从而实现了安全删除。
从高层堆叠文件系统来看,闪存介质中的N个完整的数据块就相当于一个最小可操作的文件,因此,当所有的最小可操作的文件都写满数据时,通过对一个写满随机数据的最小可操作的文件(即,可填充的操作文件)先后执行一次文件删除操作和一次文件写入操作,最终就可以实现将文件数据写入到该可填充的操作文件的结果。另外,通过对一个写满文件数据的最小可操作的文件(即,已填充的操作文件)先后执行一次文件删除操作和一次文件写入操作,最终可以实现将随机数据写入到该已填充的操作文件中的结果,也就是说,达到了利用随机数据覆盖原来的文件数据的效果,原来的文件数据彻底消失不见,从而实现了安全删除。
具体实施方式
在闪存介质上,由于最小的物理操作单元是数据块,因此,对于闪存介质的驱动来说,其只能以数据块为单位进行物理擦除。而当对一个数据块进行物理擦除后,使其成为空白的数据块(即,该数据块中的比特位全部重置为1),此时,该数据块中的数据即彻底消失不见。
通过垃圾回收机制可以触发驱动对数据块进行一次物理擦除,具体过程为:当执行写入操作时,如果闪存介质中既不存在空白的数据块,也不存在有剩余空白区域的数据块,驱动就会对标记为无用(invalid)的数据块进行物理擦除,使其重新成为空白的数据块。
利用驱动的上述工作机制,在本发明的技术方案中,在没有使用闪存介质存储任何文件数据之前,该闪存介质上的各个数据块并不是空白的数据块,而是需要预先将闪存介质10中所有空白的数据块101-10N全部写满随机数据,如图1所示。
基于闪存介质10的上述构造,对该闪存介质10执行数据写入操作的过称为:先向驱动20发送一个删除某一数据块(如,数据块101)中的数据的请求,作为响应,驱动20根据其工作机制会先将数据块101标记为无用,如图2所示。然后向驱动20发送一个写入数据(该数据为有实际使用价值的文件数据)的请求,由于此时已经没有空白的数据块(因为所有的数据块已经全部写满随机数据)供驱动20写入数据,因此,作为响应,驱动20根据其工作机制会将标记为无用的数据块101进行物理擦除,使数据块101成为空白的数据块,如图3所示,然后再将文件数据写满数据块101,如图4所示。如果文件数据无法写满数据块101,驱动可以利用随机数据对文件数据进行扩充,使其可以写满数据块101即可。可以理解的,此时数据块101中的数据为有实际使用价值的文件数据,而除数据块101之外的其它数据块中的数据都为没有实际使用价值的随机数据。
对该闪存介质10执行数据删除操作的过程为:先向驱动20发送一个删除某一个数据块(例如,数据块101)中的数据的请求,作为响应,驱动20根据其工作机制先将数据块101标记为无用,如图5所示。然后向驱动20发送一个写入数据(该数据为没有实际使用价值的随机数据)的请求,由于此时已经没有空白的数据块(因为数据块101已经写满文件数据,数据块102-10N已经全部写满随机数据)供驱动20写入数据,因此,作为响应,驱动20根据其工作机制会将标记为无用的数据块101进行物理擦除,使数据块101成为空白的数据块,如图3所示,然后再将随机数据写满数据块101,如图1所示。
由此可见,当闪存介质中的所有数据块都已经写满数据时,通过对一个写满随机数据的数据块先后执行一次数据删除操作和一次数据写入操作,最终就可以实现将文件数据写入到该数据块中的结果。另外,通过对一个写满文件数据的数据块先后执行一次数据删除操作和一次数据写入操作,最终可以实现将随机数据写入到该数据块中的结果,也就是说,达到了利用随机数据覆盖原来的文件数据的效果,原来的文件数据彻底消失不见,从而实现了安全删除。
闪存介质10可以是NandFlash。闪存介质的驱动20可以是软件驱动,也可以是硬件驱动。如果是软件驱动,该软件驱动可以集成在操作系统内。如果是硬件驱动,该硬件驱动可以集成在一个专有的控制芯片上。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例进行详细描述。
方法实施例
针对一种具有特定数据块结构的闪存介质,请参阅图6,其为本发明提供的一种在闪存介质上实现安全删除的方法的一个实施例的流程图,该方法包括以下步骤:
步骤600:闪存介质中的所有数据块都写满数据,其中,至少一个数据块写满随机数据,除所述至少一个数据块以外的其它数据块写满文件数据。
步骤601:驱动响应于上层的闪存介质文件系统发送的删除文件数据的第一删除请求,将所述文件数据所在的数据块标记为无用。
步骤602:驱动响应于上层的闪存介质文件系统发送的写入随机数据的第一写入请求,在所述闪存介质中查找空白的数据块或有剩余空白区域的数据块,当在所述闪存介质中查找不到空白的数据块和有剩余空白区域的数据块时,对标记为无用的数据块进行物理擦除,从而变为空白的数据块,向所述空白的数据块写满所述随机数据。
其中,所述第一删除请求和第一写入请求用于触发所述驱动完成一次删除操作。
可以理解的,基于步骤100中的闪存介质,上层的闪存介质文件系统(如,YAFFS、JSFF或Ext4等)只要向底层的驱动先后发送一次关于文件数据的数据删除请求和关于随机数据的数据写入请求,底层的驱动根据其自身已有的工作机制(垃圾回收机制)就可以将随机数据覆写在一个数据块中的文件数据上,从而安全删除该数据块中的文件数据。
当然,如果需要连续删除多个数据块上的文件数据,上层的闪存介质文件系统可以重复地向底层的驱动发送关于文件数据的数据删除请求和关于随机数据的数据写入请求。作为响应,底层的驱动也就会重复地执行上述步骤601和602。
为了使驱动在初始状态下就具备应用垃圾回收机制的能力,在没有使用闪存介质存储任何文件数据之前,该闪存介质上的各个数据块并不是空白的数据块,而是需要预先将所有空白的数据块全部写满随机数据。
即,在初始状态下,闪存介质中的所有数据块都写满随机数据。
当闪存介质的所有数据块都写满随机数据,或者,当闪存介质的一部分数据块写满文件数据,另一部分数据块写满随机数据时,针对写满随机数据的数据块,虽然该数据块不是空白的,但是其实际上是一种可以写入文件数据的数据块,与上述方案的思想类似的,针对具有上述两种特定数据块结构的闪存介质,只要通过一次数据删除操作和一次数据写入操作就可以将文件数据覆写在数据块中的随机数据上。
因此,在本发明的另一个优选实施方式中,为了将文件数据写入到闪存介质的某一个数据块上,该方法还包括:驱动响应于上层的闪存介质文件系统发送的写入文件数据的第二写入请求,将所述随机数据所在的数据块标记为无用;响应于上层的闪存介质文件系统发送的写入文件数据的第二写入请求,在所述闪存介质上查找空白的数据块或有剩余空白区域的数据块,当在所述闪存介质中查找不到空白的数据块或有剩余空白区域的数据块时,对标记为无用的数据块进行物理擦除,从而变为空白的数据块,向所述空白的数据块写满所述文件数据。
其中,所述第二删除请求和第二写入请求用于触发所述驱动完成一次写入操作。
当然,如果需要连续向多个数据块写入文件数据,可以重复地向底层的驱动发送关于随机数据的数据删除请求和关于文件数据的数据写入请求。作为响应,底层的驱动也就会重复地执行以上步骤。
另外,为了保证文件数据可以刚好写满一个数据块,一种实现方式是,在驱动上层的文件系统(例如,闪存介质文件系统,或者,位于虚拟文件系统和闪存介质文件系统之间的堆叠文件系统)向驱动发送数据写入请求之前,由驱动上层的文件系统先对数据写入请求进行重组,即,对不够写满一个数据块的文件数据,利用随机数据进行扩充,使扩充后的文件数据可以写满一个数据块。同时,记录相关的位置,例如,扩充的起始位置或者文件数据的终止位置。这样,底层的驱动就可以直接将已扩充好的文件数据写满数据块,而无需对底层的驱动进行任何改动。
作为另一种可选方案,也可以在底层的驱动接收到第二写入请求之后,由底层的驱动对不够写满一个数据块的文件数据进行扩充。因此,在本发明的另一个优选实施方式中,该方法还可以包括:驱动在向所述空白的数据块写满所述文件数据之前,判断所述文件数据是否可写满所述空白的数据块,如果否,利用随机数据对所述文件数据进行扩充,使扩充后的所述文件数据可写满所述空白的数据块。
则驱动向所述空白的数据块写满所述文件数据为:驱动向所述空白的数据块写满扩充后的所述文件数据。
当对具有上述闪存介质中的文件数据进行数据更新时,由于每一个数据更新操作包括数据写入操作和数据删除操作,即,对闪存介质先执行更新文件数据的写入操作(如果被更新文件数据所在的数据块还存在其它文件数据,还需要执行其他文件数据的写入操作),再执行被更新文件数据的删除操作。具体的写入过程和删除过程可以参见上述方法,此次不再赘述。
如图7所示,其示意性地示出了本发明实施的系统框架示意图。在该系统中,最上层的是Linux的虚拟文件系统70,位于虚拟文件系统70下层是的实现本发明核心技术方案的堆叠文件系统71,位于堆叠文件系统71下层的是闪存介质文件系统72,如,YAFFS、JSFF或Ext4等。位于闪存介质文件系统72下层的是闪存介质驱动层73,位于闪存介质驱动层73下层的是闪存介质74,如,NandFlash。
其中,Linux的虚拟文件系统最重要的特征之一是支持多文件系统,使其更加灵活,从而与许多其他的操作系统共存。Linux支持ext、ext2、xia、minix、umsdos、msdes、fat32、ntfs、proc、stub、ncp、hpfs、affs以及ufs等多种文件系统。为了实现这一目的,Linux内核对所有的文件系统采用统一的文件操作界面,用户通过文件操作界面来实现对不同的文件系统的操作。对于用于来说,其并不需要关心对不同的文件系统的具体操作过程,而只是对一个虚拟的文件操作界面进行操作,而这个虚拟的文件操作界面就是Linux的虚拟文件系统。
inode是类Linux操作系统的一种数据结构,用开表示一个开的文件、目录或者其它在文件系统命名空间出现的实体,它隐藏了底层物理文件系统的实现细节。inode接口使高层的操作系统可以按照统一的方式处理文件系统请求。Inode接口的一个改进是inode分层堆叠,这种技术可以让一个inode接口调用另一个inode接口,从而使文件系统功能设计模块化。有了inode分层堆叠后,可以有多个inode接口,并且它们之间按照顺序调用。利用inode分层堆叠方法,可以在现有的底层物理文件系统和虚拟文件系统之间插入一个新的堆叠文件系统,为底层物理文件系统增加新功能。这样,大多数实际的文件操作可由底层物理文件系统完成,开发者可以把主要精力放在文件系统的新功能上,而不用考虑文件系统和底层服务的交互,大大加快了开发速度。同时堆叠文件系统的性能和Linux的虚拟文件系统接近,避免了用户级文件系统的性能问题。
在加载了堆叠文件系统之后,为了便于上层的堆叠文件系统对下层的闪存介质文件系统的管理以及便于对最底层的闪存介质的操作,堆叠文件系统先根据闪存介质中的N个数据块的大小设置一个文件(该文件作为堆叠文件系统的最小可操作的文件,也可以称为“操作文件”)的大小,并向闪存介质文件系统请求写入最小操作的文件(该最小可操作的文件中的所有数据都为随机数据),从而使所有最小可操作的文件占满闪存介质的所有存储空间。这样,对于堆叠文件系统来说,闪存介质中的N个完整的数据块就相当于一个最小可操作的文件,其向闪存介质文件系统发送的各种文件操作请求的对象都是某一个最小可操作的文件。而每当堆叠文件系统向闪存介质文件系统发送一次最小可操作的文件写入/删除请求时,最终反映到闪存介质上,都是对N个数据块的操作,上述N为非零整数。
因此,当所有的数据块都写满最小可操作的文件(即,操作文件)时,堆叠文件系统通过对一个写满随机数据的最小可操作的文件(即,待填充的操作文件)先后执行一次文件删除操作和一次文件写入操作,最终就可以实现将文件数据写入到该待填充的操作文件的结果。另外,堆叠文件系统通过对一个写满文件数据的最小可操作的文件(即,已填充的操作文件)先后执行一次文件删除操作和一次文件写入操作,最终可以实现将随机数据写入到该已填充的操作文件中的结果,也就是说,达到了利用随机数据覆盖原来的文件数据的效果,原来的文件数据彻底消失不见,从而实现了安全删除。
请参阅图8,其为本发明提供的一种在闪存介质上实现安全删除的方法的一个实施例的流程图,该方法包括以下步骤:
步骤800:闪存介质中的所有数据块都写满操作文件,其中,一个操作文件的数据量与N个数据块的数据量总和相等,至少N个数据块写满待填充的操作文件,除所述至少N个数据块之外的其它数据块写满已填充的操作文件,所述待填充的操作文件中的所有数据为随机数据,所述已填充的操作文件中的所有数据为文件数据,N为非零整数。
步骤801:上层的文件系统向下层的闪存介质文件系统发送删除一个已填充的操作文件的第一删除请求,所述第一删除请求用于触发驱动将所述已填充的操作文件所在的N个数据块标记为无用。
步骤802:在删除成功后,上层的文件系统向下层的闪存介质文件系统发送创建一个操作文件并写满随机数据的第一写入请求,所述第一写入请求用于触发驱动将标记为无用的N个数据块进行物理擦除,从而变为空白的数据块,向所述空白的数据块写满所述随机数据。
其中,所述第二删除请求和第二写入请求用于触发所述驱动完成一次写入操作。
可以理解的,对于堆叠文件系统来说,由于其最小可操作的文件(即,操作文件)的数据量与N个数据块的数据量总和相等,因此,堆叠文件系统每次对一个操作文件的操作最终都会映射为是对N个数据块的操作。例如,当N=1时,一个最小可操作的文件的大小与一个数据块的大小相等,即,对每一个最小可操作的文件的操作最终会映射为对一个数据块的操作。当N为x(x≥1)时,对每一个最小可操作的文件的操作最终会映射为对x个数据块的操作。
在本发明的另一个优选实施方式中,所述方法还包括:
上层的文件系统向下层的闪存介质文件系统发送删除一个待填充的操作文件的第二删除请求,所述第二删除请求用于触发驱动将所述待填充的操作文件所在的N个数据块标记为无用;在删除成功后,上层的文件系统向下层的闪存介质文件系统发送创建一个操作文件并写满文件数据的第二写入请求,所述第二写入请求用于触发驱动将标记为无用的N个数据块进行物理擦除,从而变为空白的数据块,向所述空白的数据块写满所述文件数据。
其中,所述第二删除请求和第二写入请求用于触发驱动完成一次写入操作。
在现有技术中,针对闪存介质文件系统来说,其最小的可操作单位通常是数据页(page),并会保存有数据页与闪存介质上的数据块(block)之间的映射关系。在本发明中,闪存介质文件系统不仅会保存有数据页与数据块之间的映射关系,还会保存有操作文件与数据页之间的映射关系。这样,就可以先根据映射关系将上层的堆叠文件系统请求操作的操作文件先转换为对应的数据页,在根据映射关系将数据页转换为对应的数据块,最后请求闪存驱动操作对应的数据块。
在本发明中,对于堆叠文件系统来说,当最小可操作的文件中包含的所有数据都是随机数据,而不是文件数据时,此时该最小可操作的文件(即,可填充的操作文件)实际上是可用的,即,在闪存介质上,可填充的操作文件中的随机数据在数据块中可以被其它的文件数据所覆写。因此,堆叠文件系统还可以建立一个可用文件表,如图9所示,在该可用文件表的每一个表项中记录了一个可用文件的文件名,以及每一个可用文件的文件名与可填充的操作文件的文件名之间的映射关系。其中,可以采用链表方式将所有可填充的操作文件链接为可用文件链表。
实际上,堆叠文件系统接管了Linux的虚拟文件系统对闪存介质文件系统的所有访问请求,当接收到Linux的虚拟文件系统的文件写入请求之后,堆叠文件系统将待写入文件(即,一个虚拟文件)按照最小操作文件的大小划分为多个文件片段,并根据文件片段的个数从可用文件表中查询相应数量的可用文件。文件写入的具体方式是:堆叠文件系统先向闪存介质文件系统发送文件删除请求,请求删除查询到的多个可用文件,在删除成功后,再向闪存介质文件系统发送文件创建并写入请求,请求闪存介质文件系统创建查询到的多个可用文件,并向这些可用文件分别写满每个文件片段中的文件数据。写入成功后,可用文件变成不可用的(即,可用文件从可填充的操作文件变为已填充的操作文件),堆叠文件系统更新可用文件表,将这些可用文件从可用文件表的表项中删除。
与此同时,堆叠文件系统还要建立一个文件存储表,如图10所示,在该文件存储表的每一个表项中记录了一个存储文件的文件名(即,文件片段名),以及每一个存储文件的文件名与已填充的操作文件的文件名之间的映射关系。另外,如果存储文件中的文件数据被随机数据进行过扩充,在每一个表项中,还需要记录该存储文件中的文件数据的偏移量(offset),以便根据偏移量只返回具有实际意义的文件数据而不加入随机数据。
当接收到Linux的虚拟文件系统的文件删除请求之后,堆叠文件系统先确定与待删除文件的各文件片段对应的存储文件,再从文件存储表中查询对应的存储文件。文件删除的具体方式是:堆叠文件系统先向闪存介质文件系统发送文件删除请求,请求删除查询到的多个存储文件,在删除成功后,再向闪存介质文件系统发送文件创建并写入请求,请求闪存介质文件系统创建查询到的多个存储文件,并向这些存储文件中分别写满随机数据。写入成功后,这些存储文件变成可用的(即,存储文件从已填充的操作文件变为可填充的操作文件),堆叠文件系统更新可用文件表,在可用文件表中增加相关表项。
为了保证在一个待填充的操作文件中可以写满文件数据,在本发明的另一个优选实施方式中,该方法还包括:
上层的文件系统在向下层的闪存介质文件系统发送创建一个操作文件并写满文件数据之前,判断所述文件数据是否可写满一个操作文件,如果否,利用随机数据对所述文件数据进行扩充,以使得扩充后的所述文件数据可写满一个操作文件;
所述上层的文件系统向下层的闪存介质文件系统发送创建一个操作文件并写满文件数据的第二写入请求为:上层的文件系统向下层的闪存介质文件系统发送创建一个操作文件并写满扩充后的所述文件数据。
由上述实施例可以看出,与现有技术相比,本发明的优点在于:
从底层驱动来看,当闪存介质中的所有数据块都已经写满数据时,通过对一个写满随机数据的数据块先后执行一次数据删除操作和一次数据写入操作,最终就可以实现将文件数据写入到该数据块中的结果。另外,通过对一个写满文件数据的数据块先后执行一次数据删除操作和一次数据写入操作,最终可以实现将随机数据写入到该数据块中的结果,也就是说,达到了利用随机数据覆盖原来的文件数据的效果,原来的文件数据彻底消失不见,从而实现了安全删除。
从高层堆叠文件系统来看,闪存介质中的N个完整的数据块就相当于一个最小可操作的文件,因此,当所有的最小可操作的文件都写满数据时,通过对一个写满随机数据的最小可操作的文件(即,可填充的操作文件)先后执行一次文件删除操作和一次文件写入操作,最终就可以实现将文件数据写入到该可填充的操作文件的结果。另外,通过对一个写满文件数据的最小可操作的文件(即,已填充的操作文件)先后执行一次文件删除操作和一次文件写入操作,最终可以实现将随机数据写入到该已填充的操作文件中的结果,也就是说,达到了利用随机数据覆盖原来的文件数据的效果,原来的文件数据彻底消失不见,从而实现了安全删除。
装置实施例
与上述一种在闪存介质上实现安全删除的方法相对应,本发明实施例还提供了一种在闪存介质上实现安全删除的装置。请参阅图11,其为本发明提供的一种在闪存介质上实现安全删除的装置的一个实施例的结构图,所述闪存介质中的所有数据块都写满数据,其中,至少一个数据块写满随机数据,除所述至少一个数据块以外的其它数据块写满文件数据,该装置包括:第一删除请求响应单元1101和第一写入请求响应单元1102。下面结合该装置的工作原理进一步介绍其内部结构以及连接关系。
第一删除请求响应单元1101,用于响应于上层的闪存介质文件系统发送的删除文件数据的第一删除请求,将所述文件数据所在的数据块标记为无用;
第一写入请求响应单元1102,用于响应于上层的闪存介质文件系统发送的写入随机数据的第一写入请求,在所述闪存介质中查找空白的数据块或有剩余空白区域的数据块,当在所述闪存介质中查找不到空白的数据块和有剩余空白区域的数据块时,对标记为无用的数据块进行物理擦除,从而变为空白的数据块,向所述空白的数据块写满所述随机数据。
其中,所述第一删除请求和第一写入请求用于触发所述驱动完成一次删除操作。
在本发明的另一个优选实施方式中,该装置还包括:
第二删除请求响应单元,用于响应于上层的闪存介质文件系统发送的删除随机数据的第二删除请求,将所述随机数据所在的数据块标记为无用;
第二写入请求响应单元,用于响应于上层的闪存介质文件系统发送的写入文件数据的第二写入请求,在所述闪存介质中查找空白的数据块或有剩余空白区域的数据块,当在所述闪存介质中查找不到空白的数据块和有剩余空白区域的数据块时,对无用的数据块进行物理擦除,从而变为空白的数据块,向所述空白的数据块写满所述文件数据。
其中,所述第二删除请求和第二写入请求用于触发所述驱动完成一次写入操作。
在本发明的另一个优选实施方式中,该装置还包括:
数据扩充单元,用于在向所述空白的数据块写满所述文件数据之前,判断所述文件数据是否可写满所述空白的数据块,如果否,利用随机数据对所述文件数据进行扩充,使扩充后的所述文件数据可写满所述空白的数据块;
则第二写入请求响应单元用于,响应于上层的闪存介质文件系统发送的写入文件数据的第二写入请求,在所述闪存介质中查找空白的数据块或有剩余空白区域的数据块,当在所述闪存介质中查找不到空白的数据块和有剩余空白区域的数据块时,对无用的数据块进行物理擦除,从而变为空白的数据块,向所述空白的数据块写满扩充后的所述文件数据。
请参阅图12,其为本发明提供的一种在闪存介质上实现安全删除的装置的另一个实施例的结构图,所述闪存介质中的所有数据块都写满操作文件,其中,一个操作文件的数据量与N个数据块的数据量总和相等,至少N个数据块写满待填充的操作文件,除所述至少N个数据块之外的其它数据块写满已填充的操作文件,所述待填充的操作文件中的所有数据为随机数据,所述已填充的操作文件中的所有数据为文件数据,N为非零整数,该装置包括:
第一删除请求发送单元1201,用于向下层的闪存介质文件系统发送删除一个已填充的操作文件的第一删除请求,所述第一删除请求用于触发驱动将所述已填充的操作文件所在的N个数据块标记为无用;
第一写入请求发送单元1202,用于在删除成功后,向下层的闪存介质文件系统发送创建一个操作文件并写满随机数据的第一写入请求所述第一写入请求用于触发驱动将标记为无用的N个数据块进行物理擦除,从而变为空白的数据块,向所述空白的数据块写满所述随机数据;
其中,所述第一删除请求和第一写入请求用于触发所述驱动完成一次删除操作。
在本发明的另一个优选实施方式中,该装置还包括:
第二删除请求发送单元,用于向下层的闪存介质文件系统发送删除一个待填充的操作文件的第二删除请求,所述第二删除请求用于触发驱动将所述待填充的操作文件所在的N个数据块标记为无用;
第二写入请求发送单元,用于在删除成功后,向下层的闪存介质文件系统发送创建一个操作文件并写满文件数据的第二写入请求,所述第二写入请求用于触发驱动将标记为无用的N个数据块进行物理擦除,从而变为空白的数据块,向所述空白的数据块写满所述文件数据;
其中,所述第二删除请求和第二写入请求用于触发所述驱动完成一次写入操作。
在本发明的另一个优选实施方式中,该装置还包括:
文件扩充单元,用于在向下层的闪存介质文件系统发送创建一个操作文件并写满文件数据之前,判断所述文件数据是否可写满一个操作文件,如果否,利用随机数据对所述文件数据进行扩充,以使得扩充后的所述文件数据可写满一个操作文件;
所述第二写入请求发送单元用于,向下层的闪存介质文件系统发送创建一个操作文件并写满扩充后的所述文件数据的第二写入请求,所述第二写入请求用于触发驱动将标记为无用的N个数据块进行物理擦除,从而变为空白的数据块,向所述空白的数据块写满扩充后的所述文件数据。
由上述实施例可以看出,与现有技术相比,本发明的优点在于:
从底层驱动来看,当闪存介质中的所有数据块都已经写满数据时,通过对一个写满随机数据的数据块先后执行一次数据删除操作和一次数据写入操作,最终就可以实现将文件数据写入到该数据块中的结果。另外,通过对一个写满文件数据的数据块先后执行一次数据删除操作和一次数据写入操作,最终可以实现将随机数据写入到该数据块中的结果,也就是说,达到了利用随机数据覆盖原来的文件数据的效果,原来的文件数据彻底消失不见,从而实现了安全删除。
从高层堆叠文件系统来看,闪存介质中的N个完整的数据块就相当于一个最小可操作的文件,因此,当所有的最小可操作的文件都写满数据时,通过对一个写满随机数据的最小可操作的文件(即,可填充的操作文件)先后执行一次文件删除操作和一次文件写入操作,最终就可以实现将文件数据写入到该可填充的操作文件的结果。另外,通过对一个写满文件数据的最小可操作的文件(即,已填充的操作文件)先后执行一次文件删除操作和一次文件写入操作,最终可以实现将随机数据写入到该已填充的操作文件中的结果,也就是说,达到了利用随机数据覆盖原来的文件数据的效果,原来的文件数据彻底消失不见,从而实现了安全删除。
所述领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述到的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,可以采用软件功能单元的形式实现。
需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取闪存介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的闪存介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上对本发明所提供的在闪存介质上实现安全删除的方法和装置进行了详细介绍,本文中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。