加密認(rèn)證方法及設(shè)備的制作方法
【專利摘要】本發(fā)明提供一種加密認(rèn)證方法及設(shè)備。方法包括:根據(jù)采用的加密算法所支持的分組長度,對待加密和認(rèn)證報(bào)文中的待加密數(shù)據(jù)進(jìn)行分組,并根據(jù)采用的認(rèn)證算法所支持的分塊長度,對所述待加密和認(rèn)證報(bào)文中的待認(rèn)證數(shù)據(jù)進(jìn)行分塊;如果所述分塊長度大于所述分組長度,則以分塊為單位,對所述分塊包含的分組進(jìn)行加密處理,獲得包含加密結(jié)果的加密分塊,對所述加密分塊進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果;或者,如果所述分組長度大于所述分塊長度,則以分組為單位,對所述分組進(jìn)行加密,得到加密結(jié)果,對所述加密結(jié)果包含的分塊分別進(jìn)行認(rèn)證,得到每個(gè)分塊的認(rèn)證結(jié)果。本發(fā)明技術(shù)方案可以減少加密認(rèn)證過程中對內(nèi)存的訪存次數(shù),提高處理性能。
【專利說明】加密認(rèn)證方法及設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù),尤其涉及一種加密認(rèn)證方法及設(shè)備,屬于因特網(wǎng)安全【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002]因特網(wǎng)協(xié)議安全性(Internet Protocol Security,簡稱為IPSEC)是由因特網(wǎng)工程任務(wù)組(Internet Engineering Task Force,簡稱為IETF)定義的一個(gè)安全標(biāo)準(zhǔn)框架,用于保證數(shù)據(jù)的安全傳輸。它包括了認(rèn)證頭(Authentication Header,簡稱為AH)、封裝安全載荷(Encapsulating Security Payload,簡稱為 ESP)、因特網(wǎng)密鑰交換(Internet KeyExchange,簡稱為IKE)協(xié)議和用于網(wǎng)絡(luò)加密和認(rèn)證的一系列算法。
[0003]AH協(xié)議可以為數(shù)據(jù)傳輸提供源認(rèn)證、數(shù)據(jù)完整性校驗(yàn)服務(wù)。源認(rèn)證可以檢測通信端的身份合法性,防止他人冒充。完整性校驗(yàn)?zāi)軌驒z測數(shù)據(jù)在傳輸中是否被篡改。ESP協(xié)議具有除AH能夠提供的安全服務(wù)外,還可以提供數(shù)據(jù)機(jī)密性服務(wù),用于保證數(shù)據(jù)在傳輸過程中不被偷窺。AH協(xié)議由于不提供數(shù)據(jù)機(jī)密性服務(wù),因此不需要對AH協(xié)議的報(bào)文進(jìn)行加密。而ESP協(xié)議提供了上面提到的安全服務(wù)的全部支持,在某些配置下,它既需要對數(shù)據(jù)進(jìn)行加密,還需要對數(shù)據(jù)進(jìn)行認(rèn)證。
[0004]無論是加密還是認(rèn)證,都需要對數(shù)據(jù)進(jìn)行大量數(shù)學(xué)運(yùn)算和訪存操作。以發(fā)送端的處理過程為例,具體為:中央處理單元(Central Processing Unit,簡稱為CPU)在發(fā)送端先從內(nèi)存中讀取待加密的報(bào)文,進(jìn)行數(shù)學(xué)計(jì)算,對報(bào)文進(jìn)行加密,然后將加密結(jié)果寫回內(nèi)存;接下來的認(rèn)證過程,CPU再次從內(nèi)存讀取加密后的數(shù)據(jù)進(jìn)行數(shù)學(xué)計(jì)算,完成認(rèn)證。由此可見,在沒有硬件支持的情況下,如果使用純軟件進(jìn)行加密和認(rèn)證處理將非常耗時(shí),并且會(huì)占用大量CPU)資源進(jìn)行數(shù)學(xué)運(yùn)算,需要頻繁訪問內(nèi)存以獲取數(shù)據(jù),由此造成系統(tǒng)性能下降。為解決該問題,現(xiàn)有技術(shù)提出了采用硬件部分完成數(shù)學(xué)運(yùn)算,但CPU仍要參與數(shù)據(jù)的存取,仍然需要頻繁訪問內(nèi)存,處理性能仍不高。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供一種加密認(rèn)證方法及設(shè)備,用以減少加密認(rèn)證過程中對內(nèi)存的訪存次數(shù),提高處理性能。
[0006]第一方面提供一種加密認(rèn)證方法,包括:
[0007]根據(jù)采用的加密算法所支持的分組長度,對待加密和認(rèn)證報(bào)文中的待加密數(shù)據(jù)進(jìn)行分組,并根據(jù)采用的認(rèn)證算法所支持的分塊長度,對所述待加密和認(rèn)證報(bào)文中的待認(rèn)證數(shù)據(jù)進(jìn)行分塊;
[0008]如果所述分塊長度大于所述分組長度,則以分塊為單位,對所述分塊包含的分組進(jìn)行加密處理,獲得包含加密結(jié)果的加密分塊,對所述加密分塊進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果;或者,如果所述分組長度大于所述分塊長度,則以分組為單位,對所述分組進(jìn)行加密,得到加密結(jié)果,對所述加密結(jié)果包含的分塊分別進(jìn)行認(rèn)證,得到每個(gè)分塊的認(rèn)證結(jié)果。[0009]第二方面提供一種加密認(rèn)證裝置,包括:
[0010]分組模塊,用于根據(jù)采用的加密算法所支持的分組長度,對待加密和認(rèn)證報(bào)文中的待加密數(shù)據(jù)進(jìn)行分組;
[0011]分塊模塊,用于根據(jù)采用的認(rèn)證算法所支持的分塊長度,對所述待加密和認(rèn)證報(bào)文中的待認(rèn)證數(shù)據(jù)進(jìn)行分塊;
[0012]加密認(rèn)證模塊,用于在所述分塊長度大于所述分組長度時(shí),以分塊為單位,對所述分塊包含的分組進(jìn)行加密處理,獲得包含加密結(jié)果的加密分塊,對所述加密分塊進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果;或者,在所述分組長度大于所述分塊長度時(shí),以分組為單位,對所述分組進(jìn)行加密,得到加密結(jié)果,對所述加密結(jié)果包含的分塊分別進(jìn)行認(rèn)證,得到每個(gè)分塊的認(rèn)證結(jié)
果O
[0013]第三方面提供一種網(wǎng)絡(luò)設(shè)備,包括第二方面提供的任一加密認(rèn)證裝置。
[0014]本發(fā)明提供的加密認(rèn)證方法及設(shè)備,通過對待加密和認(rèn)證報(bào)文中的待加密數(shù)據(jù)進(jìn)行分組,并對待加密和認(rèn)證報(bào)文中的待認(rèn)證數(shù)據(jù)進(jìn)行分塊,然后以分塊為單位,對分塊包含的分組進(jìn)行加密后再對分塊進(jìn)行認(rèn)證,或者以分組為單位,先對分組加密后再對分組包含的分塊進(jìn)行認(rèn)證。與現(xiàn)有技術(shù)相比,本發(fā)明中以分塊或分組為單位,加密后立即進(jìn)行認(rèn)證,而加密的數(shù)據(jù)量相對較小,此時(shí)加密結(jié)果尚保存在CPU的緩存中,只需從緩存中讀取加密結(jié)果進(jìn)行認(rèn)證即可,不需要從內(nèi)存中讀取加密結(jié)果,減少了內(nèi)存讀取次數(shù),有利于提高加密認(rèn)證的處理性能。
【專利附圖】
【附圖說明】
[0015]圖1為現(xiàn)有技術(shù)中加密和認(rèn)證的時(shí)序圖;
[0016]圖2為本發(fā)明實(shí)施例提供的一種加密認(rèn)證方法的流程圖;
[0017]圖3為使用了 ESP協(xié)議的待加密和認(rèn)證的報(bào)文結(jié)構(gòu)示意圖;
[0018]圖4為本發(fā)明實(shí)施例提供的一種混合加密認(rèn)證的時(shí)序圖;
[0019]圖5為本發(fā)明實(shí)施例提供的一種加密認(rèn)證裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0020]在介紹本發(fā)明技術(shù)方案之前,先對現(xiàn)有技術(shù)中由純軟件或由軟硬件進(jìn)行加密認(rèn)證的過程進(jìn)行簡單說明,以便于更好地理解本發(fā)明。
[0021]根據(jù)IPSEC的規(guī)定,在報(bào)文發(fā)送端,首先需要對數(shù)據(jù)進(jìn)行加密,然后再對加密后的數(shù)據(jù)進(jìn)行認(rèn)證。在報(bào)文接收端,首先需要對數(shù)據(jù)進(jìn)行認(rèn)證,然后再進(jìn)行解密。
[0022]報(bào)文發(fā)送端的處理過程為:CPU先從內(nèi)存中讀取待加密的報(bào)文,由CPU或?qū)S糜布卧M(jìn)行數(shù)學(xué)計(jì)算,完成加密,然后CPU將加密結(jié)果寫回內(nèi)存;接下來的認(rèn)證過程,由CPU再次從內(nèi)存讀取加密后的數(shù)據(jù),再由CPU或?qū)S糜布卧M(jìn)行數(shù)學(xué)計(jì)算,完成認(rèn)證,該過程的時(shí)序圖如圖1所示。報(bào)文接收端的處理過程是報(bào)文發(fā)送端的逆過程,即先對報(bào)文進(jìn)行認(rèn)證,再進(jìn)行解密?,F(xiàn)有技術(shù)中的加密過程和認(rèn)證過程嚴(yán)格的串行化,且需要頻繁的訪問內(nèi)存以獲取數(shù)據(jù),造成系統(tǒng)性能下降。
[0023]圖2為本發(fā)明實(shí)施例提供的一種加密認(rèn)證方法的流程圖。如圖2所示,所述方法包括:[0024]201、根據(jù)采用的加密算法所支持的分組長度,對待加密和認(rèn)證報(bào)文中的待加密數(shù)據(jù)進(jìn)行分組,并根據(jù)采用的認(rèn)證算法所支持的分塊長度,對所述待加密和認(rèn)證報(bào)文中的待認(rèn)證數(shù)據(jù)進(jìn)行分塊。
[0025]202、如果所述分塊長度大于所述分組長度,則以分塊為單位,對所述分塊包含的分組進(jìn)行加密處理,獲得包含加密結(jié)果的加密分塊,對所述加密分塊進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果;或者,如果所述分組長度大于所述分塊長度,則以分組為單位,對所述分組進(jìn)行加密,得到加密結(jié)果,對所述加密結(jié)果包含的分塊分別進(jìn)行認(rèn)證,得到每個(gè)分塊的認(rèn)證結(jié)果。
[0026]本實(shí)施例提供的方法可用于對任何即需要加密又需要認(rèn)證的報(bào)文進(jìn)行加密認(rèn)證處理,為便于描述將這種即需要加密又需要認(rèn)證的報(bào)文稱為待加密和認(rèn)證報(bào)文。本發(fā)明實(shí)施例對待加密和認(rèn)證報(bào)文采用的協(xié)議不做限定,例如可以是但不限于=ESP協(xié)議。
[0027]在實(shí)際應(yīng)用中,根據(jù)協(xié)議的不同,報(bào)文中需要加密和需要認(rèn)證的數(shù)據(jù)可能不盡相同。在本實(shí)施例中,將待加密和認(rèn)證報(bào)文中需要加密的數(shù)據(jù)稱為待加密數(shù)據(jù),將待加密和認(rèn)證報(bào)文中需要認(rèn)證的數(shù)據(jù)稱為待認(rèn)證數(shù)據(jù)。根據(jù)協(xié)議的不同,待加密數(shù)據(jù)和待認(rèn)證數(shù)據(jù)可能相同,也可能不相同。例如,對于ESP協(xié)議的報(bào)文來說,待認(rèn)證數(shù)據(jù)是從ESP頭開始到報(bào)文結(jié)束;而待加密數(shù)據(jù)是從初始向量(Initialization Vector,簡稱為IV)字段結(jié)束的下一個(gè)字節(jié)開始到報(bào)文結(jié)束。也就是說,在本發(fā)明實(shí)施例中,待加密數(shù)據(jù)可以和待認(rèn)證數(shù)據(jù)相同?;蛘撸用軘?shù)據(jù)可以和待認(rèn)證數(shù)據(jù)也可以不相同,例如,對于ESP協(xié)議來說,所述待認(rèn)證數(shù)據(jù)包括所述待加密數(shù)據(jù)和報(bào)頭數(shù)據(jù),所述報(bào)頭數(shù)據(jù)包括ESP頭和IV字段。
[0028]具體的,在加密認(rèn)證開始前,確定采用的加密算法和認(rèn)證算法。本實(shí)施例采用的加密算法通常是支持固定長度的分組加密算法,例如可以是數(shù)據(jù)加密算法(Data EncryptionAlgorithm,簡稱為 DES),高級(jí)加密標(biāo)準(zhǔn)(Advanced Encryption Standard,簡稱為 AES),或三重?cái)?shù)據(jù)加密算法(Triple Data Encryption Algorithm,簡稱為3DES)。相應(yīng)的,本實(shí)施例采用的認(rèn)證算法可以是譯作安全散列算法(Secure Hash Algorithm,簡稱為SHA)或信息-摘要算法第5版(Message-Digest Algorithm 5,簡稱為MD5)等。其中,上述加密算法和認(rèn)證算法的任一組合均可應(yīng)用于本實(shí)施例提供的方法中,也就是說,本實(shí)施例提供的方法可適用于 MD5 和 DES,MD5 和 AES,MD5 和 3DES, SHA 和 DES,SHA 和 3DES,或 SHA 和 AES 等混合加密的場景。
[0029]在確定采用的加密算法后,加密認(rèn)證裝置可以按照加密算法支持的分組長度,對待加密和認(rèn)證報(bào)文中的待加密數(shù)據(jù)進(jìn)行分組。具體的,加密認(rèn)證裝置可以按照分組長度,依次對所述待加密數(shù)據(jù)進(jìn)行劃分,形成至少一個(gè)長度為所述分組長度的分組,其中,如果最后一個(gè)分組的長度小于所述分組長度,則對最后一個(gè)分組進(jìn)行擴(kuò)充,使得擴(kuò)充后的分組的長度等于所述分組長度。在確定采用的認(rèn)證算法后,加密認(rèn)證裝置可以按照認(rèn)證算法支持的分塊長度,對待加密和認(rèn)證報(bào)文中的待認(rèn)證數(shù)據(jù)進(jìn)行分塊。具體的,加密認(rèn)證裝置可以按照分塊長度,依次對待認(rèn)證數(shù)據(jù)進(jìn)行劃分,形成至少一個(gè)分塊,其中,如果最后一個(gè)分塊的長度小于所述分塊長度,則對最后一個(gè)分塊進(jìn)行擴(kuò)充,使得擴(kuò)充后的分塊的長度等于所述分塊長度。
[0030]在此說明,上述對分組或分塊進(jìn)行擴(kuò)充的【具體實(shí)施方式】可參照現(xiàn)有協(xié)議的規(guī)定,在本發(fā)明實(shí)施例中不做限定。另外,如果最后一個(gè)分組和最后一個(gè)分塊均需要進(jìn)行擴(kuò)充,則可以根據(jù)分塊長度和分組長度的大小關(guān)系,較大者在較小者擴(kuò)充的基礎(chǔ)上進(jìn)一步進(jìn)行擴(kuò)充,例如,如果分組長度小于分塊長度,則最后一個(gè)分塊可以在最后一個(gè)分組擴(kuò)充后的基礎(chǔ)上進(jìn)一步擴(kuò)充;如果分塊長度小于分組長度,則最后一個(gè)分組可以在最后一個(gè)分塊擴(kuò)充的基礎(chǔ)上進(jìn)一步擴(kuò)充。
[0031]在對待加密數(shù)據(jù)進(jìn)行分組并對待認(rèn)證數(shù)據(jù)進(jìn)行分塊之后,根據(jù)分塊長度和分組長度的大小關(guān)系,確定以分塊為單位還是以分組為單位進(jìn)行加密認(rèn)證。
[0032]具體的,如果分塊長度大于分組長度,說明一個(gè)分塊至少會(huì)包含一個(gè)分組,則加密認(rèn)證裝置以分塊為單位,對該分塊包含的分組進(jìn)行加密處理,獲得包含加密結(jié)果的加密分塊,再對加密分塊進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果;這樣通過對逐個(gè)分塊進(jìn)行相同的處理,就會(huì)得到整個(gè)待加密和認(rèn)證報(bào)文對應(yīng)的加密認(rèn)證結(jié)果。進(jìn)一步可選的,加密認(rèn)證裝置可以在每得到一個(gè)分塊的認(rèn)證結(jié)果后,將認(rèn)證結(jié)果存儲(chǔ)到內(nèi)存中。
[0033]如果分組長度大于分塊長度,說明一個(gè)分組至少包含一個(gè)分塊,則加密認(rèn)證裝置以分組為單位,對該分組進(jìn)行加密處理,獲得加密結(jié)果,再對加密結(jié)果包含的分塊分別進(jìn)行認(rèn)證,得到每個(gè)分塊的認(rèn)證結(jié)果。進(jìn)一步可選的,加密認(rèn)證裝置可以在每得到一個(gè)分塊的認(rèn)證結(jié)果,就存儲(chǔ)到內(nèi)存中,或者,也可以在得到一個(gè)分組內(nèi)所有分塊的認(rèn)證結(jié)果后統(tǒng)一存儲(chǔ)到內(nèi)存中。
[0034]由上述可見,與現(xiàn)有技術(shù)相比,本實(shí)施例提供的方法以分塊或分組為單位,加密后立即進(jìn)行認(rèn)證,而加密的數(shù)據(jù)量相對較小,此時(shí)加密結(jié)果尚保存在CPU的緩存中,只需從緩存中讀取加密結(jié)果進(jìn)行認(rèn)證即可,不需要從內(nèi)存中讀取加密結(jié)果,減少了內(nèi)存讀取次數(shù),有利于提高加密認(rèn)證的處理性能。
[0035]在實(shí)際應(yīng)用中,更多的是分塊長度大于分組長度的應(yīng)用場景。在分塊長度大于分組長度的應(yīng)用場景中,可能存在分塊包含的分組并非整數(shù)個(gè),也就是說分塊可能會(huì)包含某個(gè)分組的一部分,而不是該分組的全部。舉例說明,對ESP協(xié)議的報(bào)文來說,由于待認(rèn)證數(shù)據(jù)是從ESP頭開始到報(bào)文結(jié)束,而待加密數(shù)據(jù)是從IV字段結(jié)束的下一個(gè)字節(jié)開始到報(bào)文結(jié)束,因此,如果ESP頭和IV字段的長度之和不為分組長度的整數(shù)倍,就會(huì)出現(xiàn)分塊包含非整數(shù)個(gè)分組的情況。
[0036]為便于描述,用于以下方式來表達(dá)分塊包含非整數(shù)個(gè)分組。一種情況是:分塊包含第i個(gè)分組,第(i+Ι)個(gè)分組,…第(i+N-Ι)個(gè)分組,以及第(i+N)個(gè)分組的部分,即非整個(gè)分組出現(xiàn)在分塊的最后部分;另一種情況是:分塊包第j個(gè)分組的部分,以及第(j+Ι)個(gè)分組,…第(j+M)個(gè)分組,即非整個(gè)分組出現(xiàn)在分塊的開始部分。其中,1、j、N、M均為自然數(shù)。對于上述兩種情況,加密認(rèn)證裝置具體可以采用下面的方式對分塊包含的分組進(jìn)行加密處理,獲得含加密結(jié)果的加密分塊,進(jìn)而對所述加密分塊進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果,但不限于此。在此說明,如果分塊包含非整數(shù)個(gè)分組,則分塊具體包含哪些分組以及哪個(gè)分組的哪部分?jǐn)?shù)據(jù)在按照分組長度和分塊長度分別對待加密數(shù)據(jù)和待認(rèn)證數(shù)據(jù)進(jìn)行劃分的過程中自然而然就會(huì)確定,所以加密認(rèn)證裝置可以識(shí)別分塊具體包含哪些分組以及哪個(gè)分組的哪部分?jǐn)?shù)據(jù) 。
[0037]如果分塊包含第i個(gè)分組,第(i+Ι)個(gè)分組,…第(i+N-Ι)個(gè)分組,以及第(i+N)個(gè)分組的部分,則對所述第i個(gè)分組,第(i+Ι)個(gè)分組,…第(i+N-Ι)個(gè)分組,以及第(i+N)個(gè)分組進(jìn)行加密處理,獲得包含加密結(jié)果的加密分塊,并對所述加密分塊中第i個(gè)分組,第(i+Ι)個(gè)分組,…第(i+N-Ι)個(gè)分組的加密結(jié)果,以及第(i+N)個(gè)分組的加密結(jié)果中屬于所述分塊的部分進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果;其中,第(i+N)個(gè)分組的加密結(jié)果的其它部分將會(huì)在處理下一個(gè)分塊的過程中被直接應(yīng)用;
[0038]如果所述分塊包含第j個(gè)分組的部分,以及第(j+Ι)個(gè)分組,…第(j+M)個(gè)分組,則對所述第(j+Ι)個(gè)分組,…第(j+M)個(gè)分組進(jìn)行加密處理,獲得包含加密結(jié)果的加密分塊,并對第j個(gè)分組的加密結(jié)果中屬于所述分塊的部分,以及所述加密分塊中第(j+Ι)個(gè)分組,…第(j+M)個(gè)分組的加密結(jié)果進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果。其中,第j個(gè)分組的加密結(jié)果是在處理上一個(gè)分塊時(shí)獲得的,所述上一個(gè)分塊包括第j個(gè)分組的其它部分,且第j個(gè)分組的其它部分出現(xiàn)在所述上一個(gè)分塊的最后部分。
[0039]圖3為使用了 ESP協(xié)議的待加密和認(rèn)證的報(bào)文結(jié)構(gòu)示意圖。下面以圖3所示報(bào)文為例,對分塊長度大于分組長度的場景做進(jìn)一步說明。如圖3所示,圖3所示報(bào)文中待認(rèn)證數(shù)據(jù)是從ESP頭開始到報(bào)文結(jié)束,而待加密數(shù)據(jù)是從IV字段結(jié)束的下一個(gè)字節(jié)開始到報(bào)文結(jié)束。
[0040]假設(shè),IPSEC使用的認(rèn)證算法有MD5或SHA,以64字節(jié)為單位,即分塊長度為64字節(jié);IPSEC使用的加密算法為AES,以16字節(jié)為單位,即所述分組長度為16字節(jié)。在這里說明一下,本發(fā)明各實(shí)施例中所述加密算法只改變分組內(nèi)容但不改變分組的長度,即加密前后的數(shù)據(jù)長度保持不變。則對上述待認(rèn)證數(shù)據(jù)進(jìn)行分塊的結(jié)果,如圖3中所示的BlockO、BlockU…BlockN ;對上述待加密數(shù)據(jù)進(jìn)行分組的結(jié)果,如圖3中所示的0、1、2、3、…。
[0041]在混合加密認(rèn)證處理過程中,首先對BlockO進(jìn)行處理。BlockO中包含ESP頭和IV字段,該部分只進(jìn)行認(rèn)證,不需要進(jìn)行加密。除ESP頭和IV字段之外,BlockO還包含部分既要認(rèn)證又需要加密的數(shù)據(jù),即分組0、1、2。這里,首先使用AES算法依次對分組0,1,2進(jìn)行加密,分別得到分組0,1,2的加密結(jié)果,為便于描述本發(fā)明實(shí)施例中將分組0,I的加密結(jié)果以及分組2的加密結(jié)果中屬于BlockO的部分之和記為加密結(jié)果enc_resultO ;由于ESP頭、IV字段和enC_reSUltO的長度之和已經(jīng)大于或者等于64字節(jié)了,于是可以使用MD5或SHA算法開始對ESP頭、IV字段和enc_resultO進(jìn)行認(rèn)證,得到認(rèn)證結(jié)果auth_resultO。
[0042]需要特殊處理的是,分組2既有部分?jǐn)?shù)據(jù)位于BlockO,也有部分?jǐn)?shù)據(jù)位于Blockl,即BlockO包含非整數(shù)個(gè)分組的情況。如果ESP頭部和IV字段的長度之和不為分組長度的整數(shù)倍就會(huì)出現(xiàn)這種情況。對于這種情況,依然對分組2進(jìn)行加密,而在認(rèn)證的時(shí)候,只對包含在BlockO中的那部分進(jìn)行認(rèn)證。
[0043]接下來,對Blockl進(jìn)行處理。首先,要使用AES算法完成對分組3,4,5,6的加密,加密后的分組3、分組4、分組5、分組6包含在Blockl中的部分、以及分組2包含在Blockl中的部分的長度之和等于64字節(jié),于是可以使用MD5或SHA算法對這部分?jǐn)?shù)據(jù)進(jìn)行認(rèn)證,得到認(rèn)證結(jié)果auth_resultl。其中,分組6中包含在Block2中的部分,貝U放到下一步進(jìn)行認(rèn)證。
[0044]按照上述方法依次處理Block2,Block3...,直到完成對最后一個(gè)分塊,即BlockN的處理。
[0045]在此說明,對于BlockN的大小很可能不足64字節(jié),但是為了是分組長度的整數(shù)倍,可以對最后一個(gè)分塊進(jìn)行擴(kuò)充,保證BlockN為64字節(jié),然后再進(jìn)行認(rèn)證,得到認(rèn)證結(jié)果??蛇x的,可以在劃分BlockN的時(shí)候,對BlockN進(jìn)行擴(kuò)充,使之為64字節(jié);或者,也可以在對BlockN完成加密后,再進(jìn)行擴(kuò)充,使BlockN為64字節(jié)。[0046]上述混合加密認(rèn)證的時(shí)序圖如圖4所示。以分塊為單位,數(shù)據(jù)被加密后立刻進(jìn)行認(rèn)證,且由于加密數(shù)據(jù)相對較小,加密的結(jié)果還保存在緩存(Cache)中,在進(jìn)行認(rèn)證時(shí),只需要從Cache中讀取加密的結(jié)果進(jìn)行認(rèn)證即可,避免了從內(nèi)存中讀取加密結(jié)果,減少了內(nèi)存的讀取次數(shù),能夠顯著提升混合加密認(rèn)證的性能。而在現(xiàn)有技術(shù)方案中,由于要先完成對整個(gè)報(bào)文的加密,才開始進(jìn)行認(rèn)證,則原有的加密結(jié)果很可能被沖刷出Cache,此時(shí)進(jìn)行認(rèn)證的話,將出現(xiàn)大量Cache缺失,增加內(nèi)存訪問次數(shù),導(dǎo)致性能急劇下降。
[0047]進(jìn)一步,本發(fā)明實(shí)施例提供的方法不僅可以應(yīng)用于純軟件方式進(jìn)行加密認(rèn)證的應(yīng)用場景,而且在具有支持超標(biāo)量和獨(dú)立加密單元和認(rèn)證單元的機(jī)器上,本發(fā)明實(shí)施例提供的方法可以使加密單元和認(rèn)證單元的硬件加速指令并行執(zhí)行,進(jìn)一步提高性能。
[0048]在此說明,本發(fā)明上述實(shí)施例給出了混合加密認(rèn)證方法的詳細(xì)流程和具體實(shí)現(xiàn),該混合加密認(rèn)證方法一般應(yīng)用于報(bào)文發(fā)送端,那么與報(bào)文發(fā)送端相對應(yīng)的報(bào)文接收端也會(huì)采用與上述混合加密認(rèn)證方法相適應(yīng)的方法對接收到的報(bào)文進(jìn)行認(rèn)證和解密?;诒景l(fā)明上述實(shí)施例提供的混合加密認(rèn)證方法的詳細(xì)流程和具體實(shí)現(xiàn),本領(lǐng)域技術(shù)人員很容易想到在報(bào)文接收端同樣會(huì)以分組或分塊為單位,先對分組或分塊進(jìn)行認(rèn)證,再進(jìn)行解密,詳細(xì)流程不再贅述。
[0049]圖5為本發(fā)明實(shí)施例提供的一種加密認(rèn)證裝置的結(jié)構(gòu)示意圖。如圖5所示,所述裝置包括:分組模塊51、分塊模塊52和加密認(rèn)證模塊53。
[0050]分組模塊51,用于根據(jù)采用的加密算法所支持的分組長度,對待加密和認(rèn)證報(bào)文中的待加密數(shù)據(jù)進(jìn)行分組。
[0051]分塊模塊52,用于根據(jù)采用的認(rèn)證算法所支持的分塊長度,對所述待加密和認(rèn)證報(bào)文中的待認(rèn)證數(shù)據(jù)進(jìn)行分塊。
[0052]加密認(rèn)證模塊53,與分組模塊51和分塊模塊52連接,用于在所述分塊長度大于所述分組長度時(shí),以分塊為單位,對所述分塊包含的分組進(jìn)行加密處理,獲得包含加密結(jié)果的加密分塊,對所述加密分塊 進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果;或者,在所述分組長度大于所述分塊長度時(shí),以分組為單位,對所述分組進(jìn)行加密,得到加密結(jié)果,對所述加密結(jié)果包含的分塊分別進(jìn)行認(rèn)證,得到每個(gè)分塊的認(rèn)證結(jié)果。
[0053]在一可選實(shí)施方式中,所述待加密數(shù)據(jù)與所述待認(rèn)證數(shù)據(jù)相同。
[0054]在一可選實(shí)施方式中,所述待認(rèn)證數(shù)據(jù)包括所述待加密數(shù)據(jù)和報(bào)頭數(shù)據(jù)。以采用ESP協(xié)議的報(bào)文為例,所述報(bào)頭數(shù)據(jù)包括ESP頭和IV字段。
[0055]基于上述,分塊模塊52具體可用于按照所述分塊長度,依次對所述待認(rèn)證數(shù)據(jù)進(jìn)行劃分,獲得至少一個(gè)分塊,如果最后一個(gè)分塊的長度小于所述分塊長度,對所述最后一個(gè)分塊進(jìn)行擴(kuò)充,使得擴(kuò)充后的分塊的長度等于所述分塊長度。
[0056]在一可選實(shí)施方式中,加密認(rèn)證模塊53用于對所述分塊包含的分組進(jìn)行加密處理,獲得包含加密結(jié)果的加密分塊,對所述加密分塊進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果,包括:
[0057]加密認(rèn)證模塊53具體可用于在所述分塊包含第i個(gè)分組,第(i+Ι)個(gè)分組,…第(i+N-Ι)個(gè)分組,以及第(i+N)個(gè)分組的部分時(shí),對所述第i個(gè)分組,第(i+Ι)個(gè)分組,…第(i+N-Ι)個(gè)分組,以及第(i+N)個(gè)分組進(jìn)行加密處理,獲得包含加密結(jié)果的加密分塊,并對所述加密分塊中第i個(gè)分組,第(i+Ι)個(gè)分組,…第(i+N-Ι)個(gè)分組的加密結(jié)果,以及第(i+N)個(gè)分組的加密結(jié)果中屬于所述分塊的部分進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果;或者在所述分塊包第j個(gè)分組的部分,以及第(j+Ι)個(gè)分組,…第(j+M)個(gè)分組,則對所述第(j+Ι)個(gè)分組,…第(j+M)個(gè)分組進(jìn)行加密處理,獲得包含加密結(jié)果的加密分塊,并對第j個(gè)分組的加密結(jié)果中屬于所述分塊的部分,以及所述加密分塊中第(j+Ι)個(gè)分組,…第(j+M)個(gè)分組的加密結(jié)果進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果;其中,1、j、N、M均為自然數(shù)。
[0058]在此說明,本實(shí)施例采用的加密算法包括但不限于:DES,AES,或3DES ;本實(shí)施例采用的認(rèn)證算法包括但不限于:SHA或MD5。
[0059]本實(shí)施例提供的加密認(rèn)證裝置可以作為報(bào)文發(fā)送端實(shí)現(xiàn),或可以設(shè)置在報(bào)文發(fā)送端實(shí)現(xiàn)。
[0060]本實(shí)施例提供的加密認(rèn)證裝置的各功能模塊可用于執(zhí)行圖2所示方法實(shí)施例的流程,其具體工作原理不再贅述,詳見方法實(shí)施例的描述。
[0061]本實(shí)施例提供的加密認(rèn)證裝置,通過對待加密和認(rèn)證報(bào)文中的待加密數(shù)據(jù)進(jìn)行分組,并對待加密和認(rèn)證報(bào)文中的待認(rèn)證數(shù)據(jù)進(jìn)行分塊,然后以分塊為單位,對分塊包含的分組進(jìn)行加密后再對分塊進(jìn)行認(rèn)證,或者以分組為單位,先對分組加密后再對分組包含的分塊進(jìn)行認(rèn)證。與現(xiàn)有技術(shù)相比,本實(shí)施例的加密認(rèn)證裝置以分塊或分組為單位,加密后立即進(jìn)行認(rèn)證,而加密的數(shù)據(jù)量相對較小,此時(shí)加密結(jié)果尚保存在CPU的緩存中,只需從緩存中讀取加密結(jié)果進(jìn)行認(rèn)證即可,不需要從內(nèi)存中讀取加密結(jié)果,減少了內(nèi)存讀取次數(shù),有利于提高加密認(rèn)證的處理性能。
[0062]本發(fā)明實(shí)施例提供一種網(wǎng)絡(luò)設(shè)備,該網(wǎng)絡(luò)設(shè)備包括上述實(shí)施例提供的加密認(rèn)證裝置,關(guān)于加密認(rèn)證裝置的工作原理和實(shí)現(xiàn)結(jié)構(gòu)可參見上述實(shí)施例的描述,在此不再贅述。
[0063]本實(shí)施例提供的網(wǎng)絡(luò)設(shè)備可以作為報(bào)文發(fā)送端,用于采用上述方法實(shí)施例提供的加密認(rèn)證方法對待發(fā)送的報(bào)文進(jìn)行加密和認(rèn)證,然后發(fā)送給報(bào)文接收端。本實(shí)施例提供的網(wǎng)絡(luò)設(shè)備,同樣具有減少內(nèi)存 讀取次數(shù),有利于提高加密認(rèn)證的處理性能的優(yōu)勢。
[0064]本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0065]最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種加密認(rèn)證方法,其特征在于,包括: 根據(jù)采用的加密算法所支持的分組長度,對待加密和認(rèn)證報(bào)文中的待加密數(shù)據(jù)進(jìn)行分組,并根據(jù)采用的認(rèn)證算法所支持的分塊長度,對所述待加密和認(rèn)證報(bào)文中的待認(rèn)證數(shù)據(jù)進(jìn)行分塊; 如果所述分塊長度大于所述分組長度,則以分塊為單位,對所述分塊包含的分組進(jìn)行加密處理,獲得包含加密結(jié)果的加密分塊,對所述加密分塊進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果;或者,如果所述分組長度大于所述分塊長度,則以分組為單位,對所述分組進(jìn)行加密,得到加密結(jié)果,對所述加密結(jié)果包含的分塊分別進(jìn)行認(rèn)證,得到每個(gè)分塊的認(rèn)證結(jié)果。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述待加密數(shù)據(jù)與所述待認(rèn)證數(shù)據(jù)相同;或者,所述待認(rèn)證數(shù)據(jù)包括所述待加密數(shù)據(jù)和報(bào)頭數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)采用的認(rèn)證算法所支持的分塊長度,對所述待加密和認(rèn)證報(bào)文中的待認(rèn)證數(shù)據(jù)進(jìn)行分塊,包括: 按照所述分塊長度,依次對所述待認(rèn)證數(shù)據(jù)進(jìn)行劃分,獲得至少一個(gè)分塊,如果最后一個(gè)分塊的長度小于所述分塊長度,對所述最后一個(gè)分塊進(jìn)行擴(kuò)充,使得擴(kuò)充后的分塊的長度等于所述分塊長度。
4.根據(jù)權(quán)利要求1-3任一項(xiàng)所述的方法,其特征在于,所述對所述分塊包含的分組進(jìn)行加密處理,獲得包含加密結(jié)果的加密分塊,對所述加密分塊進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果,包括: 如果所述分塊包含第i個(gè)分組,第(i+1)個(gè)分組,…第(i+N-1)個(gè)分組,以及第(i+N)個(gè)分組的部分,則對所述第i個(gè)分組,第(i+1)個(gè)分組,…第(i+N-Ι)個(gè)分組,以及第(i+N)個(gè)分組進(jìn)行加密處理,獲得包含加密結(jié)果的加密分塊,并對所述加密分塊中第i個(gè)分組,第(i+1)個(gè)分組,…第(i+N-Ι)`個(gè)分組的加密結(jié)果,以及第(i+N)個(gè)分組的加密結(jié)果中屬于所述分塊的部分進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果;或者 如果所述分塊包第j個(gè)分組的部分,以及第(j+Ι)個(gè)分組,…第(j+M)個(gè)分組,則對所述第(j+Ι)個(gè)分組,…第(j+M)個(gè)分組進(jìn)行加密處理,獲得包含加密結(jié)果的加密分塊,并對第j個(gè)分組的加密結(jié)果中屬于所述分塊的部分,以及所述加密分塊中第(j+Ι)個(gè)分組,…第(j+M)個(gè)分組的加密結(jié)果進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果; 其中,1、j、N、M均為自然數(shù)。
5.根據(jù)權(quán)利要求1-3任一項(xiàng)所述的方法,其特征在于,所述加密算法為數(shù)據(jù)加密算法DES,高級(jí)加密算法AES,或三重?cái)?shù)據(jù)加密算法3DES ;所述認(rèn)證算法為譯作安全散列算法SHA或消息摘要算法第5版MD5。
6.一種加密認(rèn)證裝置,其特征在于,包括: 分組模塊,用于根據(jù)采用的加密算法所支持的分組長度,對待加密和認(rèn)證報(bào)文中的待加密數(shù)據(jù)進(jìn)行分組; 分塊模塊,用于根據(jù)采用的認(rèn)證算法所支持的分塊長度,對所述待加密和認(rèn)證報(bào)文中的待認(rèn)證數(shù)據(jù)進(jìn)行分塊; 加密認(rèn)證模塊,用于在所述分塊長度大于所述分組長度時(shí),以分塊為單位,對所述分塊包含的分組進(jìn)行加密處理,獲得包含加密結(jié)果的加密分塊,對所述加密分塊進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果;或者,在所述分組長度大于所述分塊長度時(shí),以分組為單位,對所述分組進(jìn)行加密,得到加密結(jié)果,對所述加密結(jié)果包含的分塊分別進(jìn)行認(rèn)證,得到每個(gè)分塊的認(rèn)證結(jié)果。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述待加密數(shù)據(jù)與所述待認(rèn)證數(shù)據(jù)相同;或者,所述待認(rèn)證數(shù)據(jù)包括所述待加密數(shù)據(jù)和報(bào)頭數(shù)據(jù)。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述分塊模塊具體用于按照所述分塊長度,依次對所述待認(rèn)證數(shù)據(jù)進(jìn)行劃分,獲得至少一個(gè)分塊,如果最后一個(gè)分塊的長度小于所述分塊長度,對所述最后一個(gè)分塊進(jìn)行擴(kuò)充,使得擴(kuò)充后的分塊的長度等于所述分塊長度。
9.根據(jù)權(quán)利要求6-8任一項(xiàng)所述的裝置,其特征在于,所述加密認(rèn)證模塊用于對所述分塊包含的分組進(jìn)行加密處理,獲得包含加密結(jié)果的加密分塊,對所述加密分塊進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果,包括: 所述加密認(rèn)證模塊具體用于在所述分塊包含第i個(gè)分組,第(i+1)個(gè)分組,…第(i+N-Ι)個(gè)分組,以及第(i+N)個(gè)分組的部分時(shí),對所述第i個(gè)分組,第(i+1)個(gè)分組,…第(i+N-Ι)個(gè)分組,以及第(i+N)個(gè)分組進(jìn)行加密處理,獲得包含加密結(jié)果的加密分塊,并對所述加密分塊中第i個(gè)分組,第(i+Ι)個(gè)分組,…第(i+N-Ι)個(gè)分組的加密結(jié)果,以及第(i+N)個(gè)分組的加密結(jié)果中屬于所述分塊的部分進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果;或在所述分塊包第j個(gè)分組的部分,以及第(j+Ι)個(gè)分組,…第(j+M)個(gè)分組,則對所述第(j+Ι)個(gè)分組,…第(j+M)個(gè)分組進(jìn)行加密處理,獲得包含加密結(jié)果的加密分塊,并對第j個(gè)分組的加密結(jié)果中屬于所述分塊的部分,以及所述加密分塊中第(j+Ι)個(gè)分組,…第(j+M)個(gè)分組的加密結(jié)果進(jìn)行認(rèn)證,獲得認(rèn)證結(jié)果; 其中,1、j、N、M均為自然數(shù)。
10.根據(jù)權(quán)利要求6-8任一項(xiàng)所述的裝置,其特征在于,所述加密算法為數(shù)據(jù)加密算法DES,高級(jí)加密算法AES,或三重?cái)?shù)據(jù)加密算法3DES ;所述認(rèn)證算法為譯作安全散列算法SHA或消息摘要算法第5版MD5。`
11.一種網(wǎng)絡(luò)設(shè)備,其特征在于,包括:權(quán)利要求6-10任一項(xiàng)所述的加密認(rèn)證裝置。
【文檔編號(hào)】G06F13/16GK103490900SQ201310456644
【公開日】2014年1月1日 申請日期:2013年9月29日 優(yōu)先權(quán)日:2013年9月29日
【發(fā)明者】唐勇 申請人:福建星網(wǎng)銳捷網(wǎng)絡(luò)有限公司