天天看點

資料加密簡介

一、資料加密/編碼算法清單

1.加密技術通常分為兩大類:“對稱式”和“非對稱式”。

對稱式加密就是加密和解密使用同一個密鑰

非對稱式加密就是加密和解密所使用的不是同一個密鑰,通常有兩個密鑰,稱為“公鑰”和“私鑰”,它們兩個必需配對使用,否則不能打開加密檔案。

2.常見加密算法

(1).對稱加密算法

DES(Data Encryption Standard):資料加密标準,速度較快,适用于加密大量資料的場合。

3DES(Triple DES):是基于DES,對一塊資料用三個不同的密鑰進行三次加密,強度更高。

AES(Advanced Encryption Standard):進階加密标準,是下一代的加密算法标準,速度快,安全級别高;

RC2和 RC4:對稱算法,用變長密鑰對大量資料進行加密,比 DES 快;

(2).非對稱加密算法如下:

RSA:由 RSA 公司發明,是一個支援變長密鑰的公共密鑰算法,需要加密的檔案塊的長度也是可變的;

DSA(Digital Signature Algorithm):數字簽名算法,是一種标準的 DSS(數字簽名标準);

ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼學。

(3).雜湊演算法(加密性強的散列一定是不可逆的,這就意味着通過散列結果,無法推出任何部分的原始資訊。)

MD5(Message Digest Algorithm 5):是RSA資料安全公司開發的一種單向雜湊演算法。

SHA(Secure Hash Algorithm):可以對任意長度的資料運算生成一個160位的數值;

MAC(Message Authentication Code):消息認證代碼,是一種使用密鑰的單向函數,可以用它們在系統上或使用者之間認證檔案或消息。HMAC(用于消息認證的密鑰散列法)就是這種函數的一個例子。

CRC(Cyclic Redundancy Check):循環備援校驗碼,CRC校驗由于實作簡單,檢錯能力強,被廣泛使用在各種資料校驗應用中。占用系統資源少,用軟硬體均能實作,是進行資料傳輸差錯檢測地一種很好的手段(CRC 并不是嚴格意義上的雜湊演算法,但它的作用與雜湊演算法大緻相同,是以歸于此類)。

(4).其它資料算法

包括一些常用編碼算法及其與明文(ASCII、Unicode 等)轉換等,如 Base 64、Quoted Printable、EBCDIC 等。

3. 對稱與非對稱算法比較

    以上綜述了兩種加密方法的原理,總體來說主要有下面幾個方面的不同:

l         在管理方面:公鑰密碼算法隻需要較少的資源就可以實作目的,在密鑰的配置設定上,兩者之間相差一個指數級别(一個是n一個是n2)。是以私鑰密碼算法不适應廣域網的使用,而且更重要的一點是它不支援數字簽名。

l         在安全方面:由于公鑰密碼算法基于未解決的數學難題,在破解上幾乎不可能。對于私鑰密碼算法,到了AES雖說從理論來說是不可能破解的,但從計算機的發展角度來看。公鑰更具有優越性。

l         從速度上來看:AES的軟體實作速度已經達到了每秒數兆或數十兆比特。是公鑰的100倍,如果用硬體來實作的話這個比值将擴大到1000倍。

4 各種加密算法的優缺點:

1)     不可逆加密,數字簽名

MessageDigest是一個資料的數字指紋.即對一個任意長度的資料進行計算,産生一個唯一指紋号.

MessageDigest的特性:A) 兩個不同的資料,難以生成相同的指紋号B) 對于指定的指紋号,難以逆向計算出原始資料

代表:MD5/SHA

2)    DES (對稱加密)

單密鑰算法,是資訊的發送方采用密鑰A進行資料加密,資訊的接收方采用同一個密鑰A進行數

據解密.

單密鑰算法是一個對稱算法.

缺點:由于采用同一個密鑰進行加密解密,在多使用者的情況下,密鑰保管的安全性是一個問題.

代表:DES

3)   (非對稱加密,數字簽名)

所謂數字簽名是指發送方從發送封包中抽取特征資料(稱為數字指紋或摘要),然後用發送方

的私鑰對數字指紋使用加密算法進行算法操作,接受方使用發送方已經公開的公鑰解密并驗

證封包.

