陳國龍內蒙古赤峰市敖漢旗黨委政府聯合接訪中心
淺談計算機數據加密技術
陳國龍
內蒙古赤峰市敖漢旗黨委政府聯合接訪中心
近些年計算機和網絡技術飛快的發展。互聯網的興起帶動了經濟的快速發展,特別是目前通過互聯網進行的交易越來越多。最近2O年信息加密技術在網絡信息安全中的地位越來越受到重視。加密技術是保障信息安全的各種技術手段中最為核心和關鍵的環節。通過對重要數據的加密可以保證數據在傳輸過程中的安全性和完整性。數據加密通常包括加密算法、明文、密文以及密鑰。密鑰控制加密和解密的幾個過程,所以對加密技術的研究是一個十分值得研究的方向。
數據加密;加密方法;加密標準
作為保障數據傳輸安全的加密技術產生的年代久遠,早在幾千年前埃及人和古巴比倫就通過對信息進行特別的編碼而保護書面信息的安全。近代的信息加密技術主要在軍事領域展開,德國在二戰時期發明了著名的恩格瑪機來對信息進行加密,隨著計算機性能的不斷提升,科學家們又不斷地研究出更為嚴密的信息加密手段。利用ROSA算法產生的私鑰和公鑰就是在這個基礎上產生的。信息加密的基本方式就是用某種數學算法對原來的明文或數據進行一定的處理,將這些明文編程不可讀寫的數字代碼。只有信息接收者在輸人相應的密鑰后才能還原數據的真實內容。通過這種方法來處理數據,使得數據在傳輸過程中不會被他人非法盜竊、閱讀和修改。計算機數據加密技術的發展也離不開數據加密標準的支持,早在1977年美國國際商用機器公司為美國政府計算機數據研制出了一種特殊的計算方法,稱之為計算機數據加密標準,這個加密算法是應用56位密鑰為基礎,首先將64位的明文通過變換其位置進行置換大亂;接著對上述的64位明文進行分解,將所要進行加密的明文拆分成為兩套32位的明文:接著運用將上述兩套32位明文采用計算機數據加密標準進行16次的位置變換;最后采用逆置換的方法對打亂后的數據進行逆置換,從而實現了計算機數據的加密。
南于美國電子開拓基金會在1999年對上述加密標準進行了破譯,美國政府也因此對原有的加密標準進行了改進。這種改進方法是在原來的DES基礎上進行了三重加密。這種新的加密標準使得數據的接收者必須通過使用三個密鑰才能對加密的數據進行解密。這種方法也因此使得數據的保密性提升了3倍。這三把密鑰之間相互關聯,需要解密者對每層密碼分別進行破解。若其中的一把密鑰丟失則不能通過其他的兩把密鑰對數據進行破解,這種方法對數據的破解者來說十分困難。3DES雖然對政府的關鍵數據保護進行了提升,但是對金融交易卻形成了障礙。于是美國國家標準與技術研究所有開發出針對金融交易數據保密的方法。稱之為高級加密標準。簡稱為AES。這種算法的比較簡便精確,而且安全性也十分可靠。這種加密方法同時還能支持很多的小型設備。同原有的3DES相比具有高安全性和高效率。
在傳統上,我們有幾種方法來加密數據流。所有這些方法都可以用軟件很容易的實現,但是當我們只知道密文的時候,是不容易破譯這些加密算法的。最好的加密算法對系統性能幾乎沒有影響,并且還可以帶來其他內在的優點。所有這些加密算法都要有高效的加密和解密能力。幸運的是,在所有的加密算法中最簡單的一種就是“置換表”算法,這種算法也能很好達到加密的需要。每一個數據段對應著“置換表”中的一個偏移量,偏移量所對應的值就輸出成為加密后的文件。加密程序和解密程序都需要一個這樣的“置換表”。事實上,80x86cpu系列就有一個指令‘xlat’在硬件級來完成這樣的工作。這種加密算法比較簡單,加密解密速度都很快,但是一旦這個“置換表”被對方獲得,那這個加密方案就完全被識破了。更進一步講,這種加密算法對于黑客破譯來講是相當直接的,只要找到一個“置換表”就可以了。這種方法在計算機出現之前就已經被廣泛的使用。
對這種“置換表”方式的一個改進就是使用2個或者更多的“置換表”,這些表都是基于數據流中字節的位置的,或者基于數據流本身。這時,破譯變的更加困難,因為黑客必須正確的做幾次變換。通過使用更多的“置換表”,并且按偽隨機的方式使用每個表,這種改進的加密方法已經變的很難破譯。比如,我們可以對所有的偶數位置的數據使用a表,對所有的奇數位置使用b表,即使黑客獲得了明文和密文,他想破譯這個加密方案也是非常困難的,除非黑客確切的知道用了兩張表。
與使用“置換表”相類似,“變換數據位置”也在計算機加密中使用。但是,這需要更多的執行時間。從輸入中讀入明文放到一個buffer中,再在buffer中對他們重排序,然后按這個順序再輸出。解密程序按相反的順序還原數據。這種方法總是和一些別的加密算法混合使用,這就使得破譯變的特別的困難,幾乎有些不可能了。例如,有這樣一個詞,變換起字母的順序,slient可以變為listen,但所有的字母都沒有變化,沒有增加也沒有減少,但是字母之間的順序已經變化了。
但是,還有一種更好的加密算法,只有計算機可以做,就是字/字節循環移位和xor操作。如果我們把一個字或字節在一個數據流內做循環移位,使用多個或變化的方向,就可以迅速的產生一個加密的數據流。這種方法是很好的,破譯它就更加困難!而且,更進一步的是,如果再使用xor操作,按位做異或操作,就就使破譯密碼更加困難了。如果再使用偽隨機的方法,這涉及到要產生一系列的數字,我們可以使用fibbonaci數列。對數列所產生的數做模運算,得到一個結果,然后循環移位這個結果的次數,將使破譯次密碼變的幾乎不可能!但是,使用fibbonaci數列這種偽隨機的方式所產生的密碼對我們的解密程序來講是非常容易的。