基于flash存储介质的数据切换方法及装置与流程

文档序号:11154690阅读:409来源:国知局
基于flash存储介质的数据切换方法及装置与制造工艺

本发明涉及数据存储技术领域,尤其涉及一种基于flash存储介质的数据切换方法及装置。



背景技术:

随着电子技术的不断发展,出现了一大批的电子产品,而电子产品大都具有固态硬盘。SSD(Solid State Disk,固态硬盘)是一种替代传统硬盘的新型存储技术,由控制单元和闪存单元(Flash芯片阵列)组成的一种电子硬盘,其外形、尺寸、接口规范、功能及使用方法等与传统机械硬盘相似。固态硬盘采用的是闪存芯片,固态存储器内部不存在任何机械部件,因此在高速移动甚至伴随翻转倾斜的情况下也不会影响到正常使用。另外,固态存储器没有机械马达和风扇,工作时非常安静。SSD没有寻道和马达转动的时间,从而显著的减少了存取时间。综上可知,固态硬盘具有数据存取速度快、经久耐用、防震抗摔、重量轻、节能的优势。

在移动互联飞速发展的今天,硬盘已经不在是普通的存储工具,数据的保护显得尤为重要。对于数据加密、检测用户的权限、抵制某些非法入侵导致的信息泄露问题都是存储安全需要研究的课题。虽然可以使用防火墙、防病毒软件和智能卡在网络和本地存储级别管理数据安全,但仍然存在数据被盗或丢失的风险。硬盘中存储着敏感数据,是计算流程中的关键组件。即使采取基于文件和文件夹的加密,但是软件缺陷和漏洞、恶意代码或操作系统中的安全漏洞都会导致分区或磁盘级的软件加密安全性存在隐患。

现有技术中采用软件加密或者软件层面的数据隐藏,其安全性无法保障。只需要对硬盘数据进行分析,就可以找到隐藏分区。分析过程如下:首先根据某些特征找到分区表,再根据分区表中提供的分区起始位置、分区大小等信息确定一个隐藏卷所在的位置;然后根据卷内的管理信息确定其文件系统类型、管理方式等,进而提取有用的数据。如果分区表被破坏,还可以手动根据残留分区信息重建分区表,然后再进行后续工作。上述分析可以使用的工具包括InsPro Disk,Atademo等,这些工具都十分强大,可以直接从数据底层访问磁盘。而在硬盘固件层面进行数据隐藏则安全性要好得多,在没有泄露访问控制码的条件下,在文件层面的数据分析和恢复是不可能的。



技术实现要素:

本发明所要解决的技术问题是:提供一种基于flash存储介质的数据切换方法,旨在提高存储介质数据读写的安全性能。

为了解决上述技术问题,本发明采用的技术方案为:提供一种基于flash存储介质的数据切换方法,该方法包括如下步骤:

在接收到切换唤醒序列时,判断切换唤醒序列与存储介质中预设的序列是否匹配;

当坏块切换唤醒序列与存储介质中预设的序列匹配成功时,切换至坏块映射表,以及遍历坏块区所有的元素,找出坏块中的隐藏标识及相应的页信息中数据隐藏标识;

根据坏块中的隐藏标识及相应的页信息中数据隐藏标识建立隐藏块的数据映射表;

根据隐藏块的数据映射表对存储介质中的隐藏区进行读写操作。

优选地,所述在接收到切换唤醒序列时,判断切换唤醒序列与存储介质中预设的序列是否匹配的步骤之前,还包括:

设置隐藏区,将部分正常使用的数据块添加隐藏标识后形成隐藏数据块并加入坏块映射表的步骤。

优选地,所述设置隐藏区,将部分正常使用的数据块添加隐藏标识后形成隐藏数据块并加入坏块映射表的步骤,具体包括:

在Flash的每个颗粒上,随机选取N个目标块,N=v/(k*m),其中,v表示需要隐藏的容量大小,k表示存储介质中Flash的颗粒数,m为每个目标块的容量大小;

在选取的目标块上设置隐藏标识及相应的页信息中数据隐藏标识;

将选取的目标块的物理地址存入坏块映射表中。

优选地,所述设置隐藏区,将部分正常使用的数据块添加隐藏标识后形成隐藏数据块并加入坏块映射表的步骤之后,还包括:

判断存储介质的当前使用状态是正常使用状态还是启用隐藏区状态;

当存储介质的当前使用状态是正常使用状态时,且在切换唤醒序列与存储介质中预设的序列匹配成功时,则存储介质在掉电后再上电或者重启动后进入启动隐藏区状态,在切换唤醒序列与存储介质中预设的序列匹配失败时,则存储介质在掉电后再上电或者重启动后进入正常使用状态;

