1.一種安全的DES算法的MAC計(jì)算方法,包括:
(1)將待加密的輸入數(shù)據(jù)分塊;
(2)對非最后一塊所對應(yīng)的輸入數(shù)據(jù)進(jìn)行單DES加密;
(3)對最后一塊所對應(yīng)的輸入數(shù)據(jù)進(jìn)行三DES加密;
(4)輸出最終加密結(jié)果;
上述步驟(2)、(3)中,寫入密鑰或當(dāng)前塊所對應(yīng)的輸入數(shù)據(jù)時(shí),相應(yīng)的明文數(shù)據(jù)分散成為Share_1和Share_2兩部分,通過異或方式寫入。
2.如權(quán)利要求1所述安全的DES算法的MAC計(jì)算方法,其特征在于,將密鑰或當(dāng)前塊所對應(yīng)的輸入數(shù)據(jù)的明文數(shù)據(jù)分散為Share_1和Share_2的方法為:生成與明文同等長度的隨機(jī)數(shù)據(jù)作為Share_1;將明文數(shù)據(jù)與所述隨機(jī)數(shù)據(jù)進(jìn)行異或操作,作為Share_2。
3.如權(quán)利要求2所述安全的DES算法的MAC計(jì)算方法,其特征在于,將密鑰或當(dāng)前塊所對應(yīng)的輸入數(shù)據(jù)的明文數(shù)據(jù)分散為Share_1和Share_2的過程為:
設(shè)置循環(huán)控制變量初始為0,滿足循環(huán)條件時(shí)進(jìn)行循環(huán)步驟,所述的循環(huán)條件為循環(huán)控制變量小于明文數(shù)據(jù)長度;
循環(huán)步驟包括:產(chǎn)生一個(gè)字節(jié)的隨機(jī)數(shù)放入Share_1數(shù)據(jù)組,并將該隨機(jī)數(shù)與明文數(shù)據(jù)中與當(dāng)前循環(huán)控制變量對應(yīng)的數(shù)據(jù)進(jìn)行異或運(yùn)算,生成的結(jié)果放入Share_2數(shù)據(jù)組,循環(huán)控制變量自增1,判斷循環(huán)控制變量是否滿足循環(huán)條件;
當(dāng)循環(huán)控制變量不滿足循環(huán)條件時(shí),Share_1數(shù)據(jù)組作為Share_1,Share_2數(shù)據(jù)組作為Share_2。
4.如權(quán)利要求1所述安全的DES算法的MAC計(jì)算方法,其特征在于:步驟(2)中,進(jìn)行單DES加密后采用blind模式對加密結(jié)果進(jìn)行掩碼;
SCP寄存器配置為:
SCP_CFG=DEFAULT_SCP_CFG|SCP_CFG_EN_XOR_KEY;
SCP_CTRL=(handle->cipher_mode&0xff00)|FB_MODE_BLD。
5.如權(quán)利要求4所述安全的DES算法的MAC計(jì)算方法,其特征在于:步驟(2)和(3)中,進(jìn)行單DES加密和三DES加密寫入密鑰或當(dāng)前塊所對應(yīng)的輸入數(shù)據(jù)時(shí),以直接寫入的方式將相應(yīng)數(shù)據(jù)的Share_1寫入相應(yīng)的寄存器中,配置SCP寄存器為異或?qū)懭肽J?,再以異或的方式將相?yīng)數(shù)據(jù)的Share_2數(shù)據(jù)寫入相應(yīng)的寄存器。
6.如權(quán)利要求1至5任一項(xiàng)所述安全的DES算法的MAC計(jì)算方法,其特征在于:步驟(2)中進(jìn)行單DES加密后還進(jìn)行校驗(yàn)步驟;
所述校驗(yàn)步驟包括:
設(shè)置寄存器參數(shù),進(jìn)行正向加密,加密結(jié)束后讀取該正向加密結(jié)果數(shù)據(jù);
設(shè)置寄存器參數(shù),進(jìn)行反向加密,加密結(jié)束后讀取該反向加密結(jié)果數(shù)據(jù);
上述正向加密和反向加密兩次加密,取其中一次加密結(jié)果數(shù)據(jù)與取反后的另一項(xiàng)加密結(jié)果數(shù)據(jù)進(jìn)行比較,若兩次不相同則執(zhí)行異常操作。
7.如權(quán)利要求6所述安全的DES算法的MAC計(jì)算方法,其特征在于:校驗(yàn)步驟中隨機(jī)選取所述正向加密和反向加密的執(zhí)行順序。
8.如權(quán)利要求6所述安全的DES算法的MAC計(jì)算方法,其特征在于:校驗(yàn)步驟中,進(jìn)行最后一次加密時(shí),將密鑰寫入相應(yīng)寄存器后抹除相應(yīng)的密鑰數(shù)據(jù)。
9.如權(quán)利要求1所述安全的DES算法的MAC計(jì)算方法,其特征在于:步驟(2)中,對輸入數(shù)據(jù)進(jìn)行單DES加密時(shí),進(jìn)行多輪加密運(yùn)算,隨機(jī)選取其中一輪采用真實(shí)的輸入數(shù)據(jù)進(jìn)行運(yùn)算,其余幾輪采用偽數(shù)據(jù)進(jìn)行。
10.一種安全的DES算法的MAC計(jì)算系統(tǒng),其特征在于,包括:
數(shù)據(jù)預(yù)處理模塊,用于將待加密的輸入數(shù)據(jù)分塊;
第一DES加密模塊,用于以異或方式寫入密鑰和非最后一塊所對應(yīng)的輸入數(shù)據(jù),進(jìn)行單DES加密;
第二DES加密模塊,用于以異或方式寫入密鑰和最后一塊所對應(yīng)輸入數(shù)據(jù),進(jìn)行三重DES加密;
數(shù)據(jù)分散模塊,用于寫入密鑰或相應(yīng)的輸入數(shù)據(jù)前將相應(yīng)的明文數(shù)據(jù)分散成為Share_1和Share_2兩部分。
11.如權(quán)利要求10所述安全的DES算法的MAC計(jì)算系統(tǒng),其特征在于,還包括:
校驗(yàn)?zāi)K,用于單DES加密后進(jìn)行加密校驗(yàn);加密校驗(yàn)的方法為:
設(shè)置寄存器參數(shù),進(jìn)行正向加密,加密結(jié)束后讀取該正向加密結(jié)果數(shù)據(jù);
設(shè)置寄存器參數(shù),進(jìn)行反向加密,加密結(jié)束后讀取該反向加密結(jié)果數(shù)據(jù);
上述正向加密和反向加密兩次加密,取其中一次加密結(jié)果數(shù)據(jù)與取反后的另一項(xiàng)加密結(jié)果數(shù)據(jù)進(jìn)行比較,若兩次不相同則拋出異常。
12.如權(quán)利要求10或11所述安全的DES算法的MAC計(jì)算系統(tǒng),其特征在于,還包括:
加密控制模塊,用于控制進(jìn)行多輪加密運(yùn)算,隨機(jī)選取其中一輪采用真實(shí)的輸入數(shù)據(jù)進(jìn)行運(yùn)算,其余幾輪采用偽數(shù)據(jù)進(jìn)行。