摘要:隨著當今計算機網絡的飛速發展,計算機安全已經成為社會各界關注的焦點。該文淺談了幾種對數據進行加密的方法。
關鍵詞:網絡安全;數據;加密
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)26-1691-02
隨著當今計算機網絡的飛速發展,計算機安全已經成為社會各界關注的焦點。由于在現實生活中,我們要確保一些敏感的數據只能被有相應權限的人看到,要確保信息在傳輸的過程中不會被篡改,截取,這就需要很多的安全系統大量的應用于政府、大公司以及個人系統。本文介紹幾種數據加密的方法。在傳統上,我們有幾種方法來加密數據流。所有這些方法都可以用軟件很容易的實現,但是當我們只知道密文的時候,是不容易破譯這些加密算法的(當同時有原文和密文時,破澤加密算法雖然也不是很容易,但已經是可能的了。最好的加密算法對系統性能幾乎沒有影響,并且還可以帶來其他內在的優點。
1 “置換表”算法
幸運的是,在所有的加密算法中最簡單的一種就是“置換表”算法,這種算法也能很好達到加密的需要。每一個數據段(總是一個字節)對應著“置換表”中的一個偏移量,偏移量所對應的值就輸出成為加密后的文件。加密程序和解密程序都需要一個這樣的“置換表”。但是一旦這個“置換表”被對方獲得,那這個加密方案就完全被識破了。更進一步講,這種加密算法對于黑客破譯來講是相當直接的,只要找到一個“置換表”就可以了。這種方法在計算機出現之前就已經被廣泛的使用。
對這種“置換表”方式的一個改進就是使用2個或者更多的“置換表”,這些表都是基于數據流中字節的位置的,或者基于數據流本身。這時,破譯變的更加困難,因為黑客必須正確的做幾次變換。通過使用更多的“置換表”,并且按偽隨機的方式使用每個表,這種改進的加密方法已經變的很難破譯。比如,我們可以對所有的偶數位置的數據使用a表,對所有的奇數位置使用b表,即使黑客獲得了明文和密文,他想破譯這個加密方案也是非常困難的,除非黑客確切的知道用了兩張表。
2 密碼算法
設計一種密度強的密碼算法有兩種方法,一是研究用于密碼分析的所有可能性解法,然后設計一套規則以挫敗這些解法中的任何一種算法,于是便能構造一種能夠抗拒這些解法的算法,二是構造這樣的一些算法,使得要破解它就必須解決一些問題,而這些問題被認為是不可解的。下面將要介紹的DES算法屬于第一種,而RSA則屬于第二種。
加密技術按照密鑰的公開與否可以分為兩種體系,第一是對稱密鑰體系,這里加密密鑰匙和解密密鑰是相同的。為了安全性,密鑰要定期的改變。對稱算法速度快,所以在處理大量數據的時候被廣泛使用,其關鍵是保證密鑰的安全。典型的算法有DES及其各種變形(如Triple DES),IDEA,RC4、RC5以及古典密碼(如代換密碼和轉輪密碼)等。在眾多的對稱密碼中影響最大的是DES密碼。第二是公開密鑰體系,分別存在一個公鑰和私鑰,公鑰公開,私鑰保密。公鑰和私鑰具有一一對應的關系,用公鑰加密的數據只有用私鑰才能解開,其效率低于對稱密鑰體系,典型的算法有RSA、背包密碼,Elliptic Curve、E1Gamal算法等等。最有影響的公鑰加密算法是RSA,足夠位數的RSA能夠抵抗到目前為止已知的所有密碼攻擊。下面選取兩體系中各最具有代表性最有影響的算法DES和RSA進行討論。
1.1 RSA算法
RSA算取自于它的創始人的名字:Rivest,Shamir,Adelman,該算法于1978年最早提出,至今仍沒有發現嚴重的安全漏洞。RSA基于數學難題,即具有大素數因子的合數分解,以最新的計算方法也還是計算上不可行的。數論經驗表明,這個問題是難解的。
RSA使用兩個密鑰,一個是公鑰(publickey,以下用PK表示),一個是私鑰(private key,以下用SK表示)加密時把明文分成塊,塊的大小可變,但不超過密鑰的長度。RSA把明文塊轉化為與密鑰長度相同的密文。其算法如下:
首先選擇兩個秘密的相異質數p,q,計算n=pq,取r是與(p-1)(q-1)互質的數,這里r便是SK。接著找一數m,使得rm= =1mod(p-1)(q-1),根據歐幾里得算法(a=bn+c,則a與b的gcd就等于b與c的gcd),這樣的m一定可以找到。這里m和n便是公鑰PK。在編碼時,假設資料為A,將其分成等長數據N塊,每塊為a 對于p,q的選擇,一般來說是足夠大的素數,對于大,并沒有一個確定的界限,因為隨著計算機技術的發展,破解能力正在逐步增強(根據摩爾定理計算能力18個月就翻一番)。一般來說,安全等級高的,則密鑰選取大的,安全等級低些,則選取相對小些的數。RSA的安全性依賴于大數分解,然而值得注意的是,是否等同于大數分解一直未得到理論上的證明,并沒有證明要破解RSA就一定得進行大數分解。 1.2 DES DES采用傳統的換位和置換的方法進行加密,在56比特密鑰的控制下,將64比特明文塊變換為64比特密文塊,加密過程包括16輪的加密迭代,每輪都采用一種乘積密碼方式(代替和移位)。首先是處理原密鑰,產生16個48位子密鑰K(i),i=1,2…16,接著處理64位數據塊。其中置換和g函數的選擇都按特定的規則進行,g函數操作是先將R(I)擴充成48位后與K(I+1)異或運算,接著將所得的48位數分成8個6位數,記為B[I],I=1,2…8,選取8個S密箱,將B[I]的第一位和第六位串聯成一個數記位m,取出B[I]的第二至五位串聯成一個四位數記位n,用S密箱中的第n行第m列的數替換B[I],替換完全部的B[I]后,將B[I]至B[8]串聯成一個32位數,再經過換位,至此g函數操作全部結束。將所得結果與L[I]異或后,得到R[I+1]。進行下一輪的加密,直到用完K(16),再經過逆初始置換,全部加密過程結束。而脫密時只需要將密鑰順序倒過來,即第一輪用K(16),第二輪用K(15),以此類推。于是DES加密算法又可以簡單地用下式表示:Ek(m)=N(IP)*T16*T15……T1*IP(m)其中IP為初始置換,N(X)是X的逆,Ti,i=1,2,…16是一系列的變換。Ek(m)表示明文m在密鑰k的作用下產生的密文解密算法:N(Ek)=N(IP)*T1*T2……T16*IP[Ek(m)]在應用時一般是將DES和RSA綜合起來使用。DES加密效率高,但是要解決密鑰的存儲問題,因為只要傳輸就難以保證密鑰不被泄露。這時可以采用如下策略:假如A要向B發送密文(DES)和密鑰SK,可以用B公布的公開密鑰對Sk進行RSA加密,將其結果和密文一起發送給B,B接受數據首先用自己的私鑰對SK進行解密,得到A的密鑰SK。再用SK解密密文。這樣就解決了密鑰的傳輸問題。因為沒有人知道B的私鑰,也就沒有辦法獲得SK。以上討論了數據加密技術,介紹了當今使用最為廣泛的DES和RSA算法。 DES效率高,但是密鑰保存難,RSA安全性高,但是效率低,在實際應用中經常把兩者結合起來使用。 在現實生活中,我們要確保一些敏感的數據只能被有相應權限的人看到,要確保信息在傳輸的過程中不會被篡改,截取,這就需要很多的政府、大公司以及個人的計算機系統作好加密工作。數據加密是肯定可以被破解的,但我們所想要的是一個特定時期的安全,也就是說,密文的破解應該是足夠的困難,在現實上是不可能的,尤其是短時間內。 參考文獻: [1] 朱衛華.數據加密技術與安全電子交易淺析[M].北京:清華大學出版社,2002. [2] 計算機網絡保密系統設計與實現指南[M].盧起駿,譯.重慶:科學技術文獻出版社重慶分社,2001.