二进制应用程序的密码算法的还原方法

文档序号:6655079阅读:285来源:国知局
专利名称:二进制应用程序的密码算法的还原方法
技术领域
本发明涉及一种软件分析和密码学技术领域的方法,具体是一种二进制应用程序的密码算法的还原方法。
背景技术
密码算法涉及诸多方面的技术,包括数学和密码学上的设计和安全性分析,同时也包括如何在实际应用中实现。其中,密码算法的软件实现和应用在目前个人计算机乃至服务器级别的软件上运用得极为广泛,此类实现将密码算法以二进制形式编译于软件之中,程序运行时调用密码算法进行加密解密运算。其中,密码算法的算法逻辑、使用的数据结构、密钥信息和加密解密的数据格式,都是密码学分析和信息安全分析所需要了解的内容。密码学理论的Kerdd1Off原理指出,密码学算法的安全性分析必须假设密码算法的内部结构是公开的,因此,对于软件中的密码算法的提取是对软件安全分析的必要步骤。包含密码算法的应用软件,通常可以按照其包含的密码算法类型分为两种,一种是包含标准密码学算法的软件,所谓标准密码学算法,即算法的设计、逻辑、结构等信息早已公开并接受了广泛的密码学分析;另一种是包含软件开发人员自行设计的加密算法的软件,其中可能存在与标准密码学算法的结构完全不同的算法,也可能存在基于标准密码学算法进行少量修改得到的算法。此外,按照软件中密码算法的工作方式,可以分为包含密钥和不包含密钥的软件。

