eBay CEO做序推薦《web商務安全設計與開發寶典》:對稱加密系統

          eBay CEO做序推薦《web商務安全設計與開發寶典》:對稱加密系統web


使 用密碼的目的是防止信息在傳輸和存儲過程當中被除目標接受者之外的任何人讀取和理解。理想狀況下,未經受權的我的永遠都不能對一個加密信息進行解密。實際 上,讀取加密通訊只是一個時間函數,但未經受權的我的破解一個加密信息須要付出至關大的努力,花費大量的時間,因此不太切合實際。等到他破解了該消息的時 候,這個消息所包含的信息可能已沒什麼價值了。算法

        使用密碼能夠實現機密性、完整性、身份驗證和不可抵賴性。在不可抵賴中,發送者不可否認發送或者簽發過帶有數字簽名的文件。不可抵賴可以證實某人發送或者簽署過數字文件。編程

         加密技術主要有兩種,對稱密鑰(密鑰或者私用密鑰)加密和非對稱密鑰(公鑰)加密。在對稱密鑰加密中,接收者和發送者共享一個共同密鑰。在非對稱密鑰加密 中,發送者和接收者各持一個私用密鑰和一個公開密鑰,私用密鑰他們各自私自保存,公開密鑰公開放置,供想與他們通訊的人使用。公開密鑰和私用密鑰有數學關 系,理想狀況下,擁有公開密鑰的人不能導出私用密鑰。因爲非對稱密鑰加密中涉及大量的計算,因此對稱密鑰加密系統每每比非對稱密鑰加密系統運行得快。安全

流 密碼和分組密碼是構成對稱加密系統的兩個主要類型的算法。流密碼使用一個單一密鑰K來加密一個明文消息M,後者是一串按順序被處理的串行數據串。這個消息 被看作是一個數據流,其中每一個字節都和它以前的那些字節一塊兒被處理,而且這個順序很是重要。若是改變這個明文中任何字節的順序,那麼從改變的那個地方日後 看這個密文,就會與原來不一樣。electron

分組密碼是指把明文分紅含有n個字符或者字節的組,每組都用相同的加密算法和密鑰K。好比,若是一個明文消息M被分紅了M一、M二、…….Mp共p組,那麼:分佈式

E(M,K)=E(M1,K)E(M2,K)…E(Mp,K)函數

其中等式右邊的這幾個組鏈接在一塊兒組成密文。post

1. 流密碼

流密碼每每不須要對消息進行任何填充。由於消息被看作是一個數據流,因此它們能夠是任何長度,不須要以任何方式對其進行填充,除非想給普通消息增長隨機性。測試

下面是幾個常見的流密碼:加密

●      RC4

●      SEAL

●      ISAAC

●      PANAMA

●      Helix

流密碼有不少,其中多數的工做原理是爲密鑰生成一個看似隨機的數據流。而後該數據流與消息進行異或(XOR)運算,密文即得以建立。異或函數是對兩串比特進行二進制操做,而後生成第三串比特。在異或操做中,當兩個比特不相同時,其結果爲1,當它們相同時,結果爲0。

使用XOR,並非一種簡單的相加(即由此產生的數字大於這個字符),但其結果仍然映射一個字符。XOR也有一個有用的可逆屬性。好比:

●      C=A XOR B

●      B=A XOR C

●      A=B XOR C

如 果A表明一個明文字符,B表明一個密鑰字符,那麼C是使用XOR函數進行加密以後而生成的密文。要想解密,只需從新對C和B或者密文和密鑰應用XOR函 數。沒有密鑰,就不可能知道明文是什麼。全部可能的值均可以用來計算密鑰,但只有一個值能返回到正確結果。若是這個密鑰和明文同樣長,而且只用過一次,密 鑰是隨機產生的,那麼這種加密方法被稱爲一次填充,它是十分安全的。

2. 分組密碼

分 組密碼是另一種對稱加密算法。分組密碼也使用一個單一密鑰對消息進行加密,但它一次只加密一個塊。每塊含有特定數量的比特,其數量由算法決定。各個塊獨 立被處理,一個消息塊和另外一消息塊的加密之間沒有任何關係。分組密碼這種一次只處理一個消息塊的能力正是分組密碼不一樣於流加密的地方所在。

