基于ARM的3DES加密算法實現
現代密碼學根據密鑰類型的不同將加密算法分為對稱加密算法和公開密鑰加密算法。3DES算法作為對稱加密算法的一種,被實踐證明是一種安全性非常高的加密算法,受到了廣泛的應用。加密算法主要通過軟件和硬件兩種方式來實現,軟件的實現方式具有靈活方便的優點,同時也具有加密速度受限制的缺點。采用硬件實現加密算法是實際應用中必須要考慮到的問題。目前經常采用硬件FPGA等來實現,該種實驗方式具有處理速度快的特點,但是對系統的復雜度要求較高。嵌入式微處理器具有實現簡單,系統集成度高,體積小,易于移植等眾多優點,因此有必要研發基于嵌入式微處理器的加密算法硬件設備,在此提出一種基于ARM處理器的3DES的硬件實現方法。
1 3DES算法原理
DES是美國國家標準局頒布的數據加密算法,作為世界范圍內的公開加密標準已經使用了20多年。隨著計算機處理速度的提高,DES算法面臨著一些安全威脅,DES采用56位密鑰,曾經有人用窮舉搜索法對DES進行過密鑰搜索攻擊。近年來也有人提出了差分和線性攻擊方案,該方案的實施必須有超高速計算機的支持。為了增強DES算法應對差分或線性攻擊的可能性,人們提出了一系列改進方案,采用增加密鑰長度是一種可行的途徑。為了增加密鑰的長度,可將分組密碼進行級聯,在不同的密鑰作用下,連續多次對一組明文進行加密。其中,最有效的方法是使用三重DES加密,它可使加密密鑰長度擴展到128位,在提高加密強度的同時,足以應付目前的各種攻擊。
DES是一個分組加密算法,它以64位為分組對數據加密。64位的分組明文序列作為加密算法的輸入,經過16輪加密得到64位的密文序列。加密的密鑰為64位,實際長度為56位,DES算法的保密性取決于密鑰。DES對64位的明文分組進行操作。首先通過一個初始置換IP,將64位的明文分成各32位長的左半部分和右半部分,該初始置換只在16輪加密過程進行之前進行一次。在經過初始置換操作后,對得到的64位序列進行16輪加密運算,這些運算被稱為函數f,在運算過程中,輸入數據與密鑰結合。經過16輪運算后,左、右兩部分合在一起得到一個64位的輸出序列,該序列再經過一個末尾置換IP-1,獲得最終的加密結果。過程如圖1所示。
在每一輪加密過程中,函數廠的運算包括以下四個部分:首先進行密鑰序列移位,從移位后的56位密鑰序列中選出48位;然后通過一個擴展置換將輸入序列32位的右半部分擴展成48位,再與48位的輪密鑰進行異或運算;再者通過8個s盒將異或運算后獲得的48位序列替代成一個32位序列;最后對32位序列應用置換P進行置換變換,得到-廠的32位輸出序列。將函數廠的輸出與輸入序列的左半部分進行異或運算后的結果作為新一輪加密過程輸入序列的右半部分,當前輸入序列的右半部分作為新一輪加密過程輸入序列的左半部分。上述過程重復操作16次,便實現了DES的16輪加密運算。
假設Bi是第i輪計算的結果,則Bi為一個64位的序列,Li和Ri分別是Bi的左半部分和右半部分,Ki是第i輪的48位密鑰,且f是實現代換、置換及密鑰異或等運算的函數,那么每一輪加密的具體過程為:
以上操作的詳細過程如圖2所示。
評論