当存储介质的当前使用状态是启动隐藏区状态时,则存储介质在掉电后再上电或者重启动后进入正常使用状态。

优选地,所述遍历坏块区所有的元素,找出隐藏标识及相应的页信息中数据隐藏标识的步骤,具体包括:

根据坏块映射表遍历每颗Flash的坏块,检查所有坏块的隐藏标识位;

判断坏块的标识位是否有效,

若坏块的隐藏标识位无效,则此块为真正的坏块,继续检查下一坏块;

若坏块的隐藏标识为有效,则此块为数据隐藏块,继续遍历该坏块相应的页信息,找出有效的页信息的隐藏标识,以恢复隐藏区的数据映射表。

为了解决上述技术问题,本发明采用的技术方案为:提供一种基于flash存储介质的数据切换装置,包括:

第一判断模块,用于在接收到切换唤醒序列时,判断切换唤醒序列与存储介质中预设的序列是否匹配;

切换模块,用于当坏块切换唤醒序列与存储介质中预设的序列匹配成功时,切换至坏块映射表,以及遍历坏块区所有的元素,找出坏块中的隐藏标识及相应的页信息中数据隐藏标识;

建立模块,用于根据坏块中的隐藏标识及相应的页信息中数据隐藏标识建立隐藏块的数据映射表;

读写模块,用于根据隐藏块的数据映射表对存储介质中的隐藏区进行读写操作。

优选地,所述装置还包括:

预设模块,用于设置隐藏区,将部分正常使用的数据块添加隐藏标识后形成隐藏数据块并加入坏块映射表。

优选地,所述预设模块,具体用于在Flash的每个颗粒上,随机选取N个目标块,N=v/(k*m),其中,v表示需要隐藏的容量大小,k表示存储介质中Flash的颗粒数,m为每个目标块的容量大小;

在选取的目标块上设置隐藏标识及相应的页信息中数据隐藏标识;

将选取的目标块的物理地址存入坏块映射表中。

优选地,所述装置还包括:

第二判断模块,用于判断存储介质的当前使用状态是正常使用状态还是启用隐藏区状态;

当存储介质的当前使用状态是正常使用状态时,且在切换唤醒序列与存储介质中预设的序列匹配成功时,则存储介质在掉电后再上电或者重启动后进入启动隐藏区状态,在切换唤醒序列与存储介质中预设的序列匹配失败时,则存储介质在掉电后再上电或者重启动后进入正常使用状态;

当存储介质的当前使用状态是启动隐藏区状态时,则存储介质在掉电后再上电或者重启动后进入正常使用状态。

优选地,所述遍历模块,用于根据坏块映射表遍历每颗Flash的坏块,检查所有坏块的隐藏标识位;

判断坏块的标识位是否有效,

若坏块的隐藏标识位无效,则此块为真正的坏块,继续检查下一坏块;

若坏块的隐藏标识为有效,则此块为数据隐藏块,继续遍历该坏块相应的页信息,找出有效的页信息的隐藏标识,以恢复隐藏区的数据映射表。

本发明的有益效果在于:本方案主要采用在接收到切换唤醒序列时,且当坏块切换唤醒序列与存储介质中预设的序列匹配成功时,切换至坏块映射表,以及遍历坏块区所有的元素,找出坏块中的隐藏标识及相应的页信息中数据隐藏标识;根据坏块中的隐藏标识及相应的页信息中数据隐藏标识建立隐藏块的数据映射表;根据隐藏块的数据映射表对存储介质中的隐藏区进行读写操作,如此,可以从物理层隔离敏感数据和非敏感数据,敏感数据是需要隐藏的数据,而非敏感数据是正常使用数据,如此,能够以较小的代价实现数据的隐藏,能够提高存储介质的安全性能。

附图说明

图1为本发明基于flash存储介质的数据切换方法的方法流程图;

图2为本发明中步骤S30的方法流程图;

图3为存储介质的数据映射图;

图4为本发明中存储介质中隐藏区的示意图;

图5为本发明基于flash存储介质的数据切换装置的方框图。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