雖 然分組密碼有獨立處理單個消息塊的能力,但一般狀況下仍會使用加密模式來打破這種屬性,防止有人看到重複的塊而獲知關於這個消息的信息。好比,若是 Alice在回答Bob的問題時發送消息「yes」給Bob,那麼若是使用相同的密鑰,這個字「yes」將被加密成同一密文。那麼每次發送「yes」時, 入侵者Eve就能夠在不進行解密的狀況下知道發送了什麼消息。更糟糕的是,另一我的會用全部可能的密鑰預先計算這個消息「yes」,而後只須要把看到的 這個密文與相應的密鑰進行比對,假設這個密鑰足夠小的話,他即可進一步破解全部加密。

另一個針對分組密碼的攻擊是改變這個組塊的順序。這和流密碼不同,它仍然不會影響解密,由於每一個組塊彼此獨立。這意味着在用這種方式使用分組密碼時,機密性還存在,但完整性喪失了。

爲 了打破相同明文組塊老是加密成相同的密文組塊這一屬性,人們建立了各類加密模式。第一種加密模式是簡單地對明文一組一組地加密。這種加密模式叫作電碼本。 其餘3種常見模式爲密碼分組連接、密碼反饋和輸出反饋。雖然這3種模式打破了同一明文被加密成相同密文的屬性,但它們也有缺點,即和流密碼同樣,任何差錯 都會在整個加密流程中傳播。各類模式傳播差錯的程度不一樣,具體以下:

●      電子密碼書(electronic code book,ECB):一次只對消息的一個組塊進行加密,一個明文組塊只映射一個密文組塊。組塊中的差錯隻影響對那個組塊的解密。若是一個完整的組塊在傳輸過程當中丟失,其餘組塊不受任何影響。

●      密碼分組連接(cipher block chaining,CBC):前面已加密的輸出組塊和下一個未加密的明文組塊一塊兒進行異或運算。若是一個組塊出現差錯,則這個差錯會傳播到下面兩個被破譯的組塊中。若是整個組塊在傳輸過程當中丟失,在解密過程當中僅影響下一個組塊。

●      密碼反饋(cipher feedback,CFB):前 面密文塊被加密後的結果與明文塊一塊兒進行異或運算。這與CBC模式的不一樣之處在於這個異或運算髮生在對前面密文分組加密以後。若是一個組塊中出現差錯,那 麼該差錯被傳播到|n/r|個組塊中,其中n等於這個分組密碼的輸出大小,r等於在異或運算中用到的比特的數量。若是一整個分組在傳輸過程當中丟失了,則 CFB模式將會和CBC模式同樣恢復數據,然而,它要求恢復|n/r|個組塊。

●      輸出反饋(output feedback,OFB):不 斷把加密算法的輸出結果輸入到這個算法之中,而後這個明文和這個輸出一塊兒進行異或運算。這不一樣於CFB,由於不把密文輸入到這個加密算法。若是一個組塊出 現差錯,則此差錯僅傳播到那些被改變的比特上。然而,若是有任何比特丟失,包括一整個組塊丟失,那麼這個差錯都會被傳播到全部其他的組塊上,且不能恢復。

在 上面所列的各類模式中,由於上述緣由,ECB幾乎歷來都不使用。最受歡迎的模式是CBC,由於它不像OFB,即便比特丟失,差錯也不傳播至整個消息。 CBC比CFB用得多,是由於差錯傳播的範圍一般較小,僅限於兩個塊,且由於出現的這個比特變化以一種能夠預見的方式發生在後面的組塊上。好比,在使用 CBC時,若是塊1有比特在傳輸過程當中翻轉,那麼塊1將看似很隨機,塊2將有一樣的比特在塊1傳輸過程當中比特翻轉的地方翻轉。這會使得Mallory可以 形成對這個消息的可預見的改變。在CFB模式中,在塊1中翻轉的比特正是在解密的塊1中翻轉的比特。後面的塊看起來是隨機的。若是攻擊者打算在密文傳輸過 程中翻轉比特的話,那麼在解密時接收到一個看似隨機的塊要好得多,這會提醒您攻擊已經出現,不要相信它後面的東西了。而CFB卻不是這樣,由於您只知道差 錯已經發生了,但不必定知道它是在哪兒開始的。

