專利名稱:支持多個模式的加密裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)加密,具體涉及用于加密和解密數(shù)據(jù)的加密裝置。
背景技術(shù):
加密技術(shù)經(jīng)常用于保證消息傳送的安全。在加密技術(shù)中,在發(fā)送端加密消息(以下稱為明文),在接收端解密或解碼消息(以下稱為密文)。這樣的消息加密和解密被公知為加密技術(shù)。
數(shù)據(jù)加密標準(DES)是在許多國家和美國國家標準協(xié)會(ANSI)中采用的字組單元加密協(xié)議。而且,作為加密協(xié)議的示例,存在3-DES、AES等。在字組單元加密協(xié)議中,定義了各種模式,即,電子密碼本(ECB)、密碼字組鏈接(CBC)、輸出反饋(OFB)、密碼反饋(CFB)等。近來,已經(jīng)提出了計數(shù)模式和補償(offset)密碼本(OCB)模式。
這些不同的模式可以由獨立的硬件實現(xiàn)。但是,為了在一個芯片中實現(xiàn)所述各種模式,需要許多門電路。
發(fā)明內(nèi)容
因此,本發(fā)明涉及一種支持多種模式的加密裝置,它實質(zhì)地防止了由于現(xiàn)有技術(shù)的限制和缺點而產(chǎn)生的一個或多個問題。
本發(fā)明的一個目的是提供一種用于支持多種模式的加密裝置。
本發(fā)明的另一個目的是提供一種加密裝置,用于支持多種模式,并且同時所述加密裝置具有簡單的電路配置。
本發(fā)明的另一個目的是提供一種用于支持多種模式的通信系統(tǒng)。
在本發(fā)明的一個方面,提供了一種用于加密存儲在存儲器中的數(shù)據(jù)的加密裝置。所述裝置包括控制單元,用于響應(yīng)于外部提供的加密信息而產(chǎn)生控制信號;存儲器控制器,用于從存儲器讀出數(shù)據(jù);輸入緩沖器,用于存儲由存儲器控制器讀出的數(shù)據(jù);加密單元,用于加密存儲在輸入緩沖器中的數(shù)據(jù)塊;輸出緩沖器,用于存儲由加密單元加密的數(shù)據(jù)。所述存儲器控制器向存儲器寫入存儲在輸出緩沖器中的加密數(shù)據(jù),并且存儲器控制器、輸入緩沖器、加密單元和輸出緩沖器響應(yīng)于控制信號而操作。
在一個實施例中,控制單元響應(yīng)于加密信息而產(chǎn)生模式信號,所述模式信號指示初始矢量和操作模式。
在這個實施例中,所述操作模式可以是電子密碼本(ECB)模式、密碼字組鏈接(CBC)模式、CBC消息驗證(CBC-MAC)模式和計數(shù)器(CNT)模式中的任何一個。
在這個實施例中,所述加密單元可以包括數(shù)據(jù)輸入寄存器,用于存儲從輸入緩沖器提供的數(shù)據(jù);加密器,用于加密存儲在數(shù)據(jù)輸入寄存器中的數(shù)據(jù);數(shù)據(jù)輸出寄存器,用于存儲由加密器加密的數(shù)據(jù)。
在這個實施例中,加密單元可以以ECB模式操作。
在一個實施例中,加密單元還包括初始矢量寄存器,用于存儲從控制單元提供的初始矢量;第一邏輯運算器,用于對于存儲在初始矢量寄存器中的初始矢量和存儲在數(shù)據(jù)輸入寄存器中的數(shù)據(jù)執(zhí)行邏輯運算。
在這個實施例中,加密單元可以CBC模式和CBC-MAC模式之中的任何一個來操作。
在一個實施例中,加密單元可以以CBC-MBC模式操作,存儲器控制器不向存儲器寫入存儲在輸出緩沖器中的加密數(shù)據(jù)。
在一個實施例中,加密單元可以包括初始矢量寄存器,用于存儲從控制單元提供的初始矢量;加法器,用于向存儲在初始矢量寄存器中的數(shù)據(jù)加上一個預(yù)定值,并且將相加的數(shù)據(jù)存儲在初始矢量寄存器中;加密器,用于加密存儲在初始矢量寄存器中的數(shù)據(jù);數(shù)據(jù)輸入寄存器,用于存儲來自輸入緩沖器的數(shù)據(jù);第二邏輯運算器,用于對由加密器加密的數(shù)據(jù)和存儲在數(shù)據(jù)輸入寄存器中的接收執(zhí)行邏輯運算;數(shù)據(jù)輸出寄存器,用于存儲第二邏輯運算器的輸出。
在這個實施例中,加密單元可以以CNT模式操作。
在一個實施例中,加密單元可以包括初始矢量寄存器,用于存儲從控制單元提供的初始矢量;數(shù)據(jù)輸入寄存器,用于存儲從輸入緩沖器提供的數(shù)據(jù);加密器,用于加密輸入數(shù)據(jù);數(shù)據(jù)輸出寄存器,用于存儲要被提供給輸出緩沖器的數(shù)據(jù);加法器;第一選擇電路,用于響應(yīng)于模式信號而作為輸入數(shù)據(jù)向加密器提供存儲在初始矢量寄存器中數(shù)據(jù)、存儲在初始矢量寄存器中的數(shù)據(jù)和存儲在數(shù)據(jù)輸入寄存器中的數(shù)據(jù)的邏輯運算的結(jié)果數(shù)據(jù)、存儲在數(shù)據(jù)輸入寄存器中的數(shù)據(jù)中的任何一種,并且響應(yīng)于模式信號而向加法器提供存儲在初始矢量寄存器中的數(shù)據(jù);第二選擇電路,用于響應(yīng)于模式信號而向數(shù)據(jù)輸出寄存器提供存儲在數(shù)據(jù)輸入寄存器中的數(shù)據(jù)與由塊加密器加密的數(shù)據(jù)的邏輯運算的結(jié)果數(shù)據(jù)、由塊加密器加密的數(shù)據(jù)中的任何一種,并且響應(yīng)于模式信號而向初始矢量寄存器提供被加密器加密的數(shù)據(jù)。加法器向從第一程序電路提供的數(shù)據(jù)加上預(yù)定值,并且將其存儲在初始矢量寄存器中。
在這個實施例中,第一選擇電路可以包括第一復(fù)用器;第一邏輯運算器;第二復(fù)用器,用于響應(yīng)于模式信號而向加法器和第一復(fù)用器或者向第一邏輯運算器提供存儲在初始矢量寄存器中的數(shù)據(jù);第三復(fù)用器,用于響應(yīng)于模式信號向第一邏輯運算器或第一復(fù)用器提供存儲在初始矢量寄存器中的數(shù)據(jù)。第一邏輯運算器接收來自第二和第三復(fù)用器的輸出,并且對它們執(zhí)行邏輯運算,并且第一復(fù)用器向加密單元傳送第二復(fù)用器的輸出、第一邏輯運算器的輸出和第三復(fù)用器的輸出中的任何一個。第二選擇電路可以包括第四復(fù)用器;第二邏輯運算器;第五復(fù)用器,用于響應(yīng)于模式信號向第二邏輯運算器、第四復(fù)用器、初始矢量寄存器和第四復(fù)用器與初始矢量寄存器兩者中的任何一個傳送加密單元的輸出。第二邏輯運算器接收第三和第五復(fù)用器的輸出,并且執(zhí)行邏輯運算,并且第四復(fù)用器作為數(shù)據(jù)輸出的數(shù)據(jù)傳送第二邏輯運算器的輸出和第五復(fù)用器的輸出。
在一個實施例中,控制單元控制逐塊地向加密單元提供存儲在輸入緩沖器中的數(shù)據(jù)。
在這個實施例中,當存儲在輸入緩沖器中的最后的數(shù)據(jù)小于預(yù)定的塊大小時,控制單元可以執(zhí)行零填充。
在一個實施例中,輸入緩沖器是先入先出(FIFO)緩沖器。輸入緩沖器存儲至少兩個數(shù)據(jù)塊。
在一個實施例中,輸出緩沖器是先入先出(FIFO)緩沖器。輸出緩沖器可以存儲至少兩個加密的數(shù)據(jù)塊。
在一個實施例中,存儲器控制器是直接存儲器存取(DMA)控制器。
在本發(fā)明的另一個方面,提供了一種通信系統(tǒng),包括存儲器;加密裝置,用于加密存儲在存儲器中的數(shù)據(jù);中央處理器,用于控制所述加密器件的操作。所述加密裝置包括控制單元,用于響應(yīng)于從中央處理器提供的加密信息而產(chǎn)生控制信號;存儲器控制器,用于從存儲器讀出數(shù)據(jù);輸入緩沖器,用于存儲由存儲器控制器讀出的數(shù)據(jù);加密單元,用于加密存儲在輸入緩沖器中的數(shù)據(jù)塊;輸出緩沖器,用于存儲由加密單元加密的數(shù)據(jù)。存儲器控制器向存儲器寫入存儲在輸出緩沖器中的被加密的數(shù)據(jù),并且存儲器控制器、輸入緩沖器、加密單元和輸出緩沖器響應(yīng)于控制信號而操作。
通過更具體地說明本發(fā)明的一個優(yōu)選實施例,本發(fā)明的上述和其他目的、特征和優(yōu)點將會清楚,所述優(yōu)選實施例在附圖中得到圖解,其中,在不同的附圖中,相同的附圖標號指示相同的部件。所述附圖不必然成比例,重點相反放在圖解本發(fā)明的原理。
圖1包含根據(jù)本發(fā)明的一個優(yōu)選實施例的具有加密裝置的通信系統(tǒng)。
圖2包含圖1所示的加密裝置的方框圖。
圖3圖解了圖2所示的塊加密單元的一般電路配置;圖4圖解了用于圖2所示的工作在CBC模式或CBC-MAC模式的塊加密單元的電路配置。
圖5圖解了用于圖2所示的工作在CNT模式的塊加密單元的電路配置。
圖6包含根據(jù)本發(fā)明的一個優(yōu)選實施例的塊加密單元的方框圖。
圖7圖解了在圖1所示的加密裝置和存儲器之間的數(shù)據(jù)通信的示例。
圖8圖解了圖2所示的DMA控制器的有限狀態(tài)機(FSM)。
圖9圖解了根據(jù)圖2所示的輸入緩沖器、輸出緩沖器和塊加密單元的關(guān)系的FSM。
圖10a和圖10b圖解向數(shù)據(jù)尾部插入“0”的零填充的一個示例。
圖11示意性地圖解了OCB模式的加密處理。
圖12示意性地圖解了OCB模式的解密處理。
圖13圖解了存儲在圖1所示的存儲器的源地址SA0-SAm+1的數(shù)據(jù)塊I0-Im+1和存儲在圖1所示的存儲器的目的地址DA0-DAm+1的數(shù)據(jù)塊O0-Om+1。
具體實施例方式
以下,參照附圖來詳細說明本發(fā)明的優(yōu)選實施例。
圖1圖解了根據(jù)本發(fā)明的一個優(yōu)選實施例的具有加密裝置的通信系統(tǒng)。作為具有加密裝置的通信系統(tǒng),可以有臺式計算機、便攜計算機、PDA、移動通信終端等。參見圖1,通信系統(tǒng)包括CPU 10、存儲器20、加密裝置30、判定器40、系統(tǒng)總線50。存儲器20存儲加密程序,并且存儲明文和密文。CPU 10控制加密裝置30按照存儲在存儲器20中的加密程序工作。判定器40當許多DMA(直接存儲器存取)主控器(master)連接到系統(tǒng)總線50時授權(quán)DMA主控器使用系統(tǒng)總線50。在圖1所示的通信系統(tǒng)中,因為CPU 10和加密裝置30承擔DMA主控器的角色,因此使用判定器40。
圖2圖解了圖1所示加密裝置30的詳細配置。參見圖2,加密裝置30包括控制單元31、DMA控制器32、輸入緩沖器33、輸出緩沖器34、塊加密單元35。如果輸入從CPU 10提供的加密信息,即,源地址SA、目的地址DA、數(shù)據(jù)大小D_SIZE、塊大小B_SIZE、密鑰K、密鑰大小、方向(加密和解密)、初始矢量和模式,則控制單元31控制在加密裝置30中的部件。DMA控制器32讀出存儲在存儲器20的源地址的明文,將其存儲在輸入緩沖器33中,并且將存儲在輸出緩沖器34中的密文存儲到存儲器20的目的地址。存儲在輸入緩沖器33中的明文被逐塊地傳送到塊加密單元35。例如,如果塊加密單元35包括128比特的AES,則從輸入緩沖器33向塊加密單元35傳送的塊的大小是128比特。輸出緩沖器34存儲來自塊加密單元35的密文塊并且按照控制單元31的控制將所存儲的密文傳送到DMA控制器32。輸入緩沖器33和輸出緩沖器34包括先入先出(FIFO)緩沖器。它們的大小是在塊加密單元35處理的塊的兩倍,因此,輸入緩沖器33和輸出緩沖器34可以分別存儲兩個塊。例如,如果塊加密單元35一次可以處理的明文大小是128比特,則輸入緩沖器33和輸出緩沖器34的大小是256比特。在這個實施例中,輸入緩沖器33和輸出緩沖器34每個存儲兩個塊。輸入緩沖器33和輸出緩沖器34的大小可以被改變。塊加密單元35包括例如高級加密標準(AES)的塊加密器。將詳細地說明塊加密單元35如下。
圖3-5圖解了與圖2所示的塊加密單元35的模式相關(guān)聯(lián)的電路配置。圖3圖解了用于工作在電子密碼本(ECB)模式中的塊加密單元35的電路配置。參見圖3,ECB模式的塊加密單元35a包括數(shù)據(jù)輸入寄存器110、數(shù)據(jù)輸出寄存器120和塊加密器130。來自圖2所示的輸入緩沖器33的明文塊通過數(shù)據(jù)輸入寄存器110被輸入到塊加密器130。塊加密器130按照從控制單元31提供的密鑰K而執(zhí)行加密,并且向數(shù)據(jù)輸出寄存器120輸出密文。存儲在數(shù)據(jù)輸出寄存器120中的數(shù)據(jù)被輸出到圖2所示的輸出緩沖器34。
圖4圖解了用于圖2所示的工作在密碼字組鏈接(CBC)模式或CBC-消息驗證碼(CBC-MAC)模式的塊加密單元的電路配置。
參見圖4,塊加密單元35b包括初始值寄存器210、數(shù)據(jù)輸入寄存器220、數(shù)據(jù)輸出寄存器230、異或運算器240和塊加密器250。異或運算器240通過數(shù)據(jù)輸入寄存器220和在初始值寄存器210中設(shè)置的初始矢量數(shù)據(jù)對于來自圖2所示的輸入緩沖器33的明文塊執(zhí)行異或。在初始值寄存器210中設(shè)置的初始矢量數(shù)據(jù)被從控制單元31提供。異或運算器240的運算結(jié)果被傳送到塊加密器250。塊加密器250按照從控制單元31提供的密鑰K來加密異或運算器240的運算結(jié)果。來自塊加密器250的密文被存儲在數(shù)據(jù)輸出寄存器230和初始值寄存器210中。存儲在數(shù)據(jù)輸出寄存器230中的數(shù)據(jù)當輸出緩沖器34處于CBC模式中時被輸出到圖2所示的輸出緩沖器34。但是,當輸出緩沖器34處于CBC-MAC模式時它們不被輸出到輸出緩沖器34。當輸出緩沖器34在CBC-MAC模式中時,存儲在存儲器20中的所有明文被加密,并且僅僅存儲在初始值寄存器210中的最后數(shù)據(jù)被輸出到輸出緩沖器34。
圖5圖解了用于圖2所示的工作在計數(shù)器(CNT)模式的塊加密單元35的電路配置。參見圖5,塊加密單元35c包括寄存器310、數(shù)據(jù)輸入寄存器320、數(shù)據(jù)輸出寄存器330、加法器340、塊加密器350、異或運算器360。來自控制單元31的初始數(shù)據(jù)被存儲在寄存器310中。加法器340向存儲在寄存器310中的數(shù)據(jù)加1。加法器340的輸出被再次存儲在寄存器310。塊加密器350按照從控制單元31提供的密碼K來加密存儲在寄存器310中的數(shù)據(jù)。數(shù)據(jù)輸入寄存器320存儲來自圖2所示的輸入緩沖器33的明文塊。異或運算器360對塊加密器350的輸出和存儲在數(shù)據(jù)輸入寄存器320中的明文執(zhí)行異或運算,并且將運算結(jié)果存儲在數(shù)據(jù)輸出寄存器330中。存儲在數(shù)據(jù)輸出寄存器330中的數(shù)據(jù)是密文,并且被輸出到圖2所示的輸出緩沖器34。
如圖3-5所示,塊加密單元35根據(jù)加密模式需要稍微不同的電路配置。但是,如果用于每個模式的電路被獨立的配置,則需要較大的電路面積。在本發(fā)明中,提供了一種塊加密單元,它具有簡單的電路配置,并且工作在所有的加密模式中。
圖6包含根據(jù)本發(fā)明的一個優(yōu)選實施例的塊加密單元35的方框圖。
參見圖6,塊加密單元35包括寄存器410、數(shù)據(jù)輸入寄存器420、數(shù)據(jù)輸出寄存器430、加法器440、復(fù)用器450、451、453和454、去復(fù)用器452、異或運算器461和462、塊加密器470。當本發(fā)明被應(yīng)用到WLAN時,圖6所示的塊加密器470被配置作為高級加密標準(AES)塊加密器,但是可以在其他應(yīng)用中被配置為另一個塊加密器,諸如數(shù)據(jù)加密標準(DES)塊加密器或3-DES塊加密器。
寄存器410用于CBC、CBC-MAC和CNT模式中。圖2所示的控制單元31設(shè)置用于寄存器410的初始值。數(shù)據(jù)輸入寄存器420存儲從圖2所示的輸入緩沖器33輸入的明文塊。數(shù)據(jù)輸出寄存器430存儲從去復(fù)用器452輸出的密文。復(fù)用器450、451、453和454和去復(fù)用器452響應(yīng)于來自控制單元31的模式信號MD而工作。模式信號MD指示塊加密單元35的模式并且被配置了多個比特。在這個實施例中,因為塊加密單元35工作在CBC、CBC-MAC或CNT模式中,因此所述模式信號被配置為兩個比特。例如,如果模式信號MD是“00”,則它指示ECB模式。如果所述模式信號MD是“01”,則它指示CBC模式。如果模式信號MD是“10”,則它指示CBC-MAC模式。如果模式信號MD是“11”,則它指示CNT模式。在圖6中,粗體虛線表示在CNT模式中的數(shù)據(jù)移動路徑;粗體實線表示在CBC或CBC-MAC模式中的數(shù)據(jù)移動路徑;非粗體虛線表示在ECD模式中的數(shù)據(jù)移動路徑,并且實線表示在所有模式中的數(shù)據(jù)移動路徑。
復(fù)用器450當模式信號MD表示CNT模式時向加法器440和復(fù)用器453傳送存儲在寄存器410中的數(shù)據(jù)。復(fù)用器450當模式信號MD指示CBC模式或CBC-MAC模式時將存儲在寄存器410中的數(shù)據(jù)傳送到異或運算器461。復(fù)用器451當模式信號MD指示CBC模式或CBC-MAC模式時將存儲在存儲器20中的明文塊傳送到異或運算器461。復(fù)用器451當模式信號MD指示ECB模式時將存儲在數(shù)據(jù)輸入寄存器420的明文塊傳送到復(fù)用器453。復(fù)用器451當模式信號MD指示CNT模式時將存儲在數(shù)據(jù)輸入寄存器420的明文塊傳送到異或運算器461。復(fù)用器453響應(yīng)于模式信號而將復(fù)用器450和451的輸出以及異或運算器461的輸出之一傳送到塊加密器470。即,復(fù)用器453當模式信號MD是CNT模式時將復(fù)用器450的輸出向塊加密器470傳送。復(fù)用器453當模式信號MD是CBC模式或CBC-MAC模式時將異或運算器461的輸出向塊加密器470傳送。復(fù)用器453當模式信號MD是ECB模式時將復(fù)用器451的輸出傳送到塊加密器470。
復(fù)用器454響應(yīng)于模式信號而向異或運算器462、去復(fù)用器452或/和寄存器410傳送從塊加密器470輸出的密文。即,復(fù)用器454當模式信號MD指示CNT模式時將來自塊加密器470的密文傳送到異或運算器462。復(fù)用器454當模式信號MD指示ECB模式時將來自塊加密器470的密文傳送到去復(fù)用器452。復(fù)用器454當模式信號MD指示CBC模式或CBC-MAC模式時將來自塊加密器470的密文傳送到去復(fù)用器452和寄存器410。去復(fù)用器452當模式信號MD指示CNT模式時將異或運算器462的運算結(jié)果傳送到數(shù)據(jù)輸出寄存器430。去復(fù)用器452當模式信號MD指示ECB模式、CBC模式或CBC-MAC模式時將復(fù)用器454的輸出傳送到數(shù)據(jù)輸出寄存器430。
如上所述,本發(fā)明的塊加密單元35包括寄存器410、420、430、加法器440、復(fù)用器451、452、453、454、去復(fù)用器452、異或運算器461和462和塊加密器470,并且可以工作在所有的下列模式中ECB模式、CBC模式、CBC-MAC模式和CNT模式。
圖7圖解了圖1所示的加密裝置30和存儲器20之間的數(shù)據(jù)通信的示例。加密裝置30按照從CPU 10提供的源地址SA、目的地址DA和數(shù)據(jù)大小D_SIZE來訪問存儲器20。如圖7所示,加密裝置30讀取存儲在存儲器20的源地址SA的明文并且將其加密。加密裝置30向存儲器20的目的地址DA存儲被加密的密文。加密裝置30當在讀出步驟R0完成對于所讀取的明文PT0的加密時在第零寫入步驟W0中向存儲器20寫入密文CT0。類似地,依序執(zhí)行剩余的讀出步驟R1、R2和R3和剩余的寫入步驟W1、W2、W2。但是,如果加密裝置30依序執(zhí)行第零讀出步驟R0和第零寫入步驟W0并且在此執(zhí)行第一讀出步驟R1,則使得加密裝置30的性能變差。這是因為加密裝置30中的塊加密單元35沒有任何操作而空閑,而同時加密裝置30向存儲器20中寫入密文。在本發(fā)明中。為了克服這個問題,如上所述,輸入緩沖器33和輸出緩沖器34(參見圖2)被配置為是塊大小的兩倍。因此,讀出步驟和寫入步驟不被執(zhí)行為R0、W0、R1和W1,而是可以不同地改變用于執(zhí)行它們的順序。將說明讀出和寫入方法。
如上所述,塊加密單元35的空閑時間應(yīng)當被最小化以實現(xiàn)加密裝置30的最佳性能。為了如此,防止輸入數(shù)據(jù)進入缺乏(starvation)狀態(tài)是重要的。在本發(fā)明中,輸入緩沖器33是輸入到塊加密單元35的塊大小的兩倍。即。輸入緩沖器存儲兩個塊。因此,可以向輸入緩沖器33寫入新的數(shù)據(jù),并且同時塊加密單元35執(zhí)行加密。從塊加密單元35輸出的密文被臨時存儲在輸出緩沖器34中。因此,塊加密單元35即使在向存儲器20寫入密文之前也可以加密下一個明文塊。
同時,DMA控制器32不能從存儲器20讀出明文并且同時向存儲器20寫入密文。因此,控制單元31控制DMA控制器32按照預(yù)定的優(yōu)先級讀出和寫入。表1圖解了根據(jù)在數(shù)據(jù)輸出寄存器230和輸出緩沖器34中存儲的塊的數(shù)量的DMA控制器32的操作優(yōu)先級。
表1
表1的基本思想是如果在緩沖器33中存在空位,則向讀出操作提供優(yōu)先級。如果在輸出緩沖器34中存儲著至少一個塊,則向?qū)懭氩僮魈峁﹥?yōu)先級。在表1中,當輸入緩沖器33完全空并且輸出緩沖器被完全填充時,如果塊加密單元35不工作,則最好向輸入緩沖器讀出明文塊以控制塊加密單元35操作,并且在輸出緩沖器34中存儲的密文被寫入存儲器20。但是,當輸入緩沖器33完全空并且輸出緩沖器完全被填充時,如果塊加密單元35工作,則可以執(zhí)行任何讀出操作或?qū)懭氩僮?。但是,因為操作參考是必要的,因此設(shè)置DMA控制器32以執(zhí)行讀出操作。表1所示的NOP(無操作)表示DMA控制器32不執(zhí)行任何操作。
類似地,DMA控制器32和輸出緩沖器34的每個被配置來存儲至少兩個塊。塊加密單元35即使系統(tǒng)總線50處于忙狀態(tài)時可以也使用緩沖器33和34來執(zhí)行塊加密處理。
圖8圖解了圖2所示的DMA控制器的有限狀態(tài)機(FSM)。在圖8中,當應(yīng)當在存儲器20的源地址SA被讀出并且被加密的整個數(shù)據(jù)的大小D_SIZE大于由DMA控制器32從存儲器20讀出的數(shù)據(jù)的大小直到現(xiàn)在時,則讀出控制信號MORE_DATAR是1。當大小D_SIZE小于或等于由DMA控制器32從存儲器20讀出的數(shù)據(jù)的大小直到現(xiàn)在時,則讀出控制信號MORE_DATAR是0。當應(yīng)當在存儲器20的源地址SA被寫入并且被加密的整個數(shù)據(jù)的大小DATA_SIZE大于由DMA控制器32寫入的數(shù)據(jù)的大小直到現(xiàn)在時,則寫入控制信號MORE_DATAW是1。當大小IDATA_SIZE小于或等于由DMA控制器32寫入的數(shù)據(jù)的大小直到現(xiàn)在時,則寫入控制信號MORE_DATAW是0。
如果滿足表達式1,則控制單元31控制DMA控制器32從空閑狀態(tài)510向讀出狀態(tài)520過渡。
表達式1MORE_DATAR&&(RBUFCNT?。?)&&(RBUFCNT?。?‖WBUFCNT?。?)=1當DMA控制器32完成從存儲器20讀出數(shù)據(jù)(DMA_READ)時,讀出完成信號DMA_READ_DONE被激活,并且從讀出狀態(tài)520過渡到空閑狀態(tài)510。在此,讀出計數(shù)DMA_READ_CNT被加1。
當滿足表達式2時,控制單元31控制DMA控制器32從空閑狀態(tài)510向讀取狀態(tài)530過渡。
表達式2MORE_DATAW&&((RBUFCNT?。?)‖(RBUFCNT?。?&&WBUFCNT?。?))&&!CBC-MAC=1DMA控制器32激活寫入完成信號(DMA_WRITE_DONE),并且如果它完成向存儲器20寫入數(shù)據(jù)(DMA_WRITE)則從寫入狀態(tài)530向空閑狀態(tài)510過渡。在此,寫入計數(shù)DMA_WRITE_CNT被增加1。讀出完成信號DMA_WRITE_DONE和寫入完成信號DMA_WRITE_DONE被提供給控制單元31,并且讀出計數(shù)DMA_READ_CNT和寫入計數(shù)DMA_WRITE_CNT是在控制單元31中配置的計數(shù)器(未示出)的值。
表2和3中圖解了按照在從存儲器20讀出的數(shù)據(jù)的大小DATA_SIZE和讀出計數(shù)DMA_READ_CNT之間的關(guān)系的讀出控制信號MORE_DATAR的狀態(tài)和按照在向存儲器20寫入的數(shù)據(jù)的大小DATA_SIZE和寫入計數(shù)DMA_WRITE_CNT之間的關(guān)系的寫入控制信號MORE_DATAW的狀態(tài)。
表2
表3
圖9圖解了根據(jù)圖2所示的輸入緩沖器33、輸出緩沖器34和塊加密單元35的關(guān)系的FSM。參見圖9,如果數(shù)據(jù)保持由塊加密單元35處理(即讀出控制信號是1),則控制單元31控制塊加密單元35從空閑狀態(tài)610向塊加密單元35查看狀態(tài)620過渡。當加密準備好開始時,塊加密單元35將輸入準備好信號INPUT_READY激活為1。塊加密單元35當它完成加密當前的輸入塊時將完成信號OUTPUT_READY激活為1。
如果輸入準備好信號INPUT_READY是1并且在輸入緩沖器33中存在任何數(shù)據(jù),則處于查看狀態(tài)620的塊加密單元35過渡到狀態(tài)640以將數(shù)據(jù)從輸入緩沖器33向塊加密單元35傳送。如果完成了從輸入緩沖器33向塊加密單元35傳送數(shù)據(jù),則塊加密單元35激活輸入完成信號INPUT_DONE,并且將其傳送到查看狀態(tài)620。
如果輸出準備好信號OUTPUT_READY是1并且輸入緩沖器33未被完全填充,則處于查看狀態(tài)620的塊加密單元35過渡到狀態(tài)630以將數(shù)據(jù)從塊加密單元35向輸出緩沖器34傳送。當完成從塊加密單元35向輸出緩沖器34傳送數(shù)據(jù)時,塊加密單元35激活輸出完成信號OUTPUT_DONE,并且再次過渡到查看狀態(tài)。
在圖8和9中,在CBC-MAC模式中,因為當完成加密每個塊時產(chǎn)生的密文不必要,因此不必向存儲器20寫入密文。因此,為了在CBC-MAC模式最少地使用加密裝置30的系統(tǒng)總線50,當完成加密所有塊時,僅僅必須向存儲器20的目的地址DA寫入一次存儲在寄存器410中的數(shù)據(jù)。
圖10a和圖10b圖解向數(shù)據(jù)尾部插入“0”的零填充的一個示例。參見圖10a,當數(shù)據(jù)幀包括n個幀并且一個塊的大小是L1時,最后第n個塊的大小總不是L1。例如,如果第n個塊的大小L2小于L1時,則執(zhí)行零填充以向數(shù)據(jù)的尾部插入“0”,以便第n個塊的大小可以是L1。即,如果從CPU 10接收的數(shù)據(jù)的大小不是塊大小的整數(shù)倍數(shù)大時,控制單元31通過DMA控制器32對于輸入到輸入緩沖器33的最后一個塊執(zhí)行零填充。如圖10b所示,控制單元31向存儲在輸入緩沖器33中第n個塊的最后插入“0”,以便第n個塊的大小可以是L1。
即,在CPU 10和存儲器20之間通信的數(shù)據(jù)如下。首先,CPU 10向加密裝置30的控制單元31傳送控制信息。所述控制信息包括源地址、目的地址、數(shù)據(jù)大小、密鑰、密鑰大小、方向(加密或解密)、初始矢量和模式。
一般,要被加密的數(shù)據(jù)、即明文應(yīng)當被存儲在存儲器20的源地址。然后,CPU 10向加密裝置30通告控制信息,并且加密裝置30執(zhí)行加密。密文被存儲在目的地址。根據(jù)本發(fā)明,在CPU 10和加密裝置30之間的互連被最小化以防止系統(tǒng)的性能變差。
同時,在CPU 10和加密裝置30之間通信的控制信息和數(shù)據(jù)依賴于模式。在ECB模式中,明文應(yīng)當被存儲在存儲器20的源地址,而密文被存儲在存儲器20的目的地址。在ECB模式中,源地址可以與目的地址相同。CPU 10應(yīng)當向加密裝置30提供的控制信息包括源地址、目的地址、密鑰、密鑰大小、數(shù)據(jù)大小、方向和模式。在ECB模式中,每當完成加密每個塊時,密文應(yīng)當被存儲在存儲器20的目的地址。
CBC模式類似于ECB模式,但是在控制信息中應(yīng)當包括初始矢量。在CBC-MAC模式中,由于用于每個塊的密文是不必要的,因此密文不必每個塊被寫入存儲器20。應(yīng)當完成加密所有塊,并且存儲在寄存器410中的數(shù)據(jù)應(yīng)當被傳送到CPU 10。
OCB模式需要由CPU 10進行大量的計算。圖11示意性地圖解了OCB模式的加密處理。圖12示意性地圖解了OCB模式的解密處理。本發(fā)明的加密裝置30按照精細設(shè)計的密碼本和補償而產(chǎn)生每個塊的密文。在圖11中,由附圖標號710和720描述的部分被CPU 10操作,并且由附圖標號730、740和750描述的第一到第三階段被加密裝置30執(zhí)行。
圖13圖解了存儲在圖1所示的存儲器的源地址SA0-SAm+1的數(shù)據(jù)塊I0-Im+1和存儲在圖1所示的存儲器的目的地址DA0-DAm+1的數(shù)據(jù)塊O0-Om+1。
參見圖11-13,加密裝置30像在ECB模式中一樣工作在OCB模式中。在第一階段730,存儲在存儲器20的源地址SA0中的數(shù)據(jù)塊I0被存儲在數(shù)據(jù)輸入寄存器420中(圖6)。塊加密器470加密存儲在數(shù)據(jù)輸入寄存器420中的數(shù)據(jù)庫I0,并且結(jié)果被存儲在數(shù)據(jù)輸出寄存器450中。存儲在數(shù)據(jù)輸出寄存器450中的數(shù)據(jù)作為Offset0被傳送到CPU 10。CPU 10按照從加密裝置30提供的Offset0和精細設(shè)置的密碼本Lntz(1)-Lntz(m)來計算補償Offset1-Offsetm,對存儲在存儲器的預(yù)定區(qū)域內(nèi)的明文M1-Mm和所計算的Offset1-Offsetm執(zhí)行異或運算,并且在存儲器20的源地址SA0-SAm+1存儲運算結(jié)果。
在第二階段740,加密裝置30讀出存儲在存儲器20的源地址SA0-SAm+1的數(shù)據(jù)塊,執(zhí)行加密,并且在存儲器20的目的地址DA0-DAm+1存儲被加密的數(shù)據(jù)塊O0-Om+1。
當加密裝置30的第二階段740完成它的操作時,CPU 10對存儲在目的地址DA0-DAm+1的數(shù)據(jù)塊O0-Om+1、補償Offset1-Offsetm和明文Mm執(zhí)行異或運算,并且產(chǎn)生密文C1-Cm。CPU 10對Offsetm的校驗和執(zhí)行異或運算,并且在源地址SAm+1存儲運算結(jié)果。
在第三階段,加密裝置30讀出在源地址SAm+1存儲的數(shù)據(jù)塊,執(zhí)行加密并且將被加密的數(shù)據(jù)塊Om+1存儲在存儲器20的目的地址DAm+1。CPU 10讀出存儲在存儲器20的目的地址DAm+1的數(shù)據(jù)Om+1,并且將數(shù)據(jù)Om+1的一些作為MIC。
參見圖12,將說明OCB模式的解密。在圖12中,由附圖標號810和820描述的部分被CPU 10操作,并且加密裝置30執(zhí)行由附圖標號830、840、850、860描述的第一到第四階段。OCB模式的解密被以圖11所示的OCB模式的加密的相反順序執(zhí)行,但是通過四個階段830-860來執(zhí)行解密。在此,在將加密裝置30設(shè)置為ECB模式的解密后執(zhí)行OCB模式的解密。
根據(jù)本發(fā)明,使用小和簡單的元件實現(xiàn)了用于在ECB、CBC、BCB-MAC、計數(shù)器和OCB模式中工作的加密裝置。另外,在CPU和加密裝置之間的數(shù)據(jù)通信被最小化以改善通信系統(tǒng)的性能。另一方面,在加密裝置中配置的輸入緩沖器和輸出緩沖器被配置來分別存儲至少兩個塊,以便最大化加密裝置的性能。而且,加密裝置支持零填充,以便最小化CPU的處理。
雖然已經(jīng)參照本發(fā)明的實施例具體示出和說明了本發(fā)明,本領(lǐng)域的技術(shù)人員會明白,在不脫離所附的權(quán)利要求所限定的本發(fā)明的精神和范圍的情況下,可以進行形式和細節(jié)上的各種改變。
權(quán)利要求
1.一種用于加密存儲在存儲器中的數(shù)據(jù)的加密裝置,所述裝置包括控制單元,用于響應(yīng)于外部提供的加密信息而產(chǎn)生控制信號;存儲器控制器,用于從存儲器讀出數(shù)據(jù);輸入緩沖器,用于存儲由存儲器控制器讀出的數(shù)據(jù);加密單元,用于加密存儲在輸入緩沖器中的數(shù)據(jù)塊;輸出緩沖器,用于存儲由加密單元加密的數(shù)據(jù);其中,所述存儲器控制器向存儲器寫入存儲在輸出緩沖器中的加密數(shù)據(jù),并且存儲器控制器、輸入緩沖器、加密單元和輸出緩沖器響應(yīng)于控制信號而操作。
2.如權(quán)利要求1所述的加密裝置,其中,控制單元響應(yīng)于加密信息而產(chǎn)生模式信號,所述模式信號指示初始矢量和模式。
3.如權(quán)利要求2所述的加密裝置,其中,所述模式是從電子密碼本(ECB)模式、密碼字組鏈接(CBC)模式、CBC消息驗證(CBC-MAC)模式和計數(shù)器(CNT)模式中選擇的任何一個。
4.如權(quán)利要求3所述的加密裝置,其中,所述加密單元包括數(shù)據(jù)輸入寄存器,用于存儲從輸入緩沖器提供的數(shù)據(jù);加密器,用于加密存儲在數(shù)據(jù)輸入寄存器中的數(shù)據(jù);數(shù)據(jù)輸出寄存器,用于存儲由加密器加密的數(shù)據(jù)。
5.如權(quán)利要求4所述的加密裝置,其中,加密單元以ECB模式操作。
6.如權(quán)利要求4所述的加密裝置,其中,加密單元還包括初始矢量寄存器,用于存儲從控制單元提供的初始矢量;第一邏輯運算器,用于對于存儲在初始矢量寄存器中的初始矢量和存儲在數(shù)據(jù)輸入寄存器中的數(shù)據(jù)執(zhí)行邏輯運算。
7.如權(quán)利要求6所述的加密裝置,其中,加密單元以CBC模式和CBC-MAC模式之中的任何一個來操作。
8.如權(quán)利要求7所述的加密裝置,其中,當加密單元以CBC-MBC模式操作時,存儲器控制器不向存儲器寫入存儲在輸出緩沖器中的加密數(shù)據(jù)。
9.如權(quán)利要求3所述的加密裝置,其中,加密單元包括初始矢量寄存器,用于存儲從控制單元提供的初始矢量;加法器,用于向存儲在初始矢量寄存器中的數(shù)據(jù)加上一個預(yù)定值,并且將相加的數(shù)據(jù)存儲在初始矢量寄存器中;加密器,用于加密存儲在初始矢量寄存器中的數(shù)據(jù);數(shù)據(jù)輸入寄存器,用于存儲來自輸入緩沖器的數(shù)據(jù);第二邏輯運算器,用于對由加密器加密的數(shù)據(jù)和存儲在數(shù)據(jù)輸入寄存器中的數(shù)據(jù)執(zhí)行邏輯運算;數(shù)據(jù)輸出寄存器,用于存儲第二邏輯運算器的輸出。
10.如權(quán)利要求9所述的加密裝置,其中,加密單元以CNT模式操作。
11.如權(quán)利要求3所述的加密裝置,其中,加密單元包括初始矢量寄存器,用于存儲從控制單元提供的初始矢量;數(shù)據(jù)輸入寄存器,用于存儲從輸入緩沖器提供的數(shù)據(jù);加密器,用于加密輸入數(shù)據(jù);數(shù)據(jù)輸出寄存器,用于存儲要提供給輸出緩沖器的數(shù)據(jù);加法器;第一選擇電路,用于響應(yīng)于模式信號而作為輸入數(shù)據(jù)向加密器提供存儲在初始矢量寄存器中數(shù)據(jù)、存儲在初始矢量寄存器中的數(shù)據(jù)和存儲在數(shù)據(jù)輸入寄存器中的數(shù)據(jù)的邏輯運算的結(jié)果數(shù)據(jù)、存儲在數(shù)據(jù)輸入寄存器中的數(shù)據(jù)中的任何一種,并且響應(yīng)于模式信號而向加法器提供存儲在初始矢量寄存器中的數(shù)據(jù);第二選擇電路,用于響應(yīng)于模式信號而向數(shù)據(jù)輸出寄存器提供存儲在數(shù)據(jù)輸入寄存器中的數(shù)據(jù)與由塊加密器加密的數(shù)據(jù)的邏輯運算的結(jié)果數(shù)據(jù)和由塊加密器加密的數(shù)據(jù)中的任何一種,并且響應(yīng)于模式信號而向初始矢量寄存器提供被加密器加密的數(shù)據(jù),其中,加法器向從第一程序電路提供的數(shù)據(jù)加上預(yù)定值,并且將其存儲在初始矢量寄存器中。
12.如權(quán)利要求11所述的加密裝置,其中,第一選擇電路包括第一復(fù)用器;第一邏輯運算器;第二復(fù)用器,用于響應(yīng)于模式信號而向加法器和第一復(fù)用器或者向第一邏輯運算器提供存儲在初始矢量寄存器中的數(shù)據(jù);和第三復(fù)用器,用于響應(yīng)于模式信號向第一邏輯運算器或第一復(fù)用器提供存儲在初始矢量寄存器中的數(shù)據(jù),其中,第一邏輯運算器接收來自第二和第三復(fù)用器的輸出,并且對它們執(zhí)行邏輯運算,并且第一復(fù)用器向加密單元傳送第二復(fù)用器的輸出、第一邏輯運算器的輸出和第三復(fù)用器的輸出中的任何一個。
13.如權(quán)利要求12所述的加密裝置,其中,第二選擇電路包括第四復(fù)用器;第二邏輯運算器;第五復(fù)用器,用于響應(yīng)于模式信號向第二邏輯運算器、第四復(fù)用器、初始矢量寄存器和第四復(fù)用器與初始矢量寄存器兩者中的任何一個傳送加密單元的輸出,其中,第二邏輯運算器接收第三和第五復(fù)用器的輸出,并且執(zhí)行邏輯運算,并且第四復(fù)用器把第二邏輯運算器的輸出和第五復(fù)用器的輸出作為數(shù)據(jù)輸出數(shù)據(jù)傳送。
14.如權(quán)利要求1所述的加密裝置,其中,控制單元控制逐塊地向加密單元提供存儲在輸入緩沖器中的數(shù)據(jù)。
15.如權(quán)利要求14所述的加密裝置,其中,當存儲在輸入緩沖器中的最后的數(shù)據(jù)小于預(yù)定的塊大小時,控制單元執(zhí)行零填充。
16.如權(quán)利要求1所述的加密裝置,其中,輸入緩沖器是先入先出(FIFO)緩沖器。
17.如權(quán)利要求1所述的加密裝置,其中,輸入緩沖器存儲至少兩個數(shù)據(jù)塊。
18.如權(quán)利要求1所述的加密裝置,其中,輸出緩沖器是先入先出(FIFO)緩沖器。
19.如權(quán)利要求1所述的加密裝置,其中,輸出緩沖器存儲至少兩個加密的數(shù)據(jù)塊。
20.如權(quán)利要求1所述的加密裝置,其中,存儲器控制器是直接存儲器存取(DMA)控制器。
21.一種通信系統(tǒng),包括存儲器;加密裝置,用于加密存儲在存儲器中的數(shù)據(jù);中央處理器,用于控制所述加密器件的運行;其中,所述加密裝置包括控制單元,用于響應(yīng)于從中央處理器提供的加密信息而產(chǎn)生控制信號;存儲器控制器,用于從存儲器讀出數(shù)據(jù);輸入緩沖器,用于存儲由存儲器控制器讀出的數(shù)據(jù);加密單元,用于加密存儲在輸入緩沖器中的數(shù)據(jù)塊;輸出緩沖器,用于存儲由加密單元加密的數(shù)據(jù),其中,存儲器控制器向存儲器寫入存儲在輸出緩沖器中的被加密數(shù)據(jù),并且存儲器控制器、輸入緩沖器、加密單元和輸出緩沖器響應(yīng)于控制信號而操作。
全文摘要
本發(fā)明涉及一種用于加密存儲在存儲器中的數(shù)據(jù)的加密裝置。本發(fā)明的加密裝置使用小和簡單的元件在ECB、CBC、CBC-MAC、計數(shù)器和OCB模式中運行。所述加密裝置最小化在CPU和加密裝置之間的數(shù)據(jù)通信以改善通信系統(tǒng)的性能。另一方面,加密裝置的輸入緩沖器和輸出緩沖器被配置來分別存儲至少兩個塊,以便最大化加密裝置的性能。而且,加密裝置支持零填充,以便最小化CPU的處理。
文檔編號H04L9/06GK1531240SQ20041000297
公開日2004年9月22日 申請日期2004年1月21日 優(yōu)先權(quán)日2003年1月24日
發(fā)明者樸泰建, 南京完, 樸永旭 申請人:三星電子株式會社