專利名稱:數據加密設備和存儲卡的制作方法
技術領域:
本發明涉及數據加密設備,其對將被存儲在存儲設備中的秘密數據進行加密并將存儲在存儲設備中的秘密數據解密,并且特別地涉及數據加密方法。
背景技術:
作為用于將秘密信息加密以將其存儲在存儲設備中的方法,存在公共密鑰加密和公用密鑰加密。對于公用密鑰加密而言,將相同的密鑰用于加密和解密兩者。另一方面,對于公共密鑰加密而言,使用一組兩個密鑰來執行加密和解密。也就是說,將不同的密鑰用于加密和解密。兩個密鑰中的一個被用于公共密鑰,而另一個密鑰被用于秘密密鑰。對于公共密鑰加密而言,在將秘密信息傳送到另一方的情況下,通過使用另一方的公共密鑰來將數據加密,并將加密數據傳送到另一方。然后,該另一方可以通過使用自己的秘密密鑰將傳送的數據解密,并獲得解密的秘密信息。通常,將公共密鑰加密用于公用密鑰的分發、電子簽名或認證。另一方面,將公用密鑰加密用于數據隱藏,因為公用密鑰加密比公共密鑰加密更快。對于公用密鑰加密而言,存在塊密碼和流密碼。在這些加密之中,塊密碼具有的特征在于不容易從密文推測明文,因為當輸入塊的僅一位改變時,輸出塊的數據極大地改變。 然而,由于對每一個塊執行處理,所以除非準備了一定量的數據,否則不能進行加密處理。另一方面,在流密碼的情況下,通過明文和偽隨機數的異或(XOR)來執行加密和解密。由于可以預先生成偽隨機數且由于轉換過程是簡單的,所以可以以高速度來處理大量的數據。然而,需要在加密和解密時布置偽隨機數的初始值(IV)。此外,當發生傳輸錯誤等時,需要通過從數據的開頭開始來重新執行加密和解密。此外,由Morris Dworkin 在 NIST Special Publication 800-38A, 2001 “Recommendation for Block Cipher Modes of Operation” 中發明了一種方法,該方法使用根據塊密碼的CTR (計數器)模式、CFB (密碼反饋)模式、以及OFB (輸出反饋)模式,其將不容易推測塊密碼的明文的特性與流密碼的高速相結合。作為一般使用,將塊密碼用于對文件加密,并將流密碼用于對大量的數據加密,諸如通信的加密。為了通過構建通過頁訪問執行數據的寫和讀的存儲設備(存儲器設備)中的加密設備來執行數據的加密,通過對每頁使用塊密碼來執行加密。然而,在塊密碼的情況下,在布置對應于塊長度的尺寸的數據之后開始加密處理,并且對該數據的訪問變得中斷。另一方面,在使用流密碼的情況下,高速訪問變得可能,因為除了初始值(IV)的生成之外不存在開銷。然而,需要始終從數據的開頭開始執行訪問,并且不能從任意頁執行訪問。為了解決不能從流密碼中的任意位置執行訪問的問題,日本專利申請特許公開公開號11-225140公開了一種用于通過向數據行中嵌入插入信息識別信息和初始值(IV)來使得可以從任意位置執行訪問的方法。然而,當對存儲設備的每頁設置初始值(IV)時,每當通過跨頁來執行連續訪問時,要求再次設置初始值(IV),并且發生開銷。此外,此插入的信息是冗余的,并且這意味著保持不必要的數據。
發明內容
鑒于上述情況,本發明具有提供一種能夠在寫和讀包含秘密信息的加密數據的過程中執行對任意頁的高速訪問的數據加密設備和與該數據加密設備一起安裝的存儲卡的目的。為了達到上述目的,根據本發明的數據加密設備具有以下第一特性。數據加密設備通過流密碼對將被存儲在存儲設備中的數據加密并將加密數據寫到該存儲設備,或者從該存儲設備讀取加密數據并通過流密碼將讀取的數據解密。可以以頁為單位來訪問存儲設備。數據加密設備使用塊密碼的計數器模式來生成用于加密或解密的偽隨機數。所述頁被劃分成具有與塊密碼的塊長度相同的塊長度的多個頁塊。以劃分的頁塊為單位在塊密碼的計數器模式下執行加密或解密。由每個頁塊的頁塊號來指定將被在所述頁中寫或讀的數據的位置。使用通過將被寫或讀的所述頁的頁號和頁塊號的函數獲得的值作為用于生成偽隨機數的初始值。根據所述第一特性的數據加密設備,所述數據加密設備可以通過使用流密碼作為加密系統并通過使用塊密碼的CTR (計數器)模式來生成偽隨機數序列來執行高速訪問。由于所述數據加密設備可以通過頁號和頁塊號來確定初始值,所以該設備可以通過跨頁來訪問任意頁。所述第一特性的數據加密設備還具有隨后的第二特性。除了將被寫或讀的頁的頁號和頁塊號之外,所述設備還使用通過偏移值的函數獲得的值作為用于生成偽隨機數的初始值。偏移值對于每個數據加密設備而言是不同的。根據第二特性的數據加密設備,當初始值被設置作為偏移值的函數時,可以增加安全性強度,因為對于每個加密設備而言初始值是不同的。下面解釋初始值的函數的示例。例如,優選的是,將初始值表示為通過將所述頁號連接到頁塊號的高階位側而獲得的值。在這種情況下,將初始值IV表示為IV (nPG, mBLK) =nPG · M+mM,其中,nPG表示頁號, mBLK表示頁塊號,并且M表示每一個頁的頁塊號。要執行跨每個頁的連續訪問,僅必須使初始值IV遞增一。因此,這變成與計數器的操作相同的操作。當上述IV是偏移值“offset”的函數時,更優選的是將初始值表示為通過將所述偏移值加到通過將頁號連接到頁塊號的高階位側獲得的預初始值而獲得的值。在這種情況下,將初始值 IV 表示為 IV (nPG, mBLK, offset) =nPG · M+mBLK+offset。替換地,作為將偏移值加到預初始值的替代,初始值IV可以是預初始值和偏移值的異或。也就是說,可以由通過將頁號連接到頁塊號的高階位側獲得的預初始值與偏移值的異或來表示初始值。優選地,所述第一或第二特性的數據加密設備使用AES (高級加密標準)作為塊密碼的加密算法。可以通過通過使用AES密碼來生成偽隨機數序列而實現高安全性的加密設備。本發明提供了一種與所述存儲設備以及所述第一或第二特性的數據加密設備一起安裝的存儲卡,并且能夠實現具有高安全性的存儲卡且能夠通過將上述特性的數據加密設備安裝在存儲卡上來執行隨機頁訪問和高速讀取二者,所述存儲卡被可拆卸地安裝在諸如個人計算機、數字照相機和便攜式電話的電子設備中。因此,根據本發明,可以提供能夠對任意頁執行高速訪問的數據加密設備和與該數據加密設備一起安裝的存儲卡。
圖I是示出根據本發明的數據加密設備的電路的配置示例的方框圖。圖2示出頁與頁塊之間的關系。圖3示出偽隨機數的初始值IV的設置的示例。圖4示出在使用本發明來對SD卡中的數據加密時的偽隨機數的初始值IV的設置的示例。圖5是示出根據本發明的數據加密設備的電路的其它配置示例的方框圖。圖6示出偽隨機數的初始值IV的設置的其它示例。圖7示出偽隨機數的初始值生成電路的其它配置示例。
具體實施例方式第一實施例
圖I示出根據本發明的實施例的數據加密設備I (在下文中,適當地,“本發明設備I”) 的配置示例。圖I是示出了所述發明設備I的電路配置的方框圖,并且所述發明設備I被配置為使用塊密碼的CTR (計數器)模式以對數據加密。如圖I中所示,所述發明設備I包括初始值生成電路11、偽隨機數生成電路12、以及異或電路13。此外,所述發明設備I傳送數據到可以被以頁為單位訪問的存儲設備14 (未示出)/從該存儲設備14接收數據,并且執行加密的讀取數據的解密處理或將被存儲到該存儲設備的數據的加密處理。控制電路15 (未示出)控制被存儲在該存儲設備14中的數據的讀取操作以及將被存儲在該存儲設備14 中的數據的寫操作。在讀操作中,所述發明設備I經由控制電路15來接收預定讀地址的數據(密文),解密讀取的數據,并將解密數據轉換成明文數據。另一方面,在寫操作中,所述發明設備I對將被存儲的數據(明文)加密,并將加密數據傳送到控制電路15以將數據寫入存儲設備14的預定寫地址中。因此,可以將所述發明設備I和存儲設備相互電連接,就像可拆卸至諸如個人計算機的電子設備的存儲卡那樣,或者可以將其經由有線或無線LAN在網絡中相互連接。下面解釋將數據加密并將加密數據寫入存儲設備的預定地址中的所述發明設備I 的操作。初始值生成電路11基于將被訪問的頁的頁號nPe和頁塊號mBUi設置初始值IV(nrc, mM)作為nPe和的函數。然后,偽隨機數生成電路12基于IV (nPe,mBUi)在塊密碼的計數器模式下生成偽隨機數。偽隨機數的尺寸等于將被使用的塊密碼的塊長度L。IV (nPG, mM)對應于將被使用的塊密碼的計數器模式下的計數值。由于以塊密碼的塊長度的塊單位來對數據加密或解密,所以每頁被劃分成塊長度 L的多個塊,并將每個劃分的塊稱為頁塊。在頁中,劃分的頁塊按照頁塊號排序。因此,由頁塊號mBUi來指定頁中的頁塊的位置。異或電路13執行由偽隨機數生成電路12生成的偽隨機數與明文的異或(X0R),并輸出密文。該密文經由控制電路被寫入由頁號^;和頁塊號mBUi指定的存儲設備的預定地址中。在后續的連續寫中,初始值生成電路11還設置通過向頁塊號1%^加I獲得的初始值IV (nPG, mBLK+l)0偽隨機數生成電路12基于IV (nrc,πιΒ Κ+1)來生成偽隨機數。異或電路13執行此偽隨機數與明文的異或(X0R),并輸出密文。圖2示出頁與頁塊之間的關系。當頁尺寸為N且每頁中的劃分的頁塊的總數為M 時,M = N/L。當訪問頁#0時,例如,示出頁塊號的計數值在對頁#0的訪問期間被順序地從 #0加一至#Μ-1。在對頁#0和頁塊號#Μ-1訪問之后,在后續的連續訪問時,指示頁塊號的計數值被復位至#0’并且指示頁號的計數值被加一,并且開始對屬于頁#1的頁塊的訪問。 因此,IV(nPG,M)=IV(nPG+l, O)。圖3示出用于設置初始值的函數IV(nrc,mBUi)的示例。在圖3中所示的示例中,通過將指示頁號nP(^P頁塊號的二進制數連接來設置初始值IV。具體地,IV(nPG, mBLK) =nPG · M+mBUi。因此,在對頁#0和頁塊號#M_1訪問之后,在后續的連續訪問時,開始對頁#1和頁塊號#0的訪問。在這種情況下,僅將初始值IV加一也是足夠的。也就是說,初始值IV等價于指示生成密文的次數的累計數的計數值。即使在跨頁的訪問的情況下,也可以通過對初始值IV順序地加一來生成密文,以執行連續的寫。結果, 可以通過執行連續訪問或隨機訪問來設置唯一初始值IV。由于初始值IV示出指示直到那時生成密文的次數的累計數的計數值,如上所述, 所以可以使用一個計數器作為初始值生成電路11的配置。當在寫的中間發生錯誤等時,不必要從開頭開始重新執行寫操作。可以通過將計數器的初始值設置為IV(nrc,mBUi),通過返回至其中發生錯誤的頁號1^和頁塊號!nBUi來再次開始密文的生成。可以從其中發生錯誤的頁號nrc和頁塊號再次開始寫操作。例如,考慮將所述發明設備I安裝在作為存儲卡的SD卡上,并且對由個人計算機等生成的數據加密并將其存儲在此SD卡中。SD卡的每一頁的存儲尺寸是512字節(4096 位)。同時,假設將塊長度128位的AES用于加密算法。因此,一頁具有32個頁塊。在這種情況下,如圖4中所示,作為初始值IV (128位)的設置的示例,將位#0至位#4的低階五位分配給頁塊號,并將位#5至位#127的高階位分配給頁號。第二實施例
圖5示出根據本發明的一個實施例的數據加密設備2(在下文中,適當地“發明設備2”) 的配置示例。在所述發明設備2中,除了頁號nrc和頁塊號之外,初始值生成電路16還設置偽隨機數的初始值IV,作為任意偏移值“offset”的函數。圖6示出根據所述發明設備2的初始值IV的設置的示例。在圖6中所示的示例中, 通過進一步將偏移值offset加至根據頁號nP(^P頁塊號設置的值(預初始值)來生成初始值IV。在這種情況下,初始值IV具體地變成IV (nrc,mBLK, offset) =nPG *M+mBLK+offseto通過針對每一個數據加密設備2來改變此偏移值,可以由相同的加密密鑰來生成不同的偽隨機數序列,并且可以生成不同的密文。因此,在由不同的數據加密設備2控制的存儲設備之間可以防止存儲設備中的數據的死拷貝。
圖7示出使用偏移值offset作為輸入的初始值生成電路16的其它配置示例。圖 16中所示的初始值生成電路16包括預初始值生成電路(計數器)17和異或電路18。初始值生成電路16通過由預初始值生成電路17基于頁號nrc和頁塊號mBUi設置的預初始值Pre-IV 與偏移值offset的異或來生成初始值IV (nPG, mBLK, offset)。按照與圖3中的初始值生成電路11設置初始值IV作為頁號nrc和頁塊號的函數所依照的方式類似的方式,在圖7中,預初始值生成電路17設置預初始值Pre-IV作為頁號nrc和頁塊號mBUi的函數。用此布置,預初始值Pre-IV等價于指示直到那時生成密文的次數的累計數的計數值。即使在跨頁的訪問的情況下,也可以通過在連續寫中對預初始值Pre-IV順序地加一來連續地生成密文。此外,通過由預初始值Pre-IV與偏移值off set的異或來生成初始值IV,可以通過針對每個數據加密設備改變偏移值來防止數據的死拷貝,并且可以增加安全性強度。上文詳細地解釋了其中所述發明設備I或2對數據加密并將加密數據存儲在存儲設備中的情況。在對被加密和存儲的數據解密的情況下,只有密文與明文之間的關系變得相反,并且可以使用類似的配置。由于初始值生成電路11 (16)能夠基于頁號和頁塊號來生成與在加密時那樣相同的初始值IV,所以偽隨機數生成電路12通過使用與在加密時那樣相同的初始值IV來生成偽隨機數,并且異或電路13能夠通過執行偽隨機數和密文的異或來恢復明文。下面解釋修改。(I)在上述實施例中,雖然作為設置初始值IV的示例將高階位分配給頁號并將低階位分配給頁塊號,但本發明不限于此。例如,相反,可以將高階位分配給頁塊號且可以將低階位分配給頁號。可以將低階奇數位分配給頁塊號。替換地,可以將對應于頁塊號或頁號的位的反數(inverse)設置為初始值IV。只要能夠作為頁號和頁塊號的函數來唯一地確定初始值IV,就能應用本發明。本發明可以用來對被存儲在存儲設備中的數據加密和解密,并且特別地,可以用作存儲卡,其可以執行對包含秘密信息的數據的任意頁的高速訪問并且其具有高安全性。
權利要求
1.一種數據加密設備,其通過流密碼對將被存儲在存儲設備中的數據加密并將加密數據寫到該存儲設備,或者從該存儲設備讀取加密數據并通過所述流密碼將讀取的數據解密,所述存儲設備被以頁為單位進行訪問;以及使用塊密碼的計數器模式來生成用于加密或解密的偽隨機數,其中所述頁被劃分成具有與塊密碼的塊長度相同的塊長度的多個頁塊,并且以劃分的頁塊為單位在塊密碼的計數器模式下執行加密或解密,由每個所述頁塊的頁塊號來指定將被在所述頁中寫或讀的數據的位置,以及使用通過將被寫或讀的所述頁的頁號和頁塊號的函數獲得的值作為用于生成偽隨機數的初始值。
2.根據權利要求I所述的數據加密設備,其中通過將被寫或讀的所述頁的頁號和頁塊號的函數獲得的值和對于每個數據加密設備而言不同的偏移值被用作用于生成所述偽隨機數的初始值。
3.根據權利要求2所述的數據加密設備,其中所述初始值被表示為通過將所述偏移值加到通過將所述頁號連接到所述頁塊號的高階位側獲得的預初始值而獲得的值。
4.根據權利要求2所述的數據加密設備,其中所述初始值被表示為通過將所述頁號連接到所述頁塊號的高階位側獲得的預初始值與所述偏移值的異或。
5.根據權利要求I所述的數據加密設備,其中所述初始值被表示為通過將所述頁號連接到所述頁塊號的高階位側獲得的值。
6.根據權利要求I所述的數據加密設備,其中AES被用于所述塊密碼的加密算法。
7.一種存儲卡,其與被以頁為單位訪問的存儲設備和根據權利要求I至6中的任一項所述的數據加密設備一起安裝。
全文摘要
本發明提供了一種能夠在對數據加密并將其寫至能夠被以頁為單位訪問的存儲設備或從其讀取數據以及將其解密時執行對任意頁的高速訪問的數據加密設備。該設備對數據加密并將其寫至存儲設備或從存儲設備讀取數據并通過流密碼將其解密;使用塊密碼的計數器模式來生成偽隨機數系列;通過將一頁劃分成具有塊密碼的塊長度的多個頁塊,基于頁號和頁塊號來指定存儲設備中的數據位置;以及使用通過所述頁號、頁塊號和任意偏移值的函數確定的值作為將在計數器模式下使用的偽隨機數的初始值。
文檔編號H04L9/06GK102611549SQ20121001858
公開日2012年7月25日 申請日期2012年1月20日 優先權日2011年1月21日
發明者大山茂郎 申請人:夏普株式會社