3. 初始化向量

初 始化向量(initialization vector,IV)是一個任意的比特組,能夠和密鑰一塊兒用於流密碼或分組密碼中。IV被用來生成獨一無二的加密數據,該數據與用同一加密密鑰生成的其餘 加密數據相互獨立。所以,有了IV,即可以對數據中重複的序列使用相同密鑰加密,而產生不一樣的加密結果。接收者在接收用IV加了密的數據時,也必須知道這 個IV,才能對消息進行解密。

4. 古典密碼

本節將詳細討論基本的加密操做,以便更加深刻地理解加密方法的演變過程和人們爲此付出的相應努力。

1) 代換

凱 撒密碼(Caesar Cipher)是一種簡單的代換密碼,是把字母向後移動3個位數。凱撒密碼是Vigenère多表密碼的一個子集,後者將在本章後文進行討論。從數學角度 講,凱撒密碼的實現方法是將消息的字符加上重複的密鑰,而後再進行模26運算。在模26加法中,分別給字母表中的字母A~Z一個0~25的值。而後把密鑰 和消息所對應的數值加起來,其和若是大於等於26,則取減去26的差爲其對應值。在肯定密鑰時,必須規定下面2個參數:

D:密鑰重複的字母數,

K:密鑰

下面舉例說明,如D=3,K=CAF

消息是:HOW ARE YOU

按照字母表中各個字母所對應的數值,該消息爲:

7               14         22  0    17  4    24  14  20

H                O                W A           R  E      Y          O    U

密鑰K所對應的數爲:

2                   0      5

C  A  F

如今,咱們重複地把密鑰205與消息對應的數字相加得結果以下:

2   0    5  2    0   5          2   0  5   重複的密鑰

7  14 22   0  17    4   24 14  20   消息

9  14    1  2  17    9          0  14 25   密文所對應的數字

J   O   B   C    R   J     A   O   Z   密文

把數字換成字母表中它們所對應的字母則生成上面這個密文。

若是密鑰數字和消息數字相加的和大於等於26,那麼這種加法就是模26(mod26),即最終結果是相加的和減去26所得的差。下面的例子說明了模26加法的運算規律:

14   12  22  24

12   22  8   5

26   34 30  29       和

0    8      4   3   模26加法的運算結果

這種加密方式能夠用公式表示以下:

C=(M+b) mod N

其中,b是一個固定整數

N是字母表所包含的字母數

M是數字形式的明文消息

C是數字形式的密文

這 種代換密碼可使用頻度分析(frequency analysis)來破解。在頻度分析中,根據某種特定語言中字母表中的字母被使用的頻度特色來破解密碼。這種密碼分析之因此是可能的,是由於凱撒密碼是 一個單表密碼(monoalphabetic)或者簡單的代換密碼,指一個密文字符代替一個明文字符。多表密碼(polyalphabetic)能夠經過 使用多個代換密碼來實現。所以,在加密過程當中,同一明文字母能夠轉換成一個不一樣的密文字母。出生於1523年的法國外交官Blaisede Vigenère結合Alberti、Trithemius和Porta的密碼研究,開發了功能很是強大的多表密碼。Vigenère的密碼使用26個字 母表。

由於使用了多個字母表,因此能夠抵制頻度分析的破解方式。然而,這種方法也能夠經過發現週期(period)—— 即代換表重複的時間—— 的方式來破解。圖1描述的是多表代換,密鑰是10 3 1,指從明文字母向密文字母移動的位數。


圖1 多表代換

2) 變位(排列)

另一種密碼是變位密碼。在這種密碼中,明文的字母被排序。好比,明文HOWAREYOU的字母被排列成WAUOEYHOR。

柱狀變位密碼是指明文被橫着寫在紙上,但豎着讀出來,如圖2所示。