本发明提供了一种基于flash存储介质的数据切换方法,可以从物理层隔离敏感数据和非敏感数据,其中,敏感数据是需要隐藏的数据,而非敏感数据是正常使用数据。本发明中的存储介质可以为固态存储硬盘、USB盘和存储阵列等存储设备。以固态硬盘为例,固态硬盘中的闪存在测试和使用中有部分块被标记为坏块,以标识这些块在擦除和编程时发生错误,坏块要单独用坏块映射表来管理。固态硬盘的闪存一般采用NAND flash,由于NAND Flash的工艺不能保证在其生命周期中保持性能的可靠,因此在NAND Flash的生产中及使用过程中会产生坏块。坏块的特性是:当编程/擦除这个块时,会造成页编程和块擦除操作时的错误,相应地反映到状态寄存器的相应位。在硬盘系统中,会采用坏块表来进行坏块管理。固态硬盘存储部分的数据组织结构,分为七个不同的区域:(1)全局信息区:用作存放全局信息,包括设备序列号、生产日期、程序版本号、容量、保留块数量,存储颗粒的组织结构(Channel,Row,Layer,单颗FLASH容量);(2)坏块映射表:初始时存放本颗粒保留块的位置,当产生新增坏块时,用从保留块中取出坏块,并将新增坏块标记进坏块表;(3)辅助标记区:该块记录的信息包括上电次数、写入次数、映射表信息块所在地址和顺序、交换块地址、坏块保留块表位置等信息;(4)数据映射表:完成逻辑地址到物理地址的映射,全盘扫描时可快速重建;(5)保留区:保留区存放一些空白的块,发生坏块的时候,从该区的两头调配出保留块,将坏块地址记入坏块表;(6)坏块区:存放生产及使用中产生的坏块,坏块区不能被读写访问;(7)数据区:所有用户数据都存放在该区,数据被分成不同的可擦除的数据块(block),数据块包含若干可以编程的数据页(page)。

参照图1,本发明的实施例中,基于flash存储介质的数据切换方法,该方法包括如下步骤:

步骤S10、在接收到切换唤醒序列时,判断切换唤醒序列与存储介质中预设的序列是否匹配;

步骤S20、当坏块切换唤醒序列与存储介质中预设的序列匹配成功时,切换至坏块映射表,以及遍历坏块区所有的元素,找出坏块中的隐藏标识及相应的页信息中数据隐藏标识;

步骤S30、根据坏块中的隐藏标识及相应的页信息中数据隐藏标识建立隐藏块的数据映射表;

步骤S40、根据隐藏块的数据映射表对存储介质中的隐藏区进行读写操作。

本实施例中,需要存储或者读取敏感数据时,也就是要启动隐藏区时,通过USB、指纹或者射频标签等输入切换唤醒序列与存储介质中的预设序列进行论证,可以启动存储介质中的隐藏区。本实施例中,遍历坏块区所有的元素中的元素为坏块,该坏块包括真正的坏块以及隐藏块。该隐藏块可通过查询隐藏标识及相应的页信息中数据隐藏标识得出,并形成隐藏块的数据映射表,如此,可以对存储介质的隐藏区进行读写操作。

本方案主要采用在接收到切换唤醒序列时,且当坏块切换唤醒序列与存储介质中预设的序列匹配成功时,切换至坏块映射表,以及遍历坏块区所有的元素,找出坏块中的隐藏标识及相应的页信息中数据隐藏标识;根据坏块中的隐藏标识及相应的页信息中数据隐藏标识建立隐藏块的数据映射表;根据隐藏块的数据映射表对存储介质中的隐藏区进行读写操作,如此,可以从物理层隔离敏感数据和非敏感数据,敏感数据是需要隐藏的数据,而非敏感数据是正常使用数据,如此,能够以较小的代价实现数据的隐藏,能够提高存储介质的安全性能。

在一具体的实施例中,所述步骤S10之前,还包括步骤:

设置隐藏区,将部分正常使用的数据块添加隐藏标识后形成隐藏数据块并加入坏块映射表。本实施例中,可以先设计可隐藏数据块的数据头数据格式,以实现数据隐藏。另外,本步骤之后,还可以在全局信息块中设置标识,区分正常使用还是隐藏区,默认上电缺省为正常使用;设计唤醒策略,预置唤醒序列到全局信息区或者辅助标识区后,分别正常初始化和唤醒隐藏区初始化,如此,存储介质可在正常使用状态和启用隐藏区状态之间的按需求切换使用。

在一具体的实施例中,所述设置隐藏区,将部分正常使用的数据块添加隐藏标识后形成隐藏数据块并加入坏块映射表的步骤,具体包括:

在Flash的每个颗粒上,随机选取N个目标块,N=v/(k*m),其中,v表示需要隐藏的容量大小,k表示存储介质中Flash的颗粒数,m为每个目标块的容量大小;