发明内容
本发明的目的在于针对上述现有技术的不足,能够快速高效地从程序的二进制代码中提取标准和非标准的密码学算法及其相关信息,使得程序的安全性分析得以有效地开展。本发明是通过如下技术方案实现的,本发明中
每一被保护扇区都有一个与之对应的初始化向量和一个消息认证码,且对于一个确定的被保护扇区的每一次写入磁盘操作而言,其对应的初始化向量具有唯一的取值,这种唯一是指既不与其它被保护扇区对应的初始化向量相同,也不与该被保护扇区的先前写入操作所对应的初始化向量相同;
通过该初始化向量和不为攻击者所知的密钥,完成对相应被保护扇区的加密,并生成该被保护扇区对应的消息认证码;
在全部被保护扇区所对应的全部初始化向量上构造哈希树,通过哈希树来保护这些初始化向量不可被篡改;
将被保护扇区及其对应的初始化向量和消息认证码物理相邻地存储在磁盘上,实现这种物理相邻是将若干个初始化向量以及与该若干个初始化向量所对应的被保护扇区和被保护扇区的消息认证码存储在一起,且存储在一起是指存储在物理相邻的磁盘位置上,并且是存储在同一磁道的相邻位置上,以及在同一磁道不宜完全容纳时分布在相邻的一条或
3多条磁道上;
将除哈希树根节点之外的其它哈希树节点物理相邻地存储在磁盘上,实现这种物理相邻是将这些哈希树节点存储在物理相邻的磁盘位置上,并且是存储在同一磁道的相邻位置上,以及在同一磁道不宜完全容纳时分布在相邻的一条或多条磁道上。所述的初始化向量,仅是一个计数值,且是通过计数每一次磁盘写入操作而递增来得到的。所述的初始化向量,仅是一个随机数,且是通过为每一次磁盘写入操作而生成随机数来得到的。所述的初始化向量,其长度为64位。所述的初始化向量,其包含被保护扇区的地址信息。所述的初始化向量,对于确定地址的被保护扇区而言,其在磁盘上的存储位置是确定的。本发明所提出的方法特别适宜于将IEEE P1619. 1所设计的认证加密具体地应用到磁盘的数据保护中;一方面,解决了其认证加密算法对初始化向量和消息认证码的存储问题,另一方面,解决了其认证加密算法不能对抗重放攻击的弱点。还有,本发明所提出的方法和装置直接作用于磁盘扇区上,从而能够保护磁盘中所存储的任何数据;并且,作为扇区层的底层保护机制,便于集成到现有系统中。总之,本发明所提出的方法和装置可以有效地提供数据存储的机密性与完整性保护。
具体实施例方式本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。本发明所考虑的,是从扇区层次上,保护磁盘数据的机密性与完整性。在本发明中,磁盘(Disk)是指硬盘或硬磁盘(Hard Disk),也称为磁盘驱动器(Disk Driver)或硬盘驱动器,或者作为存储设备(Storage Devices)的一般性代表。鉴于公知的原因,本发明不特别地描述磁盘结构、访问与延迟特性、接口等方面的内容。同样出于公知的原因, 对所使用的某些术语、名词和表达方式等不作显式的定义或说明,比如数据、数据块、位 (bit)、字节(byte)、节点、连接、数的表达方式、安全、可信、哈希(Hash,单向散列变换,也称散列)、Hash函数、哈希树(Hash Tree)、哈希树的叶节点(Leaf node)、哈希树的内部节点(Internal node)、哈希树的根节点(Root node)、子节点、父节点、加密(Encryption/ Cipher)、解密(Decryption/Decipher)、密钥(key)、IV(初始化向量,为加密、认证算法所需的输入参数)、MAC (消息认证码)、HMAC (Hash Message Authentication Code,散列消息认证码;是一种带有密钥的散列)、Sector (扇区)、磁道、地址(Address,用于识别扇区的编号或者位置),等等。对于磁盘扇区而言,除去标识、地址、纠错码等信息,用于存储数据的尺寸通常为 512字节;虽然存在其它尺寸的磁盘扇区,比如4K字节,本发明以512字节作为描述本发明所提出方法和装置的示例。通过对512字节扇区情形的描述,可以直接类推运用于4K字节扇区或其它尺寸扇区的情形。下面,给出本发明的具体应用示例,以更清晰地说明本发明所提出方法的具体实施。(示例)应用本发明的方法构造磁盘数据机密性与完整性保护系统的存储布局本示例依据本发明所给出的方法,结合IEEE P1619. 1 (Standard for Authenticated
Encryption with Length Expansion for Storage Devices)的认证力口密算法,在实行磁盘数据保护时对数据、初始化向量和哈希树节点进行物理存储布局。在IEEE P1619. 1 中,认证加密的实现可以采用 AES-GCM (Galois Counter Mode)、 AES-CCM (Counter with CBC-MAC)、AES-CBC with HMAC 以及 XTS-AES with HMAC。以 AES-CCM为例,其工作过程为写扇区明文数据到磁盘时,生成一个对应的IV (要求是一个 nonce数值;其长度要求是96bit,并且在不为96bit时,算法会应用GHASH函数而将返回值作为内部计算过程所实际使用的IV),并基于IV和密钥得出扇区密文数据以及对应的 MAC ;在从磁盘读出扇区数据时,相应的IV被用于解密扇区密文数据以及重新计算MAC,并通过将重新计算的MAC和写扇区时得到的MAC相比较,判断数据是否为合法(即,是否未被篡改)。取磁盘扇区的尺寸为512byte,并以DatMector表示用于存储数据的磁盘扇区; 取IV为64bit(该长度能够满足AES-CCM对IV是一个nonce值的要求),MAC为128bit ;以 HMAC-MD5 (MD5为Message-digest Algorithm 5)函数计算哈希树诸节点,那么,哈希树叶节点和内部节点的尺寸均为128bit。本发明并不局限于上述具体描述的实现形态,而是适用于所有的依据本发明的内容可获得的能够保护数据机密性、或完整性、或机密性与完整性的系统。这包括软件的、硬件的以及软件硬件相结合的实现形态,以及不需其它发明性的能力而可直接获得的变化形态。实质上,只要存储数据的器件、芯片、电路模块、场所、设备、服务、空间等,能够抽象为 “块访问”的读写模式,就都可以利用本发明的内容实施对数据的保护。除了与计算机系统本地连接的磁盘等设备,可以被抽象为块服务器(Block Server)的远程存储服务器也可以采用本发明给出的数据机密性与完整性保护方法
技术领域
本发明适用于所有的依据本发明的内容而构造的方法和装置,以及不需其它创造性质的能力而可获得的变化形式。因此,本发明适用于同这里所描述的原理与特征相一致的最广的范围。
权利要求
1.一种二进制应用程序的密码算法的还原方法,其特征在于,具体如下每一被保护扇区都有一个与之对应的初始化向量和一个消息认证码,且对于一个确定的被保护扇区的每一次写入磁盘操作而言,其对应的初始化向量具有唯一的取值,这种唯一是指既不与其它被保护扇区对应的初始化向量相同,也不与该被保护扇区的先前写入操作所对应的初始化向量相同;通过该初始化向量和不为攻击者所知的密钥,完成对相应被保护扇区的加密,并生成该被保护扇区对应的消息认证码;在全部被保护扇区所对应的全部初始化向量上构造哈希树,通过哈希树来保护这些初始化向量不可被篡改;将被保护扇区及其对应的初始化向量和消息认证码物理相邻地存储在磁盘上,实现这种物理相邻是将若干个初始化向量以及与该若干个初始化向量所对应的被保护扇区和被保护扇区的消息认证码存储在一起,且存储在一起是指存储在物理相邻的磁盘位置上,并且是存储在同一磁道的相邻位置上,以及在同一磁道不宜完全容纳时分布在相邻的一条或多条磁道上;将除哈希树根节点之外的其它哈希树节点物理相邻地存储在磁盘上,实现这种物理相邻是将这些哈希树节点存储在物理相邻的磁盘位置上,并且是存储在同一磁道的相邻位置上,以及在同一磁道不宜完全容纳时分布在相邻的一条或多条磁道上。
2.根据权利要求1所述的二进制应用程序的密码算法的还原方法,其特征是,所述的初始化向量,仅是一个计数值,且是通过计数每一次磁盘写入操作而递增来得到的。
3.根据权利要求1所述的二进制应用程序的密码算法的还原方法,其特征是,所述的初始化向量,仅是一个随机数,且是通过为每一次磁盘写入操作而生成随机数来得到的。
4.根据权利要求1所述的二进制应用程序的密码算法的还原方法,其特征是,所述的初始化向量,其长度为64位。
5.根据权利要求1所述的二进制应用程序的密码算法的还原方法,其特征是,所述的初始化向量,其包含被保护扇区的地址信息。
6.根据权利要求1所述的二进制应用程序的密码算法的还原方法,其特征是,所述的初始化向量,对于确定地址的被保护扇区而言,其在磁盘上的存储位置是确定的。
全文摘要
本发明涉及一种二进制应用程序的密码算法的还原方法,本发明的方法特别适宜于将IEEEP1619.1所设计的认证加密具体地应用到磁盘的数据保护中;一方面,解决了其认证加密算法对初始化向量和消息认证码的存储问题,另一方面,解决了其认证加密算法不能对抗重放攻击的弱点。还有,本发明所提出的方法和装置直接作用于磁盘扇区上,从而能够保护磁盘中所存储的任何数据;并且,作为扇区层的底层保护机制,便于集成到现有系统中。总之,本发明所提出的方法和装置可以有效地提供数据存储的机密性与完整性保护。
文档编号G06F21/22GK102184369SQ20111007844
公开日2011年9月14日 申请日期2011年3月30日 优先权日2011年3月30日
发明者曹晓晶 申请人:曹晓晶
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1