專利名稱:硬件加密引擎和加密方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及硬件加密引擎,尤其涉及一種硬件加密引擎。
背景技術(shù):
用戶可以使用智能卡(或IC卡)、因特網(wǎng)通信、和無(wú)線LAN通信等來(lái)傳輸信息。一些傳輸會(huì)涉及需要保護(hù)安全的秘密信息。因此,可以執(zhí)行硬件加密引擎來(lái)加密所述信息。加密的信息可稱作密文。硬件加密引擎可以通過(guò)執(zhí)行帶有適當(dāng)密鑰的加密算法來(lái)產(chǎn)生密文。
企圖越權(quán)訪問(wèn)信息的攻擊者可以采用致力于加密算法的理論弱點(diǎn)的攻擊方法。這些攻擊方法可以允許攻擊者解密通信。執(zhí)行理論近似法的攻擊方法在一些極其有限的條件下取得了成功。
攻擊者還可以采用包括監(jiān)控加密運(yùn)算的物理特征的攻擊方法。這些物理特征例如可以包括功率消耗量的差值和所執(zhí)行的運(yùn)算的時(shí)間差。基于監(jiān)視物理特征的攻擊方法能夠以比基于理論弱點(diǎn)的攻擊方法更短的時(shí)間和更少的努力來(lái)獲得密鑰(加密算法用其進(jìn)行加密和解密)。
可以通過(guò)硬件(例如,智能卡)來(lái)執(zhí)行加密運(yùn)算。例如,可以通過(guò)硬件來(lái)執(zhí)行諸如RSA和ECC等的公共密鑰算法。在公共密鑰算法中,可以用公共密鑰來(lái)執(zhí)行加密運(yùn)算。也可以通過(guò)硬件來(lái)執(zhí)行諸如數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)和高級(jí)加密標(biāo)準(zhǔn)(AES)等的對(duì)稱密鑰算法。在公共密鑰系統(tǒng)和對(duì)稱密鑰系統(tǒng)中都期望阻止攻擊者訪問(wèn)秘密信息。
圖1是現(xiàn)有技術(shù)的能夠執(zhí)行并行處理技術(shù)的硬件加密引擎的方框圖。這種硬件加密引擎可以執(zhí)行(例如)DES算法,通過(guò)DES算法,可以獨(dú)立地并且并行地操作兩個(gè)密文引擎100、200以處理加密。并行密文引擎100、200能夠根據(jù)傳輸數(shù)據(jù)(TXD)分別生成兩個(gè)相同的密文(CRYPTA)。每個(gè)密文引擎100、200可以通過(guò)16次舍入運(yùn)算,根據(jù)傳輸數(shù)據(jù)(TXD)生成密文(CRYPTA)。即,如圖1所示,每個(gè)舍入塊(舍入1至16)可以根據(jù)使用預(yù)定密鑰的DES算法來(lái)執(zhí)行加密運(yùn)算??梢酝瓿伤?6次舍入來(lái)生成密文(CRYPTA)。
可以通過(guò)各個(gè)舍入塊(舍入1至16)來(lái)使用密鑰。可以通過(guò)附加密鑰生成算法的密鑰次序表來(lái)生成密鑰。例如,如果使用8位字節(jié)DES密鑰,則可以生成舍入1至16的密鑰。根據(jù)特殊應(yīng)用程序,這些密鑰可以彼此不同也可以彼此相同,并且這些密鑰可以為私人密鑰也可以為公開(kāi)密鑰。
如果從兩個(gè)并行密文引擎100、200中輸出的密文(CRYPTA)是相同的,則可以通過(guò)預(yù)定傳輸模塊將密文(CRYPTA)傳輸給期望的目的節(jié)點(diǎn)。但是,如果在加密運(yùn)算期間出現(xiàn)了錯(cuò)誤,則從兩個(gè)并行密文引擎100、200分別輸出的密文可能不同。因此,為了防止泄露秘密信息,可以不將密文(CRYPTA)發(fā)送到目的節(jié)點(diǎn)。
圖2是圖1所示的兩個(gè)舍入塊的示意圖。第一和第二密文引擎100(200)的舍入塊(舍入1至16)的每個(gè)可以包括加密單元120(200)和異或(XOR)邏輯110(210)。當(dāng)?shù)谝缓偷诙芪囊?00、200通過(guò)16次舍入分別加密傳輸數(shù)據(jù)(TXD),并且輸出相同的密文(CRYPTA)時(shí),后續(xù)電路可以將確定沒(méi)有錯(cuò)誤的密文(CRYPTA)傳輸給目的節(jié)點(diǎn)。當(dāng)在加密運(yùn)算期間出現(xiàn)機(jī)械錯(cuò)誤時(shí),從兩個(gè)并行密文引擎100、200分別輸出的密文(CRYPTA0可能不同。為了防止泄露秘密信息,則不將密文(CRYPTA)發(fā)送到目的節(jié)點(diǎn)。
圖1中所示的現(xiàn)有技術(shù)設(shè)備并不是沒(méi)有缺點(diǎn)。例如,相應(yīng)的錯(cuò)誤會(huì)出現(xiàn)在第一和第二密文引擎100、200的相同位置。如圖2所示,在密文引擎100的塊和密文引擎200的塊中,相應(yīng)的錯(cuò)誤將把原始密文A轉(zhuǎn)變成錯(cuò)誤密文A’。因此,盡管出現(xiàn)了錯(cuò)誤,但是從兩個(gè)并行密文引擎100、200分別輸出的最終密文(CRYPTA)仍然相同,并且會(huì)將密文(CRYPTA)發(fā)送到目的節(jié)點(diǎn)。這將導(dǎo)致從硬件加密引擎中泄露秘密信息。例如,未經(jīng)授權(quán)的電腦黑客會(huì)產(chǎn)生出現(xiàn)在硬件加密引擎中的機(jī)械錯(cuò)誤。然后電腦黑客可以通過(guò)分析具有錯(cuò)誤的密文來(lái)找到在算法中所使用的密鑰。
已經(jīng)展開(kāi)了對(duì)電腦黑客所攻擊的錯(cuò)誤的可能性的調(diào)查,并且通過(guò)InfineonTechnologies宣布了范例事件。在這些錯(cuò)誤攻擊之中存在一種差異錯(cuò)誤攻擊(differential fault attack)(DFA)。(例如)在諸如DES等的對(duì)稱算法中,DFA會(huì)被想要通過(guò)具有錯(cuò)誤(錯(cuò)誤消息)的密文來(lái)獲得密鑰的電腦黑客誤用(為秘密信息獲得裝置)。
根據(jù)傳統(tǒng)智慧,可以通過(guò)執(zhí)行兩次恒等加密來(lái)防止DFA泄露秘密信息。可以比較加密的結(jié)果值。如果結(jié)果值彼此不同,則再次執(zhí)行加密,從而可以防止錯(cuò)誤。另一種傳統(tǒng)方法包括通過(guò)通信線路來(lái)輸入密文。存儲(chǔ)并解碼密文。再次加密解碼數(shù)據(jù)并且將其與通過(guò)通信線路所接收的密文相比較。盡管通常認(rèn)為這些傳統(tǒng)技術(shù)提供了可接受的結(jié)果,但是由于它們包括對(duì)兩次執(zhí)行的運(yùn)算的結(jié)果進(jìn)行比較,所以略顯麻煩。而且兩次執(zhí)行運(yùn)算會(huì)花費(fèi)大量的時(shí)間,因此降低了系統(tǒng)的運(yùn)算速度。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的示例性非限制實(shí)施例,在使用諸如使用兩個(gè)或兩個(gè)以上硬件加密引擎的DES等的對(duì)稱算法的并行加密處理期間,甚至當(dāng)相同的錯(cuò)誤出現(xiàn)在相同位置,一種硬件加密引擎可以防止輸出最終加密結(jié)果,從而防止泄露秘密信息。因此,這種引擎可以有力地防御錯(cuò)誤攻擊,并且可以不用重復(fù)地執(zhí)行加密運(yùn)算,從而提高引擎的運(yùn)算速度。
在一個(gè)示例性實(shí)施例中,在使用諸如使用兩個(gè)或兩個(gè)以上硬件加密引擎的DES等的對(duì)稱算法的并行加密處理期間,甚至當(dāng)相同的錯(cuò)誤出現(xiàn)在相同位置,通過(guò)一種硬件密碼方法,可以在輸出最終加密結(jié)果之前檢測(cè)出錯(cuò)誤,并且可以防止泄露秘密信息。因此,這種方法可以有力地防御錯(cuò)誤攻擊,并且可以不用重復(fù)地執(zhí)行加密運(yùn)算,從而提高引擎的運(yùn)算速度。
根據(jù)本發(fā)明的一個(gè)示例性實(shí)施里,一種硬件加密引擎可以包括可以生成中間密文的多個(gè)密文引擎。所述多個(gè)密文引擎中的第一個(gè)通過(guò)接收從多個(gè)密文引擎中的第二個(gè)輸出的第二中間密文來(lái)生成第一中間密文。當(dāng)密文引擎所生成的中間密文彼此相同時(shí),硬件加密引擎可以輸出最終密文。
根據(jù)本發(fā)明的一個(gè)示例性實(shí)施例,硬件加密引擎包括第一密文引擎、第二密文引擎、比較單元、和加密數(shù)據(jù)輸出單元。第一密文引擎接收從第二密文引擎中輸出的第二中間密文,生成第一中間密文,并且通過(guò)使用第一中間密文來(lái)生成和輸出第一最終密文。第二密文引擎輸出第二中間密文,并且通過(guò)使用第二中間密文來(lái)生成和輸出第二最終密文。根據(jù)第一最終密文是否與第二最終密文相同,比較單元生成和輸出具有邏輯狀態(tài)的控制信號(hào)。加密數(shù)據(jù)輸出單元響應(yīng)控制信號(hào)的邏輯狀態(tài),并且當(dāng)?shù)谝蛔罱K密文與第二最終密文相同時(shí)輸出最終密文。
第二密文引擎接收從第一密文引擎中輸出的第一中間密文,并且生成第二中間密文。第一密文引擎和第二密文引擎中的每一個(gè)包括多個(gè)舍入塊和一個(gè)邏輯電路。每個(gè)邏輯電路具有相應(yīng)第一中間密文和相應(yīng)第二中間密文的輸入。第一密文引擎的每個(gè)舍入塊生成相應(yīng)第一中間密文,并且第二密文引擎的每個(gè)舍入塊生成相應(yīng)第二中間密文。如果沒(méi)有出現(xiàn)錯(cuò)誤,則相應(yīng)第一中間密文與相應(yīng)第二中間密文相同。邏輯電路還具有與第二密文引擎中的相應(yīng)第二中間密文相同的其它中間密文的輸入,以及與第一密文引擎中的相應(yīng)第一中間密文相同的其它中間密文的輸入。將奇數(shù)個(gè)中間密文輸入到邏輯電路。在每個(gè)舍入塊中放置邏輯電路。在兩個(gè)相鄰密文引擎的每個(gè)舍入塊中至少使用一次邏輯電路。
根據(jù)本發(fā)明的另一個(gè)示例性實(shí)施例,提供一種用于加密傳輸數(shù)據(jù)的方法。所述方法包括執(zhí)行第一加密。第一加密包括通過(guò)接收第二中間密文來(lái)生成第一中間密文,并且使用第一中間密文來(lái)生成和輸出第一最終密文。所述方法還包括執(zhí)行第二加密。第二加密包括輸出第二中間密文,并且通過(guò)使用第二中間密文來(lái)生成和輸出第二最終密文。所述方法還包括根據(jù)所述第一最終密文是否與所述第二最終密文相同來(lái)生成和輸出具有邏輯狀態(tài)的控制信號(hào)。響應(yīng)控制信號(hào)的邏輯狀態(tài),當(dāng)?shù)谝蛔罱K密文與第二最終密文相同時(shí)輸出最終密文。
根據(jù)另一個(gè)示例性實(shí)施例,一種用于加密傳輸數(shù)據(jù)的密文引擎包括多個(gè)用于生成相應(yīng)中間密文的舍入塊。舍入塊中的一個(gè)接收包括來(lái)自另一個(gè)密文引擎的中間密文的奇數(shù)個(gè)中間密文輸入,從而生成相應(yīng)中間密文。
在一個(gè)示例性實(shí)施例中,一種用于操作密文引擎的方法包括輸入包括來(lái)自另一個(gè)密文引擎的中間密文的奇數(shù)個(gè)中間密文。所述方法還包括根據(jù)奇數(shù)個(gè)中間密文來(lái)生成輸出密文。
根據(jù)本發(fā)明的另一個(gè)示例性實(shí)施例,一種用于加密傳輸數(shù)據(jù)的密文引擎的舍入塊包括用于生成中間密文的加密單元。第一邏輯算子接收包括來(lái)自另一個(gè)密文引擎的中間密文的中間密文的奇數(shù),從而生成中間密文。第二邏輯算子接收加密單元所生成的中間密文和第一邏輯算子所生成的中間密文。
在一個(gè)示例性實(shí)施例中,提供一種用于操作密文引擎的舍入塊的方法,其中所述密文引擎用于加密傳輸數(shù)據(jù)。所述方法包括生成加密單元的中間密文;以及根據(jù)包括來(lái)自另一個(gè)密文引擎的中間密文的奇數(shù)個(gè)中間密文的輸入來(lái)生成第一邏輯算子的中間密文。根據(jù)加密單元的中間密文的輸入,生成第二邏輯算子的中間密文和第一邏輯算子的中間密文。
從以下結(jié)合附圖的示例性非限制性實(shí)施例的描述中,本發(fā)明的各種特征將變得更加明白,其中圖1是現(xiàn)有技術(shù)的硬件加密引擎的方框圖;圖2是如圖1所示的兩個(gè)舍入塊的示意圖;圖3是根據(jù)本發(fā)明的示例性實(shí)施例的硬件加密引擎的方框圖;圖4是密文引擎的示例性功能的部分示意圖;圖5是密文引擎的另一示例性功能的部分示意圖;圖6是密文引擎的另一示例性功能的部分示意圖;以及圖7是根據(jù)本發(fā)明的另一示例性實(shí)施例的硬件加密引擎的方框圖。
具體實(shí)施例方式
現(xiàn)在將參照附圖來(lái)更詳細(xì)地描述本發(fā)明的示例性實(shí)施例。在所有附圖中,相同的附圖標(biāo)記用于表示相同的部件。
參見(jiàn)圖3,根據(jù)本發(fā)明的示例性非限制性實(shí)施例的硬件加密引擎包括第一密文引擎310、第二密文引擎320、比較單元330、和加密數(shù)據(jù)輸出單元340。
在整個(gè)說(shuō)明書(shū)中,將對(duì)“中間密文”進(jìn)行參考,所述“之間密文”表示處于由密文引擎310、320處理的中間階段的密文。而且,術(shù)語(yǔ)“第一”和“第二”是用于分別修飾關(guān)于第一和第二密文引擎310、320的特征的形容詞。例如,術(shù)語(yǔ)“第一中間密文”表示第一密文引擎310所生成的中間密文,而術(shù)語(yǔ)“第二中間密文”則表示第二密文引擎320所生成的中間密文。
第一密文引擎310加密輸入的傳輸數(shù)據(jù)(TXD)。在加密處理期間,第一密文引擎310從第二密文引擎320接收第二中間密文,生成第一中間密文,并且通過(guò)使用第一中間密文來(lái)生成和輸出第一最終密文(CRYPTA)。
第二密文引擎320也加密所輸入的傳輸數(shù)據(jù)(TXD)。在加密處理期間,第二密文引擎320將在每次舍入中所生成的第二中間密文輸入到第一密文引擎310。第二密文引擎320生成并輸出第二最終密文(CRYPTB)。
根據(jù)第一最終密文(CRYPTA)是否與第二最終密文(CRYPTB)相同,比較單元330生成具有不同邏輯狀態(tài)的輸出控制信號(hào)(SAMD)。
如輸出控制信號(hào)(SAMD)的邏輯狀態(tài)所示,當(dāng)?shù)谝蛔罱K密文(CRYPTA)與第二最終密文(CRYPTB)相同時(shí),加密數(shù)據(jù)輸出單元340輸出最終密文(CRYPD)。例如,響應(yīng)輸出控制信號(hào)(SAMD)的有效狀態(tài)(例如,邏輯“高”狀態(tài)),加密數(shù)據(jù)輸出單元340輸出最終密文(CRYPTD)。
為了便于說(shuō)明和方便理解,圖3示出了一種情況(scenario),在圖3的這種情況中,可以將從第二密文引擎320的每次舍入中輸出的中間密文輸入到第一密文引擎310的相應(yīng)舍入中。但是,本發(fā)明并不局限于這個(gè)方面,并且可以以各種方法來(lái)進(jìn)行修改。例如,可以僅從第二密文引擎320的選擇舍入中輸出中間密文,并且將其輸入給第一密文引擎310的相應(yīng)舍入。也可以將來(lái)自第二密文引擎320的一次舍入的中間密文發(fā)送到第一密文引擎310的多次舍入中。
圖4是圖3所示的密文引擎310、320的示例性功能的部分示意圖。這里,在左邊示出了第一密文引擎310的舍入塊,而在右邊示出了第二密文引擎320的舍入塊。
第一密文引擎310的每個(gè)舍入塊包括兩個(gè)XOR邏輯電路和一個(gè)加密單元(F)。例如,圖4中所示的第一密文引擎310的最低舍入塊包括上XOR邏輯電路318、下XOR邏輯電路319、和加密單元313。第二密文引擎320的每個(gè)舍入塊包括一個(gè)XOR邏輯電路和一個(gè)加密單元。例如,圖4中所示的第二密文引擎320的最低舍入塊包括XOR邏輯電路328和加密單元323??梢栽诿總€(gè)密文引擎310、320中重復(fù)放置如上所述的舍入塊。但是,也可以進(jìn)行選擇性的設(shè)計(jì)。
在典型的DES算法結(jié)構(gòu)中,舍入塊可以通過(guò)16次舍入重復(fù)執(zhí)行加密。加密單元(F)根據(jù)DES算法接收預(yù)定密鑰,并且加密和輸出數(shù)據(jù)。與第二密文引擎320相比,第一密文引擎310包括具有附加X(jué)OR邏輯電路(例如,上XOR邏輯電路318)的舍入塊??赡艹霈F(xiàn)在第一密文引擎310的每個(gè)舍入塊中的附加X(jué)OR邏輯電路能夠增強(qiáng)錯(cuò)誤檢測(cè)功能。此外,盡管可以在第一密文引擎310中實(shí)現(xiàn)了附加X(jué)OR邏輯電路,但是當(dāng)?shù)谝缓偷诙芪囊?10、320沒(méi)有錯(cuò)誤時(shí),如下文中所詳細(xì)描述的那樣,仍然可以操作在相同邏輯位置具有對(duì)稱相同值的第一和第二密文引擎310、320。
第一密文引擎310的多個(gè)舍入塊中的每一個(gè)接收奇數(shù)個(gè)輸入,所述輸入包括來(lái)自第一密文引擎310的先前舍入塊的第一中間密文,和來(lái)自第二密文引擎320的相應(yīng)舍入塊的第二中間密文。參見(jiàn)圖4中所示的第一密文引擎310的最低舍入塊。這個(gè)舍入塊可以接收兩個(gè)第一中間密文A、B(來(lái)自第一密文引擎310的先前舍入塊),和第二中間密文C(來(lái)自第二密文引擎320)。這三個(gè)中間密文A、B、C是舍入塊的附加X(jué)OR邏輯電路318的輸入。
在沒(méi)有錯(cuò)誤的情況下,所有中間密文A、B、C具有相同的值。即,奇數(shù)個(gè)相同中間密文(包括第二中間密文C)是XOR邏輯電路318的輸入。當(dāng)奇數(shù)個(gè)輸入A、B、C相同時(shí),從XOR邏輯電路318中輸出的中間密文D則是正常的(即,沒(méi)有錯(cuò)誤)。這里,來(lái)自XOR邏輯電路318的中間密文D與第二中間密文C相同。中間密文D是第一密文引擎310中的舍入塊的XOR邏輯電路319的輸入,而第二中間密文C是第二密文引擎320中的相應(yīng)舍入塊的XOR邏輯電路328的輸入。這樣,可以運(yùn)算在相同邏輯位置具有相同值的第一和第二密文引擎310、320。
在這個(gè)示例性實(shí)施例中,附加X(jué)OR邏輯電路(例如,318)的奇數(shù)個(gè)輸入A、B、C是3。但是,本發(fā)明并不局限于此,并且輸入的數(shù)量可以大于3。
可以通過(guò)等式1來(lái)表示附加X(jué)OR邏輯電路(例如,318)的用于接收奇數(shù)個(gè)相同中間密文(可以為3或其它)的功能。在等式1中,m代表中間密文的數(shù)字?jǐn)?shù)據(jù)值,并且代表異或(XOR)邏輯算符mmm=m...(1)因此,在上述例子中,A、B、C、和D可以在相同的邏輯運(yùn)算位置上,并且除非存在錯(cuò)誤,這些將是相同的中間密文。
可以在每個(gè)舍入塊中放置用于接收三個(gè)或三個(gè)以上奇數(shù)個(gè)相同中間密文的附加X(jué)OR邏輯電路(例如,318)。但是,根據(jù)電路的客觀性和復(fù)雜性,一個(gè)舍入塊可以包括多個(gè)附加X(jué)OR邏輯電路。
現(xiàn)在考慮一種在第一和第二密文引擎310、320中出現(xiàn)錯(cuò)誤的情況。甚至錯(cuò)誤是相同的,并且出現(xiàn)在第一和第二密文引擎310、320的相應(yīng)位置上,從第一密文引擎310中輸出的最終密文(CRYPTA)將不同于從第二密文引擎320中輸出的最終密文(CRYPTB)。
例如,參見(jiàn)圖4,假設(shè)在可以生成第二中間密文C的邏輯運(yùn)算位置,第二密文引擎320中出現(xiàn)錯(cuò)誤。進(jìn)一步假設(shè)在可以生成第一中間密文A的邏輯運(yùn)算位置,第一密文引擎310中出現(xiàn)相同的錯(cuò)誤。這里,第二中間密文C和第一中間密文A都經(jīng)歷了錯(cuò)誤,并且第一中間密文B沒(méi)有經(jīng)歷錯(cuò)誤。因此,參見(jiàn)上述等式1,將密文A和C的值從m改變成m’。即,m’表示錯(cuò)誤中間密文A的數(shù)字?jǐn)?shù)據(jù)值。根據(jù)這些輸入,XOR邏輯電路318輸出具有值m的中間密文D??梢酝ㄟ^(guò)以下等式2來(lái)表示這項(xiàng)功能mm′m′=m...(2)因此,通過(guò)使用中間密文D(具有值m)來(lái)繼續(xù)加密和生成第一最終密文(CRYPTA),而通過(guò)使用中間密文C(具有值m’)來(lái)繼續(xù)加密和生成第二最終密文(CRYPTB)。因此,第一最終密文(CRYPTA)可能會(huì)不同于第二最終密文(CRYPTB),從而可以適當(dāng)?shù)貦z測(cè)出錯(cuò)誤的發(fā)生。
圖5是圖3所示的密文引擎的另一示例性功能的部分示意圖。這里,第一密文引擎310的舍入塊從第二密文引擎320接收第二中間密文(例如,D5),并且接收與中間密文D5具有相同密文的第一密文引擎310中的多個(gè)第一中間密文(例如,D1至D4)。尤其是,第一密文引擎310的舍入塊包括附加X(jué)OR邏輯電路(例如511),所述附加X(jué)OR邏輯電路接收密文D1至D5作為輸入。如果這五個(gè)中間密文是相同的,則可以通過(guò)以下等式3來(lái)表示XOR邏輯電路(例如,511)的功能mmmmm=m...(3)如上所述,第二密文引擎320也可以包括多個(gè)舍入塊。位于第二密文引擎320中的每個(gè)舍入塊可以輸出第二中間密文。
圖6是圖3所示的密文引擎的另一示例性功能的部分示意圖。這里,在加密傳輸輸入數(shù)據(jù)(TXD)期間,第二密文引擎320從第一密文引擎310接收第一中間密文(例如,F(xiàn)2),生成第二中間密文(F4),并且通過(guò)使用第二中間密文(F4)來(lái)生成和輸出第二最終密文(CRYPTB)。尤其是,第二密文引擎320的舍入塊可以包括附加X(jué)OR邏輯電路(例如,641)。附加X(jué)OR邏輯電路可以接收奇數(shù)個(gè)中間密文(大于或等于3),其中所述中間密文包括第二密文引擎320本身中的第二中間密文(例如,F(xiàn)1、F3)和來(lái)自第一密文引擎的第一中間密文(例如,F(xiàn)2)。第二中間密文(例如,F(xiàn)1、F3)可能具有與第一中間密文(F2)相同的值。因此,在沒(méi)有錯(cuò)誤的情況下,XOR邏輯電路641的輸出(F4)的邏輯運(yùn)算位置和密文與第一中間密文(F2)的邏輯運(yùn)算位置和密文相同。
圖7是根據(jù)本發(fā)明的另一示例性實(shí)施例的硬件加密引擎的方框圖。這里,硬件加密引擎包括多個(gè)密文引擎710、720、730,比較單元740,和加密數(shù)據(jù)輸出單元750。每個(gè)密文引擎710、720、730包括多個(gè)舍入塊。每個(gè)舍入塊具有與圖4至6所示的任一舍入塊相似的結(jié)構(gòu)和功能。
每個(gè)密文引擎710、720、730加密傳輸輸入數(shù)據(jù)(TXD)。在這種情況下,每個(gè)密文引擎接收和處理來(lái)自其它引擎的中間密文,并且生成具有與其它引擎具有相同邏輯運(yùn)算位置和密文的中間密文。通過(guò)使用所生成的中間密文,并且通過(guò)使用對(duì)稱相等的值的運(yùn)算,密文引擎710、720、730分別生成和輸出最終密文(CRYPT1)、(CRYPT2)、(CRYPTN)。
除了來(lái)自其它引擎的中間密文之外,密文引擎710、720、730的每個(gè)舍入塊進(jìn)一步接收具有與來(lái)自其它引擎的中間密文相同值的其它中間密文。這樣,每個(gè)舍入塊的XOR邏輯電路接收奇數(shù)個(gè)相同的中間密文(大于或等于3),所述相同的中間密文包括從其它引擎種所接收的中間密文。XOR邏輯電路的輸出的邏輯運(yùn)算位置和密文與其它引擎的中間密文的邏輯運(yùn)算位置和密文相同。這里,在每個(gè)舍入塊中放置用于接收三個(gè)或三個(gè)以上奇數(shù)個(gè)相同中間密文的XOR邏輯電路。也可以在兩個(gè)相鄰密文引擎的每個(gè)舍入塊中放置用于接收三個(gè)或三個(gè)以上奇數(shù)個(gè)相同中間密文的XOR邏輯電路。
根據(jù)來(lái)自密文引擎710、720、730的最終密文是否都相同,比較單元740生成和輸出具有不同邏輯狀態(tài)的控制信號(hào)(SAMD)。
加密數(shù)據(jù)輸出單元750(響應(yīng)所輸出的控制信號(hào)(SAMD)的邏輯狀態(tài))在最終密文(CRYPT1至CRYPTN)都相同時(shí),輸出最終密文(CRYPT1至CRYPTN)中的一個(gè)作為正常最終密文(CRYPTD)。例如,響應(yīng)所輸出的控制信號(hào)(SAMD)的有效狀態(tài),加密數(shù)據(jù)輸出單元750輸出最終密文(CRYPT1至CRYPTN)中的一個(gè)作為最終密文(CRYPTD)。
因此,在如圖7所示的硬件加密引擎中,如果在特定引擎的邏輯運(yùn)算位置出現(xiàn)錯(cuò)誤,并且在另一引擎的相同邏輯運(yùn)算位置出現(xiàn)相同的錯(cuò)誤,則從其它引擎中接收中間密文的引擎將輸出與其它引擎不同的最終密文。
根據(jù)本發(fā)明的這個(gè)示例性實(shí)施例,每個(gè)密文引擎710、720、730具有多個(gè)舍入塊。每個(gè)舍入塊接收奇數(shù)個(gè)中間密文(大于或等于3),所述中間密文包括從其它引擎中所接收的中間密文。奇數(shù)個(gè)中間密文為舍入塊的XOR邏輯電路的輸入。當(dāng)XOR邏輯電路的輸入相同時(shí),XOR邏輯電路的輸出的邏輯運(yùn)算位置和密文與從其它引擎中所接收的中間密文的邏輯運(yùn)算位置和密文相同。因此,甚至當(dāng)相同的錯(cuò)誤出現(xiàn)在多個(gè)密文引擎710、720、730的相同位置上時(shí),都可以在輸出最終加密結(jié)果之前檢測(cè)出錯(cuò)誤。
如上所述,在根據(jù)使用兩個(gè)或兩個(gè)以上硬件密文引擎的對(duì)稱算法(例如,DES)來(lái)執(zhí)行并行加密運(yùn)算的處理中,甚至當(dāng)相同的錯(cuò)誤出現(xiàn)在相同的位置,相關(guān)并行處理硬件加密引擎都可以在輸出最終加密結(jié)果之前檢測(cè)出錯(cuò)誤。這樣就可以防止泄露秘密信息。因此,這種引擎可以有力地防御錯(cuò)誤攻擊,并且由于不用重復(fù)地執(zhí)行加密運(yùn)算而具有較高的運(yùn)算速度。
已經(jīng)在上文及附圖中解釋和說(shuō)明了本發(fā)明的示例性實(shí)施例。但是本發(fā)明并不局限于所公開(kāi)的實(shí)施例,因?yàn)樵诓槐畴x所附權(quán)利要求所定義的本發(fā)明的精神和范圍的情況下,本領(lǐng)域的技術(shù)人員可以進(jìn)行各種各樣的修改。
例如,可以在硬件和/或軟件中執(zhí)行用于描述示例性裝置和方法的圖3-7中的部件。硬件/軟件實(shí)施例可以包括處理器和制造品的組合。制造品可以包括存儲(chǔ)介質(zhì)和可執(zhí)行計(jì)算機(jī)程序??蓤?zhí)行計(jì)算機(jī)程序可以包括用于執(zhí)行所描述的操作和功能的指令??梢詫⒂?jì)算機(jī)可執(zhí)行程序規(guī)定為外部提供的宣傳信號(hào)的一部分。并不認(rèn)為這些變化背離了本發(fā)明的示例性實(shí)施例的精神和范圍,并且所有這些對(duì)本領(lǐng)域的技術(shù)人員來(lái)所顯而易見(jiàn)的修改要被包括在以下權(quán)利要求書(shū)的范圍之內(nèi)。
權(quán)利要求
1.一種用于加密傳輸數(shù)據(jù)的硬件加密引擎,所述硬件加密引擎包括用于生成中間密文的多個(gè)密文引擎,所述多個(gè)密文引擎中的第一個(gè)通過(guò)接收從所述多個(gè)密文引擎中的第二個(gè)輸出的第二中間密文來(lái)生成第一中間密文。
2.如權(quán)利要求1所述的硬件加密引擎,其中如果沒(méi)有出現(xiàn)錯(cuò)誤,則所述第一中間密文與所述第二中間密文相同。
3.一種用于加密傳輸數(shù)據(jù)的硬件加密引擎,所述硬件加密引擎包括第一密文引擎,用于接收從第二密文引擎中輸出的第二中間密文,生成第一中間密文,并且使用所述第一中間密文來(lái)生成和輸出第一最終密文;第二密文引擎,用于輸出所述第二中間密文,并且使用所述第二中間密文來(lái)生成和輸出第二最終密文;比較單元,用于根據(jù)所述第一最終密文是否與所述第二最終密文相同來(lái)生成和輸出具有邏輯狀態(tài)的控制信號(hào);和加密數(shù)據(jù)輸出單元,用于響應(yīng)所述控制信號(hào)的邏輯狀態(tài),并且當(dāng)所述第一最終密文與所述第二最終密文相同時(shí)輸出最終密文。
4.如權(quán)利要求3所述的硬件加密引擎,其中所述第二密文引擎接收從所述第一密文引擎輸出的所述第一中間密文,并且生成所述第二中間密文。
5.如權(quán)利要求4所述的硬件加密引擎,其中所述第一密文引擎和所述第二密文引擎中的每一個(gè)包括多個(gè)舍入塊以及具有相應(yīng)第一中間密文和相應(yīng)第二中間密文的輸入的邏輯電路,所述第一密文引擎的每個(gè)舍入塊生成所述相應(yīng)第一中間密文,并且所述第二密文引擎的每個(gè)舍入塊生成所述相應(yīng)第二中間密文。
6.如權(quán)利要求5所述的硬件加密引擎,其中如果沒(méi)有出現(xiàn)錯(cuò)誤,則所述相應(yīng)第一中間密文與所述相應(yīng)第二中間密文相同。
7.如權(quán)利要求5所述的硬件加密引擎,其中所述邏輯電路進(jìn)一步具有與所述第二密文引擎中的相應(yīng)第二中間密文相同的其它中間密文的輸入,以及與所述第一密文引擎中的相應(yīng)第一中間密文相同的其它中間密文的輸入。
8.如權(quán)利5所述的硬件加密引擎,其中將奇數(shù)個(gè)中間密文輸入到所述邏輯電路。
9.如權(quán)利要求5所述的硬件加密引擎,其中在每個(gè)舍入塊中放置邏輯電路。
10.如權(quán)利要求5所述的硬件加密引擎,其中在兩個(gè)相鄰密文引擎的每個(gè)舍入塊中至少放置一次邏輯電路。
11.一種用于加密傳輸數(shù)據(jù)的方法,所述方法包括將第二密文引擎的第二中間密文輸入到第一密文引擎;使用所述第二中間密文來(lái)生成所述第一密文引擎的第一中間密文。
12.如權(quán)利要求11所述的方法,其中如果沒(méi)有出現(xiàn)錯(cuò)誤,則所述第一中間密文與所述第二中間密文相同。
13.一種用于加密傳輸數(shù)據(jù)的方法,所述方法包括執(zhí)行包括接收第二中間密文的第一加密來(lái)生成第一中間密文,并且使用所述第一中間密文來(lái)生成和輸出第一最終密文;執(zhí)行包括輸出所述第二中間密文的第二加密,并且使用所述第二中間密文來(lái)生成和輸出第二最終密文;根據(jù)所述第一最終密文是否與所述第二最終密文相同來(lái)生成和輸出具有邏輯狀態(tài)的控制信號(hào);以及當(dāng)所述第一最終密文與所述第二最終密文相同時(shí),通過(guò)輸出最終密文來(lái)響應(yīng)所述控制信號(hào)的邏輯狀態(tài)。
14.如權(quán)利要求13所述的方法,其中所述第二加密進(jìn)一步包括接收所述第一中間密文和生成所述第二中間密文。
15.如權(quán)利要求14所述的方法,其中在第一密文引擎的多個(gè)舍入塊中執(zhí)行所述第一加密,在第二密文引擎的多個(gè)舍入塊中執(zhí)行所述第二加密,并且所述第一密文引擎和所述第二密文引擎使用邏輯電路,所述邏輯電路接收相應(yīng)第一中間密文和相應(yīng)第二中間密文作為輸入。
16.如權(quán)利要求15所述的方法,其中如果沒(méi)有出現(xiàn)錯(cuò)誤,則所述相應(yīng)第一中間密文與所述相應(yīng)第二中間密文相同。
17.如權(quán)利要求15所述的方法,其中所述邏輯電路進(jìn)一步具有與所述第二密文引擎中的相應(yīng)第二中間密文相同的其它中間密文的輸入,以及與所述第一密文引擎中的相應(yīng)第一中間密文相同的其它中間密文的輸入。
18.如權(quán)利15所述的方法,其中將奇數(shù)個(gè)中間密文輸入到邏輯電路。
19.如權(quán)利要求15所述的方法,其中在每個(gè)舍入塊中放置邏輯電路。
20.如權(quán)利要求15所述的方法,其中在兩個(gè)相鄰密文引擎的每個(gè)舍入塊中至少使用一次邏輯電路。
21.一種根據(jù)權(quán)利要求11所述的方法來(lái)加密傳輸數(shù)據(jù)的硬件加密引擎。
22.一種根據(jù)權(quán)利要求13所述的方法來(lái)加密傳輸數(shù)據(jù)的硬件加密引擎。
23.一種用于加密傳輸數(shù)據(jù)的密文引擎,所述密文引擎包括多個(gè)舍入塊,用于生成相應(yīng)中間密文;其中所述多個(gè)舍入塊中的一個(gè)接收包括來(lái)自另一個(gè)密文引擎的中間密文的奇數(shù)個(gè)中間密文輸入,從而生成所述相應(yīng)中間密文。
24.一種用于操作密文引擎的方法,所述方法包括輸入包括來(lái)自另一個(gè)密文引擎的中間密文的奇數(shù)個(gè)中間密文;以及根據(jù)所述奇數(shù)個(gè)中間密文來(lái)生成輸出密文。
25.一種用于加密傳輸數(shù)據(jù)的密文引擎的舍入塊,所述舍入塊包括加密單元,用于生成中間密文;第一邏輯算子,用于接收包括來(lái)自另一個(gè)密文引擎的中間密文的奇數(shù)個(gè)中間密文,從而生成中間密文;和第二邏輯算子,用于接收由所述加密單元生成的中間密文和由所述第一邏輯算子生成的中間密文。
26.一種用于操作密文引擎的舍入塊的方法,所述密文引擎用于加密傳輸數(shù)據(jù),所述方法包括生成加密單元的中間密文;根據(jù)包括來(lái)自另一個(gè)密文引擎的中間密文的奇數(shù)個(gè)中間密文的輸入,生成第一邏輯算子的中間密文;以及根據(jù)所述加密單元的中間密文和所述第一邏輯算子的中間密文的輸入,生成第二邏輯算子的中間密文。
27.一種根據(jù)權(quán)利要求24所述的方法來(lái)操作的密文引擎。
28.一種密文引擎的舍入塊,所述舍入塊根據(jù)權(quán)利要求26所述的方法進(jìn)行運(yùn)算。
全文摘要
一種硬件加密引擎可以包括多個(gè)密文引擎。第一密文引擎接收從第二密文引擎中輸出的第二中間密文,生成第一中間密文,并且通過(guò)使用第一中間密文來(lái)生成和輸出第一最終密文。第二密文引擎輸出第二中間密文,并且使用第二中間密文來(lái)生成和輸出第二最終密文。根據(jù)第一最終密文是否與第二最終密文相同,比較單元生成和輸出具有邏輯狀態(tài)的控制信號(hào)。加密數(shù)據(jù)輸出單元可以響應(yīng)所輸出的控制信號(hào)的邏輯狀態(tài),并且當(dāng)?shù)谝蛔罱K密文與第二最終密文相同時(shí)輸出最終密文。密文引擎包括多個(gè)舍入塊,多個(gè)舍入塊中的一個(gè)接收包括來(lái)自另一個(gè)密文引擎的中間密文的奇數(shù)個(gè)中間密文輸入,從而生成相應(yīng)的中間密文。
文檔編號(hào)G06F21/00GK1592190SQ20041006828
公開(kāi)日2005年3月9日 申請(qǐng)日期2004年8月27日 優(yōu)先權(quán)日2003年8月29日
發(fā)明者李成雨 申請(qǐng)人:三星電子株式會(huì)社