在选取的目标块上设置隐藏标识及相应的页信息中数据隐藏标识;

将选取的目标块的物理地址存入坏块映射表中。

Flash存储介质被分成许多物理上可擦除的块,每个数据块都包含一个数据头,其中包含着本数据块的必要信息,例如本数据块的清理标识、已经被擦除的次数、时间标记、数据有效位等,同时还包含了这个块的每个页信息,包括逻辑扇区号、数据有效标识、时间标记等,而隐藏块还包括隐藏标识及相应的页信息中数据隐藏标识。本实施例中,在坏块上设置的隐藏标识有效或者无效可以确定这个块是真正的坏块还是数据隐藏块。而相应设置的隐藏块的页信息中的隐藏标识,可以确定某个页是不是数据隐藏的页。

在一具体的实施例中,所述设置隐藏区,将部分正常使用的数据块添加隐藏标识后形成隐藏数据块并加入坏块映射表的步骤之后,还包括:

判断存储介质的当前使用状态是正常使用状态还是启用隐藏区状态;

当存储介质的当前使用状态是正常使用状态时,且在切换唤醒序列与存储介质中预设的序列匹配成功时,则存储介质在掉电后再上电或者重启动后进入启动隐藏区状态,在切换唤醒序列与存储介质中预设的序列匹配失败时,则存储介质在掉电后再上电或者重启动后进入正常使用状态;

当存储介质的当前使用状态是启动隐藏区状态时,则存储介质在掉电后再上电或者重启动后进入正常使用状态。

本实施例中,认证唤醒隐藏区基本思想是输入切换唤醒序列,当序列与预置进硬盘中的序列匹配时,则开始启动唤醒。可选择的方式很多,包括但不限于以下几种:

(1)通过SATA协议的开发者自定义的vendor命令来传送某个序列;

(2)通过USB,指纹,经过转接,连接到SSD控制器的某种接口;

(3)RFID、蓝牙等,连接到SSD控制器的某个接口;

(4)上述输入经过某种函数运算的结果,如输入序列经过AES、DES等分组加密,或者SHA,MD5等散列。

请参照图2,在一具体的实施例中,所述步骤S30中遍历坏块区所有的元素,找出隐藏标识及相应的页信息中数据隐藏标识的步骤,具体包括:

S31、根据坏块映射表遍历每颗Flash的坏块,检查所有坏块的隐藏标识位;

S32、判断坏块的标识位是否有效,若坏块的隐藏标识位无效,则此块为真正的坏块,继续检查下一坏块;若坏块的隐藏标识为有效,则此块为数据隐藏块,继续遍历该坏块相应的页信息,找出有效的页信息的隐藏标识,以恢复隐藏区的数据映射表。

本实施例中,数据映射表是逻辑扇区号和物理扇区号建立联系的空间映射表,其结构请参照图3,它将逻辑扇区和物理扇区进行动态匹配。这样在读某个逻辑地址时,只需要查对应的映射表索引即可找到对应的物理地址,然后读取即可。需要写某个逻辑扇区内容时候,只需要将数据写入一个新的物理扇区,然后将新物理扇区与这个逻辑扇区建立指针索引,同时将原指向的物理扇区标记为无效数据即可。建立完数据映射表后,即可像访问正常数据区一样,访问隐藏数据区。

请参照图4,在一具体的示例中,在128G的SSD中,可以设定数据区为105G,系统区包括全局信息区、坏块映射表、辅助标记区、数据映射表、坏块区、保留块区,一共为23G。在系统区中设置一个10G的隐藏区,放入坏块区用来隐藏数据。SSD上电的时候,首先只会看到一个105G的SSD。此时盘处于正常使用状态。此时,如果想启动隐藏区,则需要进行上述的认证过程。认证成功后,重新启动或者掉电,下次出现的即为处于启用隐藏区状态的盘,此时盘显示的容量为10G。10G的盘,掉电或者重启后,下次将看到105G的正常使用的硬盘。上述的,105G和10G的硬盘均可以作为系统盘,也可以作为数据盘使用。因为整个数据划分都是基于硬盘固件层级的,跟操作系统无关。认证完成后FW才允许隐藏的访问,如果无法通过password认证,文件系统层面的分析和攻击对上述数据安全毫无办法。另外一种数据分析方式可以直接拆下Flash进行,这种方法也非常困难。首先,因为无法启动SSD控制器发起对正常数据区,因此无法通过有规律的数字来还原隐藏区的逻辑到物理的映射方式。其次,SSD逻辑块到物理块的映射示意图是一种类似RAID的结构,即Flash之间的阵列结构。这种情况下,数据是由多个不连续的空间组成,即数据会分布在每颗Flash上,猜测各个成员在Flash中的布局关系,在无法实证的情况下非常困难,因此,可以大大提高存储介质的安全性能。

