詳細解析數據加密 續
數據加密標準
傳統加密方法有兩種,替換和置換。上面的例子采用的就是替換的方法:使用密鑰將明文中的每一個字符轉換為密文中的一個字符。而置換僅將明文的字符按不同的順序重新排列。獨立使用這兩種方法的任意一種都是不夠安全的,但是將這兩種方法結合起來就能提供相當高的安全程度。數據加密標準(Data Encryption Standard,簡稱DES)就采用了這種結合算法,他由IBM制定,并在1977年成為美國官方加密標準。
DES的工作原理為:將明文分割成許多64位大小的塊,每個塊用64位密鑰進行加密,實際上,密鑰由56位數據位和8位奇偶校驗位組成,因此只有256個可能的密碼而不是264個。每塊先用初始置換方法進行加密,再連續進行16次復雜的替換,最后再對其施用初始置換的逆。第i步的替換并不是直接利用原始的密鑰K,而是由K和i計算出的密鑰Ki。DES具有這樣的特性,其解密算法和加密算法相同,除了密鑰Ki的施加順序相反以外。
公開密鑰加密
多年來,許多人都認為DES并不是真的非常安全。事實上,即使不采用智能的方法,隨著快速、高度并行的處理器的出現,強制破解DES也是可能的。"公開密鑰"加密方法使得DES及類似的傳統加密技術過時了。公開密鑰加密方法中,加密算法和加密密鑰都是公開的,所有人都可將明文轉換成密文。不過相應的解密密鑰是保密的(公開密鑰方法包括兩個密鑰,分別用于加密和解密),而且無法從加密密鑰推導出,因此,即使是加密者若未被授權也無法執行相應的解密。公開密鑰加密思想最初是由Diffie和Hellman提出的,最著名的是Rivest、Shamir及Adleman提出的,目前通常稱為RSA(以三個發明者的首位字母命名)的方法,該方法基于下面的兩個事實:
1) 已有確定一個數是不是質數的快速算法;
2) 尚未找到確定一個合數的質因子的快速算法。
RSA方法的工作原理如下:
1) 任意選取兩個不同的大質數p和q,計算乘積r=p*q;
2) 任意選取一個大整數e,e和(p-1)*(q-1)互質,整數e用做加密密鑰。注意:e的選取是非常容易的,例如,所有大于p和q的質數都可用。
3) 確定解密密鑰d:d * e = 1 modulo(p - 1)*(q - 1)根據e、p和q能容易地計算出d。
4) 公開整數r和e,不過不公開d;
5) 將明文P (假設P是個小于r的整數)加密為密文C,計算方法為:C = Pe modulo r
6) 將密文C解密為明文P,計算方法為:P = Cd modulo r
然而只根據r和e(不是p和q)要計算出d是不可能的。因此,所有人都可對明文進行加密,但只有授權用戶(知道d)才可對密文解密。
下面舉一簡單的例子對上述過程進行說明,顯然我們只能選取非常小的數字。
例:選取p=3, q=5,則r=15,(p-1)*(q-1)=8。選取e=11(大于p和q的質數),通過d * 11 = 1 modulo 8,計算出d =3。
假定明文為整數13。則密文C為
- C = Pe modulo r
- = 1311 modulo 115
- = 1,792,160,394,037 modulo 15
- = 7
復原明文P為:
- P = Cd modulo r
- = 73 modulo 15
- = 343 modulo 15
- = 13
因為e和d互逆,公開密鑰加密方法也允許采用這樣的方式對加密信息進行"簽名",以便接收方能確定簽名不是偽造的。假設A和B希望通過公開密鑰加密方法進行數據傳輸,A和B分別公開加密算法和相應的密鑰,但不公開解密算法和相應的密鑰。A和B的加密算法分別是ECA和ECB,解密算法分別是DCA和DCB,ECA和DCA互逆,ECB和DCB互逆。若A要向B發送明文P,不是簡單地發送ECB(P),而是先對P施以其解密算法DCA,再用加密算法ECB對結果加密后發送出去。密文C為:
C = ECB(DCA(P))
B收到C后,先后施以其解密算法DCB和加密算法ECA,得到明文P:
- ECA(DCB(C))
- = ECA(DCB(ECB(DCA(P))))
- = ECA(DCA(P)) /*DCB和ECB相互抵消*/
- = P /*DCB和ECB相互抵消*/
這樣B就確定報文確實是從A發出的,因為只有當加密過程利用了DCA算法,用ECA才能獲得P,只有A才知道DCA算法,沒有人,即使是B也不能偽造A的簽名。
數據加密的更對內容請看:詳細解析數據加密
【編輯推薦】