N O W I S T H E

T I M E F O R A

L L G O O D M E

N T O C O M E T

O T H E A I D O

F T H E I R P A

R T Y

圖2  柱狀變位密碼

豎着讀取上面的密文爲:NTLNOFROILTTTTWMGOHHY。這種變位密碼能夠經過頻度分析而被破解,可是它隱藏了兩個字母和三個字母的統計特性,如IS和TOO。這種特色能夠防止字典攻擊。

3) 維爾南密碼(一次一密)

一 次一密或者維爾南Vernam密碼是指經過使用一個包含隨機字符串的密鑰來實現,該隨機字符串不會出如今重複的序列中。每一個密鑰字母都與明文字母用模26 算法相加。在一次一密中,每一個密鑰字母在一條消息中只使用一次,從不重複使用。密鑰字符流的長度等於消息的長度。對於兆字節和千兆字節的消息,使用一次一 密的方法不實際。可是若是隨機字符集短且有很是大的間隔的話,則是可能的。

下面是一次一密加密的例子。

明文               HOWAREYOU     7    14         22   0 17        4  24   14  20

一次一密密鑰       XRAQZTBCN        23   17        0 16  25   19  1       2   13

求和                                  30         31        22  16 42   23  25       16         33

Mod 26求和                                  4          5  22  16  16   23       25  16              7

密文                                         E         F   W          Q  Q   X                      Z          Q          H

4) 書或滾動密鑰密碼

這種密碼使用某一來源(好比一本書)的文章來加密明文。密鑰多是這本書中某篇文章的頁數和行數,發送者和目標接收者都知道它。這個「密鑰」文章與明文中的字母相匹配,而後再用mod 26加法來進行加密。

雖然滾動密鑰密碼去除了週期性,但利用密鑰中的冗餘卻能夠破解它。

5) 代碼

代碼是指用相應的一組數字或字母來代替單詞和詞組。好比數字587可能意思是「已發貨」。

5. 對稱密鑰加密基礎

祕 密密鑰加密是一種多數人熟悉的加密方法。在這種加密方法中,發送者和接收者都知道一個祕密密鑰。發送者用這個祕密密鑰對明文消息進行加密,接收者用同一個 祕密密鑰對消息解密。顯而易見,較爲難作的是如何把這個祕密密鑰既提供給發送者和接收者,而又不危及該密鑰的安全。爲了提升安全性,這個祕密密鑰應該按期 更換。理想狀況下,一個特定的祕密密鑰只應該使用一次。圖3描述的是一個對稱密鑰加密系統。

圖3 對稱密鑰加密系統

祕密密鑰加密系統由公共信息和私有信息組成。公共信息一般包含下列內容:

●      加密已加密消息的明文副本的算法

●      可能的話,明文副本和相關密文

●      可能的話,非目標接收者選中的加密明文

私有信息包括:

●      密鑰或者暗號

●      衆多可能的轉換中的一個特定加密轉換

任 何祕密密鑰加密系統的重要特色是同一密鑰既能夠加密也能夠解密這個消息。若是使用的密鑰較大(大於128比特),祕密密鑰系統則很是難以破解。這些系統也 相對較快,能夠用來加密大容量數據。因爲這一點,才產生了許多對稱密鑰算法。使用這種對稱密鑰系統的問題是由於發送者和接收者必須共享相同密鑰,所以發送 者須要爲每一個目標接收者提供各自不一樣的密鑰。若是有n我的的話,則每一個人須要有n(n-1)/2個密鑰才能祕密地與其餘任何參與者聯繫。一個經常使用的方法是 使用公鑰加密來傳輸對稱會話密鑰,該密鑰可用於發送者和接收者之間的會話中。會話密鑰能夠配有一個時間戳,從而使得它在某一具體時間段內有效。時間戳能夠 對抗截獲會話密鑰並在稍後使用的重放攻擊。然而,對稱密鑰系統並不提供身份驗證和不可抵賴機制。曾經盛行的衆所周知的對稱密鑰系統是數據加密標準 (Data Encryption Standard,DES)。DES是從IBM的Lucifer加密系統演化而來,在20世紀70年代早期用於商業用途中。

