本發(fā)明涉及高級(jí)加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES)加解密技術(shù),尤其涉及一種AES加解密方法和裝置。
背景技術(shù):
AES算法作為一種對(duì)稱密鑰加密算法,越來越受到人們的關(guān)注,然而在AES算法進(jìn)行加解密時(shí),通常使用固定密鑰,這樣,就容易為數(shù)據(jù)安全性帶來隱患;目前還沒有針對(duì)AES加解密過程中更換密鑰的技術(shù)方案。
技術(shù)實(shí)現(xiàn)要素:
為解決上述技術(shù)問題,本發(fā)明實(shí)施例期望提供一種AES加解密方法和裝置,能夠在不中斷加解密過程的情況下更換密鑰,提高數(shù)據(jù)使用的安全性。
本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
本發(fā)明實(shí)施例提供了一種AES加解密方法,包括:
獲取新密鑰,將所述新密鑰添加到下一組待加密數(shù)據(jù)中;利用原有密鑰對(duì)添加有新密鑰的一組待加密數(shù)據(jù)進(jìn)行AES加密,并利用所述新密鑰,對(duì)未進(jìn)行AES加密的各組待加密數(shù)據(jù)進(jìn)行AES加密;
利用原有密鑰對(duì)各組待解密數(shù)據(jù)依次進(jìn)行AES解密,直至獲取到所述新密鑰;利用所述新密鑰對(duì)未進(jìn)行解密的各組待解密數(shù)據(jù)進(jìn)行AES解密。
上述方案中,所述待加密的每組數(shù)據(jù)包括多個(gè)數(shù)據(jù)包;所述將所述新密鑰添加到下一組待加密數(shù)據(jù)中,包括:在對(duì)應(yīng)的一組待加密數(shù)據(jù)的各個(gè)數(shù)據(jù)包中添加新密鑰;
所述待解密的每組數(shù)據(jù)包括多個(gè)數(shù)據(jù)包,所述利用原有密鑰對(duì)各組待解密數(shù)據(jù)依次進(jìn)行AES解密,直至獲取到所述新密鑰,包括:利用原有密鑰對(duì)每組 待解密數(shù)據(jù)的各個(gè)數(shù)據(jù)包進(jìn)行AES解密,并對(duì)每組待解密數(shù)據(jù)的各個(gè)數(shù)據(jù)包進(jìn)行檢測,確定所檢測的每個(gè)數(shù)據(jù)包中是否包含新密鑰。
上述方案中,所述利用原有密鑰對(duì)各組待解密數(shù)據(jù)依次進(jìn)行AES解密,直至獲取到所述新密鑰,包括:對(duì)于每組待解密數(shù)據(jù),所檢測出的包含新密鑰的數(shù)據(jù)包的包頭的個(gè)數(shù)大于等于設(shè)定閾值時(shí),獲取所述新密鑰。
上述方案中,所述待加密的每組數(shù)據(jù)包括多個(gè)數(shù)據(jù)包;
對(duì)每組待加密數(shù)據(jù)進(jìn)行AES加密包括:對(duì)每組待加密數(shù)據(jù)的各個(gè)數(shù)據(jù)包分別進(jìn)行電碼本ECB模式流水加密或計(jì)數(shù)CTR模式流水加密;
對(duì)每個(gè)數(shù)據(jù)包進(jìn)行ECB模式流水加密包括:針對(duì)對(duì)應(yīng)數(shù)據(jù)包,依次進(jìn)行第1輪加密邏輯運(yùn)算至第N輪加密邏輯運(yùn)算,得出對(duì)應(yīng)數(shù)據(jù)包在ECB模式下的AES加密結(jié)果,N大于1;其中,實(shí)現(xiàn)各輪加密邏輯運(yùn)算的硬件同時(shí)存在,且實(shí)現(xiàn)每輪加密邏輯運(yùn)算的硬件不會(huì)被重復(fù)使用;
對(duì)每個(gè)數(shù)據(jù)包進(jìn)行CTR模式流水加密包括:在獲取對(duì)應(yīng)數(shù)據(jù)包之前,預(yù)先獲取計(jì)數(shù)值,并對(duì)計(jì)數(shù)值依次進(jìn)行第1輪加密邏輯運(yùn)算至第K輪加密邏輯運(yùn)算,得出計(jì)數(shù)加密結(jié)果,K大于1;在獲取對(duì)應(yīng)數(shù)據(jù)包之后,對(duì)對(duì)應(yīng)數(shù)據(jù)包中的數(shù)據(jù)和計(jì)數(shù)加密結(jié)果進(jìn)行異或運(yùn)算,得出對(duì)應(yīng)數(shù)據(jù)包在CTR模式下的AES加密結(jié)果;其中,實(shí)現(xiàn)各輪加密邏輯運(yùn)算的硬件同時(shí)存在,且實(shí)現(xiàn)每輪加密邏輯運(yùn)算的硬件不會(huì)被重復(fù)使用。
上述方案中,所述待解密的每組數(shù)據(jù)包括多個(gè)數(shù)據(jù)包;
對(duì)每組待解密數(shù)據(jù)進(jìn)行AES解密包括:對(duì)每組待解密數(shù)據(jù)的各個(gè)數(shù)據(jù)包分別進(jìn)行ECB模式流水解密或CTR模式流水解密;
對(duì)每個(gè)數(shù)據(jù)包進(jìn)行ECB模式流水解密包括:針對(duì)對(duì)應(yīng)數(shù)據(jù)包,依次進(jìn)行第1輪解密邏輯運(yùn)算至第N輪解密邏輯運(yùn)算,得出對(duì)應(yīng)數(shù)據(jù)包在ECB模式下的AES解密結(jié)果,N大于1;其中,實(shí)現(xiàn)各輪解密邏輯運(yùn)算的硬件同時(shí)存在,且實(shí)現(xiàn)每輪解密邏輯運(yùn)算的硬件不會(huì)被重復(fù)使用;
對(duì)每個(gè)數(shù)據(jù)包進(jìn)行CTR模式流水解密包括:在獲取對(duì)應(yīng)數(shù)據(jù)包之前,預(yù)先獲取計(jì)數(shù)值,并對(duì)計(jì)數(shù)值依次進(jìn)行第1輪解密邏輯運(yùn)算至第K輪解密邏輯運(yùn)算, 得出計(jì)數(shù)解密結(jié)果,K大于1;在獲取對(duì)應(yīng)數(shù)據(jù)包之后,對(duì)對(duì)應(yīng)數(shù)據(jù)包中的數(shù)據(jù)和計(jì)數(shù)解密結(jié)果進(jìn)行異或運(yùn)算,得出對(duì)應(yīng)數(shù)據(jù)包在CTR模式下的AES解密結(jié)果;其中,實(shí)現(xiàn)各輪解密邏輯運(yùn)算的硬件同時(shí)存在,且實(shí)現(xiàn)每輪解密邏輯運(yùn)算的硬件不會(huì)被重復(fù)使用。
上述方案中,各組待解密數(shù)據(jù)的解密順序與各組待加密數(shù)據(jù)的加密順序保持一致。
本發(fā)明實(shí)施例還提供了一種AES加解密裝置,包括加密端和解密端;其中,
加密端,用于獲取新密鑰,將所述新密鑰添加到下一組待加密數(shù)據(jù)中;利用原有密鑰對(duì)添加有新密鑰的一組待加密數(shù)據(jù)進(jìn)行AES加密,并利用所述新密鑰,對(duì)未進(jìn)行AES加密的各組待加密數(shù)據(jù)進(jìn)行AES加密;
解密端,用于利用原有密鑰對(duì)各組待解密數(shù)據(jù)依次進(jìn)行AES解密,直至獲取到所述新密鑰;利用所述新密鑰對(duì)未進(jìn)行解密的各組待解密數(shù)據(jù)進(jìn)行AES解密。
上述方案中,所述待加密的每組數(shù)據(jù)包括多個(gè)數(shù)據(jù)包;
所述加密端,具體用于在對(duì)應(yīng)的一組待加密數(shù)據(jù)的各個(gè)數(shù)據(jù)包中添加新密鑰;
所述待解密的每組數(shù)據(jù)包括多個(gè)數(shù)據(jù)包;
所述解密端,具體用于利用原有密鑰對(duì)每組待解密數(shù)據(jù)的各個(gè)數(shù)據(jù)包進(jìn)行AES解密,并對(duì)每組待解密數(shù)據(jù)的各個(gè)數(shù)據(jù)包進(jìn)行檢測,確定所檢測的每個(gè)數(shù)據(jù)包中是否包含新密鑰。
上述方案中,所述解密端,用于在對(duì)于每組待解密數(shù)據(jù),所檢測出的包含新密鑰的數(shù)據(jù)包的包頭的個(gè)數(shù)大于等于設(shè)定閾值時(shí),獲取所述新密鑰。
上述方案中,所述待加密的每組數(shù)據(jù)包括多個(gè)數(shù)據(jù)包;
所述加密端,具體用于對(duì)每組待加密數(shù)據(jù)的各個(gè)數(shù)據(jù)包分別進(jìn)行ECB模式流水加密或CTR模式流水加密;
所述加密端,用于針對(duì)對(duì)應(yīng)數(shù)據(jù)包,依次進(jìn)行第1輪加密邏輯運(yùn)算至第N輪加密邏輯運(yùn)算,得出對(duì)應(yīng)數(shù)據(jù)包在ECB模式下的AES加密結(jié)果,N大于1; 其中,實(shí)現(xiàn)各輪加密邏輯運(yùn)算的硬件同時(shí)存在,且實(shí)現(xiàn)每輪加密邏輯運(yùn)算的硬件不會(huì)被重復(fù)使用;
或者,所述加密端,用于在獲取對(duì)應(yīng)數(shù)據(jù)包之前,預(yù)先獲取計(jì)數(shù)值,并對(duì)計(jì)數(shù)值依次進(jìn)行第1輪加密邏輯運(yùn)算至第K輪加密邏輯運(yùn)算,得出計(jì)數(shù)加密結(jié)果,K大于1;在獲取對(duì)應(yīng)數(shù)據(jù)包之后,對(duì)對(duì)應(yīng)數(shù)據(jù)包中的數(shù)據(jù)和計(jì)數(shù)加密結(jié)果進(jìn)行異或運(yùn)算,得出對(duì)應(yīng)數(shù)據(jù)包在CTR模式下的AES加密結(jié)果;其中,實(shí)現(xiàn)各輪加密邏輯運(yùn)算的硬件同時(shí)存在,且實(shí)現(xiàn)每輪加密邏輯運(yùn)算的硬件不會(huì)被重復(fù)使用。
上述方案中,所述待解密的每組數(shù)據(jù)包括多個(gè)數(shù)據(jù)包;
所述解密端,具體用于對(duì)每組待解密數(shù)據(jù)的各個(gè)數(shù)據(jù)包分別進(jìn)行ECB模式流水解密或CTR模式流水解密;
所述解密端,用于針對(duì)對(duì)應(yīng)數(shù)據(jù)包,依次進(jìn)行第1輪解密邏輯運(yùn)算至第N輪解密邏輯運(yùn)算,得出對(duì)應(yīng)數(shù)據(jù)包在ECB模式下的AES解密結(jié)果,N大于1;其中,實(shí)現(xiàn)各輪解密邏輯運(yùn)算的硬件同時(shí)存在,且實(shí)現(xiàn)每輪解密邏輯運(yùn)算的硬件不會(huì)被重復(fù)使用;
或者,所述解密端,用于在獲取對(duì)應(yīng)數(shù)據(jù)包之前,預(yù)先獲取計(jì)數(shù)值,并對(duì)計(jì)數(shù)值依次進(jìn)行第1輪解密邏輯運(yùn)算至第K輪解密邏輯運(yùn)算,得出計(jì)數(shù)解密結(jié)果,K大于1;在獲取對(duì)應(yīng)數(shù)據(jù)包之后,對(duì)對(duì)應(yīng)數(shù)據(jù)包中的數(shù)據(jù)和計(jì)數(shù)解密結(jié)果進(jìn)行異或運(yùn)算,得出對(duì)應(yīng)數(shù)據(jù)包在CTR模式下的AES解密結(jié)果;其中,實(shí)現(xiàn)各輪解密邏輯運(yùn)算的硬件同時(shí)存在,且實(shí)現(xiàn)每輪解密邏輯運(yùn)算的硬件不會(huì)被重復(fù)使用。
本發(fā)明實(shí)施例提供的一種AES加解密方法和裝置,獲取新密鑰,將所述新密鑰添加到下一組待加密數(shù)據(jù)中;利用原有密鑰對(duì)添加有新密鑰的一組待加密數(shù)據(jù)進(jìn)行AES加密,并利用所述新密鑰,對(duì)未進(jìn)行AES加密的各組待加密數(shù)據(jù)進(jìn)行AES加密;利用原有密鑰對(duì)各組待解密數(shù)據(jù)依次進(jìn)行AES解密,直至獲取到所述新密鑰;利用所述新密鑰對(duì)未進(jìn)行解密的各組待解密數(shù)據(jù)進(jìn)行AES解密。如此,能夠在不中斷加解密過程的情況下更換密鑰,提高數(shù)據(jù)使用的安 全性。
附圖說明
圖1為本發(fā)明AES加解密方法的第一實(shí)施例的流程圖;
圖2為本發(fā)明AES加解密方法的第一實(shí)施例中多輪加密邏輯運(yùn)算的流程框圖;
圖3為本發(fā)明AES加解密方法的第一實(shí)施例中多輪解密邏輯運(yùn)算的流程框圖;
圖4為本發(fā)明AES加解密方法的第二實(shí)施例的流程圖;
圖5為本發(fā)明實(shí)施例AES加解密裝置的組成結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述。
圖1為本發(fā)明AES加解密方法的第一實(shí)施例的流程圖,如圖1所示,該方法包括:
步驟100:獲取新密鑰,將所述新密鑰添加到下一組待加密數(shù)據(jù)中;利用原有密鑰對(duì)添加有新密鑰的一組待加密數(shù)據(jù)進(jìn)行AES加密,并利用所述新密鑰,對(duì)未進(jìn)行AES加密的各組待加密數(shù)據(jù)進(jìn)行AES加密。
本步驟中,可以利用加密端實(shí)現(xiàn)AES加密;這里,加密端可以通過硬件、軟件或軟硬件相結(jié)合的方式來進(jìn)行AES加密。
這里,獲取新密鑰包括:生成新密鑰,或者接收來自外部設(shè)備的新密鑰。
在實(shí)際應(yīng)用中,待加密的數(shù)據(jù)包括M組數(shù)據(jù),M大于1;這里,各組數(shù)據(jù)的加密順序可以預(yù)先設(shè)置。
進(jìn)一步地,待加密的每組數(shù)據(jù)包括多個(gè)數(shù)據(jù)包,在這種情況下,將所述新密鑰添加到下一組待加密數(shù)據(jù)中,包括:在對(duì)應(yīng)的一組待加密數(shù)據(jù)的各個(gè)數(shù)據(jù)包中添加新密鑰;這里,可以將新密鑰添加在對(duì)應(yīng)的一組待加密數(shù)據(jù)的各個(gè)數(shù) 據(jù)包的包頭。另外,每個(gè)數(shù)據(jù)包的包頭攜帶有指示信息,用于指示該數(shù)據(jù)包是對(duì)應(yīng)一組待加密數(shù)據(jù)的第幾個(gè)數(shù)據(jù)包。
本發(fā)明實(shí)施例中,可以在電碼本(Electronic Codebook Book,ECB)模式或計(jì)數(shù)(Counter,CTR)模式下實(shí)現(xiàn)AES加密。本步驟中,對(duì)每組待加密數(shù)據(jù)進(jìn)行AES加密包括:對(duì)每組待加密數(shù)據(jù)的各個(gè)數(shù)據(jù)包分別進(jìn)行ECB模式流水加密或CTR模式流水加密。
具體地,對(duì)每個(gè)數(shù)據(jù)包進(jìn)行ECB模式流水加密包括:針對(duì)對(duì)應(yīng)數(shù)據(jù)包,依次進(jìn)行密鑰異或運(yùn)算、第1輪加密邏輯運(yùn)算至第N輪加密邏輯運(yùn)算,得出對(duì)應(yīng)數(shù)據(jù)包在ECB模式下的AES加密結(jié)果,N大于1;其中,實(shí)現(xiàn)各輪加密邏輯運(yùn)算的硬件互不相同,也就是說,實(shí)現(xiàn)各輪加密邏輯運(yùn)算的硬件同時(shí)存在,且實(shí)現(xiàn)每輪加密邏輯運(yùn)算的硬件不會(huì)被重復(fù)使用;如此,可以實(shí)現(xiàn)流水線形式的多輪加密邏輯運(yùn)算,加快ECB模式下的AES加密中的計(jì)算過程。
這里,第i輪加密邏輯運(yùn)算包括按順序執(zhí)行的S盒變換(SubBytes)計(jì)算步驟、行移位變換(ShiftRows)計(jì)算步驟、列混合變換(Mixcolumns)計(jì)算步驟和輪密鑰加變換(AddRound密鑰)計(jì)算步驟,i取1至N-1;第N輪加密邏輯運(yùn)算只包括按順序執(zhí)行的S盒變換計(jì)算步驟、行移位變換計(jì)算步驟和輪密鑰加變換計(jì)算步驟。
這里,在對(duì)每個(gè)數(shù)據(jù)包進(jìn)行ECB模式流水加密時(shí),需要先獲取初始密鑰,將初始密鑰擴(kuò)展為N+1個(gè)擴(kuò)展密鑰;對(duì)每個(gè)數(shù)據(jù)包進(jìn)行密鑰異或運(yùn)算包括:將對(duì)應(yīng)數(shù)據(jù)包的數(shù)據(jù)與所述N+1個(gè)擴(kuò)展密鑰的第1個(gè)擴(kuò)展密鑰進(jìn)行異或運(yùn)算。對(duì)每個(gè)數(shù)據(jù)包進(jìn)行第i’輪加密邏輯運(yùn)算時(shí),需要利用所述N+1個(gè)擴(kuò)展密鑰的第i’+1個(gè)擴(kuò)展密鑰,i’取1至N。
具體地,對(duì)每個(gè)數(shù)據(jù)包進(jìn)行CTR模式流水加密包括:在獲取對(duì)應(yīng)數(shù)據(jù)包之前,預(yù)先獲取計(jì)數(shù)(COUNTER)值,并對(duì)計(jì)數(shù)值依次進(jìn)行密鑰異或運(yùn)算、第1輪加密邏輯運(yùn)算至第K輪加密邏輯運(yùn)算,得出計(jì)數(shù)加密結(jié)果,K大于1;在獲取對(duì)應(yīng)數(shù)據(jù)包之后,對(duì)對(duì)應(yīng)數(shù)據(jù)包中的數(shù)據(jù)和計(jì)數(shù)加密結(jié)果進(jìn)行異或運(yùn)算,得出對(duì)應(yīng)數(shù)據(jù)包在CTR模式下的AES加密結(jié)果;這里,實(shí)現(xiàn)各輪加密邏輯運(yùn)算 的硬件互不相同,也就是說,實(shí)現(xiàn)各輪加密邏輯運(yùn)算的硬件同時(shí)存在,且實(shí)現(xiàn)每輪加密邏輯運(yùn)算的硬件不會(huì)被重復(fù)使用;如此,可以實(shí)現(xiàn)流水線形式的多輪加密邏輯運(yùn)算,加快CTR模式下的AES加密中的計(jì)算過程。
這里,第j輪加密邏輯運(yùn)算包括按順序執(zhí)行的S盒變換計(jì)算步驟、行移位變換計(jì)算步驟、列混合變換計(jì)算步驟和輪密鑰加變換計(jì)算步驟,j取1至K-1;第K輪加密邏輯運(yùn)算只包括按順序執(zhí)行的S盒變換計(jì)算步驟、行移位變換計(jì)算步驟和輪密鑰加變換計(jì)算步驟。
這里,如果在獲取對(duì)應(yīng)數(shù)據(jù)包之前,不提前獲取計(jì)數(shù)加密結(jié)果,那么在獲取對(duì)應(yīng)數(shù)據(jù)包之后,就需要在得到計(jì)數(shù)加密結(jié)果之后,才能對(duì)計(jì)數(shù)加密結(jié)果和數(shù)據(jù)包中的數(shù)據(jù)進(jìn)行異或運(yùn)算,這樣,就需要對(duì)對(duì)應(yīng)數(shù)據(jù)包進(jìn)行緩存。因此在本發(fā)明實(shí)施例中,通過提前獲取計(jì)數(shù)加密結(jié)果,可以有效地節(jié)省緩存資源。
這里,在對(duì)每個(gè)數(shù)據(jù)包進(jìn)行CTR模式流水加密時(shí),需要先獲取初始密鑰,將初始密鑰擴(kuò)展為K+1個(gè)擴(kuò)展密鑰;對(duì)計(jì)數(shù)值進(jìn)行密鑰異或運(yùn)算包括:將計(jì)數(shù)值與所述K+1個(gè)擴(kuò)展密鑰的第1個(gè)擴(kuò)展密鑰進(jìn)行異或運(yùn)算。對(duì)計(jì)數(shù)值進(jìn)行第j’輪加密邏輯運(yùn)算時(shí),需要利用所述K+1個(gè)擴(kuò)展密鑰的第j’+1個(gè)擴(kuò)展密鑰,j’取1至K。
圖2為本發(fā)明AES加解密方法的第一實(shí)施例中多輪加密邏輯運(yùn)算的流程框圖,如圖2所示,Input表示進(jìn)行ECB模式的AES加密時(shí)待加密的數(shù)據(jù)包的輸入數(shù)據(jù),或者表示進(jìn)行CTR模式的AES加密時(shí)待加密的計(jì)數(shù)值,Input的位寬為128bit;round表示每一輪加密邏輯運(yùn)算,除了最后一輪加密邏輯運(yùn)算外,每輪加密邏輯運(yùn)算包括按順序執(zhí)行的S盒變換計(jì)算步驟、行移位變換計(jì)算步驟、列混合變換計(jì)算步驟和輪密鑰加變換計(jì)算步驟;最后一輪加密邏輯運(yùn)算只包括S盒變換計(jì)算步驟、行移位變換計(jì)算步驟和輪密鑰加變換計(jì)算步驟。Output表示進(jìn)行ECB模式的AES加密時(shí)最終得出的輸出數(shù)據(jù),或者表示進(jìn)行CTR模式的AES加密時(shí)的計(jì)數(shù)加密結(jié)果;第一密鑰擴(kuò)展模塊,用于將初始密鑰擴(kuò)展為多個(gè)擴(kuò)展密鑰,在第一密鑰擴(kuò)展模塊擴(kuò)展得出的各個(gè)擴(kuò)展密鑰中,一個(gè)擴(kuò)展密鑰用于對(duì)Input進(jìn)行異或運(yùn)算,其余擴(kuò)展密鑰用于對(duì)應(yīng)輪加密邏輯運(yùn)算。
進(jìn)一步地,初始密鑰的位寬可以是128bits、192bits或256bits,初始密鑰的位寬為128bits時(shí),多輪加密邏輯運(yùn)算的輪數(shù)為10;初始密鑰的位寬為192bits時(shí),多輪加密邏輯運(yùn)算的輪數(shù)為12;初始密鑰的位寬為256bits時(shí),多輪加密邏輯運(yùn)算的輪數(shù)為14。
步驟101:利用原有密鑰對(duì)各組待解密數(shù)據(jù)依次進(jìn)行AES解密,直至獲取到所述新密鑰;利用所述新密鑰對(duì)未進(jìn)行解密的各組待解密數(shù)據(jù)進(jìn)行AES解密。
本步驟中,可以利用解密端實(shí)現(xiàn)AES解密;這里,解密端可以通過硬件、軟件或軟硬件相結(jié)合的方式來進(jìn)行AES解密。
這里,各組待解密數(shù)據(jù)的解密順序與所述各組待加密數(shù)據(jù)的加密順序保持一致,也就是說,在步驟100中,對(duì)第1組待加密數(shù)據(jù)至第M組待加密數(shù)據(jù)依次進(jìn)行AES加密,得到對(duì)應(yīng)的第1組待解密數(shù)據(jù)至第M組待解密數(shù)據(jù);在本步驟中,對(duì)第1組待解密數(shù)據(jù)至第M組待解密數(shù)據(jù)依次進(jìn)行AES解密。
可見,本步驟中,可以通過AES解密的方式來獲取所述新密鑰。
進(jìn)一步地,待解密的每組數(shù)據(jù)包括多個(gè)數(shù)據(jù)包,在這種情況下,所述利用原有密鑰對(duì)各組待解密數(shù)據(jù)依次進(jìn)行AES解密,直至獲取到所述新密鑰,包括:利用原有密鑰對(duì)每組待解密數(shù)據(jù)的各個(gè)數(shù)據(jù)包進(jìn)行AES解密,并對(duì)每組待解密數(shù)據(jù)的各個(gè)數(shù)據(jù)包的包頭進(jìn)行檢測,確定所檢測的每個(gè)數(shù)據(jù)包的包頭中是否包含新密鑰;如果對(duì)于每組待解密數(shù)據(jù),所檢測出的包含新密鑰的數(shù)據(jù)包的包頭的個(gè)數(shù)大于等于設(shè)定閾值,則獲取所述新密鑰,否則,不獲取所述新密鑰。
本發(fā)明實(shí)施例中,可以在ECB模式或CTR模式下實(shí)現(xiàn)AES解密。本步驟中,對(duì)每組待解密數(shù)據(jù)進(jìn)行AES解密包括:對(duì)每組待解密數(shù)據(jù)的各個(gè)數(shù)據(jù)包分別進(jìn)行ECB模式流水解密或CTR模式流水解密。
具體地,對(duì)每個(gè)數(shù)據(jù)包進(jìn)行ECB模式流水解密包括:針對(duì)對(duì)應(yīng)數(shù)據(jù)包,依次進(jìn)行密鑰異或運(yùn)算、第1輪解密邏輯運(yùn)算至第N輪解密邏輯運(yùn)算,得出對(duì)應(yīng)數(shù)據(jù)包在ECB模式下的AES解密結(jié)果,N大于1;其中,實(shí)現(xiàn)各輪解密邏輯運(yùn)算的硬件互不相同,也就是說,實(shí)現(xiàn)各輪解密邏輯運(yùn)算的硬件同時(shí)存在,且實(shí) 現(xiàn)每輪解密邏輯運(yùn)算的硬件不會(huì)被重復(fù)使用;如此,可以實(shí)現(xiàn)流水線形式的多輪解密邏輯運(yùn)算,加快ECB模式下的AES解密中的計(jì)算過程。
這里,第i輪解密邏輯運(yùn)算包括按順序執(zhí)行的逆行移位變換(InvShiftRows)計(jì)算步驟、逆S盒變換(InvSubBytes)計(jì)算步驟、輪密鑰加變換(AddRound密鑰)計(jì)算步驟和逆列混合變換(InvMixcolumns)計(jì)算步驟,i取1至N-1;第N輪解密邏輯運(yùn)算只包括按順序執(zhí)行的逆行移位變換計(jì)算步驟、逆S盒變換計(jì)算步驟和輪密鑰加變換計(jì)算步驟。
這里,在對(duì)每個(gè)數(shù)據(jù)包進(jìn)行ECB模式流水解密時(shí),需要先獲取初始密鑰,將初始密鑰擴(kuò)展為N+1個(gè)擴(kuò)展密鑰;對(duì)每個(gè)數(shù)據(jù)包進(jìn)行密鑰異或運(yùn)算包括:將對(duì)應(yīng)數(shù)據(jù)包的數(shù)據(jù)與所述N+1個(gè)擴(kuò)展密鑰的第1個(gè)擴(kuò)展密鑰進(jìn)行異或運(yùn)算。對(duì)每個(gè)數(shù)據(jù)包進(jìn)行第i’輪解密邏輯運(yùn)算時(shí),需要利用所述N+1個(gè)擴(kuò)展密鑰的第i’+1個(gè)擴(kuò)展密鑰,i’取1至N。
需要說明的是,對(duì)每個(gè)數(shù)據(jù)包進(jìn)行ECB模式流水解密時(shí)所使用的N+1個(gè)擴(kuò)展密鑰與對(duì)每個(gè)數(shù)據(jù)包進(jìn)行ECB模式流水加密時(shí)所使用的N+1個(gè)擴(kuò)展密鑰相同,但是,對(duì)每個(gè)數(shù)據(jù)包進(jìn)行ECB模式流水解密時(shí)所使用的N+1個(gè)擴(kuò)展密鑰的使用順序?yàn)椋簩?duì)每個(gè)數(shù)據(jù)包進(jìn)行ECB模式流水加密時(shí)所使用的N+1個(gè)擴(kuò)展密鑰的使用順序的逆序。
具體地,對(duì)每個(gè)數(shù)據(jù)包進(jìn)行CTR模式流水解密包括:在獲取對(duì)應(yīng)數(shù)據(jù)包之前,預(yù)先獲取計(jì)數(shù)值,并對(duì)計(jì)數(shù)值依次進(jìn)行密鑰異或運(yùn)算、第1輪解密邏輯運(yùn)算至第K輪解密邏輯運(yùn)算,得出計(jì)數(shù)解密結(jié)果,K大于1;在獲取對(duì)應(yīng)數(shù)據(jù)包之后,對(duì)對(duì)應(yīng)數(shù)據(jù)包中的數(shù)據(jù)和計(jì)數(shù)解密結(jié)果進(jìn)行異或運(yùn)算,得出對(duì)應(yīng)數(shù)據(jù)包在CTR模式下的AES解密結(jié)果;這里,實(shí)現(xiàn)各輪解密邏輯運(yùn)算的硬件互不相同,也就是說,實(shí)現(xiàn)各輪解密邏輯運(yùn)算的硬件同時(shí)存在,且實(shí)現(xiàn)每輪解密邏輯運(yùn)算的硬件不會(huì)被重復(fù)使用;如此,可以實(shí)現(xiàn)流水線形式的多輪加密邏輯運(yùn)算,加快CTR模式下的AES解密的計(jì)算過程。
這里,第j輪解密邏輯運(yùn)算包括按順序執(zhí)行的逆行移位變換計(jì)算步驟、逆S盒變換計(jì)算步驟、輪密鑰加變換計(jì)算步驟和逆列混合變換計(jì)算步驟,j取1至 K-1;第K輪解密邏輯運(yùn)算只包括按順序執(zhí)行的逆行移位變換計(jì)算步驟、逆S盒變換計(jì)算步驟和輪密鑰加變換計(jì)算步驟。
這里,如果在獲取對(duì)應(yīng)待解密的數(shù)據(jù)包之前,不提前獲取計(jì)數(shù)解密結(jié)果,那么在獲取對(duì)應(yīng)數(shù)據(jù)包之后,就需要在得到計(jì)數(shù)解密結(jié)果之后,才能對(duì)計(jì)數(shù)解密結(jié)果和數(shù)據(jù)包中的數(shù)據(jù)進(jìn)行異或運(yùn)算,這樣,就需要對(duì)對(duì)應(yīng)數(shù)據(jù)包進(jìn)行緩存。因此在本發(fā)明實(shí)施例中,通過提前獲取計(jì)數(shù)解密結(jié)果,可以有效地節(jié)省緩存資源。
這里,在對(duì)每個(gè)數(shù)據(jù)包進(jìn)行CTR模式流水解密時(shí),需要先獲取初始密鑰,將初始密鑰擴(kuò)展為K+1個(gè)擴(kuò)展密鑰;對(duì)計(jì)數(shù)值進(jìn)行密鑰異或運(yùn)算包括:將計(jì)數(shù)值與所述K+1個(gè)擴(kuò)展密鑰的第1個(gè)擴(kuò)展密鑰進(jìn)行異或運(yùn)算。對(duì)計(jì)數(shù)值進(jìn)行第j’輪解密邏輯運(yùn)算時(shí),需要利用所述K+1個(gè)擴(kuò)展密鑰的第j’+1個(gè)擴(kuò)展密鑰,j’取1至K。
需要說明的是,對(duì)每個(gè)數(shù)據(jù)包進(jìn)行CTR模式流水解密時(shí)所使用的K+1個(gè)擴(kuò)展密鑰與對(duì)每個(gè)數(shù)據(jù)包進(jìn)行CTR模式流水加密時(shí)所使用的K+1個(gè)擴(kuò)展密鑰相同,但是,對(duì)每個(gè)數(shù)據(jù)包進(jìn)行CTR模式流水解密時(shí)所使用的K+1個(gè)擴(kuò)展密鑰的使用順序?yàn)椋簩?duì)每個(gè)數(shù)據(jù)包進(jìn)行CTR模式流水加密時(shí)所使用的K+1個(gè)擴(kuò)展密鑰的使用順序的逆序。
圖3為本發(fā)明AES加解密方法的第一實(shí)施例中多輪解密邏輯運(yùn)算的流程框圖,如圖3所示,In表示進(jìn)行ECB模式的AES加密時(shí)待加密的數(shù)據(jù)包的數(shù)據(jù),或者表示進(jìn)行CTR模式的AES加密時(shí)待加密的計(jì)數(shù)值,In的位寬為128bit;Round表示每一輪解密邏輯運(yùn)算,除了最后一輪解密邏輯運(yùn)算外,每輪解密邏輯運(yùn)算包括按順序執(zhí)行的逆行移位變換計(jì)算步驟、逆S盒變換計(jì)算步驟、輪密鑰加變換計(jì)算步驟和逆列混合變換計(jì)算步驟;最后一輪解密邏輯運(yùn)算只包括逆行移位變換計(jì)算步驟、逆S盒變換計(jì)算步驟和輪密鑰加變換計(jì)算步驟。Out表示進(jìn)行ECB模式的AES加密時(shí)最終得出的加密結(jié)果,或者表示進(jìn)行CTR模式的AES加密時(shí)的計(jì)數(shù)加密結(jié)果;第二密鑰擴(kuò)展模塊,用于將初始密鑰擴(kuò)展為多個(gè)擴(kuò)展密鑰,在第二密鑰擴(kuò)展模塊擴(kuò)展得出的各個(gè)擴(kuò)展密鑰中,一個(gè)擴(kuò)展密鑰 用于對(duì)In進(jìn)行異或運(yùn)算,其余擴(kuò)展密鑰用于對(duì)應(yīng)輪解密邏輯運(yùn)算。
進(jìn)一步地,初始密鑰的位寬可以是128bits、192bits或256bits,初始密鑰的位寬為128bits時(shí),多輪解密邏輯運(yùn)算的輪數(shù)為10;初始密鑰的位寬為192bits時(shí),多輪解密邏輯運(yùn)算的輪數(shù)為12;初始密鑰的位寬為256bits時(shí),多輪解密邏輯運(yùn)算的輪數(shù)為14。
本發(fā)明AES加解密方法的第一實(shí)施例中,將添加新密鑰的過程設(shè)置在AES加密的過程中,如此,可以在不中斷數(shù)據(jù)流的情況下更換密鑰。
第二實(shí)施例
為了能更加體現(xiàn)本發(fā)明的目的,在本發(fā)明第一實(shí)施例的基礎(chǔ)上進(jìn)行進(jìn)一步的舉例說明。
圖4為本發(fā)明AES加解密方法的第二實(shí)施例的流程圖,如圖4所示,該方法包括:
步驟400:利用控制單元向加密端發(fā)送攜帶有新密鑰的密鑰更換通知。
步驟401:加密端在接收到所述密鑰更換通知之后,在下一組待加密的數(shù)據(jù)的各個(gè)數(shù)據(jù)包的包頭添加新密鑰;并在添加新密鑰之后,利用所述新密鑰對(duì)下一組待加密的數(shù)據(jù)的各個(gè)數(shù)據(jù)包進(jìn)行加密,向控制單元發(fā)送加密端密鑰已更換信息。
步驟402:解密端使用原有密鑰對(duì)第m組待解密的數(shù)據(jù)進(jìn)行解密,并檢測第m組待解密的數(shù)據(jù)的各個(gè)數(shù)據(jù)包包頭,得出第m組待解密的數(shù)據(jù)對(duì)應(yīng)的包含新密鑰的數(shù)據(jù)包的包頭的個(gè)數(shù),m的初始值為1。
步驟403:當(dāng)m小于M時(shí),跳至步驟404,M表示待解密的數(shù)據(jù)的組數(shù);當(dāng)m等于M時(shí),結(jié)束流程。
步驟404:第m組待解密的數(shù)據(jù)對(duì)應(yīng)的包含新密鑰的數(shù)據(jù)包的包頭的個(gè)數(shù)大于零時(shí),執(zhí)行步驟405;否則,當(dāng)?shù)趍組待解密的數(shù)據(jù)對(duì)應(yīng)的包含新密鑰的數(shù)據(jù)包的包頭的個(gè)數(shù)為零,令m的值增1,返回至步驟402。
步驟405:判斷第m組待解密的數(shù)據(jù)對(duì)應(yīng)的包含新密鑰的數(shù)據(jù)包的包頭的個(gè)數(shù)是否大于等于設(shè)定閾值Y,如果大于等于設(shè)定閾值Y,則跳至步驟406, 否則,跳至步驟407。
步驟406:解密端使用新密鑰,依次對(duì)第m+1組數(shù)據(jù)至第M組數(shù)據(jù)進(jìn)行AES解密,向控制單元發(fā)送密鑰已更換信息;結(jié)束流程。
可見,在步驟406之后,控制單元獲知:加密端和解密端均已進(jìn)行了密鑰更換過程。
步驟407:解密端向控制單元發(fā)送密鑰更換失敗消息,控制單元接收到密鑰更換失敗消息之后,針對(duì)添加新密鑰的一組待加密的數(shù)據(jù),重新在各個(gè)數(shù)據(jù)包的包頭添加新密鑰,并用重新添加新密鑰后的每個(gè)數(shù)據(jù)包替換原有的數(shù)據(jù)包,利用所述新密鑰對(duì)下一組待加密的數(shù)據(jù)的各個(gè)數(shù)據(jù)包進(jìn)行加密,向控制單元發(fā)送加密端密鑰已更換信息,然后返回至步驟402。
第三實(shí)施例
針對(duì)本發(fā)明實(shí)施例的方法,本發(fā)明實(shí)施例還提供了一種AES加解密裝置。
圖5為本發(fā)明實(shí)施例AES加解密裝置的組成結(jié)構(gòu)示意圖,如圖5所示,該裝置包括加密端500和解密端501;其中,
加密端500,用于獲取新密鑰,將所述新密鑰添加到下一組待加密數(shù)據(jù)中;利用原有密鑰對(duì)添加有新密鑰的一組待加密數(shù)據(jù)進(jìn)行AES加密,并利用所述新密鑰,對(duì)未進(jìn)行AES加密的各組待加密數(shù)據(jù)進(jìn)行AES加密;
解密端501,用于利用原有密鑰對(duì)各組待解密數(shù)據(jù)依次進(jìn)行AES解密,直至獲取到所述新密鑰;利用所述新密鑰對(duì)未進(jìn)行解密的各組待解密數(shù)據(jù)進(jìn)行AES解密。
具體地,所述待加密的每組數(shù)據(jù)包括多個(gè)數(shù)據(jù)包;所述待解密的每組數(shù)據(jù)包括多個(gè)數(shù)據(jù)包。
所述加密端500,具體用于在對(duì)應(yīng)的一組待加密數(shù)據(jù)的各個(gè)數(shù)據(jù)包中添加新密鑰。
所述解密端501,具體用于利用原有密鑰對(duì)每組待解密數(shù)據(jù)的各個(gè)數(shù)據(jù)包進(jìn)行AES解密,并對(duì)每組待解密數(shù)據(jù)的各個(gè)數(shù)據(jù)包進(jìn)行檢測,確定所檢測的每個(gè)數(shù)據(jù)包中是否包含新密鑰。
所述解密端501,用于在對(duì)于每組待解密數(shù)據(jù),所檢測出的包含新密鑰的數(shù)據(jù)包的包頭的個(gè)數(shù)大于等于設(shè)定閾值時(shí),獲取所述新密鑰。
進(jìn)一步地,所述加密端500,具體用于對(duì)每組待加密數(shù)據(jù)的各個(gè)數(shù)據(jù)包分別進(jìn)行ECB模式流水加密或CTR模式流水加密;
所述加密端500,用于針對(duì)對(duì)應(yīng)數(shù)據(jù)包,依次進(jìn)行第1輪加密邏輯運(yùn)算至第N輪加密邏輯運(yùn)算,得出對(duì)應(yīng)數(shù)據(jù)包在ECB模式下的AES加密結(jié)果,N大于1;其中,實(shí)現(xiàn)各輪加密邏輯運(yùn)算的硬件互不相同;也就是說,實(shí)現(xiàn)各輪加密邏輯運(yùn)算的硬件同時(shí)存在,且實(shí)現(xiàn)每輪加密邏輯運(yùn)算的硬件不會(huì)被重復(fù)使用;
或者,所述加密端500,用于在獲取對(duì)應(yīng)數(shù)據(jù)包之前,預(yù)先獲取計(jì)數(shù)值,并對(duì)計(jì)數(shù)值依次進(jìn)行第1輪加密邏輯運(yùn)算至第K輪加密邏輯運(yùn)算,得出計(jì)數(shù)加密結(jié)果,K大于1;在獲取對(duì)應(yīng)數(shù)據(jù)包之后,對(duì)對(duì)應(yīng)數(shù)據(jù)包中的數(shù)據(jù)和計(jì)數(shù)加密結(jié)果進(jìn)行異或運(yùn)算,得出對(duì)應(yīng)數(shù)據(jù)包在CTR模式下的AES加密結(jié)果;其中,實(shí)現(xiàn)各輪加密邏輯運(yùn)算的硬件互不相同;也就是說,實(shí)現(xiàn)各輪加密邏輯運(yùn)算的硬件同時(shí)存在,且實(shí)現(xiàn)每輪加密邏輯運(yùn)算的硬件不會(huì)被重復(fù)使用;。
所述解密端501,具體用于對(duì)每組待解密數(shù)據(jù)的各個(gè)數(shù)據(jù)包分別進(jìn)行ECB模式流水解密或CTR模式流水解密;
所述解密端501,用于針對(duì)對(duì)應(yīng)數(shù)據(jù)包,依次進(jìn)行第1輪解密邏輯運(yùn)算至第N輪解密邏輯運(yùn)算,得出對(duì)應(yīng)數(shù)據(jù)包在ECB模式下的AES解密結(jié)果,N大于1;其中,實(shí)現(xiàn)各輪解密邏輯運(yùn)算的硬件互不相同;也就是說,實(shí)現(xiàn)各輪解密邏輯運(yùn)算的硬件同時(shí)存在,且實(shí)現(xiàn)每輪解密邏輯運(yùn)算的硬件不會(huì)被重復(fù)使用;
或者,所述解密端501,用于在獲取對(duì)應(yīng)數(shù)據(jù)包之前,預(yù)先獲取計(jì)數(shù)值,并對(duì)計(jì)數(shù)值依次進(jìn)行第1輪解密邏輯運(yùn)算至第K輪解密邏輯運(yùn)算,得出計(jì)數(shù)解密結(jié)果,K大于1;在獲取對(duì)應(yīng)數(shù)據(jù)包之后,對(duì)對(duì)應(yīng)數(shù)據(jù)包中的數(shù)據(jù)和計(jì)數(shù)解密結(jié)果進(jìn)行異或運(yùn)算,得出對(duì)應(yīng)數(shù)據(jù)包在CTR模式下的AES解密結(jié)果;其中,實(shí)現(xiàn)各輪解密邏輯運(yùn)算的硬件互不相同;也就是說,實(shí)現(xiàn)各輪解密邏輯運(yùn)算的硬件同時(shí)存在,且實(shí)現(xiàn)每輪解密邏輯運(yùn)算的硬件不會(huì)被重復(fù)使用。
在實(shí)際應(yīng)用中,所述加密端500和解密端501均可由位于終端中的中央處 理器(Central Processing Unit,CPU)、微處理器(Micro Processor Unit,MPU)、數(shù)字信號(hào)處理器(Digital Signal Processor,DSP)、或現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)等實(shí)現(xiàn)。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用硬件實(shí)施例、軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器和光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。