本發(fā)明涉及一種消息驗證碼的生成以及,具體的說,用于基于第一消息和原始密鑰生成消息驗證碼的裝置和方法。
背景技術(shù):十幾年以來,人們一直使用側(cè)通道攻擊,例如簡單功耗分析(英語:SimplePowerAnalysis=SPA)和差分功耗分析(英語:DifferentialPowerAnalysis=DPA),對于對稱塊加密(Blockchiffren)的實施進行攻擊,該對稱塊加密例如由DES-加密算法(英語:DES=DataEncryptionStandard數(shù)據(jù)加密標準)或者由AES-加密算法(英語:AES=AdvancedEncryptionStandard高級加密標準)所使用。同樣地,還使用如SPA和DPA一類的側(cè)通道攻擊對像例如RSA加密算法(RSA=RivestShamirAdleman)和橢圓曲線密碼系統(tǒng)一類的非對稱的加密算法進行攻擊?!肮簟痹谶@里的意思是,攻擊者提取出運行加密算法的機密的密鑰。不用機密的密鑰運行的加密算法,例如哈希算法,就較少遭受側(cè)通道攻擊,因為這里在大部分情況下沒有更多的秘密在其中,例如密鑰,而只要以消息的形式(英語:message)M壓縮預先給定的信息。然而,存在一種哈希算法的應用,其中,使用了需要防止泄漏的機密的密鑰,具體來說就是計算所謂的消息驗證碼(英語:messageauthenticationcode)。“消息驗證碼”這個概念在下面用“MAC”縮略表示。MAC,粗略來說,就是由密鑰k和消息M組成的哈希值。此外,消息驗 證碼不僅僅是用來確保消息的完整性,而是還要額外地確保只能由擁有機密的密鑰k的一方使用該消息驗證碼。圖7描繪了根據(jù)現(xiàn)有技術(shù)的MAC生成法。以消息M形式的信息連同機密的密鑰k一起被輸入執(zhí)行MAC算法的裝置700。該裝置700計算與消息M和機密的密鑰k相關(guān)的消息驗證碼Mack(M)。因為在原則上,每一種沒有特別針對加強的算法的應用(該算法將像例如機密的密鑰一樣的不變的秘密內(nèi)容與變量和已知的輸入“混合”)都能夠通過DPA進行攻擊,所以這對于MAC計算也同樣適用。側(cè)通道攻擊經(jīng)常為了攻擊而利用關(guān)于處理器的耗電量的信息。在許多加密算法中,處理器在處理密鑰或中間結(jié)果的值為1的一個位時的耗電量,不同于處理器在處理密鑰或中間結(jié)果的值為0的一個位時的耗電量。所以,通常只有當密鑰或者與密鑰相關(guān)的中間結(jié)果的一個比特位的值為1時,才用加密算法進行計算,而在比特位值為0時,不進行計算。在這個實例中,相對于比特位值為0時,當比特位值為1時導致的耗電量更高。在其他情況下,例如只有當密鑰的特定的一個比特位或者與密鑰相關(guān)的中間結(jié)果的特定的一個比特位的值為0時,才執(zhí)行特定的指示。這也會導致處理器的耗電量不同,依據(jù)的是一比特位比特比特位的值是1還是0。所以,在原則上有可能的是,在知道關(guān)于處理器的耗電量的情況下,推導出關(guān)于機密的密鑰的結(jié)論,或者獲得關(guān)于與機密的密鑰相關(guān)的中間結(jié)果的結(jié)論,然后這個中間結(jié)果就又允許關(guān)于機密的密鑰的結(jié)論。于是以這種方法可能通過側(cè)通道攻擊確定由芯片卡使用的機密的密鑰,只要該芯片卡不針對側(cè)通道攻擊進行保護。然而,側(cè)通道攻擊不局限于分析耗電量。所以,在側(cè)通道攻擊的框架內(nèi)作為可選地例如也可以分析其他的特征變量,如電磁輻射量同樣可能依賴于密鑰或與密鑰相關(guān)的中間結(jié)果的比特位比特比特位值而有所不同。側(cè)通道攻擊的實例有簡單功耗分析(英語:SimplePowerAnalysis),在下文中稱為“SPA”,還有差分功耗分析(英語:DifferentialPowerAnalysis),在下文中稱為“DPA”。也可以采用錯誤攻擊法(Fehlerattacken)來進行攻擊。簡單來說,SPA是這樣工作的,即,記錄處理器的耗電量。然后觀察記錄下的功耗分布圖,并且對異常情況進行調(diào)查。于是,在可視地觀察功耗分布圖時,即例如時間變化趨勢圖中的耗電量,經(jīng)常在時間變化過程中出現(xiàn)明顯差異。耗電量較高的階段和耗電量較低的階段通常能夠明顯地區(qū)分開。如果分析例如處理器執(zhí)行DES加密算法的功耗分布圖,那么就能夠例如經(jīng)常明顯地識別出在DES加密時的16個重復的輪回。如果然后對功耗分布圖的這些被識別的輪回進行更詳盡的觀察,就經(jīng)常能夠推導出結(jié)論,例如以多少的比特位比特比特位值在何時進行了何種操作。而差分功耗分析(DPA)不是像在使用SPA時那樣可視地觀察例如處理器的功耗分布圖,而是使用統(tǒng)計工具確定在加密算法中使用的機密的密鑰。此外,在執(zhí)行加密算法時首先對于多個利用機密的密鑰而被加密的消息相應記錄下功耗分布圖,即例如處理器在時間趨勢圖中的耗電量,并且緊接著統(tǒng)計地進行分析。于是例如能利用以下經(jīng)常出現(xiàn)的情況,即,由加密算法計算得出的中間結(jié)果隨同被加密的消息經(jīng)常僅僅與加密的密鑰的一部分比特位相關(guān)。如果例如一個中間結(jié)果(例如可以是0或1)只與一個56位密鑰的6個比特位相關(guān),那么攻擊者在知道輸入值的情況下(即例如在密鑰的六個相關(guān)的比特位的所有26=64種不同的變化情況下的需要加密的消息)計算中間結(jié)果的值,并且然后例如為這64種不同變化情況的每一種情況從所有功耗分布圖中計算出平均功耗分布圖,這些功耗分布圖的中間結(jié)果采用一個特定的值,例如對于需要計算的比特位的值1。很有可能的是,對于這六個比特位值的64種不同可能性當中,那個正確的變化情況的平均的功耗分布圖,相比其他的平均功耗分布圖具有明顯的特點,因為通常這是唯一的,其中,所有為了計算平均功耗分布圖使用的功耗分布圖的消息在加密時實際上全部都導出同一個中間結(jié)果。為了防止DPA攻擊,人們建議了各種技術(shù)。一種技術(shù)例如是在進行使用密鑰的運算時添加噪聲。另一種技術(shù)是使用掩碼技術(shù),例如布爾掩碼和算術(shù)掩碼基本上,掩碼技術(shù)指的是在使用秘密信息的情況下(例如使用機密的密鑰)采用一種運算之前,首先掩碼使用密鑰的消息,也就是說改動消息。例如可以如下地實現(xiàn)掩碼,即,以一種攻擊者不知道的方式更換消息的若干比特位。另一種可能性是,這樣改動對其使用密鑰的消息,即,在使用秘密的位串情況下改動該消息,例如其中進行XOR運算,該運算將消息和秘密的位串彼此聯(lián)系起來。作為可選地或者作為補充,也可以進行AND運算和/或OR運算,從而對消息進行掩碼。然后,其中要使用密鑰的關(guān)鍵運算用到被掩碼的消息上,從而得出運算結(jié)果。那么該結(jié)果以被掩碼的形式存在。相應地,在進行運算以后再逆向去除掩碼,從而得到無掩碼的結(jié)果。需要保護的算法(其中,不僅要保護布爾運算還要保護算術(shù)運算),在采用掩碼技術(shù)時經(jīng)常需要常常將布爾掩碼換算成算術(shù)掩碼,并且反之亦然。例如對于哈希運算是如此,其中,與機密的位串進行哈希運算,并且必須針對側(cè)通道攻擊對其進行保護。為此,這種算法例如通過掩碼法進行保護,這些掩碼法或者用在軟件中時,需要耗費大量的計算時間,或者在硬件中實現(xiàn)時,需要占用相應大的面積。在計算MAC時,為那些在它們那方面在使用需要機密地保持的密鑰的情況下計算出的值計算哈希值。此外,值得做的是,發(fā)展能夠有效實現(xiàn)的方案來防止那些分析消息驗證碼的生成的側(cè)通道攻擊。
技術(shù)實現(xiàn)要素:因此,本發(fā)明的目的在于提出一種有效的方案,針對側(cè)通道攻擊對MAC的生成進行保護。在傳統(tǒng)的針對像例如DPA這樣的側(cè)通道攻擊的保護中,應用了傳統(tǒng)的MAC計算,正如例如這能夠在芯片卡上實現(xiàn)的那樣,人們可能采用例如那些也用來保護例如DES、AES、RSA等等的常見的技術(shù)。其中例如有掩碼法。因為MAC計算就是多次執(zhí)行哈希壓縮函數(shù),所以防DPA地設(shè)計哈希計算就已經(jīng)足夠。然而,針對側(cè)通道攻擊對哈希計算進行保護的耗費極大。如果在硬件模塊中應用哈希計算,那么設(shè)計的領(lǐng)域就會大幅度增加。如果在軟件中應用哈希計算,那么掩碼法的計算時間要增加好幾倍。本發(fā)明的實施方式能避免這些缺點,走的是另一條途徑。根據(jù)本發(fā)明的一種實施方式,提供一種用于基于第一消息和原始密鑰生成消息驗證碼的裝置。該裝置包括用于基于原始密鑰和第一消息產(chǎn)生生成的密鑰的密鑰生成器。此外,該裝置還包括用于基于被生成的密鑰和第一消息生成消息驗證碼的消息驗證碼生成器。以上實施方式避免了將MAC計算簡單地與常規(guī)的針對側(cè)通道攻擊的保護方案進行組合,這樣會有很多缺點。根據(jù)以上的實施例,保護問題轉(zhuǎn)移到另一種像例如防DPA的AES運算,或者另一種運算一樣的算法上,該另一種運算能滿足一定的條件,并且能夠容易設(shè)計為防DPA。所以,對于防DPA的應用場合,許多哈希算法不如對稱塊加密更適合;或者反過來說,對于防DPA的應用場合,對稱塊加密比哈希算法更適合。將針對側(cè)通道攻擊進行保護的問題例如轉(zhuǎn)移到防DPA的AES運算上,正如在優(yōu)選的實施方式中設(shè)計的那樣,除了其他原因,因而特別有利的是,因為防DPA的AES運算的實施一般總歸在芯片卡上存在。這種解決方案的其中一個優(yōu)點是,不必將哈希硬件或哈希軟件防DPA地實施, 而是取而代之針對側(cè)通道攻擊能夠動用標準實施方案,和/或動用在速度方面最優(yōu)化的實施方案,并且這種實施方案例如在芯片卡上經(jīng)??倸w存在。此外,可以利用以下情況,即,相比塊加密,哈希計算耗費的時間或者面積要多出幾倍,或者說反過來,塊加密能設(shè)計得比哈希計算在時間或面積上更有效率。根據(jù)一種實施方式,密鑰生成器能夠設(shè)置用于在使用密碼編寫的加密算法的情況下產(chǎn)生生成的密鑰。在另一種實施方式中,密鑰生成器能夠設(shè)置用于通過對第一消息進行哈希計算產(chǎn)生被生成的密鑰。在另一種實施方式中,密鑰生成器能夠設(shè)置用于產(chǎn)生被生成的密鑰,其中,對第一消息的一部分進行哈希計算。根據(jù)另一種實施方式,密鑰生成器能夠設(shè)置用于這樣產(chǎn)生被生成的密鑰,即,使被生成的密鑰的熵(Entropie)不小于原始密鑰的熵。在另一種實施方式中,密鑰生成器能夠設(shè)置用于這樣產(chǎn)生被生成的密鑰,即,當正好改變了第一消息或者原始密鑰的一個比特位時,在重新產(chǎn)生被生成的密鑰時,對具有第一預定義的比特位長度的所有可能的密鑰和具有第二預定義的比特位長度的所有第一消息而言,平均有45%到55%之間的被生成的密鑰的比特位發(fā)生變動。根據(jù)另一種實施方式,密鑰生成器能夠設(shè)置用于使用AES加密來產(chǎn)生被生成的密鑰。在另一種實施方式中,密鑰生成器能夠設(shè)置用于運用AESk(H(M))公式,其中,M表示第一消息,其中,H(M)表示第一消息M的哈希計算,其中,k表示原始密鑰,并且其中,AESk表示在使用原始密鑰k的情況下進行AES加密。根據(jù)另一種實施方式,密鑰生成器能夠具有保護裝置,該保護裝置設(shè)置用于針對側(cè)通道攻擊保護被生成的密鑰的產(chǎn)生。優(yōu)選地,保護裝置被設(shè)計用于針對第一消息進行掩碼運算,從而得到被掩碼的消息,其中,密鑰生成器能夠設(shè)置用于在原始密鑰和被掩碼的第一消息的基礎(chǔ)上產(chǎn)生被生成的密鑰。在另一種實施方式中,掩碼運算在此可以包括第一消息的更換或者第一消息與位串的XOR、AND或OR關(guān)聯(lián)。在另一種實施方式中,消息驗證碼生成器能夠設(shè)置用于進行M的哈希計算,從而計算出消息驗證碼。在另一種實施方式中,消息驗證碼生成器能夠設(shè)置用于,將被生成的密鑰在第一XOR運算中與第一常數(shù)進行關(guān)聯(lián),并且將被生成的密鑰在第二XOR運算中與第二常數(shù)進行關(guān)聯(lián)。根據(jù)另一種實施方式,消息驗證碼生成器能夠設(shè)置用于運用公式其中,M表示第一消息,其中,k′表示被生成的密鑰,其中,表示XOR運算,其中,||表示級聯(lián)運算,并且其中,H表示哈希運算。此外,提供了一種用于檢查消息的準確性和可信度的裝置,該裝置包括用于產(chǎn)生獲得的消息驗證碼的裝置和比較單元。該比較單元設(shè)置用于檢查獲得的消息驗證碼和接收到的消息驗證碼的一致性,從而檢查消息的準確性和可信度。根據(jù)一種實施方式,提供一種用于基于第一消息M和原始密鑰k的產(chǎn)生消息驗證碼的方法。以原始密鑰k和消息M為基礎(chǔ),產(chǎn)生被生成的 密鑰k′。然后,在被生成的密鑰k′和消息M的基礎(chǔ)上產(chǎn)生一個消息驗證碼。在另一種實施方式中,提供一種利用密鑰k基于消息M生成消息驗證碼MAC的流程或者說方法。該流程或者說方法具有以下特征:(i)通過一種相對消息來說防沖突的流程或者說方法從M和k中生成會議密鑰k′,即,如下地設(shè)計流程或者說方法,即,通過密碼很難找到兩個消息M1和M2,能使得k′(k,M1)=k′(k,M2)。(ii)在MAC算法中使用會議密鑰k′,從而利用被生成的密鑰k′由消息M產(chǎn)生MAC。優(yōu)選地,產(chǎn)生被生成的密鑰k′涉及到對消息M的哈希計算。此外還優(yōu)選的是,由輸入M、或者基于M計算出的哈希值、并且由原始密鑰k進行的密碼編寫的加密算法產(chǎn)生一個被生成的密鑰k′作為密碼。附圖說明參照附圖闡述優(yōu)選的實施方式,其中:圖1示出一種根據(jù)一種實施方式基于第一消息和原始密鑰產(chǎn)生消息驗證碼的裝置,圖2示出一種根據(jù)另一種實施方式基于第一消息和原始密鑰產(chǎn)生消息驗證碼的裝置,圖3示出一種根據(jù)一種實施方式基于第一消息和原始密鑰產(chǎn)生被生成的密鑰的裝置,圖4示出一種根據(jù)另一種實施方式,基于第一消息和原始密鑰,在使用HMAC的情況下產(chǎn)生消息驗證碼的裝置,圖5示出一種根據(jù)一種實施方式檢查消息的正確性和可信度的裝置,圖6示出一個流程圖,即描繪了根據(jù)另一種實施方式,基于第一消息和原始密鑰用于產(chǎn)生消息驗證碼的方法,圖7示出根據(jù)現(xiàn)有技術(shù)的消息驗證碼的產(chǎn)生,并且圖8示出根據(jù)現(xiàn)有技術(shù)的HMAC的產(chǎn)生。具體實施例方式圖1示出一種用于基于第一消息M和原始密鑰k產(chǎn)生消息驗證碼的裝置。該裝置包括用于基于原始密鑰k和第一消息M產(chǎn)生被生成的密鑰k′的密鑰生成器110。此外,該裝置還包括用于產(chǎn)生消息驗證碼MAC′k的消息驗證碼生成器120。裝置獲得消息M和原始密鑰k作為輸入。密鑰生成器設(shè)置用于在使用原始密鑰k和使用第一消息M的情況下產(chǎn)生被生成的密鑰k′。然后這個被生成的密鑰k′就被用于產(chǎn)生消息驗證碼。優(yōu)選地,密鑰生成器設(shè)置用于,在為不同的消息M1和M2編碼時,使得被生成的密鑰k′在絕大多數(shù)情況下與另一個被生成的密鑰相區(qū)別。因為像DPA這樣的側(cè)通道攻擊要求在密鑰k不變的情況下為多個消息獲得多個功耗分布圖,所以在本實施方式中成功進行側(cè)通道攻擊的前提條件不復存在,因為用于產(chǎn)生消息驗證碼的密鑰k′因此在不同的消息M1和M2的情況下幾乎總是不同的。于是,攻擊者不再能夠通過使用DPA獲得用于產(chǎn)生消息驗證碼的所使用的密鑰k′,或者至少要難得多。通過在圖1中描述的方案,僅僅基于被生成的密鑰k′和消息M實現(xiàn)的消息驗證碼的真 正的生成針對側(cè)通道攻擊進行了保護。此外,對側(cè)通道攻擊的抵抗力弱的問題被推到了另一個流程中,也就是在用于產(chǎn)生被生成的密鑰k′的流程中,該密鑰是基于原始密鑰k和消息M由密鑰生成器110產(chǎn)生的。因為這里的密鑰k也與(潛在已知的)消息M有接觸,所以在這里也有DPA的問題。所以,被生成的密鑰k′的產(chǎn)生對于例如以確定原始密鑰k為目標的側(cè)通道攻擊原則上是抵抗力弱的。所以,在本實施方式中,盡管不再可能針對側(cè)通道攻擊基于被生成的密鑰k′和消息M保護實際的MAC的產(chǎn)生;然而,應該針對側(cè)通道攻擊保護了從原始密鑰k和消息M中產(chǎn)生被生成的密鑰k′。所以要確保的是,針對側(cè)通道攻擊保護推導出的k′=k′(k,M)。然而,正如在本實施方式中設(shè)計的那樣,轉(zhuǎn)移安全問題的方案在此被證明特別有利:于是,相比為了在產(chǎn)生MAC的過程中保護哈希運算,能夠針對像例如DPA一樣的側(cè)通道攻擊更輕松地保護被生成的密鑰的產(chǎn)生,其中,例如通過塊加密產(chǎn)生該被生成的密鑰,例如其中使用AES加密算法。相比在消息驗證碼的產(chǎn)生過程中所使用的哈希運算,這種AES運算能夠輕松得多地針對側(cè)通道攻擊被予以保護。此外,在產(chǎn)生消息的MAC時只需要針對側(cè)通道攻擊保護運算,然而在保護哈希運算在生成MAC的時候,就必須針對側(cè)通道攻擊保護一系列運算。在產(chǎn)生密鑰k′時,可以使用傳統(tǒng)的機制,用于保護被生成密鑰k′的產(chǎn)生,例如掩碼或者添加噪聲??偠灾@種實施方式的一個重要方面在于,利用可變的機密的密鑰k′計算的MAC,取代利用機密的密鑰k的實際的MAC計算值MACk(M)。當這個可變的密鑰k′不僅與機密的密鑰k相關(guān)還與消息M本身相關(guān)時,并且當這些以帶密碼的有意義的方式發(fā)生時,就能夠確保,即利用兩個不同的推導出的密鑰為兩個不同的消息M1和M2進行MAC計算。甚至在攻擊者能夠確定出進行了MAC計算的消息本身時,也能夠確保這一點。在這種情況下,一條固定消息的MAC總是使用相同的密鑰k′,使得MAC能夠重復生成。但是,因為用這個密鑰k′通常不能為第二消息 進行MAC運算(或者至少幾乎不能),所以不能通過DPA獲得k′。特別有利的是,當從a)至e)的以下幾點都得到滿足時:a)系統(tǒng)的加密強度不應降低。換句話說,計算k′不應該減小密鑰的熵。但是盡管如此,可以容忍在一定的情況下?lián)p失若干比特位的熵,例如當密鑰長度仍然長于必要長度時。b)對輸入的每一個比特位,也就是說對原始密鑰k和消息M的每一個比特位,都應該做出反應,例如被生成的密鑰的產(chǎn)生應該與輸入的每一個比特位相關(guān)。優(yōu)選地,當輸入任意一個比特位顛倒,例如原始密鑰k的一個比特位或者消息M的一個比特位,那么平均有45%到55%之間的輸出比特位顛倒。換句話說,在被生成的密鑰k′中,平均有45%到55%之間的比特位發(fā)生改變。特別優(yōu)選地是,發(fā)生雪崩效應,這就是說:平均有50%的輸出比特位顛倒。換句話說,在被生成的密鑰k′中,平均有50%的比特位發(fā)生改變。c)應該不可能的是,對于第一消息M1生成另一個第二消息M2,使得對于原始密鑰k和被生成的密鑰k′來說,以下等式成立:k′(k,M1)=k′(k,M2)首先,即使在不知道k的情況下,也不應該能夠成立。d)有利的是,如果不能夠從信息k′(被生成的密鑰)和M(為之計算MAC的消息)中計算出原始密鑰k。e)計算k′=k′(k,M)不應該允許通過側(cè)通道攻擊推導出k。即使已知M或者甚至允許選擇M也不行。根據(jù)一種實施方式,能提供一種滿足a)到d)這幾點的裝置。在一種優(yōu)選的實施方式中,能提供一種滿足a)到e)這幾點的裝置。根據(jù)一種實施方式,能提供一種裝置,該裝置設(shè)置用于為了產(chǎn)生消息驗證碼而用被生成的密鑰k′取代原始密鑰k,被生成的密鑰是通過以下方式產(chǎn)生的:k′:=k′(k,M):=AESk(H(M))。其中,M表示消息;H表示運用到這個消息上以獲得哈希值H(M)的哈希運算;AESk表示AES加密算法,該算法利用原始密鑰k用于為哈希值M加密;并且k′表示產(chǎn)生的要被生成的密鑰。這種裝置自動滿足a)至d)這幾點。要點e)是通過實施得以確保的。例如可以采用根據(jù)現(xiàn)有技術(shù)的掩碼方案來實現(xiàn)要點e),例如用于AES加密算法掩碼的一項已知技術(shù)。除了其他原因,這樣產(chǎn)生被生成的密鑰之所以特別有利的原因還有,因為使用的哈希運算不必強制性針對側(cè)通道攻擊進行保護,因為該運算不運用到保持秘密的密鑰k上,而是僅僅用到消息M上。因此,在產(chǎn)生MAC時,只有AES計算是唯一的必須有側(cè)信道防護的計算。除了使用AES算法,還有許多其他產(chǎn)生被生成的密鑰k′的可能性。例如可以使用DES算法或者三重DES算法來產(chǎn)生被生成的密鑰k′。在有些實施方式中,a)至e)這幾點要依據(jù)情況可能逐漸地或者部分地得以滿足。所以,在有些實施方式中,不一定必須使用強大的加密算法。圖2在這里就提供了一種能夠進行安全的MAC計算的實施方式。根據(jù)這種新的方案,首先由密鑰生成器210從消息M和原始密鑰k中產(chǎn)生一個被生成的密鑰,例如會議密鑰(英語:Session-key)。然后該會議密鑰被消息驗證碼生成器220使用以產(chǎn)生消息驗證碼Mac′k。圖3示出一種用于產(chǎn)生被生成的密鑰的實施方式,例如產(chǎn)生會議密鑰k′。例如能夠通過在第一模塊312中對消息M進行哈希計算來產(chǎn)生會議密鑰k′。然后就可以例如在使用針對側(cè)通道攻擊受到保護的AES的情況下在第二模塊315中利用密鑰k對結(jié)果進行加密。根據(jù)另一種實施方式,例如能夠通過在第一模塊312中對一部分消息M進行哈希計算來產(chǎn)生會議密鑰k′。然后就可以例如在使用針對側(cè)通道攻擊受到保護的AES的情況下在第二模塊315中利用密鑰k對結(jié)果進行加密。還有多個其他的產(chǎn)生被生成的密鑰的可能性,其針對側(cè)通道攻擊予以保護,只要注意遵守上面所述的a)至e)幾點。下面示出本發(fā)明的另一種實施方式,其涉及HMAC(HMAC=基于哈希運算的消息驗證碼;英語:Hash-basedMessageAuthenticationCode)。然而,首先為了更好地理解HMAC消息驗證碼,正如由現(xiàn)有技術(shù)中已知的那樣,參照圖8進行闡述。此外,將信息以消息M的形式連同機密的密鑰輸送給執(zhí)行MAC算法的裝置。這個裝置計算消息驗證碼。在圖8的裝置中,如果原始密鑰k太長,可能縮短該密鑰,從而獲得(步驟810)密鑰K。如果不需要縮短密鑰k,那么接受不改變的密鑰k作為密鑰K。緊接著,將密鑰K和位串ipad進行XOR關(guān)聯(lián)(820)。然后所得結(jié)果與消息M級聯(lián)運算(830),從而獲得第一級聯(lián)結(jié)果,該結(jié)果在步驟835中提供用于第一哈希運算。然后對這個第一級聯(lián)結(jié)果運用(840)第一哈希運算,從而獲得第一哈希運算結(jié)果,該結(jié)果在步驟845中提供用于第二級聯(lián)運算860。在另一個步驟850中,將密鑰K和另一種位串opad進行XOR關(guān)聯(lián),并且然后通過步驟855同樣提供用于第二級聯(lián)。然后,在步驟855中提供的XOR運算的結(jié)果與在步驟845中提供的第一哈希運算結(jié)果級聯(lián)運算(860)。然后將第二級聯(lián)的結(jié)果運用第二哈希運算,由此最終獲得消息驗證碼Mac。作為HMAC方法的基礎(chǔ)的常見哈希函數(shù)是通過以下條件定義的H:{0,1}*→{0,1}l輸出長度l公知的哈希方法例如有SHA-1、SHA-2家族(SHA=安全哈希算法;英語=secureHashAlgorithm),其包括SHA256、SHA384、SHA512。這種形式的哈希算法的核心是由循環(huán)函數(shù)h構(gòu)成的:{0,1}L×{0,1}l,→{0,1}l,其中L≥l。例如在SHA-1中,L=512,l=180。交互地運用循環(huán)函數(shù),從而對任意長度的消息進行哈希運算。正如在圖8中已經(jīng)描繪的那樣,利用密鑰K對于消息M的HMAC就被定義為其中,opad和ipad是常數(shù),代表XOR運算,并且其中,||代表簡單的級聯(lián)運算。這就是說,首先,K連同消息M進行哈希運算,并且然后該結(jié)果又連同K進行哈希運算。其中,K滿足哈希運算H的輸入長度,即,例如K:=k||0.........0。于是例如能夠通過HMAC借助通常的哈希算法產(chǎn)生MAC算法。為此,首先將消息連同密鑰k以鋪墊的形式進行一次哈希運算。然后將這個哈希結(jié)果再一次與密鑰k進行哈希運算。圖4示出根據(jù)本發(fā)明的實施方式的一種裝置,其中,借助HMAC產(chǎn)生消息驗證碼。該裝置設(shè)計用于通過以下方式產(chǎn)生被生成的密鑰k′,即,在第一哈希運算單元410中對消息M進行哈希運算,從而獲得第一哈希運算結(jié)果,并且其中,預設(shè)了AES單元420,其設(shè)計用于在使用針對側(cè)通道攻擊受保護的AES算法的情況下利用密鑰k為第一哈希運算結(jié)果加密。第一修改器430和第二修改器470設(shè)計用于在被生成的密鑰k′太長時,縮短該密鑰,從而獲得密鑰K′。如果不需要縮短被生成的密鑰k′,那么接受不改變的被生成的密鑰k′作為密鑰K′。第一XOR單元440設(shè)計用于將密鑰K′與位串ipad進行XOR運算,從而得到第一XOR結(jié)果。第一級聯(lián)單元450設(shè)計用于將第一XOR結(jié)果與消息M級聯(lián)運算,從而獲得第一級聯(lián)的結(jié)果。此外,第二哈希運算單元460設(shè)計用于將哈希運算運用到第一級聯(lián)結(jié)果上,從而獲得第二哈希運算結(jié)果。第二XOR單元480設(shè)置用于將密鑰K′和另一外的位串opad進行XOR關(guān)聯(lián),從而獲得第二XOR結(jié)果。第二級聯(lián)單元490設(shè)置用于運算第二哈希運算結(jié)果和第二XOR結(jié)果,從而獲得第二級聯(lián)結(jié)果。此外,第三哈希運算單元495設(shè)置用于將哈希運算運用到第二級聯(lián)結(jié)果上,從而獲得消息驗證碼Mac。圖5示出一種用于檢查消息的準確性和可信度的裝置。該裝置設(shè)置用于借助接收到的消息驗證碼MACempfangen檢查消息的準確性和可信度。為此,用于檢查該消息的準確性和可信度的裝置具有根據(jù)以上描述的實施方式之一的用于產(chǎn)生消息驗證碼的裝置510和比較單元520。用于產(chǎn)生消息驗證碼的裝置510基于(原始)密鑰和消息M產(chǎn)生計算出的消息驗證碼MACberechnet。比較單元520設(shè)置用于檢查產(chǎn)生的消息驗證碼MACberechnet和接收到的消息驗證碼MACempfangen的一致性,從而檢查消息的準確性和可信度。如 果MACberechnet和MACempfangen一致,就知道消息是準確的且可信的。如果MACberechnet和MACempfangen不一致,就能得出消息不準確和/或不可信的結(jié)論。圖6示出根據(jù)一種實施方式基于第一消息M和原始密鑰k用于產(chǎn)生消息驗證碼的一種方法。在步驟610中產(chǎn)生被生成的密鑰k′,這是以原始密鑰k和消息M為基礎(chǔ)的。然后在步驟620中基于被生成的密鑰k′和消息M產(chǎn)生消息驗證碼。盡管是結(jié)合裝置描述了一些方面,然而不言而喻的是,這些方面也是對相應方法流程的描述,所以裝置的一個組塊或者組件也可以理解成相應的方法步驟或者方法步驟的特征。與之類似地,結(jié)合方法步驟或者作為方法步驟所描述的那些方面也是對相應裝置的相應組塊或者細節(jié)或者特征的描述。幾個或者所有的方法步驟都能夠通過硬件設(shè)備(或者在使用硬件設(shè)備的情況下),例如微處理器,可編程的電腦或者電子電路來實施。在幾個實例中,能夠通過這種設(shè)備執(zhí)行幾個或者多個最重要的方法步驟。依據(jù)一些特定的具體實施條件,本發(fā)明的實施例能夠在硬件中或者軟件中實施??梢栽谑褂脭?shù)碼存儲媒介的情況下實現(xiàn)具體實施,例如軟盤、DVD、藍光碟、CD、ROM、PROM、EPROM、EEPROM或者閃存、硬盤或者其他的磁性或光學存儲器,其上存儲著可讀的電子控制信號,這些電子控制信號這樣地與可編程的電腦系統(tǒng)共同起作用,或者能夠共同起作用,即,執(zhí)行相應的方法。因此該數(shù)碼存儲媒介可以是電腦可讀的。根據(jù)本發(fā)明的有些實施例就包括數(shù)據(jù)載體,該數(shù)據(jù)載體具有可讀的電子控制信號,可讀的電子控制信號能夠這樣地與可編程的電腦系統(tǒng)共同起作用,即,執(zhí)行本文中描述的其中一種方法。一般來說,本發(fā)明的實施例能夠?qū)嵤┳鳛閹в谐绦虼a的電腦程序產(chǎn)品,其中,當電腦程序產(chǎn)品在電腦上運行時,程序代碼能夠有效地執(zhí)行其中一種方法。該程序代碼例如也可以存儲在機器可讀的載體上。其他的實施例包括用于執(zhí)行本文中所述的其中一種方法的電腦程序,其中,該電腦程序存儲在機器可讀的載體上。換句話說,根據(jù)本發(fā)明的方法的一種實施例由此是一種電腦程序,該電腦程序具有用于在電腦程序在電腦上運行時執(zhí)行本文中描述的一種方法的程序代碼。因此,根據(jù)本發(fā)明的方法的另一個實施例是數(shù)據(jù)載體(或者數(shù)碼存儲媒介或者電腦可讀的媒介),其上記錄著用于執(zhí)行本文中所描述的其中一種方法的電腦程序。因此,根據(jù)本發(fā)明的方法的另一個實施例是數(shù)據(jù)流或者一系列的信號,該數(shù)據(jù)流或者這一系列的信號代表著用于執(zhí)行本文中所述的其中一種方法的電腦程序。該數(shù)據(jù)流或者這一系列的信號例如能夠配置用于通過數(shù)據(jù)通信連接進行傳輸,例如通過因特網(wǎng)。另一個實施方式包括一個處理裝置例如電腦或者可編程的邏輯組件,該處理裝置配置或者調(diào)適用于能夠執(zhí)行本文中描述的其中一種方法。另一個實施例包括一臺電腦,在其上面安裝著用于執(zhí)行本文中描述的其中一種方法的電腦程序。根據(jù)本發(fā)明的另一個實施例包括一個裝置或者一個系統(tǒng),該裝置或者是該系統(tǒng)設(shè)計用于將執(zhí)行本文中描述的至少一種方法的電腦程序傳輸給接收者。例如可以電子地或者光學地實現(xiàn)傳輸。接收者例如可以是電腦、 移動裝置、存儲裝置或者類似的裝置。該裝置或者該系統(tǒng)例如可以包括用于傳輸電腦程序給接收者的文件服務器。在有些實施例中,可編程的邏輯組件(例如現(xiàn)場可編程門電路陣列,F(xiàn)PGA)用于執(zhí)行本文中描述的方法的某些或者所有功能。在有些實施例中,現(xiàn)場可編程門陣列與微處理器共同起作用,執(zhí)行本文中描述的其中一種方法。總的來說,這些方法在一些實施例中是在任意的硬件裝置一方執(zhí)行。這可以是可普遍通用的硬件,例如電腦處理器(CPU),或者是針對該方法的特殊硬件,例如ASIC。以上描述的實施例僅僅展示了本發(fā)明的原理。不言而喻地,其他的專業(yè)技術(shù)人員能想到本文中描述的布置和特征的修改方案和變化方案。因此,特意僅通過權(quán)利要求的保護范圍來限定本發(fā)明,而不是通過那些借助說明書和對實施例的闡述在文中展示的具體特征。