數字簽名使用者驗證發送方身份或者發送方資訊的完整性

代表:DSA

4)   (非對稱加密)

公鑰密碼體制:為了解決單密鑰保管安全性的問題,提供了公鑰密碼體制的概念.在公鑰體制

中,加密密鑰不同于解密密鑰,加密密鑰公之于衆,誰都可以使用;解密密鑰隻有解密人自

己知道。它們分别稱為公開密鑰(Public key)和秘密密鑰(Private key)。

代表:RSA

二、算法的 .NET 實作

常見的加密和編碼算法都已經在 .NET Framework中得到了實作,為編碼人員提供了極大的便利性,實作這些算法的名稱空間是:System.Security.Cryptography。

System.Security.Cryptography 命名空間提供加密服務,包括安全的資料編碼和解碼,以及許多其他操作,例如散列法、随機數字生成和消息身份驗證。

System.Security.Cryptography 是按如下方式組織的:

1、私鑰加密

私鑰加密又稱為對稱加密,因為同一密鑰既用于加密又用于解密。私鑰加密算法非常快(與公鑰算法相比),特别适用于對較大的資料流執行加密轉換。

.NET Framework 提供以下實作私鑰加密算法的類:

DES:DESCryptoServiceProvider

RC2:RC2CryptoServiceProvider

Rijndael(AES):RijndaelManaged

3DES:TripleDESCryptoServiceProvider

2、公鑰加密和數字簽名

 公鑰加密使用一個必須對未經授權的使用者保密的私鑰和一個可以對任何人公開的公鑰。用公鑰加密的資料隻能用私鑰解密,而用私鑰簽名的資料隻能用公鑰驗證。公鑰可以被任何人使用;該密鑰用于加密要發送到私鑰持有者的資料。兩個密鑰對于通信會話都是唯一的。公鑰加密算法也稱為不對稱算法,原因是需要用一個密鑰加密資料而需要用另一個密鑰來解密資料。

.NET Framework 提供以下實作公鑰加密算法的類:

DSA:DSACryptoServiceProvider

RSA:RSACryptoServiceProvider 

3、哈希(Hash)值

雜湊演算法将任意長度的二進制值映射為固定長度的較小二進制值,這個小的二進制值稱為哈希值。哈希值是一段資料唯一且極其緊湊的數值表示形式。如果散列一段明文而且哪怕隻更改該段落的一個字母,随後的哈希都将産生不同的值。要找到散列為同一個值的兩個不同的輸入,在計算上是不可能的,是以資料的哈希值可以檢驗資料的完整性。

.NET Framework 提供以下實作數字簽名算法的類:

HMAC:HMACSHA1 (HMAC 為一種使用密鑰的 Hash 算法)

MAC:MACTripleDES

MD5:MD5CryptoServiceProvider

SHA1:SHA1Managed、SHA256Managed、SHA384Managed、SHA512Managed

4、随機數生成

加密密鑰需要盡可能地随機,以便使生成的密鑰很難再現,是以随機數生成是許多加密操作不可分割的組成部分。

在 .NET Framework 中,RNGCryptoServiceProvider 是随機數生成器算法的實作,對于資料算法,.NET Framework 則在其它命名空間中實作,如 Convert 類實作 Base 64 編碼,System.Text 來實作編碼方式的轉換等。

三.加密算法的選擇

前面的章節已經介紹了對稱解密算法和非對稱加密算法,有很多人疑惑:那我們在實際使用的過程中究竟該使用哪一種比較好呢?

我們應該根據自己的使用特點來确定,由于非對稱加密算法的運作速度比對稱加密算法的速度慢很多,當我們需要加密大量的資料時,建議采用對稱加密算法,提高加解密速度。

對稱加密算法不能實作簽名,是以簽名隻能非對稱算法。

由于對稱加密算法的密鑰管理是一個複雜的過程,密鑰的管理直接決定着他的安全性,是以當資料量很小時,我們可以考慮采用非對稱加密算法。

在實際的操作過程中,我們通常采用的方式是:采用非對稱加密算法管理對稱算法的密鑰,然後用對稱加密算法加密資料,這樣我們就內建了兩類加密算法的優點,既實作了加密速度快的優點,又實作了安全友善管理密鑰的優點。

