本发明涉及到密钥管理领域,特别是涉及到一种基于固态硬盘aes密钥动态管理方法及装置。
背景技术:
如图1所示,固态硬盘中,每个lba(逻辑块地址,cpu最小处理单元)都和lbaid以及aes密钥一一对应,当存储量很大时,会生成大量的aes密钥,需要通过密钥管理将密钥信息存入nand中,当需要aes加解密时,则从nand中读取信息,进行加解密。大量aes加解密时会引发nand读写次数增加引起的nand磨损,同时从nand中读取aes密钥,速度相对较慢,影响aes加解密效率。
如图2所示,现在的aes密钥管理方式,是将动态生成的每个aes密钥,通过描述符的方式存放到nand中,当需要进行aes加解密的时候,再从nand中读取出对应的aes密钥进行aes加解密。
技术实现要素:
为了解决上述现有技术的缺陷,本发明的目的是提供一种基于固态硬盘aes密钥动态管理方法及装置,提高aes加解密读取密钥速度,并减少nand磨损。
为达到上述目的,本发明的技术方案是:
本发明提出了一种基于固态硬盘aes密钥动态管理方法,包括以下步骤:
密钥动态生成;
将密钥优先存放在ddr和/或isram空间的密钥数组中;
当ddr和/或isram的密钥数组存满时,将密钥存放在nand中。
进一步地,所述将密钥存放在ddr/isram空间的密钥数组中步骤,包括,
在ddr和/或isram申请密钥数组用于存放密钥;
判断密钥数组中是否存在已经标记的数组单元;
若存在,则将密钥存入已经标记的数组单元;
若不存在,则在ddr和/或isram中申请空的密钥数组用于存放密钥。
进一步地,所述判断密钥数组中是否存在已经标记的数组单元步骤之前,包括,
当ddr和/或isram的密钥数组未存满,且该密钥数组的密钥被调用时,对数组单元进行标记。
进一步地,所述当ddr和/或isram的密钥数组存满时,将密钥存放在nand中步骤,包括,
判断密钥数组是否存满溢出;
若溢出,则将密钥存放在nand中。
进一步地,所述将密钥存放在nand中步骤,包括,
通过描述符将密钥存放在nand中。
本发明还提出了一种基于固态硬盘aes密钥动态管理装置,包括,
密钥生成单元,用于密钥动态生成;
第一存储单元,用于将密钥优先存放在ddr和/或isram空间的密钥数组中;
第二存储单元,当ddr和/或isram的密钥数组存满时,将密钥存放在nand中。
进一步地,所述第一存储单元包括数组申请模块、标记判断模块、第一存放模块和第二存放模块,
所述数组申请模块,用于在ddr和/或isram申请密钥数组用于存放密钥;
所述标记判断模块,用于判断密钥数组中是否存在已经标记的数组单元;
所述第一存储模块,用于存在已经标记的数组单元时,则将密钥存入已经标记的数组单元;
所述第二存储模块,用于不存在已经标记的数组单元时,则在ddr和/或isram中申请空的密钥数组用于存放密钥。
进一步地,所述第一存储单元还包括标记模块,所述标记模块,用于当ddr和/或isram的密钥数组未存满,且该密钥数组的密钥被调用时,对数组单元进行标记。
进一步地,所述第二存储单元包括存满判断模块和第三存储模块,
所述存满判断模块,用于判断密钥数组是否存满溢出;
所述第三存储模块,用于若密钥数组存满溢出,则将密钥存放在nand中。
进一步地,所述第三存储模块,用于通过描述符将密钥存放在nand中。
本发明的有益效果是:本方案利用两级存储aes密钥,一级为ddr/sram缓存,一级为nand存储,通过优先将密钥存储在ddr/sram缓存的密钥数组中,大大减少aes加解密调用密钥的速度,同时减少了nand的写入读出次数,既增加了aes加解密的速度,又减少了nand磨损,节省了成本。
附图说明
图1为现有的lba和aes密钥的对应关系图;
图2为现有的aes密钥的管理原理图;
图3为本发明一种基于固态硬盘aes密钥动态管理方法的方法流程图;
图4为本发明将密钥优先存放在ddr和/或isram空间的密钥数组中步骤的具体流程图;
图5为本发明当ddr和/或isram的密钥数组存满时,将密钥存放在nand中步骤的具体流程图;
图6为本发明一实施例一种基于固态硬盘aes密钥动态管理方法的工作流程图;
图7为本发明一种基于固态硬盘aes密钥动态管理方法的工作原理图;
图8为本发明一种基于固态硬盘aes密钥动态管理装置的结构原理框图;
图9为本发明第一存储单元的结构原理框图;
图10为本发明第二存储单元的结构原理框图。
具体实施方式
为阐述本发明的思想及目的,下面将结合附图和具体实施例对本发明做进一步的说明。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明,本发明实施例中所有方向性指示(诸如上、下、左、右、前、后等)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变,所述的连接可以是直接连接,也可以是间接连接。
另外,在本发明中如涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
如无特别说明,本文中的“/”代表含义为“或”。
lba(logicalblockaddress),中文名称:逻辑区块地址。是描述电脑存储设备上数据所在区块的通用机制,一般用在像硬盘这样的辅助记忆设备。lba可以意指某个数据区块的地址或是某个地址所指向的数据区块。
ddr=doubledatarate双倍速率,ddrsdram=双倍速率同步动态随机存储器,人们习惯称为ddr,其中,sdram是synchronousdynamicrandomaccessmemory的缩写,即同步动态随机存取存储器。
sram是指静态随机存取存储器,全称staticrandom-accessmemory,是随机存取存储器的一种。所谓的“静态”,是指这种存储器只要保持通电,里面储存的数据就可以恒常保持。sram不需要刷新电路即能保存它内部存储的数据。而dram(dynamicrandomaccessmemory)每隔一段时间,要刷新充电一次,否则内部的数据即会消失,因此sram具有较高的性能.
参照图3-7,本发明一具体实施例提出了一种基于固态硬盘aes密钥动态管理方法,包括以下步骤:
s10、密钥动态生成;
s20、将密钥优先存放在ddr和/或isram空间的密钥数组中;
s30、当ddr和/或isram的密钥数组存满时,将密钥存放在nand中。
对于步骤s10,每个lba(逻辑块地址,cpu最小处理单元)都和lbaid以及aes密钥一一对应,当存储量很大时,会生成大量的aes密钥,用于加解密。
现有的aes密钥管理方式,是将动态生成的每个aes密钥,通过描述符的方式存放到nand中。当需要进行aes加解密的时候,再从nand中读取出对应的aes密钥进行aes加解密,而从nand中读取aes密钥,存在读写速度较慢,aes加解密多次读写nand造成nand磨损的问题。
对于步骤s20,将密钥优先存储在ddr和/或isram空间的密钥数组中,不仅能够直接提升密钥的读写速度,而且,可以避免读写次数过多而导致nand磨损的问题,能够明显的提高nand的使用寿命,进一步地提升固态硬盘的使用寿命。
在动态产生密钥之后,将密钥优先存储在ddr和/或isram空间的密钥数组,在密钥数组中存满之后才将剩下的密钥存放在nand中。读取时,也是优先从密钥数组中进行查找并读取密钥,若找不到,再从nand中进行查找并读取。
参考图4,步骤s20包括以下步骤:
s21、在ddr和/或isram申请密钥数组用于存放密钥;
s22、判断密钥数组中是否存在已经标记的数组单元;
s23、若存在,则将密钥存入已经标记的数组单元;
s24、若不存在,则在ddr和/或isram中申请空的密钥数组用于存放密钥。
对于步骤s21-s24,产生密钥之后,先向ddr和/或isram申请密钥数组用于存放密钥,在申请之后,通过判断密钥数组中是否存在已经标记的数组单元,将待存放的密钥优先存放在已经标记的数组单元,当不存在已经标记的数组单元,再向ddr和/或isram申请空的密钥数组,并直接存放,保证ddr和/或isram的密钥数组依次存满。
步骤s22之前,包括步骤:
s221,当ddr和/或isram的密钥数组未存满,且该密钥数组的密钥被调用时,对数组单元进行标记。
在密钥数组未满时,且该密钥数组的密钥被调用,则可以对该密钥数组内的数组单元进行标记,代表其可以存入新的密钥,之后,可以根据是否有标记判断该密钥数组能否继续存入新的密钥。
对于步骤s30,nand作为第二级的存储介质,在ddr和/或isram的密钥数组存满时,才将密钥存放在nand中,避免一开始就将密钥存放在nand中,减少了对nand的损耗,提高了固态硬盘的使用寿命。
参考图5,步骤s30包括以下步骤:
s31、判断密钥数组是否存满溢出;
s32、若溢出,则将密钥存放在nand中。
对于步骤s31和s32,在将密钥存入nand时,需要先对密钥数组的状态进行判断,当密钥数组是否存满溢出,则可以将密钥存入nand中。这种优先将密钥存放在ddr和/或isram的密钥数组,当密钥数组是否存满溢出,才将将密钥存入nand的方案,大大减少了nand的读写损耗,提高了nand的使用寿命,节省了成本。
步骤s32具体为:通过描述符将密钥存放在nand中。动态生成的每个aes密钥,在存入nand中时,都是通过描述符的方式存放到nand中。
举例说明,在本发明一具体应用实施例中,能够通过并行异常处理和nfc通道选择的,提高了nfc处理异常的效率。完整一次上电过程如下:当有aes密钥生成时,通过数组管理方式,优先存放入密钥数组中;当密钥数组溢出时,则通过描述符统一将密钥写入nand中;当aes加解密时,优先从密钥数组中寻找密钥;当密钥数组中没有时,再从nand中寻找。
本方案利用两级存储aes密钥,一级为ddr/sram缓存,一级为nand存储,通过优先将密钥存储在ddr/sram缓存的密钥数组中,大大减少aes加解密调用密钥的速度,同时减少了nand的写入读出次数,既增加了aes加解密的速度,又减少了nand磨损,节省了成本。
参考图6和7,提出本发明一具体实施例中,一种基于固态硬盘aes密钥动态管理方法的具体流程图,其完整流程如下:
a1、密钥动态生成;
a2、在ddr/isarm申请密钥数组进行缓存;
a3、判断是否有标记数组单元;
a4、若存在,将密钥存入标记数组单元;
a5、若不存在,在ddr/isarm申请空的密钥数组单元进行缓存;
a6、判断密钥是否被调用;
a7、若被调用,对存放密钥的数组单元进行标记;
a8、若不被调用,进一步判断密钥数组是否存满溢出;
a9、若溢出,则将密钥数组中的密钥存放到nand中,否则返回步骤a5。
通过步骤a1-a9完整的实现本发明的的全部操作,以大大减少aes加解密调用密钥的速度,同时减少了nand的写入读出次数,既增加了aes加解密的速度,又减少了nand磨损,节省了成本。
本发明还提出了一种基于固态硬盘aes密钥动态管理装置,包括,
密钥生成单元10,用于密钥动态生成;
第一存储单元20,用于将密钥优先存放在ddr和/或isram空间的密钥数组中;
第二存储单元30,当ddr和/或isram的密钥数组存满时,将密钥存放在nand中。
对于密钥生成单元10,每个lba(逻辑块地址,cpu最小处理单元)都和lbaid以及aes密钥一一对应,当存储量很大时,会生成大量的aes密钥,用于加解密。
现有的aes密钥管理方式,是将动态生成的每个aes密钥,通过描述符的方式存放到nand中。当需要进行aes加解密的时候,再从nand中读取出对应的aes密钥进行aes加解密,而从nand中读取aes密钥,存在读写速度较慢,aes加解密多次读写nand造成nand磨损的问题。
对于第一存储单元20,将密钥优先存储在ddr和/或isram空间的密钥数组中,不仅能够直接提升密钥的读写速度,而且,可以避免读写次数过多而导致nand磨损的问题,能够明显的提高nand的使用寿命,进一步地提升固态硬盘的使用寿命。
在动态产生密钥之后,将密钥优先存储在ddr和/或isram空间的密钥数组,在密钥数组中存满之后才将剩下的密钥存放在nand中。读取时,也是优先从密钥数组中进行查找并读取密钥,若找不到,再从nand中进行查找并读取。
第一存储单元20包括数组申请模块21、标记判断模块22、第一存放模块23、第二存放模块24和标记模块25。
数组申请模块21,用于在ddr和/或isram申请密钥数组用于存放密钥;
标记判断模块22,用于判断密钥数组中是否存在已经标记的数组单元;
第一存储模块23,用于存在已经标记的数组单元时,则将密钥存入已经标记的数组单元;
第二存储模块24,用于不存在已经标记的数组单元时,则在ddr和/或isram中申请空的密钥数组用于存放密钥。
标记模块25,用于当ddr和/或isram的密钥数组未存满,且该密钥数组的密钥被调用时,对数组单元进行标记。
对于数组申请模块21、标记判断模块22、第一存放模块23和第二存放模块24,产生密钥之后,先向ddr和/或isram申请密钥数组用于存放密钥,在申请之后,通过判断密钥数组中是否存在已经标记的数组单元,将待存放的密钥优先存放在已经标记的数组单元,当不存在已经标记的数组单元,再向ddr和/或isram申请空的密钥数组,并直接存放,保证ddr和/或isram的密钥数组依次存满。
对于标记模块25,在密钥数组未满时,且该密钥数组的密钥被调用,则可以对该密钥数组内的数组单元进行标记,代表其可以存入新的密钥,之后,可以根据是否有标记判断该密钥数组能否继续存入新的密钥。
对于第二存储单元,nand作为第二级的存储介质,在ddr和/或isram的密钥数组存满时,才将密钥存放在nand中,避免一开始就将密钥存放在nand中,减少了对nand的损耗,提高了固态硬盘的使用寿命。
第二存储单元30包括存满判断模块31和第三存储模块32。
存满判断模块31,用于判断密钥数组是否存满溢出;
第三存储模块32,用于若密钥数组存满溢出,则将密钥存放在nand中。
对于存满判断模块31和第三存储模块32,在将密钥存入nand时,需要先对密钥数组的状态进行判断,当密钥数组是否存满溢出,则可以将密钥存入nand中。这种优先将密钥存放在ddr和/或isram的密钥数组,当密钥数组是否存满溢出,才将将密钥存入nand的方案,大大减少了nand的读写损耗,提高了nand的使用寿命,节省了成本。
第三存储模块31,具体用于通过描述符将密钥存放在nand中。动态生成的每个aes密钥,在存入nand中时,都是通过描述符的方式存放到nand中。
本方案利用两级存储aes密钥,一级为ddr/sram缓存,一级为nand存储,通过优先将密钥存储在ddr/sram缓存的密钥数组中,大大减少aes加解密调用密钥的速度,同时减少了nand的写入读出次数,既增加了aes加解密的速度,又减少了nand磨损,节省了成本。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。