- 相關推薦
一種新的數(shù)據(jù)加密技術
潘曉中 孫 軍 楊曉元 王法能
(武警工程學院電子技術系 西安 710086)
【摘要】該文簡要介紹了數(shù)據(jù)加密的一般方法及基于公鑰加密算法的方法與步驟,較為詳細介紹了多步加密算法的原理與算法。
【關鍵詞】加密算法 密鑰 多步加密
A New Data Encryption Techniques
Pan xiaozhong Yang xiaoyuan Wang faneng Sun jun
(Electronic Technology Department,
Armed Police Force
【abstract】The general method about date encryption is introduced in this paper as well as method and steps based on public key encrypted algorithm. The principle and algorithm of multi-step encrypted algorithm is detailedly introduced too. And an applied program about the multi-step encrypted algorithm is given out in this paper.
【key word】encrypted algorithm secret key multi-step encryption
我們處在一個信息時代,人們需要一種強有力的安全措施來保護機密數(shù)據(jù)不被他人竊取或篡改。數(shù)據(jù)加密與解密從宏觀上講是非常簡單的。加密與解密的一些方法是非常直接的,很容易掌握。因此,可以很方便地對機密數(shù)據(jù)進行加密和解密。
1、數(shù)據(jù)加密方法
在傳統(tǒng)上,我們有幾種方法來加密數(shù)據(jù)流。所有這些方法都可以用軟件很容易的實現(xiàn),但是當我們只知道密文的時候,是不容易破譯這些加密算法的(當同時有原文和密文時,破譯加密算法雖然也不是很容易,但已經(jīng)是可能的了)。最好的加密算法對系統(tǒng)性能幾乎沒有影響,并且還可以帶來其他內在的優(yōu)點。例如,大家都知道的pkzip,它既壓縮數(shù)據(jù)又加密數(shù)據(jù)。又如,dbms的一些軟件包總是包含一些加密方法以使復制文件這一功能對一些敏感數(shù)據(jù)是無效的,或者需要用戶的密碼。所有這些加密算法都要有高效的加密和解密能力。
在所有的加密算法中最簡單的一種就是“置換表”算法,這種算法也能很好達到加密的需要。每一個數(shù)據(jù)段(總是一個字節(jié))對應著“置換表”中的一個偏移量,偏移量所對應的值就輸出成為加密后的文件。加密程序和解密程序都需要一個這樣的“置換表”。事實上,80x86 cpu系列就有一個指令‘xlat’在硬件級來完成這樣的工作。這種加密算法比較簡單,加密解密速度都很快,但是一旦這個“置換表”被對方獲得,那這個加密方案就完全被識破了。更進一步講,這種加密算法對于黑客破譯來講是相當直接的,只要找到一個“置換表”就可以了。這種方法在計算機出現(xiàn)之前就已經(jīng)被廣泛地使用。
對這種“置換表”方式的一個改進就是使用2個或者更多的“置換表”,這些表都是基于數(shù)據(jù)流中字節(jié)的位置的,或者基于數(shù)據(jù)流本身。這時,破譯變得更加困難,因為黑客必須正確地做幾次變換。通過使用更多的“置換表”,并且按偽隨機的方式使用每個表,這種改進的加密方法已經(jīng)變的很難破譯。比如,我們可以對所有的偶數(shù)位置的數(shù)據(jù)使用a
表,對所有的奇數(shù)位置使用b表,即使黑客獲得了明文和密文,他想破譯這個加密方案也是非常困難的,除非黑客確切的知道用了兩張表。
與使用“置換表”相類似,“變換數(shù)據(jù)位置”也在計算機加密中使用。但是,這需要更多的執(zhí)行時間。從輸入中讀入明文放到一個buffer中,再在buffer中對他們重排序,然后按這個順序再輸出。解密程序按相反的順序還原數(shù)據(jù)。這種方法總是和一些別的加密算法混合使用,這就使得破譯變得特別的困難,幾乎有些不可能了。例如,有這樣一個詞,變換其字母的順序,slient 可以變?yōu)?font face="times new roman">listen,但所有的字母都沒有變化,沒有增加也沒有減少,但是字母之間的順序已經(jīng)變化了。
但是,還有一種更好的加密算法,只有計算機可以做,就是字/字節(jié)循環(huán)移位和xor操作。如果我們把一個字或字節(jié)在一個數(shù)據(jù)流內做循環(huán)移位,使用多個或變化的方向(左移或右移),就可以迅速的產(chǎn)生一個加密的數(shù)據(jù)流。這種方法是很好的,破譯它就更加困難。而且,更進一步的是,如果再使用xor操作,按位做異或操作,就使破譯密碼更加困難了。如果再使用偽隨機的方法,這涉及到要產(chǎn)生一系列的數(shù)字,我們可以使用fibbonaci數(shù)列。對數(shù)列所產(chǎn)生的數(shù)做模運算(例如模3),得到一個結果,然后循環(huán)移位這個結果的次數(shù),將使破譯次密碼變得幾乎不可能!但是,使用
fibbonaci數(shù)列這種偽隨機的方式所產(chǎn)生的密碼對我們的解密程序來講是非常容易的。
在一些情況下,我們想能夠知道數(shù)據(jù)是否已經(jīng)被篡改了或被破壞了,這時就需要產(chǎn)生一些校驗碼,并且把這些校驗碼插入到數(shù)據(jù)流中。這樣做對數(shù)據(jù)的防偽與程序本身都是有好處的。但是感染計算機程序的病毒才不會在意這些數(shù)據(jù)或程序是否加過密,是否有數(shù)字簽名。所以,加密程序在每次load到內存要開始執(zhí)行時,都要檢查一下本身是否被病毒感染,對與需要加、解密的文件都要做這種檢查!很自然,這樣一種方法體制應該保密的,因為病毒程序的編寫者將會利用這些來破壞別人的程序或數(shù)據(jù)。因此,在一些反病毒或殺病毒軟件中一定要使用加密技術。
循環(huán)冗余校驗是一種典型的校驗數(shù)據(jù)的方法。對于每一個數(shù)據(jù)塊,它使用位循環(huán)移位和xor操作來產(chǎn)生一個16位或32位的校驗和 ,這使得丟失一位或兩個位的錯誤一定會導致校驗和出錯。這種方式很久以來就應用于文件的傳輸,例如 xmodem-crc。 這是方法已經(jīng)成為標準,而且有詳細的文檔。但是,基于標準crc算法的一種修改算法對于發(fā)現(xiàn)加密數(shù)據(jù)塊中的錯誤和文件是否被病毒感染是很有效的。
2.基于公鑰的加密算法
一個好的加密算法的重要特點之一是具有這種能力:可以指定一個密碼或密鑰,并用它來加密明文,不同的密碼或密鑰產(chǎn)生不同的密文。這又分為兩種方式:對稱密鑰算法和非對稱密鑰算法。所謂對稱密鑰算法就是加密解密都使用相同的密鑰,非對稱密鑰算法就是加密解密使用不同的密鑰。非常著名的pgp公鑰加密以及rsa加密方法都是非對稱加密算法。加密密鑰,即公鑰,與解密密鑰,即私鑰,是非常的不同的。從數(shù)學理論上講,幾乎沒有真正不可逆的算法存在。例如,對于一個輸入‘a’執(zhí)行一個操作得到結果‘b’,那么我們可以基于‘b’,做一個相對應的操作,導出輸入‘a’。在一些情況下,對于每一種操作,我們可以得到一個確定的值,或者該操作沒有定義(比如,除數(shù)為0)。對于一個沒有定義的操作來講,基于加密算法,可以成功地防止把一個公鑰變換成為私鑰。因此,要想破譯非對稱加密算法,找到那個唯一的密鑰,唯一的方法只能是反復的試驗,而這需要大量的處理時間。
rsa加密算法使用了兩個非常大的素數(shù)來產(chǎn)生公鑰和私鑰。即使從一個公鑰中通過因數(shù)分解可以得到私鑰,但這個運算所包含的計算量是非常巨大的,以至于在現(xiàn)實上是不可行的。加密算法本身也是很慢的,這使得使用rsa算法加密大量的數(shù)據(jù)變的有些不可行。這就使得一些現(xiàn)實中加密算法都基于rsa加密算法。
pgp算法(以及大多數(shù)基于rsa算法的加密方法)使用公鑰來加密一個對稱加密算法的密鑰,然后再利用一個快速的對稱加密算法來加密數(shù)據(jù)。這個對稱算法的密鑰是隨機產(chǎn)生的,是保密的,因此,得到這個密鑰的唯一方法就是使用私鑰來解密。
【一種新的數(shù)據(jù)加密技術】相關文章:
數(shù)據(jù)加密技術08-06
數(shù)據(jù)加密技術08-06
數(shù)據(jù)加密技術08-06
數(shù)據(jù)加密技術-08-06
一種新的實用安全加密標準算法——Camellia算法08-06
詳解加密技術概念、加密方法以及應用08-06
詳解加密技術概念、加密方法以及應用08-06