LKT系列加密產品中自帶硬件3DES算法協處理器,可以有效的為用戶開發提供更多的選擇和安全性。
3DES是三重數據加密算法的通稱。它是DES算法的增強版,相當于對每個數據塊應用三次DES運算。因為密鑰長度的增加,安全等級和破解難度也要高于DES算法。
3DES算法的加密流程分為3步
1、明文數據分組
2、分組加密
3、分組加密結果組合
下面展開說明。
3DES算法的密鑰長度為24字節,以8字節為單位按順序將密鑰分為K1,K2,K3三部分。如果K1 = K3,則可以將密鑰長度縮減為16字節(LKT加密產品中的3DES算法將K1、K3設置相等,讓密鑰長度固定位16字節)。第一步,在加密運算過程中先對明文數據按8字節分成N組,不滿8字節的塊要進行數據填充。第二步,分別對N組數據進行加密運算。設Ek()和Dk()代表DES算法的加密和解密過程,Mn代表第n組明文,Cn代表第n組密文,C代表最終的加密結果,則每組數據的3DES加密流程為:Cn=Ek3(Dk2(Ek1(Mn)))。第三步,將N組加密結果順序拼接在一起即完成加密運算, C = C1C2C3......Cn。
綜上,3DES算法與DES一樣,均為塊加密算法,密文數據以8字節為單位獨立存在。若明文長度為16字節,當改變明文的前8字節時,只會影響密文的前8字節,密文后8字節不變。因此,在應用3DES算法對線路傳輸數據加密過程中,若想保證密文的整體變化,要保證每塊明文數據都是變化的。
使用者在設置密鑰的時候應注意,密鑰的前后8字節不要完全一樣,否則就變為了DES算法,安全強度就會下降(用戶可根據Cn=Ek3(Dk2(Ek1(Mn)))公式自行推導)。需要特別留意的是,密鑰每字節中的最后一位是檢驗位,不會參與到加密運算中。例如:K1 = 0000000000000000,K2 = 0101010101010101,則K1、K2對同組數據加密的結果是一樣的。
希望本文能讓大家對3DES的算法特點有個更直觀的認識,更安全有效的利用3DES算法設計數據加解密的方案,將LKT系列加密產品中自帶的3DES算法接口高效利用起來。