理,得到目前層級的輸出數(shù)據(jù)。
[0023]在具體實(shí)施中,所述每個(gè)層級的DMA鏈表包括搬送數(shù)據(jù)長度、數(shù)據(jù)源地址、數(shù)據(jù)目的地址和下一條鏈表地址;
最后一個(gè)層級的DMA鏈表包括搬送數(shù)據(jù)長度、數(shù)據(jù)源地址和數(shù)據(jù)目的地址。
[0024]在具體實(shí)施中,如圖3所示,所述第一層級的DMA鏈表包括第一 DMA子鏈表用于從密鑰數(shù)據(jù)的存儲地址中獲得所述密鑰數(shù)據(jù),第二 DMA子鏈表用于從η層級的輸入數(shù)據(jù)存儲地址中獲得所述目前層級的輸入數(shù)據(jù)和第三DMA子鏈表用于獲得控制數(shù)據(jù);
所述中間層級的每一層級的DMA鏈表包括第一 DMA子鏈表用于從加/解密模塊的輸出數(shù)據(jù)寄存器中獲得所述上一層級的輸出數(shù)據(jù)作為當(dāng)前層級的密鑰數(shù)據(jù),第二 DMA子鏈表用于從η層級的輸入數(shù)據(jù)存儲地址中獲得所述目前層級的輸入數(shù)據(jù)和第三DMA子鏈表用于獲得控制數(shù)據(jù);
所述最后一層級的DMA鏈表包括第一 DMA子鏈表用于從加/解密模塊的輸出數(shù)據(jù)寄存器中獲得所述上一層級的輸出數(shù)據(jù)作為最后層級的密鑰數(shù)據(jù),第二 DMA子鏈表用于從η層級的輸入數(shù)據(jù)存儲地址中獲得所述最后層級的輸入數(shù)據(jù),第三DMA子鏈表用于獲得控制數(shù)據(jù)和第四DMA子鏈表用于將最后層級的輸出數(shù)據(jù)作為最終密鑰保存到安全存儲器中。
[0025]本發(fā)明提供另一種實(shí)施例的數(shù)據(jù)加/解密的處理方法,如圖4所示,所述方法包括以下步驟:
步驟S11,處理器獲取密鑰數(shù)據(jù)的存儲地址和η層級的輸入數(shù)據(jù)存儲地址,其中η為大于等于1的正整數(shù);
步驟S12,處理器根據(jù)所述密鑰數(shù)據(jù)的存儲地址和η層級的輸入數(shù)據(jù)存儲地址,生成η層級的DMA鏈表;
步驟S13,處理器將目前層級的DMA鏈表數(shù)據(jù)寫入直接存儲訪問器,并啟動(dòng)直接存儲訪問器工作;
步驟S14,直接存儲訪問器根據(jù)目前層級的DMA鏈表,得到密鑰數(shù)據(jù)、目前層級的輸入數(shù)據(jù)以及控制數(shù)據(jù)并輸出;
步驟S15,加/解密模塊根據(jù)所述目前層級的輸入數(shù)據(jù)對所述密鑰數(shù)據(jù)進(jìn)行加/解密處理當(dāng)所述控制數(shù)據(jù)為啟動(dòng)信號時(shí),得到目前層級的輸出數(shù)據(jù);
步驟S16,處理器判斷是否獲取到下一層級的DMA鏈表,如果是,輸出第一判斷信號,進(jìn)入步驟S17,如果否,輸出第二信號,進(jìn)入步驟S18 ;
步驟S17,直接存儲訪問器根據(jù)下一層級的DMA鏈表,將目前層級的輸出數(shù)據(jù)作為下一層級的密鑰數(shù)據(jù)當(dāng)接收到所述第一判斷信號時(shí),以進(jìn)行加/解密處理; 步驟S18,接收到所述第二判斷信號時(shí),直接存儲訪問器將目前層級的輸出數(shù)據(jù)作為最終密鑰保存到安全存儲器中。
[0026]從上述方法的方案可以看出,首先處理器根據(jù)所述密鑰數(shù)據(jù)的存儲地址和η層級的輸入數(shù)據(jù)存儲地址,生成η層級的DMA鏈表,接著直接存儲訪問器根據(jù)目前層級的DMA鏈表,得到密鑰數(shù)據(jù)、目前層級的輸入數(shù)據(jù)以及控制數(shù)據(jù),然后當(dāng)所述控制數(shù)據(jù)為啟動(dòng)信號時(shí),加/解密模塊根據(jù)所述目前層級的輸入數(shù)據(jù)對所述密鑰數(shù)據(jù)進(jìn)行加/解密處理,得到目前層級的輸出數(shù)據(jù),可以進(jìn)行至少一個(gè)層級的加/解密處理,也就是說,本申請通過對原始保密數(shù)據(jù)進(jìn)行逐級加密,在每一級加密處理過程中引入新的密鑰數(shù)據(jù),并保證每一級的加密結(jié)果不可讀取,只輸出最終加密結(jié)果。經(jīng)指定層數(shù)的加密處理后的數(shù)據(jù),與只進(jìn)行一次加密操作的結(jié)果相比,具有更高的安全級別,能滿足特定應(yīng)用場景的安全需求。
[0027]在具體實(shí)施中,在步驟S16之前,還包括以下步驟:
步驟S150,處理器判斷對所述密鑰數(shù)據(jù)進(jìn)行加/解密處理是否準(zhǔn)確,當(dāng)?shù)玫疆?dāng)前層級的密鑰時(shí);
如果是,處理器執(zhí)行步驟S16;
如果否,處理器執(zhí)行步驟S151 ;
步驟S151,加/解密的處理結(jié)束。
[0028]在具體實(shí)施中,步驟S14具體為:所述加/解密模塊根據(jù)所述目前層級的輸入數(shù)據(jù)所述密鑰數(shù)據(jù)進(jìn)行AES算法、DES算法或TDES算法的加/解密處理,得到目前層級的輸出數(shù)據(jù)。
[0029]在具體實(shí)施中,所述每個(gè)層級的DMA鏈表包括搬送數(shù)據(jù)長度、數(shù)據(jù)源地址、數(shù)據(jù)目的地址和下一條鏈表地址;
最后一個(gè)層級的DMA鏈表包括搬送數(shù)據(jù)長度、數(shù)據(jù)源地址和數(shù)據(jù)目的地址。
[0030]在具體實(shí)施中,所述第一層級的DMA鏈表包括第一 DMA子鏈表用于從密鑰數(shù)據(jù)的存儲地址中獲得所述密鑰數(shù)據(jù),第二 DMA子鏈表用于從η層級的輸入數(shù)據(jù)存儲地址中獲得所述目前層級的輸入數(shù)據(jù)和第三DMA子鏈表用于獲得控制數(shù)據(jù);
所述中間層級的每一層級的DMA鏈表包括第一 DMA子鏈表用于從加/解密模塊的輸出數(shù)據(jù)寄存器中獲得所述上一層級的輸出數(shù)據(jù)作為當(dāng)前層級的密鑰數(shù)據(jù),第二 DMA子鏈表用于從η層級的輸入數(shù)據(jù)存儲地址中獲得所述目前層級的輸入數(shù)據(jù)和第三DMA子鏈表用于獲得控制數(shù)據(jù);
所述最后一層級的DMA鏈表包括第一 DMA子鏈表用于從加/解密模塊的輸出數(shù)據(jù)寄存器中獲得所述上一層級的輸出數(shù)據(jù)作為最后層級的密鑰數(shù)據(jù),第二 DMA子鏈表用于從η層級的輸入數(shù)據(jù)存儲地址中獲得所述最后層級的輸入數(shù)據(jù),第三DMA子鏈表用于獲得控制數(shù)據(jù)和第四DMA子鏈表用于將最后層級的輸出數(shù)據(jù)作為最終密鑰保存到安全存儲器中。
[0031]在具體實(shí)施中,需要獲取的數(shù)據(jù)是:KL的密鑰數(shù)據(jù)、三層KL運(yùn)算所需的輸入數(shù)據(jù)(密文),其中:密鑰數(shù)據(jù)存儲于安全存儲器中,三層輸入密文數(shù)據(jù)存儲于靜態(tài)存儲器中。假設(shè),密鑰數(shù)據(jù)在安全存儲器中的地址是A0,KL最終解密結(jié)果在安全存儲器中的地址是B1,三層KL輸入密文在靜態(tài)存儲器中的地址分別是A1,A2,A3。那么,如圖5所示,實(shí)現(xiàn)的三層KL解密的過程如下:
步驟501:密鑰數(shù)據(jù)Η存儲在安全存儲器中確定的地址Α0,3層輸入密文存儲在靜態(tài)存儲器中確定的地址Al,A2,A3,配置ADES模塊的控制寄存器并啟動(dòng)解密操作的配置值存儲在104中確定的地址B0,處理器獲取密鑰數(shù)據(jù)的存儲地址和η層級的輸入數(shù)據(jù)存儲地址,。
[0032]步驟502:根據(jù)Α0,Α1,Α2,Α3的值生成3層KL運(yùn)算所需的DMA鏈表,其中:第一層KL運(yùn)算包括3條鏈表,其中:第一條鏈表源地址為A0,目的地址為201 ;第二條鏈表源地址為A1,目的地址為202 ;第三條鏈表源地址為B0,目的地址為203。將該三條鏈表依次連接成一條鏈表,該鏈表實(shí)現(xiàn)KL第一層解密運(yùn)算操作。第二層KL運(yùn)算包括3條鏈表,其中:第一條鏈表源地址為205,目的地址為201 ;第二條鏈表源地址為A2,目的地址為202 ;第三條鏈表源地址為B0,目的地址為203。將該三條鏈表依次連接成一條鏈表,該鏈表實(shí)現(xiàn)KL第二層解密運(yùn)算操作。第三層KL運(yùn)算包括4條鏈表,其中:第一條鏈表源地址為205,目的地址為201 ;第二條鏈表源地址為A3,目的地址為202 ;第三條鏈表源地址為B0,目的地址為203 ;第四條鏈表源地址為205,目的地址為B1。將該四條鏈表依次連接成一條鏈表,該鏈表實(shí)現(xiàn)KL第三層解密運(yùn)算操作并將最終KL解密結(jié)果搬送至目的地。
[0033]步驟503:配置DMA載入已準(zhǔn)備好的第一層KL運(yùn)算DMA鏈表的首鏈表。
[0034]步驟504:啟動(dòng)DMA執(zhí)行鏈表所定義的任務(wù),加/解密模塊進(jìn)行第一層KL解密運(yùn)算完成后,觸發(fā)ADES處理完成中斷,進(jìn)入步驟5。
[0035]步驟505:檢查ADES模塊的寄存器的值,若存在錯(cuò)誤,則進(jìn)入步驟507,否則,執(zhí)行步驟506。
[0036]步驟506:檢查3層KL運(yùn)算流程是否全部執(zhí)行完成,即處理器判斷目前層級的級數(shù)是否小于n,或者處理器判斷是否獲取到下一層級的DMA鏈表,若完成,則進(jìn)入步驟509 ;否則進(jìn)入步驟508。
[0037]步驟507:加/解密的處理結(jié)束。
[0038]步驟508:根據(jù)下一層級的DMA鏈表,將目前層級的輸出數(shù)據(jù)作為下一層級的密鑰數(shù)據(jù),比如完成第一層級后,得到目前層級的輸出數(shù)據(jù)H1保存在目的地址為201中,接著根據(jù)下一層級的