如果在標明了加密算法後,那采用多少位的密鑰呢?一般來說,密鑰越長,運作的速度就越慢,應該根據的我們實際需要的安全級别來選擇,一般來說,RSA建議采用1024位的數字,ECC建議采用160位,AES采用128為即可。

四.          密碼學在現代的應用

随着密碼學商業應用的普及,公鑰密碼學受到前所未有的重視。除傳統的密碼應用系統外,PKI系統以公鑰密碼技術為主,提供加密、簽名、認證、密鑰管理、配置設定等功能。

保密通信:保密通信是密碼學産生的動因。使用公私鑰密碼體制進行保密通信時,資訊接收者隻有知道對應的密鑰才可以解密該資訊。

數字簽名:數字簽名技術可以代替傳統的手寫簽名,而且從安全的角度考慮,數字簽名具有很好的防僞造功能。在政府機關、軍事領域、商業領域有廣泛的應用環境。

秘密共享:秘密共享技術是指将一個秘密資訊利用密碼技術分拆成n個稱為共享因子的資訊,分發給n個成員,隻有k(k≤n)個合法成員的共享因子才可以恢複該秘密資訊,其中任何一個或m(m≤k)個成員合作都不知道該秘密資訊。利用秘密共享技術可以控制任何需要多個人共同控制的秘密資訊、指令等。

認證功能:在公開的信道上進行敏感資訊的傳輸,采用簽名技術實作對消息的真實性、完整性進行驗證,通過驗證公鑰證書實作對通信主體的身份驗證。

密鑰管理:密鑰是保密系統中更為脆弱而重要的環節,公鑰密碼體制是解決密鑰管理工作的有力工具;利用公鑰密碼體制進行密鑰協商和産生,保密通信雙方不需要事先共享秘密資訊;利用公鑰密碼體制進行密鑰分發、保護、密鑰托管、密鑰恢複等。

基于公鑰密碼體制可以實作以上通用功能以外,還可以設計實作以下的系統:安全電子商務系統、電子現金系統、電子選舉系統、電子招投标系統、電子彩票系統等。

公鑰密碼體制的産生是密碼學由傳統的政府、軍事等應用領域走向商用、民用的基礎,同時網際網路、電子商務的發展為密碼學的發展開辟了更為廣闊的前景。

五.          加密算法的未來

随着計算方法的改進,計算機運作速度的加快,網絡的發展,越來越多的算法被破解。

在2004年國際密碼學會議(Crypto’2004)上,來自中國山東大學的王小雲教授做的破譯MD5、HAVAL-128、MD4和RIPEMD算法的報告,令在場的國際頂尖密碼學專家都為之震驚,意味着這些算法将從應用中淘汰。随後,SHA-1也被宣告被破解。

曆史上有三次對DES有影響的攻擊實驗。1997年,利用當時各國 7萬台計算機,曆時96天破解了DES的密鑰。1998年,電子邊境基金會(EFF)用25萬美元制造的專用計算機,用56小時破解了DES的密鑰。1999年,EFF用22小時15分完成了破解工作。是以。曾經有過卓越貢獻的DES也不能滿足我們日益增長的需求了。

最近,一組研究人員成功的把一個512位的整數分解因子,宣告了RSA的破解。

我們說資料的安全是相對的,可以說在一定時期一定條件下是安全的,随着硬體和網絡的發展,或者是另一個王小雲的出現,目前的常用加密算法都有可能在短時間内被破解,那時我們不得不使用更長的密鑰或更加先進的算法,才能保證資料的安全,是以加密算法依然需要不斷發展和完善,提供更高的加密安全強度和運算速度。

縱觀這兩種算法一個從DES到3DES再到AES,一個從RSA到ECC。其發展角度無不是從密鑰的簡單性,成本的低廉性,管理的簡易性,算法的複雜性,保密的安全性以及計算的快速性這幾個方面去考慮。是以,未來算法的發展也必定是從這幾個角度出發的,而且在實際操作中往往把這兩種算法結合起來,也需将來一種集兩種算法優點于一身的新型算法将會出現,到那個時候,電子商務的實作必将更加的快捷和安全。

本文轉自94cool部落格園部落格,原文連結:http://www.cnblogs.com/94cool/archive/2011/06/12/2078859.html,如需轉載請自行聯系原作者

繼續閱讀