一种基于动态密钥的硬盘数据加密方法及其装置的制作方法

文档序号:6560247阅读:239来源:国知局
专利名称:一种基于动态密钥的硬盘数据加密方法及其装置的制作方法
技术领域
本发明属于计算机技术领域,涉及一种基于动态密钥的硬盘数据加密方法及其装置。
背景技术
在信息技术给人们带来极大方便的同时,信息的安全问题日渐突出。硬盘作为计算机的主要外部存储器,通常存储着用户的大量信息。对硬盘数据进行加密,是保证硬盘数据机密性的基本方式。由于软件加密系统存在不可克服的性能和安全问题,因此,研究基于硬件的硬盘加密系统具有重要意义。
专利号为99113164.9的“一种计算机硬盘加密装置”文献中,提出了一种具有选择性的加密装置,该装置的密钥需要用户使用键盘手工输入,受到人的记忆力限制,密钥的长度有限,且使用起来较为繁琐。该装置对硬盘中所有的数据均使用相同的密钥进行加密,一旦攻击者通过对某一扇区的数据进行密码分析而获得密钥,则整个硬盘加密数据都会被破解。
专利申请号为200410025825.5的“计算机硬盘数据加密方法及其装置”文献中,提出了一种支持多种对称加密算法的基于IDE接口的硬盘数据加密装置。但文献中所使用的密钥,也是静态的密钥,即对硬盘中所有的数据均使用相同的密钥进行加密,因此这种装置的安全性也存在隐患。此外,该装置主要通过FPGA器件来实现,由于FPGA器件本身不适合于实现复杂的流程,因此该装置不具有系统自检、密钥备份和恢复等功能。
硬盘加密系统的加密对象是用户存放在硬盘上的数据,因此硬盘加密卡的可靠性尤为重要。如果硬盘加密系统出现故障而没有及时处理,则硬盘上的数据有可能会被破坏。所以,硬盘加密系统的自检功能显得尤为重要。当加密系统出现故障时,应该自动停止工作。
如果密钥时存放在介质上的,那么它总是存在着遗失或者损坏的可能性,如果密钥没有备份,则硬盘上的数据就无法再解密读出。因此,一个设计良好的加密系统,应该为用户提供密钥的备份和恢复功能。平时把密钥复制到备份介质中妥善保管,如果发生密钥存储介质遗失或者损坏的情况,可以从备份介质中把密钥恢复出来。

发明内容
为了克服了上述现有技术的不足,本发明的目的是提出了一种基于动态密钥的硬盘数据加密方法及其装置。本发明对于不同扇区的数据,采用不同的加密密钥,以提高硬盘数据加密的安全性。此外,该装置还实现了系统自检、密钥的备份与恢复等功能,提高了系统的可靠性和实用性。
本发明的技术方案是这样实现的基于动态密钥的硬盘数据加密方法,其实现步骤为A、在主机上运行密钥生成程序,根据屏幕提示信息,由用户输入一串任意的字符,密钥生成程序使用通用的Hash算法,例如MD5、SHA-1等对用户输入的字符及主机的实时时钟进行Hash运算,把Hash运算的结果作为主密钥;B、提示用户再次输入另一串任意的字符,密钥生成程序使用通用的Hash算法,例如MD5、SHA-1等对用户输入的字符及主机的实时时钟进行Hash运算,并以Hash运算的结果作为随机数的种子,使用标准C函数库中的随机数生成算法,生成若干个随机数,每个随机数被用作一个分区密钥;C、根据硬盘扇区的逻辑块寻址LBA地址中的高位地址把硬盘划分为若干分区,分区的数量与密钥生成程序生成的分区密钥数量相等;D、对数据进行加密时,先根据待加密数据所在的分区,即逻辑块寻址LBA地址中的高位地址找出与之对应的分区密钥;
E、把主密钥、对应的分区密钥、数据所在扇区的LBA地址三者拼接,即以字节为单位按顺序排列;F、对拼接后的结果进行散列运算,采用散列函数MD5、散列函数SHA1或者其它散列运算算法;G、以散列运算的结果作为加密的密钥,利用序列加密算法或者分组加密算法对数据进行加密。
基于动态密钥的硬盘数据加密方法的加密装置,该装置由一块加密卡和一个电子钥匙连接组成,其中加密卡由四个部分组成现场可编程门阵列FPGA、单片机MCU、主板端ATA接口、硬盘端ATA接口,现场可编程门阵列FPGA与主板端ATA接口、硬盘端ATA接口、单片机相连;单片机除了与FPGA相连以外,还与电子钥匙相连。
所述的电子钥匙,是一个带加密功能的存储芯片。
本发明的优点是A、提出了动态密钥技术,即对于硬盘上的不同扇区,使用了不同的密钥加/解密,大大提高了系统的安全性。
B、分区密钥保存在加密型的单片机中,主密钥保存在加密型存储芯片中,这两个密钥都无法通过普通的读卡器读出,因此可以防止密钥被非法复制。
C、加密卡可以实现上电自检、密钥的复制、备份和恢复功能,在不影响装置安全性的前提下,提高了装置的可靠性和使用方便性。