1) 數據加密標準

DES 是一個對稱密鑰加密系統,是1972年IBM公司的Horst Feistel開發的Lucifer算法的一個變體。他在此技術上得到了專利。DES後來被普遍用於商業和各類用途上。DES描述了數據加密算法 (DataEncryption Algorithm,DEA),於1977年被擬爲聯邦信息處理標準(Federal InformationProcessing Standard,FIPS)46-1,並以DES這個名稱向社會公佈。DEA也被定義爲ANSI標準X3.92。1993年美國國家標準和技術協會 (National Institute of Standards and Technology,NIST)對DES進行了從新認證。在此以後,DES沒有被再認證過,後來被高級加密標準(AdvancedEncryption Standard,AES)替代。

DEA使用64位數據塊和56位密鑰加密。它開始是用一個64 位的密鑰,而後去除掉8位奇偶校驗位。奇偶校驗位從數據位中產生,用來判斷數據是否已經變得與原來的值不同了。DEA是一個16圈加密系統,起初的目的 是爲在硬件中使用。若是DEA使用56位密鑰,那麼在蠻力攻擊中,攻擊者必須嘗試256或者70千兆個可能的密鑰才能破解它。儘管 這個數很是巨大,可是大量計算機經過Internet合做也能窮盡全部可能的密鑰組合。因爲這一弱點,美國政府從1998年11月開始就再也不使用DES 了。三重DES—— 即用DEA進行三次加密—— 替代了DES,一直到後來的高級加密標準(Advanced Encryption Standard,AES)

被採用。咱們回顧DES安全的歷史頗有用,由於它代表了曾經被認爲是安全的一些加密系統後來是如何被破解的。

DES之因此被破解,是由於如今有了超大規模集成芯片(Very LargeScale Integration,VLSI),計算能力提升了,相應的計算成本降低了。下面總結了主要的破解DES的幾回大事:

① 1997年,分佈式軟件用時90天,蠻力搜索了DES的密鑰空間(256或者72千兆個密鑰),破解了DES。此次搜索天天大概運行14 000臺計算機,速度爲每秒鐘平均搜索232個密鑰。

② 1998年,分佈式軟件用時39天,蠻力搜索DES的密鑰空間(256或者72千兆個密鑰)。此次搜索的平均運行速度是每秒234個密鑰。

③ 1998年,電子前沿基金會(ElectronicFrontier Foundation,EFF)斥資25萬美圓創建了一個硬件DES解密機,每秒鐘能夠測試900億個密鑰。這個破解機器對DES密鑰空間執行了一次蠻力 搜索。該設備包括1856個自定義的DES破解芯片,這些芯片安裝在共29個電路板上(每一個電路板上裝有64個芯片)。這個項目須要18個月大概10我的 兼職才能完成。

④ 1998年7月,EFF DES機器以每秒搜索236個密鑰的速度用時56.05小時發現了DES密鑰。

⑤ 1999年1月,EFF DES機器與Internet上分佈在全世界的大約10萬臺計算機合做,以每秒平均搜索237個密鑰的速度用時22.25小時發現了DES密鑰。

⑥ 2001年,現場可編程門陣列(FieldProgrammable Gate Array,FPGA)設計以33.33兆赫茲運行,執行了DES密鑰的蠻力搜索,速度爲每秒225個密鑰。有了這種硬件,根據密鑰所在的密鑰空間的位置,DES密鑰能夠在最少25小時最多到10天的範圍內被找到。

2) 三重DES

咱們已經知道,用一個DES密鑰加密明文以後再用另外一個DES密鑰加密它比只用一個DES密鑰加密也沒安全到哪裏去。乍一看,若是兩個密鑰有n個位數,使用蠻力攻擊嘗試全部可能的密鑰須要嘗試2n×2n或者22n個不一樣的組合。然而,Merkle和Hellman說明對於一個已知的明文,用中間相遇攻擊法能夠用2n+1個嘗試即可以破解雙倍加密。這種攻擊從一端加密,從另外一端解密,而後在中間對比結果。所以,人們使用三重DES來獲取更強大的加密。

