專利名稱:存儲器加密的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及加密/解密數(shù)據(jù)字以便于安全存儲在存儲器中,其中數(shù)據(jù)字是通過相應(yīng)的地址來識別的。
背景技術(shù):
密碼術(shù)正變得日益重要。主要方面是內(nèi)容加密/解密和訪問管理功能。重要的是保護(hù)整個供應(yīng)鏈,包括通過網(wǎng)絡(luò)進(jìn)行的傳輸或諸如CD的存儲介質(zhì)上的供應(yīng),以及再現(xiàn)設(shè)備上內(nèi)容的實際使用。這也意味著在再現(xiàn)設(shè)備的固態(tài)隨機(jī)存取存儲器或智能卡中存儲數(shù)據(jù)亦需要受到保護(hù)。原則上,基于塊密碼器的加密可被用于這種保護(hù)。在密碼術(shù)上強(qiáng)有力的塊密碼器一次加密字的多于一個的分量(分量典型地是字節(jié))。這樣的字通常被稱為塊,塊密碼器因此而得名。例如,DES將8個字節(jié)加密在一起,AES將16個字節(jié)加密在一起。即使很小的塊密碼器亦加密一個塊中的4個字節(jié)。將幾個字節(jié)加密在一起是必要的,這是因為它使可能的密碼本字的數(shù)量大得多并且它平坦化了統(tǒng)計分布。DES是最眾所周知的塊密碼器之一并且使用十六個密碼術(shù)舍入(round)。通過在ECB模式(電子密碼本模式)下使用DES,八個字節(jié)的每個明碼文本字被單獨加密,從而給出經(jīng)加密的八字節(jié)字。
在例如用于再現(xiàn)數(shù)據(jù)的應(yīng)用水平,許多簡單的設(shè)備一次對一個字節(jié)進(jìn)行運算。在常規(guī)ECB模式下使用塊密碼器對于這樣的系統(tǒng)具有缺點。對字的字節(jié)之一的改變導(dǎo)致了對經(jīng)加密的字的所有字節(jié)的改變。因此不直接有可能改變經(jīng)加密的字的僅一個字節(jié)。有必要首先檢索明碼文本形式的字的所有其它字節(jié)。對于8字節(jié)塊密碼器,這意味著改變一個字節(jié)包含了從存儲器讀取對應(yīng)的經(jīng)加密的八字節(jié)字,解密該字,改變八個字節(jié)之一并重新加密更新的字。對于DES,這包含了三十二倍消費的密碼術(shù)舍入。作為結(jié)果,對經(jīng)加密的存儲器的訪問明顯慢于對未加密的存儲器的訪問。這對于消費者電子設(shè)備尤其是問題,在其中價格壓力使得難以借助附加的硬件來克服或減小附加的延遲。而且,亦需要將功耗保持為低。因此,對于需要快速存儲器訪問的應(yīng)用,可能需要減小許多舍入,從而導(dǎo)致了較弱的保護(hù)。
在所謂的計數(shù)器模式(CTR)下使用塊密碼器來進(jìn)行存儲器加密是已知的。這被說明于圖1中。每個字D通過相應(yīng)的地址A來識別。在ECB模式下使用塊密碼器將地址A加密成經(jīng)加密的地址A’=B(A)。數(shù)據(jù)字D被與經(jīng)加密的地址A’組合以給出經(jīng)加密的字D’。該組合是使用XOR函數(shù)D’=XOR(D,B(A))來進(jìn)行的。取代ECB模式下的塊密碼器,其它合適的單向函數(shù)(散列)亦可被使用。由于地址識別字的所有分量(如字節(jié)),經(jīng)散列的地址對于所有分量是有效的。一個分量的改變可通過以下來實現(xiàn)重新計算經(jīng)加密的地址A’=B(A),檢索原始數(shù)據(jù)字(D=XOR(D’,B(A))),改變給出新明碼文本字D1的字的分量,以及重新組合D1與經(jīng)加密的地址(D1’=XOR(D1,B(A)))。以這種方案,僅進(jìn)行了一個加密步驟(對于DES,需要16個舍入)。然而,已知的是,當(dāng)被用于加密隨機(jī)存取存儲器時,CTR模式在密碼術(shù)上是弱的。而正常情況下對于用于強(qiáng)力攻擊的四字節(jié)字,總共2564對的字及其經(jīng)加密的計數(shù)器部分需要被收集,在此各個字節(jié)可被攻擊。因此,可通過收集僅4*256對就可攻破系統(tǒng)。
本發(fā)明的目的是提供一種存儲器加密體系結(jié)構(gòu),其使能快速訪問同時維持足夠的安全。進(jìn)一步的目的是這樣的體系結(jié)構(gòu)可被有效地實施于硬件和軟件中以允許在消費者電子應(yīng)用中的廣泛使用。
發(fā)明內(nèi)容
為達(dá)到本發(fā)明的目的,所述系統(tǒng)包括如在權(quán)利要求1中描述的加密器和解密器。散列函數(shù)被用于加擾(scramble)地址,并且經(jīng)加擾的地址和數(shù)據(jù)字的組合被進(jìn)一步使用塊密碼器來加密。該最后步驟克服了CTR模式存儲器加密的弱點。通過使用二步驟加密(地址散列和組合的加密),最后的排列(permutation)的加密強(qiáng)度可被減小,因此CTR模式的速度優(yōu)點的大部分可被維持。
依照從屬權(quán)利要求2的措施,所述體系結(jié)構(gòu)使能用于讀取的兩個密碼術(shù)步驟的并行安排。這增加了存儲器訪問的速度。進(jìn)一步的優(yōu)點是讀取速度可被增加,這是因為在許多系統(tǒng)中,可能需要暫停處理直到數(shù)據(jù)被讀取,而在后臺發(fā)生的寫入期間,處理可被繼續(xù)。
依照從屬權(quán)利要求3的措施,相同的塊密碼器舍入被用于地址散列和用經(jīng)散列的地址進(jìn)行的數(shù)據(jù)的加擾。這具有的優(yōu)點是僅一個密碼術(shù)功能需要被實施。
依照從屬權(quán)利要求4的措施,預(yù)定塊密碼器的缺省舍入數(shù)(例如DES使用16個舍入)被劃分于對地址的散列以及經(jīng)散列的地址和數(shù)據(jù)字的組合的加密上。同樣,舍入的總數(shù)可被保持與在存儲器加密的CTR模式下所使用的相同,同時與CTR相比,增加了密碼術(shù)的強(qiáng)度。
依照從屬權(quán)利要求5的措施,對地址的散列以及對經(jīng)散列的地址和數(shù)據(jù)字的組合的加密兩者的運算使用至少三個舍入,從而確保了排列的合理水平。
在如被描述于從屬權(quán)利要求6的優(yōu)選實施例中,所述兩個運算使用相同的舍入數(shù)。這特別使并行運算為最優(yōu)的快速。
依照從屬權(quán)利要求7的措施,所述體系結(jié)構(gòu)使能快速更新字的一個或多個分量,其中該整個字不可用于明碼文本形式。
本發(fā)明的目的亦由分別在獨立權(quán)利要求8和9中要求的加密器和解密器以及如在獨立權(quán)利要求10到13中要求的加密的方法和計算機(jī)程序產(chǎn)品來實現(xiàn)。
從附圖中所示的實施例來看,本發(fā)明的這些和其它方面將是顯然的,并且將參照所述實施例被描述。
圖1示出現(xiàn)有技術(shù)CTR存儲器加密體系結(jié)構(gòu);并且圖2說明依照本發(fā)明的存儲器加密體系結(jié)構(gòu)。
具體實施例方式
圖2示出依照本發(fā)明的密碼術(shù)系統(tǒng)。該系統(tǒng)包括具有加密器20和解密器40的密碼術(shù)單元10。單元10典型地被連接于直接存取存儲器60以便于以安全的方式來存儲數(shù)據(jù)。將理解,程序(即任何形式的計算機(jī)指令,如可執(zhí)行代碼)亦意味著數(shù)據(jù)。在本說明書中,假定存儲器是讀和寫類型的。然而,系統(tǒng)亦可被用于只讀。優(yōu)選地,密碼術(shù)單元10被實施于安全模塊中以減小篡改(tamper)的機(jī)會。
加密器20通過輸入26從處理單元接收由多個分量組成的數(shù)據(jù)字D。典型地,一個分量是一個字節(jié),但其它大小,如四位字節(jié)或16位的分量亦可被使用。加密器20亦通過輸入22接收地址A,其識別存儲器60中的字的存儲位置。優(yōu)選地,提供字D和地址A的處理單元亦被引入到相同的安全模塊中。加密器20包括散列函數(shù)B1,用于將地址轉(zhuǎn)換成經(jīng)散列的地址B1(A)。優(yōu)選地,散列函數(shù)B1是以塊密碼器的舍入的形式而實施的鍵控散列函數(shù)。DES或TEA是眾所周知的,并且是將在依照本發(fā)明的系統(tǒng)中使用的適當(dāng)密碼器。加密器20亦包括組合器24,用于組合經(jīng)散列的地址B1(A)與所接收的字D。優(yōu)選地,組合器24被實施為逐位XOR(異或)函數(shù)。這給出了XOR(D,B1(A))的中間結(jié)果。組合器24的輸出通過加密器20的塊密碼器B2來饋送以給出經(jīng)加密的字D’。寫入器30在地址A的控制下將經(jīng)加密的字D’寫給存儲器。該寫入可處于地址A的直接控制下。然而,特別是如果存儲器60位于安全模塊之外,則優(yōu)選的是加密器包括附加的加擾函數(shù)28,用于將地址A加擾成經(jīng)加擾的地址A’,其被用于訪問存儲器60。然后經(jīng)加擾的地址A’而不是地址A被提供給寫入器30。加擾函數(shù)不應(yīng)與散列函數(shù)B1相同,從而確保沒有信息從安全模塊泄漏。將理解,在正常情況下,地址將識別字的單獨分量。通??蓮姆至康刂芬院唵蔚姆绞降玫阶值刂?例如,如果忽略字節(jié)水平地址的兩個最低有效位,其中一個字中有四個字節(jié))。
解密器40執(zhí)行加密器20的逆運算。通過輸入42,解密器40從處理單元接收地址A。解密器任選地包括加擾函數(shù)48,用于將地址A加擾成經(jīng)加擾的地址A’,其被用于訪問存儲器60。加擾函數(shù)48與加密器20的加擾函數(shù)28相同。讀取器50在地址A(或任選地,經(jīng)加擾的地址A’)的控制下從存儲器60讀取經(jīng)加密的字D’。經(jīng)加密的字D’通過作為B2的顛倒的解密器B2-1來饋送。對于許多塊密碼器,如Feistel塊密碼器,逆密碼器的舍入與加密密碼器的舍入相同,其中舍入鍵以逆序被提供。地址A通過與加密器20用來將該地址轉(zhuǎn)換成經(jīng)散列的地址B1(A)相同的散列函數(shù)B1來饋送。分解器44被用于使用經(jīng)散列的地址B1(A)從部分解密的字B2-1(D’)提取明碼文本字D。在優(yōu)選實施例中,XOR函數(shù)24在亦使用用于分解器44的XOR函數(shù)中被映射。則該分解是D=XOR(B2-1(D’),B1(A))。D通過輸出46被提供給處理單元。
處理單元典型地亦將用于密碼術(shù)函數(shù)B1和B2的鍵提供給加密器/解密器。
將理解,在加密和解密以時間順序進(jìn)行的系統(tǒng)中,加密器和解密器的對應(yīng)運算僅需要被實施一次。具體而言,優(yōu)選的是,B1和B2使用相同塊密碼器的密碼術(shù)舍入。如果B2是其本身的顛倒(舍入鍵以逆序被提供),則僅一個舍入函數(shù)需要被實施以支持加密和解密兩者。
在優(yōu)選實施例中,解密器40并行地執(zhí)行逆運算B2-1和地址散列B1。如果B2-1和B1基于相同的舍入函數(shù),則這的確意味著這樣的函數(shù)需要被實施兩次,但它減小了解密所需的時間。
優(yōu)選地,散列函數(shù)B1使用具有n個舍入的缺省數(shù)量的預(yù)定塊密碼器的k個舍入(k<n),而加密器(B1)的塊密碼器使用所述預(yù)定塊密碼器的n-k個舍入。以這種方式,n個舍入被劃分于散列地址的B1運算和加密中間結(jié)果XOR(D,B1(A))的B2(或者用于讀取,B2-1運算)上。在維持足夠強(qiáng)度的同時,可使用所述并行安排來快速進(jìn)行讀取。在并行安排中,讀取需要執(zhí)行max(k,n-k)個舍入的時間,而在常規(guī)系統(tǒng)中,這取的是n個舍入。特別是如果n=k,則并行運算使計算時間的量減半,并因此亦可顯著減小功耗(或使能通過使用較多的舍入來提高安全性,同時維持類似水平的功耗)。
對于應(yīng)合理地強(qiáng)有力的由B1實現(xiàn)的對地址的散列和由B2實現(xiàn)的加密,優(yōu)選的是對于典型地使用總共16個舍入的常規(guī)塊密碼器,如DES,k>=3且n-k>=3。將理解,盡管對于現(xiàn)有塊密碼器,有使用至少3個舍入的好的密碼術(shù)上的理由,但一般而言,對于討論中的特定塊密碼器,一樣多的舍入應(yīng)被使用以確保加擾的合理水平。
在優(yōu)選實施例中,地址散列B1和加密/解密B2使用相同數(shù)量的舍入(n=k)。除了平衡兩個部分上的密碼術(shù)強(qiáng)度以外,這亦如以上所述最優(yōu)化了讀取速度。
使用依照本發(fā)明的體系結(jié)構(gòu)使能迅速更新較大合成字(塊)的各個分量,如四位字節(jié)、字節(jié)或16位的部分。作為實例,假定字D由四個分量d0到d3組成并且分量d0需要被更新。首先,字D的地址A被加載(通常由處理單元提供)。接下來,讀取器50被用于在與該字關(guān)聯(lián)的地址A的控制下從存儲器讀取對應(yīng)的經(jīng)加密的字D’。如果任選的地址加擾被使用,則地址加擾器48被用于產(chǎn)生用來訪問存儲器60的經(jīng)加擾的地址A’。接下來,散列函數(shù)B1被用于將字的地址A轉(zhuǎn)換成經(jīng)散列的地址B1(A)。塊密碼器B2-1將經(jīng)加密的字D’解密成中間形式。如較早時所述,對于這些讀取活動,B1和B2-1優(yōu)選地被并行執(zhí)行。現(xiàn)在,成分(B1(A)、B2-1(D’)和d0)全部可用于形成更新的中間結(jié)果。該更新由分量更新器進(jìn)行,其在經(jīng)散列的地址(B1(A))的控制下組合新的分量值(d0’)與解密的經(jīng)加密的字(B2-1(D’)),從而形成更新的經(jīng)組合的字/經(jīng)散列的地址。該分量更新器未在圖中示出。在優(yōu)選實施例中,組合24是通過XOR運算進(jìn)行的。對于這樣的系統(tǒng),分量d0的更新可通過以下來進(jìn)行從經(jīng)散列的地址B1(A)中提取最低有效分量并使用分量寬XOR函數(shù)將其與新值d0’組合。所得到的經(jīng)組合的分量值然后被加載于B2-1(D’)的最低有效分量位置。在完成這樣的分量更新之后,塊密碼器B2被用于將更新的經(jīng)組合的字/經(jīng)散列的地址加密成更新的經(jīng)加密的字。然后使用寫入器30將該字寫給存儲器60。如果任選的地址加擾被使用,則最初被用于讀取所述字的相同的經(jīng)加擾的地址現(xiàn)在可再次被用于寫該更新的字。
將理解,優(yōu)選地使用專用的加密/解密設(shè)備來實施存儲器加密。所述的密碼術(shù)運算可被實施于專用的硬件中或由密碼術(shù)處理器來進(jìn)行。該處理器可基于常規(guī)的處理器核心,但亦可基于具有為密碼術(shù)運算而最優(yōu)化的專用密碼術(shù)處理核心。所述處理器通常在適當(dāng)?shù)某绦?固件)的控制下運行以執(zhí)行依照本發(fā)明的算法的步驟。優(yōu)選的是,這樣的計算機(jī)程序產(chǎn)品以安全的方式被實施于依照本發(fā)明的存儲器加密系統(tǒng)中。如果需要,其亦可從后臺存儲被加載,如硬盤或ROM,在其中程序優(yōu)選地被用密碼術(shù)保護(hù)(例如使用DES)以不受惡意用戶的攻擊。在已在存儲介質(zhì)如CD-ROM上分配或通過網(wǎng)絡(luò)如公共互聯(lián)網(wǎng)而分配之后,所述計算機(jī)程序產(chǎn)品可被存儲于后臺存儲上。敏感信息如加密鍵優(yōu)選地以安全方式被分配和存儲。用于此的技術(shù)通常是已知的并且不做進(jìn)一步的描述。所述密碼術(shù)系統(tǒng)可部分或整體地被實施于智能卡上。
權(quán)利要求
1.一種用于在存儲器中以加密的形式來存儲數(shù)據(jù)字的系統(tǒng),所述數(shù)據(jù)字通過相應(yīng)的關(guān)聯(lián)地址來識別;該系統(tǒng)包括加密器,用于在關(guān)聯(lián)地址(A)的控制下加密數(shù)據(jù)字(D);該加密器包括散列函數(shù)(B1),用于將關(guān)聯(lián)地址(A)轉(zhuǎn)換成經(jīng)散列的地址(B1(A)),組合器,用于組合數(shù)據(jù)字(D)與經(jīng)散列的地址(B1(A)),以及塊密碼器(B2),用于將經(jīng)組合的字/經(jīng)散列的地址加密成經(jīng)加密的字(D’);寫入器,用于在關(guān)聯(lián)地址(A)的控制下將經(jīng)加密的字(D’)寫給存儲器;讀取器,用于在與所述字關(guān)聯(lián)的地址(A)的控制下從存儲器讀取經(jīng)加密的字(D’);散列函數(shù)(B1),用于將關(guān)聯(lián)地址(A)轉(zhuǎn)換成經(jīng)散列的地址(B1(A));該散列函數(shù)與加密器所使用的相同;塊密碼器(B2-1),用于解密經(jīng)加密的字(D’);該塊密碼器是加密器的塊密碼器(B2)的逆;以及分解器,用于通過組合解密的經(jīng)加密的字(B2-1(D’))與經(jīng)散列的地址(B1(A))來檢索數(shù)據(jù)字(D)。
2.權(quán)利要求1的系統(tǒng),其中在解密器中,散列函數(shù)(B1)和塊密碼器(B2-1)被并行地安排。
3.權(quán)利要求1的系統(tǒng),其中加密器(B1)的散列函數(shù)和塊密碼器使用相同預(yù)定塊密碼器的舍入。
4.權(quán)利要求3的系統(tǒng),其中預(yù)定塊密碼器具有缺省數(shù)量的n個舍入;散列函數(shù)使用預(yù)定塊密碼器的k個舍入,其中1<=k<n,而加密器(B1)的塊密碼器使用預(yù)定塊密碼器的n-k個舍入。
5.權(quán)利要求4的系統(tǒng),其中k>=3并且n-k>=3。
6.權(quán)利要求4的系統(tǒng),其中n=k。
7.權(quán)利要求1的系統(tǒng),其中所述數(shù)據(jù)字包括多個分量,系統(tǒng)可運行以通過以下將數(shù)據(jù)字(D)的分量(di)更新為新的分量值使用讀取器以在與所述字關(guān)聯(lián)的地址(A)的控制下從存儲器讀取經(jīng)加密的字(D’);使用散列函數(shù)(B1)以將關(guān)聯(lián)地址(A)轉(zhuǎn)換成經(jīng)散列的地址(B1(A));使用解密器的塊密碼器(B2-1)以解密經(jīng)加密的字(D’);使用分量更新器以在經(jīng)散列的地址(B1(A))的控制下組合新的分量值(di’)與解密的經(jīng)加密的字(B2-1(D’)),從而形成更新的經(jīng)組合的字/經(jīng)散列的地址;以及使用加密器的塊密碼器(B2)以便于將更新的經(jīng)組合的字/經(jīng)散列的地址加密成更新的經(jīng)加密的字。
8.一種加密器,用于在權(quán)利要求1的在存儲器中以加密形式存儲數(shù)據(jù)字的系統(tǒng)中使用,其中每個數(shù)據(jù)字通過相應(yīng)的關(guān)聯(lián)地址來識別;該加密器包括散列函數(shù)(B1),用于將與數(shù)據(jù)字(D)關(guān)聯(lián)的地址(A)轉(zhuǎn)換成經(jīng)散列的地址(B1(A)),組合器,用于組合數(shù)據(jù)字(D)與經(jīng)散列的地址(B1(A)),以及塊密碼器(B2),用于將經(jīng)組合的字/經(jīng)散列的地址加密成經(jīng)加密的字(D’)。
9.一種解密器,用于在權(quán)利要求1的在存儲器中以加密形式存儲數(shù)據(jù)字的系統(tǒng)中使用,其中每個數(shù)據(jù)字通過相應(yīng)的關(guān)聯(lián)地址來識別;該解密器包括散列函數(shù)(B1),用于將與存儲器中的數(shù)據(jù)字關(guān)聯(lián)的地址(A)轉(zhuǎn)換成經(jīng)散列的地址(B1(A));塊密碼器(B2-1),用于解密已在關(guān)聯(lián)地址(A)的控制下從存儲器讀取的經(jīng)加密的字(D’);以及分解器,用于通過組合解密的經(jīng)加密的字(B2-1(D’))與經(jīng)散列的地址(B1(A))來檢索明碼文本數(shù)據(jù)字(D)。
10.一種用于加密數(shù)據(jù)字以便于以加密形式存儲在存儲器中的方法,其中每個數(shù)據(jù)字通過相應(yīng)的關(guān)聯(lián)地址來識別;該方法包括將與數(shù)據(jù)字(D)關(guān)聯(lián)的地址(A)轉(zhuǎn)換成經(jīng)散列的地址(B1(A)),組合數(shù)據(jù)字(D)與經(jīng)散列的地址(B1(A)),以及使用塊密碼器(B2)將經(jīng)組合的字/經(jīng)散列的地址加密成經(jīng)加密的字(D’)以便于隨后存儲在存儲器中。
11.一種用于解密以加密形式存儲在存儲器中的數(shù)據(jù)字的方法,其中每個數(shù)據(jù)字通過相應(yīng)的關(guān)聯(lián)地址來識別;該方法包括將與存儲器中存儲的經(jīng)加密的數(shù)據(jù)字(D’)關(guān)聯(lián)的地址(A)轉(zhuǎn)換成經(jīng)散列的地址(B1(A));使用塊密碼器(B2-1)以將已在關(guān)聯(lián)地址(A)的控制下從存儲器讀取的經(jīng)加密的字(D’)解密成中間形式(B2-1(D’));以及通過組合所述中間形式(B2-1(D’))與經(jīng)散列的地址(B1(A))來檢索明碼文本數(shù)據(jù)字(D)。
12.一種計算機(jī)程序產(chǎn)品,其中程序產(chǎn)品可運行以使處理器執(zhí)行權(quán)利要求10的方法。
13.一種計算機(jī)程序產(chǎn)品,其中程序產(chǎn)品可運行以使處理器執(zhí)行權(quán)利要求11的方法。
全文摘要
加密器20使用兩個密碼術(shù)步驟在關(guān)聯(lián)地址A的控制下加密數(shù)據(jù)字D。散列函數(shù)B1將關(guān)聯(lián)地址A轉(zhuǎn)換成經(jīng)散列的地址B1(A)。組合器24,如XOR函數(shù),組合數(shù)據(jù)字D與經(jīng)散列的地址B1(A)。結(jié)果被進(jìn)一步使用塊密碼器B2而加密。寫入器30在關(guān)聯(lián)地址A的控制下將經(jīng)加密的字D’寫給存儲器60。解密器40解密已在關(guān)聯(lián)地址A的控制下從讀取器60讀取的經(jīng)加密的字D’。散列函數(shù)B1將關(guān)聯(lián)地址A轉(zhuǎn)換成經(jīng)散列的地址B1(A)。逆塊密碼器B文檔編號G06F21/85GK1565102SQ02819504
公開日2005年1月12日 申請日期2002年9月9日 優(yōu)先權(quán)日2001年10月3日
發(fā)明者S·M·范里斯沃 申請人:皇家飛利浦電子股份有限公司