图1是本发明基于动态密钥的硬盘数据加密方法示意图。箭头方向表示信息流向。
图2是本发明基于动态密钥的硬盘数据加密装置的应用模式图。
图3是本发明基于动态密钥的硬盘数据加密装置结构图。
图4是本发明一个实施例加密卡上FPGA的内部逻辑框图。图中的箭头表示信息流向。
图5是本发明动态密钥加密的一个实施例。图中箭头表示信息流向。虚线部分表示在开机上电时进行;实线部分表示在硬盘加密卡进入正常工作时进行。
具体实施例方式
在系统首次使用之前,根据扇区LBA地址把硬盘划分为若干分区,然后使用软件生成一个主密钥和一组分区密钥。
主密钥的生成方法是,在主机上运行密钥生成程序,根据屏幕提示信息,由用户输入一串任意的字符,密钥生成程序使用通用的Hash算法(例如MD5、SHA-1等)对用户输入的字符及主机的实时时钟进行Hash运算,把Hash运算的结果作为主密钥;分区密钥的生成方法是,在主机上运行密钥生成程序,提示用户再次输入另一串任意的字符,密钥生成程序使用通用的Hash算法(例如MD5、SHA-1等)对用户输入的字符及主机的实时时钟进行Hash运算,并以Hash运算的结果作为随机数的种子,使用标准C函数库中的随机数生成算法,生成若干个随机数。随机数的个数与硬盘分区的数量相等。每个随机数分别与一个硬盘分区相对应,作为该硬盘分区的分区密钥。
参照图1所示,设置一个主密钥和一组分区密钥。其中,分区密钥的设置方法是根据扇区LBA地址把硬盘划分为若干分区,每个分区对应一个分区密钥。当需要对硬盘上某个扇区的数据进行加密时,先通过查表在分区密钥组中查到与该扇区LBA地址对应的分区密钥,然后把主密钥、分区密钥、硬盘扇区LBA地址三者拼接,并进行散列运算(比如MD5、SHA1等),散列运算的结果作为加密密钥,对硬盘数据进行分组加密(比如DES、AES等)或者序列加密(比如异或、相加等)。
参照图2所示,一种实现上述加密方法的装置,是由一个加密卡1和一个电子钥匙2组成。
加密卡1串联在硬盘和计算机主板之间,对写入的数据进行加密,对读出的数据进行解密。加密卡1主要由一个现场可编程门阵列FPGA 3和一个单片机MCU 4构成。现场可编程门阵列FPGA 3主要完成数据加密、硬盘接口信号处理等核心功能,单片机主要完成现场可编程门阵列FPGA 3的配置、密钥的管理、系统自检等辅助功能。加/解密所用的分区密钥,保存在单片机内部的EEPROM或Flash存储器中。
电子钥匙2实际上是一个带加密功能的存储芯片,该芯片被封装成易于携带和插拔的形式,以便用户随身携带。电子钥匙中保存了主密钥,当电子钥匙中所存储的内容不正确,或者与加密卡和硬盘不配套时,加密卡无法正常工作。
加密卡具有上电自检的功能,当系统上电时,加密卡1中的单片机会向现场可编程门阵列FPGA 3发送一组测试数据,现场可编程门阵列FPGA 3把加密的结果返回给单片机,单片机MCU 4把现场可编程门阵列FPGA 3的加密结果与事先计算好的结果相比较,如果结果不一致,则系统锁死,并通过状态指示灯指示错误。
加密卡1中定义了一组控制指令,这些指令由主机发出,由单片机执行。因为单片机不与主板端ATA接口6直接相连,所以,主机向单片机MCU 4发出的指令必须通过现场可编程门阵列FPGA 3来转发。因此,现场可编程门阵列FPGA 3必须能够区分出主板端ATA接口5上的哪些数据是要发送给硬盘的,哪些数据是要发送给单片机的。为了实现这个区分,加密卡对ATA指令集进行了扩展。增加了“通信允许”和“通信禁止”两条指令,其命令码分别为04和05。当现场可编程门阵列FPGA检测到主机向ATA命令寄存器写入04命令码时,进入通信状态;在通信状态中,如果现场可编程门阵列FPGA检测到主机向ATA命令寄存器写入05命令码,则退出通信状态。在通信状态下,现场可编程门阵列FPGA把ATA接口上的所有数据都转发给单片机;而在非通信状态下,现场可编程门阵列FPGA把ATA接口上的数据经过加密处理后转发给硬盘。
本加密装置设有一个附属软件,运行于主机上。软件通过向单片机发出指令,可以实现密钥的复制、备份和恢复复制是指将主密钥从一个电子钥匙复制到另一个电子钥匙;备份是指将主密钥和分区密钥保存到专用的备份钥匙中;恢复是指从备份钥匙中读出主密钥和分区密钥,并把主密钥写入到电子钥匙中,把分区密钥写入到单片机中。
参照图3所示,本实施例是一个采用了散列函数MD5和DES分组加密算法的加密装置。它由FPGA、单片机、电子钥匙2、主板端ATA接口和硬盘端ATA接口五部分组成。除了电子钥匙以外的其它四个部分,被安装在一个10厘米×12厘米的印刷电路板上,电路板采用四层板工艺设计制作。在电路板上,设置了具有USB接口外观的电子钥匙接口,用于实现电子钥匙的插拔。采用的FPGA,型号为Xilinx XC3S400,单片机型号为SST89V564RD,主板端ATA接口和硬盘端ATA接口都是双排40针插座。
电子钥匙2是一个具有类似于USB闪存盘外观的装置,以便用户携带。其核心是一个加密型存储器芯片,型号为Atmel AT88SC153。这是一款具有2K字节存储空间的加密型EEPROM存储器。
参照图4所示,是FPGA的内部逻辑构造,它包括DES加密/解密器、单片机接口、密钥存储与计算,以及主板端ATA接口控制器和硬盘端ATA接口控制器。DES加密/解密器利用密钥存储与计算单元输出的密钥对数据进行加/解密。单片机接口与单片机相连,是FPGA和单片机之间的通信接口。密钥存储与计算单元通过单片机接口,从单片机获得主密钥和分区密钥组,并根据主板端ATA控制器输出的当前传输的数据扇区LBA地址计算加密密钥。硬盘端ATA接口控制器负责处理ATA接口上的信号,保证信号满足协议中规定的时序,并对数据进行缓冲存储。主板端和硬盘端ATA接口控制器通过片内局部总线相连,以协调工作。在通信允许状态下,主板端ATA控制器把主板端ATA接口上的所有数据转发给单片机。
本实施例的主密钥长度为452位,平时存放在电子钥匙中。根据硬盘扇区LBA地址的高10位,硬盘分为1024个分区,每个分区对应一个长度为32位的分区密钥。这1024个分区密钥,平时存放在单片机内部的EEPROM中。电子钥匙的存储芯片带有保密功能,对它进行读写之前必须先进行口令验证。读写电子钥匙的口令也记录在单片机的EEPROM中。单片机自身也带有加密功能,对单片机进行加密后,外部设备无法读出单片机中任何内容。单片机中EEPROM的内容只供单片机内部的程序读取。
参照图5所示,本实施例的加密过程如下当系统上电时,单片机先读取电子钥匙中的主密钥,然后把主密钥输入到FPGA内部的拼接密钥寄存器中。然后,单片机从内部EEPROM中读出分区密钥组,并将分区密钥组输入到FPGA内部的RAM中。当需要对数据进行加密或解密时,加密卡通过ATA接口控制逻辑获得当前传输的数据扇区LBA地址,利用扇区LBA地址的高10位对存储了分区密钥组的RAM进行寻址,输出一个32位的分区密钥,送到拼接密钥寄存器中。同时,28位的扇区LBA地址也被输入到拼接密钥寄存器中。拼接密钥寄存器的内容,输入到MD5散列函数中。MD5散列函数的输出,被用作DES加密/解密的密钥,对数据进行加密或解密。
单片机读取主密钥的过程如下先检测电子钥匙是否存在,若不存在,则系统锁死。若电子钥匙已被插入,则单片机从内部EEPROM中读出电子钥匙的口令,利用该口令,去读取电子钥匙中的主密钥。
系统上电自检程序是在单片机读取主密钥和分区密钥之后运行的。自检流程如下单片机向FPGA发出一组测试数据,FPGA对测试数据进行加密后,把结果返回给单片机,单片机将加密结果与事先计算好的结果比较。如果比较不相等,则说明加密卡有故障,系统锁死;如果比较相等,则进入正常工作状态。
在FPGA内部的主板端ATA控制器中,实现了一个ATA接口到单片机接口的数据通路。当主板端ATA控制器检测到“通信允许”指令时,则开放该数据通路。当主板端ATA控制器检测到“通信禁止”指令时,则关闭该数据通路。
以上涉及的FPGA内部的所有逻辑功能,均通过Verilog语言描述。使用Xilinx ISE工具综合实现之后下载到FPGA芯片中运行。
单片机实现的自检、密钥的读写等功能,使用汇编语言和C语言编程实现。经过编译链接后烧录在单片机内部的程序存储器中。
密钥的复制、备份和恢复功能,通过主机端软件向单片机发送指令,调用单片机提供的密钥读写功能来实现。主机端软件采用Visual C++编写。
权利要求
1.一种基于动态密钥的硬盘数据加密方法,其特征在于,其实现步骤为A、在主机上运行密钥生成程序,根据屏幕提示信息,由用户输入一串任意的字符,密钥生成程序使用通用的Hash算法,对用户输入的字符及主机的实时时钟进行Hash运算,把Hash运算的结果作为主密钥;B、提示用户再次输入另一串任意的字符,密钥生成程序使用通用的Hash算法,对用户输入的字符及主机的实时时钟进行Hash运算,并以Hash运算的结果作为随机数的种子,使用标准C函数库中的随机数生成算法,生成若干个随机数,每个随机数被用作一个分区密钥;C、根据硬盘扇区的逻辑块寻址LBA地址中的高位地址把硬盘划分为若干分区,分区的数量与密钥生成程序生成的分区密钥数量相等;D、对数据进行加密时,先根据待加密数据所在的分区,即逻辑块寻址LBA地址中的高位地址找出与之对应的分区密钥;E、把主密钥、对应的分区密钥、数据所在扇区的LBA地址三者拼接,即以字节为单位按顺序排列;F、对拼接后的结果进行散列运算,采用散列函数MD5、散列函数SHA1或者其它散列运算算法;G、以散列运算的结果作为加密的密钥,利用序列加密算法或者分组加密算法对数据进行加密。
2.一种实现权利要求1所述方法的加密装置,该装置由一块加密卡(1)和一个电子钥匙(2)连接组成,其特征在于,其中加密卡(1)主要由四个部分组成现场可编程门阵列FPGA(3)、单片机MCU(4)、主板端ATA(5)接口、硬盘端ATA接口(6),现场可编程门阵列FPGA(3)与主板端ATA接口、硬盘端ATA接口、单片机相连;单片机除了与现场可编程门阵列FPGA(3)相连以外,还与电子钥匙相连。
3.根据权利要求2所述的加密装置,其特征在于,所述的电子钥匙(2),是一个带加密功能的存储芯片。
全文摘要
本发明涉及基于动态密钥的硬盘数据加密方法及其装置。该方法有主密钥和分区密钥,当需要对硬盘上某个扇区的数据进行加密时,对主密钥、分区密钥和扇区LBA地址混合后的数据进行散列运算,并以散列运算的结果作为加密/解密密钥,对硬盘数据进行序列加密或者分组加密。本装置是串联在计算机主板和硬盘之间的设备,它由加密卡和电子钥匙组成。加密卡主要由单片机和FPGA芯片组成。对写入硬盘的数据进行加密,并对从硬盘读出的数据进行解密。通过利用ATA指令集中的保留命令码,在不增加额外电缆连接的情况下,实现了主机与加密卡中单片机之间的通信。该加密装置具有自检、密钥备份与恢复等功能。本发明可广泛应用于需要保密的计算机系统中。
文档编号G06F21/00GK1924835SQ20061010508
公开日2007年3月7日 申请日期2006年9月1日 优先权日2006年9月1日
发明者伍卫国, 王本中, 刘轶, 李思, 张群, 钱德沛, 田敏 申请人:西安交通大学, 长春卓尔信息安全产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1