三重DES對一個消息加密3次。這種加密能夠經過幾種方式實現。好比,消息能夠用密鑰1加密,用密鑰2解密(實際上是另外一種加密),而後再用密鑰1加密:

[E{D[E(M,K1)],K2},K1]

在DES算法中,加密和解密被同等對待,不一樣之處是密鑰輸入進這個算法的方向(MSB或LSB)。

這種方式的三重DES加密是指DES-EDE2。若是用兩個密鑰執行3次加密,叫DES-EEE2:

[E{E[E(M,K1)],K2},K1]

一樣,E{E[E(M,K1)],K2},K3是指用3個不一樣密鑰執行三重加密的DES-EEE3。這種加密是三重DES的最安全的形式。

3) 高級加密標準

高 級加密標準(Advanced Encryption Standard,AES)是一種被做爲聯邦標準來替代DES的分組密碼。但預計三重DES在短期內仍將是美國政府批准使用的一種算法。三重DES和 DES被髮布在FIPS 46-3中。AES首先在1997年1月由NIST發佈,以後做爲候選加密算法被徵求提議。在1998年8月29日,由NIST公佈了15個AES候選算 法。1999年,NIST公佈了5個最終的候選者。這5個候選者爲MARS、RC六、Rijndael、Serpent和Twofish。NIST在 2000年5月15日關閉了第2輪對這些算法的公開分析。

在2000年10月2日,NIST 宣佈選用Rijndael分組密碼爲擬提議的AES算法,該算法是由比利時密碼學家Joan Daemen博士和Vincent Rijmen博士設計。Rijndael最終於2001年11月26日被肯定爲高級加密標準,發佈於聯邦信息處理標準197(FIPS PUB 197)。FIPS PUB 197中陳述到:「本標準能夠在聯邦部門和機構判斷有敏感信息(P.L.100-235中有定義)須要加密保護時使用。除這個標準以外,還能夠應用其餘 FIPS批准的加密算法替代這個標準。」根據使用的3個密鑰的不一樣,這個標準還叫作AES-12八、AES-192或AES-256。AES被美國國內外 的其餘私人組織和公共組織所普遍採用。

Rijndael算法設計有下列屬性:

●      在設計之時可抵禦全部已知的攻擊。

●      設計簡單。

●      代碼的簡潔和速度適合各類平臺。

Rijndael密碼能夠被歸類爲迭代分組密碼,塊的長度和密鑰的長度能夠變化,能夠獨立選擇使用12八、192或256個位數。用十進制術語表示,大概有3.4×1038個可能的128位密鑰、6.2×1057個可能的192位密鑰和1.1×1077個可能的256位密鑰。

AES規定了3個不一樣大小的密鑰(12八、192和256位)和一個固定大小的塊(128位)。

對於Rijndael加密算法的相對強度,咱們能夠這樣比量:若是一臺計算機能夠以每秒鐘嘗試256個密鑰的速度破解DES加密,那麼,一樣的一臺計算機須要149萬億(149×1012)年才能破解Rijndael。而宇宙的年齡據估計不到200億年(20×109)。

4) IDEA密碼

國 際數據加密算法(International Data Encryption Algorithm,IDEA)密碼是一個安全的、祕密的、密鑰-分組密碼算法,由JamesMassey 和Xuejia Lai共同開發。它於1992年從叫作建議加密標準(Proposed EncryptionStandard)和改進的建議加密標準(ImprovedProposed Encryption Standard)的早期算法中演變而來。IDEA運行於64位的明文塊,使用128位的密鑰。

由於使用128位密鑰,IDEA密碼的破解比DES困可貴多。IDEA的運做模式和DES描述的相同,適合用於Phil Zimmerman開發的完美隱私(Pretty Good Privacy,PGP)電子郵件加密系統中。

 


本文摘自:《web商務安全設計與開發寶典——涵蓋電子商務與移動商務》

                    ISBN:9787302293781

                    訂價:59元

                     預售地址:http://product.china-pub.com/3684089

相關文章
相關標籤/搜索