请参照图5,本发明的实施例,一种基于flash存储介质的数据切换装置,包括:

第一判断模块10,用于在接收到切换唤醒序列时,判断切换唤醒序列与存储介质中预设的序列是否匹配;

切换模块20,用于当坏块切换唤醒序列与存储介质中预设的序列匹配成功时,切换至坏块映射表,以及遍历坏块区所有的元素,找出坏块中的隐藏标识及相应的页信息中数据隐藏标识;

建立模块30,用于根据坏块中的隐藏标识及相应的页信息中数据隐藏标识建立隐藏块的数据映射表;

读写模块40,用于根据隐藏块的数据映射表对存储介质中的隐藏区进行读写操作。

本实施例中,需要存储或者读取敏感数据时,也就是要启动隐藏区时,通过USB、指纹或者射频标签等输入切换唤醒序列与存储介质中的预设序列进行论证,可以启动存储介质中的隐藏区。本实施例中,遍历坏块区所有的元素中的元素为坏块,该坏块包括真正的坏块以及隐藏块。该隐藏块可通过查询隐藏标识及相应的页信息中数据隐藏标识得出,并形成隐藏块的数据映射表,如此,可以对存储介质的隐藏区进行读写操作。

在一具体的实施例中,所述装置还包括:

预设模块,用于设置隐藏区,将部分正常使用的数据块添加隐藏标识后形成隐藏数据块并加入坏块映射表。本实施例中,预设模块,可以先设计可隐藏数据块的数据头数据格式,以实现数据隐藏。另外,本步骤之后,还可以在全局信息块中设置标识,区分正常使用还是隐藏区,默认上电缺省为正常使用;设计唤醒策略,预置唤醒序列到全局信息区或者辅助标识区后,分别正常初始化和唤醒隐藏区初始化,如此,存储介质可在正常使用状态和启用隐藏区状态之间的按需求切换使用。

在一具体的实施例中,所述预设模块,具体用于在Flash的每个颗粒上,随机选取N个目标块,N=v/(k*m),其中,v表示需要隐藏的容量大小,k表示存储介质中Flash的颗粒数,m为每个目标块的容量大小;

在选取的目标块上设置隐藏标识及相应的页信息中数据隐藏标识;

将选取的目标块的物理地址存入坏块映射表中。本实施例中,预设模块,在坏块上设置的隐藏标识有效或者无效可以确定这个块是真正的坏块还是数据隐藏块。而相应设置的隐藏块的页信息中的隐藏标识,可以确定某个页是不是数据隐藏的页。

在一具体的实施例中,所述装置还包括:

第二判断模块,用于判断存储介质的当前使用状态是正常使用状态还是启用隐藏区状态;

当存储介质的当前使用状态是正常使用状态时,且在切换唤醒序列与存储介质中预设的序列匹配成功时,则存储介质在掉电后再上电或者重启动后进入启动隐藏区状态,在切换唤醒序列与存储介质中预设的序列匹配失败时,则存储介质在掉电后再上电或者重启动后进入正常使用状态;

当存储介质的当前使用状态是启动隐藏区状态时,则存储介质在掉电后再上电或者重启动后进入正常使用状态。

本实施例中,第二判断模块通过USB、指纹或者射频标签等输入切换唤醒序列与存储介质中的预设序列进行论证,可以启动存储介质中的隐藏区。

在一具体的实施例中,所述遍历模块,用于根据坏块映射表遍历每颗Flash的坏块,检查所有坏块的隐藏标识位;

判断坏块的标识位是否有效,

若坏块的隐藏标识位无效,则此块为真正的坏块,继续检查下一坏块;

若坏块的隐藏标识为有效,则此块为数据隐藏块,继续遍历该坏块相应的页信息,找出有效的页信息的隐藏标识,以恢复隐藏区的数据映射表。

本实施例中,遍历模块中,数据映射表是逻辑扇区号和物理扇区号建立联系的空间映射表,它将逻辑扇区和物理扇区进行动态匹配。这样在读某个逻辑地址时,只需要查对应的映射表索引即可找到对应的物理地址,然后读取即可。需要写某个逻辑扇区内容时候,只需要将数据写入一个新的物理扇区,然后将新物理扇区与这个逻辑扇区建立指针索引,同时将原指向的物理扇区标记为无效数据即可。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1