一種用于IPSec協(xié)議下的AES算法硬件實(shí)現(xiàn)裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)數(shù)據(jù)流加密技術(shù)領(lǐng)域,尤其涉及一種用于IPSec (InternetProtocol Security)協(xié)議下的AES算法硬件實(shí)現(xiàn)裝置。
【背景技術(shù)】
[0002]密碼學(xué)是一門歷史非常悠久的學(xué)科。自從人類有傳輸信息的需求開(kāi)始,加密與破解密碼便成為了雙方斗智的戰(zhàn)場(chǎng)。現(xiàn)代的密碼學(xué)不僅限于用于軍事與金融用途,而是與我們?nèi)粘I蠲芮邢嚓P(guān)。從個(gè)人網(wǎng)銀轉(zhuǎn)賬到上網(wǎng)賬戶的賬號(hào)和密碼,如何保證個(gè)人信息的安全已成為一個(gè)受到廣泛重視的話題。密碼學(xué)已經(jīng)充分融入了我們生活的點(diǎn)點(diǎn)滴滴中。為了應(yīng)對(duì)DES算法暴露出的缺點(diǎn),1997年的I月,美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)為了新算法一高速加密標(biāo)準(zhǔn)(AES)征求建議以替代舊的數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)。
[0003]AES算法的加密模式主要分為兩種,無(wú)反饋模式和反饋模式,例如電子密碼本(ECB,Electronic Code Book)模式和計(jì)算器(Counter)模式屬于無(wú)反饋模式,密碼分組鏈(CBC,Cipher Block Chaining)模式、密碼反饋(CFB,Cipher Feedback)模式和輸出反饋模式(0FB,Output Feedback)模式則屬于反饋模式。
[0004]IPSec是安全聯(lián)網(wǎng)的長(zhǎng)期方向。它通過(guò)端對(duì)端的安全性來(lái)提供主動(dòng)的保護(hù)以防止專用網(wǎng)絡(luò)與Internet的攻擊。在通信中,只有發(fā)送方和接收方才是唯一必須了解IPSec保護(hù)的計(jì)算機(jī)。IPSec 協(xié)議是 IETF( Internet Engineering Task Force,Internet 工程任務(wù)組)的IPSec小組建立的一組IP安全協(xié)議集。IPSec定義了在網(wǎng)絡(luò)層使用的安全服務(wù),其功能包括數(shù)據(jù)加密、對(duì)網(wǎng)絡(luò)單元的訪問(wèn)控制、數(shù)據(jù)源地址驗(yàn)證、數(shù)據(jù)完整性檢查和防止重放攻擊。
[0005]由于IPSec協(xié)議標(biāo)準(zhǔn)要求必須使用CBC模式進(jìn)行AES加、解密,所以,為了在IPSec協(xié)議下實(shí)現(xiàn)AES加密算法,需要一種切實(shí)可行的方案來(lái)解決這個(gè)問(wèn)題,在能夠適應(yīng)IPSec協(xié)議的基礎(chǔ)上,可以通過(guò)硬件實(shí)現(xiàn)來(lái)提升處理效率和系統(tǒng)可靠性。
【發(fā)明內(nèi)容】
[0006]本發(fā)明所要解決的技術(shù)問(wèn)題在于克服現(xiàn)有技術(shù)不足,提供一種用于IPSec協(xié)議下的AES算法硬件實(shí)現(xiàn)裝置,在能夠適應(yīng)IPSec協(xié)議的基礎(chǔ)上,大幅提升數(shù)據(jù)加密的效率和可靠性。
[0007]本發(fā)明具體采用以下技術(shù)方案解決上述技術(shù)問(wèn)題:
一種用于IPSec協(xié)議下的AES算法硬件實(shí)現(xiàn)裝置,包括:進(jìn)入控制模塊、外出控制模塊、時(shí)鐘生成模塊、密鑰生成模塊、AES算法模塊;
所述進(jìn)入控制模塊用于接收外部輸入的符合IPSec協(xié)議的數(shù)據(jù)包,并對(duì)所接收的數(shù)據(jù)包進(jìn)行以下處理:先從第一個(gè)數(shù)據(jù)包中提取以下信息:密鑰使用長(zhǎng)度、子數(shù)據(jù)包個(gè)數(shù)、工作時(shí)鐘頻率以及運(yùn)算模式;然后根據(jù)所提取的密鑰使用長(zhǎng)度接收相應(yīng)數(shù)量的密鑰子數(shù)據(jù)包,并將密鑰子數(shù)據(jù)包整合成一個(gè)128?256bits長(zhǎng)度的密鑰后發(fā)送給密鑰生成模塊;再接收相應(yīng)數(shù)量的初始化向量IV的子數(shù)據(jù)包VI,將其整合成一個(gè)128bits的數(shù)據(jù)并儲(chǔ)存;接著依次接收相應(yīng)數(shù)量的待處理數(shù)據(jù),將其分別整合成長(zhǎng)度為128bits的待處理數(shù)據(jù)塊Pi,并將第一個(gè)待處理數(shù)據(jù)塊Pl與之前儲(chǔ)存的Vl異或得到Cl,將待處理數(shù)據(jù)塊Pi與AES算法模塊對(duì)C(1-l)處理后得到的數(shù)據(jù)進(jìn)行異或得到Ci,將異或后數(shù)據(jù)發(fā)送給AES算法模塊,其中i=2,3,…;當(dāng)所接收的數(shù)據(jù)包數(shù)量達(dá)到所提取的子數(shù)據(jù)包個(gè)數(shù)后,開(kāi)始下一個(gè)數(shù)據(jù)包的處理;
所述密鑰生成模塊用于根據(jù)進(jìn)入控制模塊所提取的密鑰使用長(zhǎng)度,配置相應(yīng)的子密鑰產(chǎn)生輪數(shù);
所述時(shí)鐘生成模塊用于按照進(jìn)入控制模塊所提取的工作時(shí)鐘頻率為整個(gè)AES算法硬件實(shí)現(xiàn)裝置提供相應(yīng)的工作時(shí)鐘;
所述AES算法模塊用于根據(jù)密鑰生成模塊產(chǎn)生的子密鑰對(duì)進(jìn)入控制模塊處理后的數(shù)據(jù)進(jìn)行AES加密/解密;所述AES算法模塊由可模塊復(fù)用的組合邏輯電路構(gòu)成,能夠根據(jù)進(jìn)入控制模塊所所提供的密鑰使用長(zhǎng)度、工作時(shí)鐘頻率、運(yùn)算模式,對(duì)輸入數(shù)據(jù)進(jìn)行可配置的AES加密/解密運(yùn)算;
所述外出控制模塊用于將AES算法模塊輸出數(shù)據(jù)傳輸給進(jìn)入控制模塊,同時(shí)將AES算法模塊輸出數(shù)據(jù)拆分為相應(yīng)的子數(shù)據(jù)包,并為各個(gè)子數(shù)據(jù)包添加保證其完整性的數(shù)據(jù)包標(biāo)志位后依次輸出。
[0008]所述AES算法模塊包括AES加密模塊和AES解密模塊;AES加密模塊包括依次連接的多個(gè)加密輪運(yùn)算模塊,每個(gè)加密輪運(yùn)算模塊包括依次連接的字節(jié)替換模塊、行移位變換模塊、列混合變換模塊,在每一個(gè)加密輪運(yùn)算模塊的行移位變換模塊與列混合變換模塊之間串接有一個(gè)選擇器,該選擇器用于判斷是否到了加密運(yùn)算的最后一輪,如果是,則輸出行移位變換的結(jié)果,否則,輸出列混合變換之后的結(jié)果;AES解密模塊包括依次連接的多個(gè)解密輪運(yùn)算模塊,每個(gè)解密輪運(yùn)算模塊包括依次連接的逆列混合變換模塊、逆行移位變換模塊、逆字節(jié)替換模塊,在每一個(gè)解密輪運(yùn)算模塊的逆列混合變換模塊和逆行移位變換模塊之間串接有一個(gè)選擇器,該選擇器用于判斷是否到了解密運(yùn)算的最后一輪,如果是,則跳過(guò)逆列混合變換,直接進(jìn)行逆行移位變換,否則先進(jìn)行逆列混合變換,再進(jìn)行逆行移位變換。
[0009]相比現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:
本發(fā)明利用進(jìn)入控制模塊將輸入的IPsec數(shù)據(jù)整合為滿足AES運(yùn)算的數(shù)據(jù),利用外出控制模塊將完成AES運(yùn)算的數(shù)據(jù)拆分為IPsec數(shù)據(jù)輸出,實(shí)現(xiàn)了 IPSec協(xié)議下的AES算法應(yīng)用;
本發(fā)明基于模塊復(fù)用的思想,利用硬件組合邏輯電路可以并行處理的特點(diǎn),使得傳統(tǒng)AES運(yùn)算所需的周期大大縮短,以此來(lái)提高整個(gè)算法的運(yùn)行速度;
由于網(wǎng)絡(luò)數(shù)據(jù)以數(shù)據(jù)流形式傳輸,這使得密鑰、初始化向量IV和待處理數(shù)據(jù)不能同時(shí)傳入,其相互之間會(huì)間隔一定周期,本發(fā)明通過(guò)將接收到的密鑰先傳入密鑰生成模塊中,提前生成子密鑰,等到待處理數(shù)據(jù)整合好開(kāi)始傳送時(shí),子密鑰正好生成完畢,以此節(jié)約了時(shí)鐘,進(jìn)一步提尚了算法實(shí)現(xiàn)效率;
本發(fā)明可通過(guò)對(duì)現(xiàn)有硬件AES運(yùn)算模塊進(jìn)行簡(jiǎn)單改進(jìn)即可實(shí)現(xiàn),實(shí)現(xiàn)成本低,適用范圍廣。
【附圖說(shuō)明】
[0010]圖1為本發(fā)明AES算法硬件實(shí)現(xiàn)裝置的結(jié)構(gòu)框架示意圖;
圖2為進(jìn)入控制模塊的工作流程示意圖;
圖3為外出控制模塊的工作流程示意圖;
圖4為傳統(tǒng)AES運(yùn)算模塊的實(shí)現(xiàn)原理示意圖;
圖5為本發(fā)明AES算法硬件實(shí)現(xiàn)裝置的實(shí)現(xiàn)原理示意圖;
圖6為本發(fā)明AES算法硬件實(shí)現(xiàn)裝置中實(shí)現(xiàn)一輪運(yùn)算的原理示意圖,其中包含了輪加密和輪解密運(yùn)算。
【具體實(shí)施方式】
[0011]下面結(jié)合附圖對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說(shuō)明:
在IPSec協(xié)議下,所有數(shù)據(jù)以數(shù)據(jù)包形式流通,數(shù)據(jù)包的格式以及位數(shù)必須符合協(xié)議要求和約定,而AES算法一次只能處理128bits數(shù)據(jù),密鑰也只能是128、192、256bits長(zhǎng)度。一般為節(jié)省帶寬,IPSec數(shù)據(jù)包的位數(shù)遠(yuǎn)低于128bits,因此本發(fā)明加入了進(jìn)入控制模塊和外出控制模塊,用于對(duì)數(shù)據(jù)包進(jìn)入的整合以及對(duì)外出數(shù)據(jù)的分拆,以使得AES算法得以正常應(yīng)用于IPSec協(xié)議中。同時(shí)IPSec協(xié)議要求AES必須使用CBC模式,該模式的實(shí)現(xiàn)也有賴于所添加的進(jìn)入控制模塊和外出控制模塊,將待處理數(shù)據(jù)在進(jìn)入控制模塊中組包完成時(shí),即讓它與初始化向量IV或者前一次處理后的數(shù)據(jù)(可能是加密后的密文也可能是解密后的明文)異或。
[0012]本發(fā)明根據(jù)所接收數(shù)據(jù)包中的特定的標(biāo)志位,告知各個(gè)模塊去配置與外界要求相匹配的密鑰使用長(zhǎng)度、子數(shù)據(jù)包個(gè)數(shù)、選擇運(yùn)算模式(即選擇加密還是解密運(yùn)算)以及算法的內(nèi)部時(shí)鐘頻率。
[0013]圖1顯示了本發(fā)明AES算法硬件實(shí)現(xiàn)裝置的基本結(jié)構(gòu),如圖所示,該裝置包括:進(jìn)入控制模塊、外出控制模塊、時(shí)鐘生成模塊、密鑰生成模塊、AES算法模塊。所述進(jìn)入控制模塊用于接收外部輸入的符合IPSec協(xié)議的數(shù)據(jù)包,并對(duì)所接收的數(shù)據(jù)包進(jìn)行以下處理:先從第一個(gè)數(shù)據(jù)包中提取以下信息:密鑰使用長(zhǎng)度、子數(shù)據(jù)包個(gè)數(shù)、工作時(shí)鐘頻率以及運(yùn)算模式;然后根據(jù)所提取的密鑰使用長(zhǎng)度接收相應(yīng)數(shù)量的密鑰子數(shù)據(jù)包,并將密鑰子數(shù)據(jù)包整合成一個(gè)128?256bits長(zhǎng)度的密鑰后發(fā)送給密鑰生成模塊;再接收相應(yīng)數(shù)量的初始化向量IV的子數(shù)據(jù)包VI,將其整合成一個(gè)128bits的數(shù)據(jù)并儲(chǔ)存;接著依次接收相應(yīng)數(shù)量的待處理數(shù)據(jù),將其分別整合成長(zhǎng)度為128bits的待處理數(shù)據(jù)塊Pi,并將第一個(gè)待處理數(shù)據(jù)塊Pl與之前儲(chǔ)存的Vl異或得到Cl,將待處理數(shù)據(jù)塊Pi與AES算法模塊對(duì)C (1-1)處理后得到的數(shù)據(jù)進(jìn)行異或得到Ci,將異或后數(shù)據(jù)發(fā)送給AES算法模塊,其中i=2,3,…;當(dāng)所接收的數(shù)據(jù)包數(shù)量達(dá)到所提取的子數(shù)據(jù)包個(gè)數(shù)后,開(kāi)始下一個(gè)數(shù)據(jù)包的處理。所述密鑰生成模塊用于根據(jù)進(jìn)入控制模塊所提取的密鑰使用長(zhǎng)度,配置相應(yīng)的子密鑰產(chǎn)生輪數(shù)。所述時(shí)鐘生成模塊用于按照進(jìn)入控制模塊所提取的工作時(shí)鐘頻率為整個(gè)AES算法硬件實(shí)現(xiàn)裝置提供相應(yīng)的工作時(shí)鐘。所述AES算法模塊用于根據(jù)密鑰生成模塊產(chǎn)生的子密鑰對(duì)進(jìn)入控制模塊處理后的數(shù)據(jù)進(jìn)行AES加密/解密;所述AES算法模塊由可模塊復(fù)用的組合邏輯電路構(gòu)成,能夠根據(jù)進(jìn)入控制模塊所所提供的密鑰使用長(zhǎng)度、工作時(shí)鐘頻率、運(yùn)算模式,對(duì)輸入數(shù)據(jù)進(jìn)行可配置的AES加密/解密運(yùn)算。所述外出控制模塊用于將AES算法模塊輸出數(shù)據(jù)傳輸給進(jìn)入控制模塊,同時(shí)將AES算法模塊輸出數(shù)據(jù)拆分為相應(yīng)的子數(shù)據(jù)包,并為各個(gè)子數(shù)據(jù)包添加保證其完整性的數(shù)據(jù)包標(biāo)志位后依次輸出。
[0014]圖2顯示了進(jìn)入控制模塊的基本工作流程。其工作過(guò)程具體包括以下步驟:
1)第一個(gè)子數(shù)據(jù)包BI傳入模塊,先判斷BI包格式正確性,假設(shè)以每一個(gè)子數(shù)據(jù)包的最高兩位作為數(shù)據(jù)包標(biāo)志位,首包是01,中間數(shù)據(jù)包是00,尾包是10,若每一次子數(shù)據(jù)包進(jìn)入時(shí),數(shù)據(jù)包標(biāo)志位不符合約定,則判定整個(gè)數(shù)據(jù)包無(wú)效,模塊將包丟棄,并發(fā)出錯(cuò)誤信號(hào);
2)提取BI中的特定標(biāo)志位,本實(shí)施例中的標(biāo)志位包括表示密鑰使用長(zhǎng)度的3位標(biāo)志位、表示子數(shù)據(jù)包個(gè)數(shù)的16位標(biāo)志位、表示工作時(shí)鐘頻率的3位標(biāo)志位、選擇加密或解密的I位標(biāo)志位,將這些信號(hào)做相關(guān)運(yùn)算處理之后發(fā)送給其他模塊或者存放在內(nèi)部寄存器中;
3)根據(jù)密鑰使用長(zhǎng)度標(biāo)志位,模塊等待相應(yīng)數(shù)量的密鑰子數(shù)據(jù)包,并將密鑰子數(shù)據(jù)包整合成一個(gè)128-2