專利名稱:二進制應(yīng)用程序的密碼算法的還原方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種軟件分析和密碼學(xué)技術(shù)領(lǐng)域的方法,具體是一種二進制應(yīng)用程序的密碼算法的還原方法。
背景技術(shù):
密碼算法涉及諸多方面的技術(shù),包括數(shù)學(xué)和密碼學(xué)上的設(shè)計和安全性分析,同時也包括如何在實際應(yīng)用中實現(xiàn)。其中,密碼算法的軟件實現(xiàn)和應(yīng)用在目前個人計算機乃至服務(wù)器級別的軟件上運用得極為廣泛,此類實現(xiàn)將密碼算法以二進制形式編譯于軟件之中,程序運行時調(diào)用密碼算法進行加密解密運算。其中,密碼算法的算法邏輯、使用的數(shù)據(jù)結(jié)構(gòu)、密鑰信息和加密解密的數(shù)據(jù)格式,都是密碼學(xué)分析和信息安全分析所需要了解的內(nèi)容。密碼學(xué)理論的Kerdd1Off原理指出,密碼學(xué)算法的安全性分析必須假設(shè)密碼算法的內(nèi)部結(jié)構(gòu)是公開的,因此,對于軟件中的密碼算法的提取是對軟件安全分析的必要步驟。包含密碼算法的應(yīng)用軟件,通??梢园凑掌浒拿艽a算法類型分為兩種,一種是包含標準密碼學(xué)算法的軟件,所謂標準密碼學(xué)算法,即算法的設(shè)計、邏輯、結(jié)構(gòu)等信息早已公開并接受了廣泛的密碼學(xué)分析;另一種是包含軟件開發(fā)人員自行設(shè)計的加密算法的軟件,其中可能存在與標準密碼學(xué)算法的結(jié)構(gòu)完全不同的算法,也可能存在基于標準密碼學(xué)算法進行少量修改得到的算法。此外,按照軟件中密碼算法的工作方式,可以分為包含密鑰和不包含密鑰的軟件。
發(fā)明內(nèi)容
本發(fā)明的目的在于針對上述現(xiàn)有技術(shù)的不足,能夠快速高效地從程序的二進制代碼中提取標準和非標準的密碼學(xué)算法及其相關(guān)信息,使得程序的安全性分析得以有效地開展。本發(fā)明是通過如下技術(shù)方案實現(xiàn)的,本發(fā)明中
每一被保護扇區(qū)都有一個與之對應(yīng)的初始化向量和一個消息認證碼,且對于一個確定的被保護扇區(qū)的每一次寫入磁盤操作而言,其對應(yīng)的初始化向量具有唯一的取值,這種唯一是指既不與其它被保護扇區(qū)對應(yīng)的初始化向量相同,也不與該被保護扇區(qū)的先前寫入操作所對應(yīng)的初始化向量相同;
通過該初始化向量和不為攻擊者所知的密鑰,完成對相應(yīng)被保護扇區(qū)的加密,并生成該被保護扇區(qū)對應(yīng)的消息認證碼;
在全部被保護扇區(qū)所對應(yīng)的全部初始化向量上構(gòu)造哈希樹,通過哈希樹來保護這些初始化向量不可被篡改;
將被保護扇區(qū)及其對應(yīng)的初始化向量和消息認證碼物理相鄰地存儲在磁盤上,實現(xiàn)這種物理相鄰是將若干個初始化向量以及與該若干個初始化向量所對應(yīng)的被保護扇區(qū)和被保護扇區(qū)的消息認證碼存儲在一起,且存儲在一起是指存儲在物理相鄰的磁盤位置上,并且是存儲在同一磁道的相鄰位置上,以及在同一磁道不宜完全容納時分布在相鄰的一條或
3多條磁道上;
將除哈希樹根節(jié)點之外的其它哈希樹節(jié)點物理相鄰地存儲在磁盤上,實現(xiàn)這種物理相鄰是將這些哈希樹節(jié)點存儲在物理相鄰的磁盤位置上,并且是存儲在同一磁道的相鄰位置上,以及在同一磁道不宜完全容納時分布在相鄰的一條或多條磁道上。所述的初始化向量,僅是一個計數(shù)值,且是通過計數(shù)每一次磁盤寫入操作而遞增來得到的。所述的初始化向量,僅是一個隨機數(shù),且是通過為每一次磁盤寫入操作而生成隨機數(shù)來得到的。所述的初始化向量,其長度為64位。所述的初始化向量,其包含被保護扇區(qū)的地址信息。所述的初始化向量,對于確定地址的被保護扇區(qū)而言,其在磁盤上的存儲位置是確定的。本發(fā)明所提出的方法特別適宜于將IEEE P1619. 1所設(shè)計的認證加密具體地應(yīng)用到磁盤的數(shù)據(jù)保護中;一方面,解決了其認證加密算法對初始化向量和消息認證碼的存儲問題,另一方面,解決了其認證加密算法不能對抗重放攻擊的弱點。還有,本發(fā)明所提出的方法和裝置直接作用于磁盤扇區(qū)上,從而能夠保護磁盤中所存儲的任何數(shù)據(jù);并且,作為扇區(qū)層的底層保護機制,便于集成到現(xiàn)有系統(tǒng)中。總之,本發(fā)明所提出的方法和裝置可以有效地提供數(shù)據(jù)存儲的機密性與完整性保護。
具體實施例方式本實施例在以本發(fā)明技術(shù)方案為前提下進行實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施例。本發(fā)明所考慮的,是從扇區(qū)層次上,保護磁盤數(shù)據(jù)的機密性與完整性。在本發(fā)明中,磁盤(Disk)是指硬盤或硬磁盤(Hard Disk),也稱為磁盤驅(qū)動器(Disk Driver)或硬盤驅(qū)動器,或者作為存儲設(shè)備(Storage Devices)的一般性代表。鑒于公知的原因,本發(fā)明不特別地描述磁盤結(jié)構(gòu)、訪問與延遲特性、接口等方面的內(nèi)容。同樣出于公知的原因, 對所使用的某些術(shù)語、名詞和表達方式等不作顯式的定義或說明,比如數(shù)據(jù)、數(shù)據(jù)塊、位 (bit)、字節(jié)(byte)、節(jié)點、連接、數(shù)的表達方式、安全、可信、哈希(Hash,單向散列變換,也稱散列)、Hash函數(shù)、哈希樹(Hash Tree)、哈希樹的葉節(jié)點(Leaf node)、哈希樹的內(nèi)部節(jié)點(Internal node)、哈希樹的根節(jié)點(Root node)、子節(jié)點、父節(jié)點、加密(Encryption/ Cipher)、解密(Decryption/Decipher)、密鑰(key)、IV(初始化向量,為加密、認證算法所需的輸入?yún)?shù))、MAC (消息認證碼)、HMAC (Hash Message Authentication Code,散列消息認證碼;是一種帶有密鑰的散列)、Sector (扇區(qū))、磁道、地址(Address,用于識別扇區(qū)的編號或者位置),等等。對于磁盤扇區(qū)而言,除去標識、地址、糾錯碼等信息,用于存儲數(shù)據(jù)的尺寸通常為 512字節(jié);雖然存在其它尺寸的磁盤扇區(qū),比如4K字節(jié),本發(fā)明以512字節(jié)作為描述本發(fā)明所提出方法和裝置的示例。通過對512字節(jié)扇區(qū)情形的描述,可以直接類推運用于4K字節(jié)扇區(qū)或其它尺寸扇區(qū)的情形。下面,給出本發(fā)明的具體應(yīng)用示例,以更清晰地說明本發(fā)明所提出方法的具體實施。(示例)應(yīng)用本發(fā)明的方法構(gòu)造磁盤數(shù)據(jù)機密性與完整性保護系統(tǒng)的存儲布局本示例依據(jù)本發(fā)明所給出的方法,結(jié)合IEEE P1619. 1 (Standard for Authenticated
Encryption with Length Expansion for Storage Devices)的認證力口密算法,在實行磁盤數(shù)據(jù)保護時對數(shù)據(jù)、初始化向量和哈希樹節(jié)點進行物理存儲布局。在IEEE P1619. 1 中,認證加密的實現(xiàn)可以采用 AES-GCM (Galois Counter Mode)、 AES-CCM (Counter with CBC-MAC)、AES-CBC with HMAC 以及 XTS-AES with HMAC。以 AES-CCM為例,其工作過程為寫扇區(qū)明文數(shù)據(jù)到磁盤時,生成一個對應(yīng)的IV (要求是一個 nonce數(shù)值;其長度要求是96bit,并且在不為96bit時,算法會應(yīng)用GHASH函數(shù)而將返回值作為內(nèi)部計算過程所實際使用的IV),并基于IV和密鑰得出扇區(qū)密文數(shù)據(jù)以及對應(yīng)的 MAC ;在從磁盤讀出扇區(qū)數(shù)據(jù)時,相應(yīng)的IV被用于解密扇區(qū)密文數(shù)據(jù)以及重新計算MAC,并通過將重新計算的MAC和寫扇區(qū)時得到的MAC相比較,判斷數(shù)據(jù)是否為合法(即,是否未被篡改)。取磁盤扇區(qū)的尺寸為512byte,并以DatMector表示用于存儲數(shù)據(jù)的磁盤扇區(qū); 取IV為64bit(該長度能夠滿足AES-CCM對IV是一個nonce值的要求),MAC為128bit ;以 HMAC-MD5 (MD5為Message-digest Algorithm 5)函數(shù)計算哈希樹諸節(jié)點,那么,哈希樹葉節(jié)點和內(nèi)部節(jié)點的尺寸均為128bit。本發(fā)明并不局限于上述具體描述的實現(xiàn)形態(tài),而是適用于所有的依據(jù)本發(fā)明的內(nèi)容可獲得的能夠保護數(shù)據(jù)機密性、或完整性、或機密性與完整性的系統(tǒng)。這包括軟件的、硬件的以及軟件硬件相結(jié)合的實現(xiàn)形態(tài),以及不需其它發(fā)明性的能力而可直接獲得的變化形態(tài)。實質(zhì)上,只要存儲數(shù)據(jù)的器件、芯片、電路模塊、場所、設(shè)備、服務(wù)、空間等,能夠抽象為 “塊訪問”的讀寫模式,就都可以利用本發(fā)明的內(nèi)容實施對數(shù)據(jù)的保護。除了與計算機系統(tǒng)本地連接的磁盤等設(shè)備,可以被抽象為塊服務(wù)器(Block Server)的遠程存儲服務(wù)器也可以采用本發(fā)明給出的數(shù)據(jù)機密性與完整性保護方法
技術(shù)領(lǐng)域:
本發(fā)明適用于所有的依據(jù)本發(fā)明的內(nèi)容而構(gòu)造的方法和裝置,以及不需其它創(chuàng)造性質(zhì)的能力而可獲得的變化形式。因此,本發(fā)明適用于同這里所描述的原理與特征相一致的最廣的范圍。
權(quán)利要求
1.一種二進制應(yīng)用程序的密碼算法的還原方法,其特征在于,具體如下每一被保護扇區(qū)都有一個與之對應(yīng)的初始化向量和一個消息認證碼,且對于一個確定的被保護扇區(qū)的每一次寫入磁盤操作而言,其對應(yīng)的初始化向量具有唯一的取值,這種唯一是指既不與其它被保護扇區(qū)對應(yīng)的初始化向量相同,也不與該被保護扇區(qū)的先前寫入操作所對應(yīng)的初始化向量相同;通過該初始化向量和不為攻擊者所知的密鑰,完成對相應(yīng)被保護扇區(qū)的加密,并生成該被保護扇區(qū)對應(yīng)的消息認證碼;在全部被保護扇區(qū)所對應(yīng)的全部初始化向量上構(gòu)造哈希樹,通過哈希樹來保護這些初始化向量不可被篡改;將被保護扇區(qū)及其對應(yīng)的初始化向量和消息認證碼物理相鄰地存儲在磁盤上,實現(xiàn)這種物理相鄰是將若干個初始化向量以及與該若干個初始化向量所對應(yīng)的被保護扇區(qū)和被保護扇區(qū)的消息認證碼存儲在一起,且存儲在一起是指存儲在物理相鄰的磁盤位置上,并且是存儲在同一磁道的相鄰位置上,以及在同一磁道不宜完全容納時分布在相鄰的一條或多條磁道上;將除哈希樹根節(jié)點之外的其它哈希樹節(jié)點物理相鄰地存儲在磁盤上,實現(xiàn)這種物理相鄰是將這些哈希樹節(jié)點存儲在物理相鄰的磁盤位置上,并且是存儲在同一磁道的相鄰位置上,以及在同一磁道不宜完全容納時分布在相鄰的一條或多條磁道上。
2.根據(jù)權(quán)利要求1所述的二進制應(yīng)用程序的密碼算法的還原方法,其特征是,所述的初始化向量,僅是一個計數(shù)值,且是通過計數(shù)每一次磁盤寫入操作而遞增來得到的。
3.根據(jù)權(quán)利要求1所述的二進制應(yīng)用程序的密碼算法的還原方法,其特征是,所述的初始化向量,僅是一個隨機數(shù),且是通過為每一次磁盤寫入操作而生成隨機數(shù)來得到的。
4.根據(jù)權(quán)利要求1所述的二進制應(yīng)用程序的密碼算法的還原方法,其特征是,所述的初始化向量,其長度為64位。
5.根據(jù)權(quán)利要求1所述的二進制應(yīng)用程序的密碼算法的還原方法,其特征是,所述的初始化向量,其包含被保護扇區(qū)的地址信息。
6.根據(jù)權(quán)利要求1所述的二進制應(yīng)用程序的密碼算法的還原方法,其特征是,所述的初始化向量,對于確定地址的被保護扇區(qū)而言,其在磁盤上的存儲位置是確定的。
全文摘要
本發(fā)明涉及一種二進制應(yīng)用程序的密碼算法的還原方法,本發(fā)明的方法特別適宜于將IEEEP1619.1所設(shè)計的認證加密具體地應(yīng)用到磁盤的數(shù)據(jù)保護中;一方面,解決了其認證加密算法對初始化向量和消息認證碼的存儲問題,另一方面,解決了其認證加密算法不能對抗重放攻擊的弱點。還有,本發(fā)明所提出的方法和裝置直接作用于磁盤扇區(qū)上,從而能夠保護磁盤中所存儲的任何數(shù)據(jù);并且,作為扇區(qū)層的底層保護機制,便于集成到現(xiàn)有系統(tǒng)中??傊景l(fā)明所提出的方法和裝置可以有效地提供數(shù)據(jù)存儲的機密性與完整性保護。
文檔編號G06F21/22GK102184369SQ20111007844
公開日2011年9月14日 申請日期2011年3月30日 優(yōu)先權(quán)日2011年3月30日
發(fā)明者曹曉晶 申請人:曹曉晶