當前位置:首頁 » 密碼管理 » 對稱加密流程

對稱加密流程

發布時間: 2022-04-12 23:16:51

㈠ 什麼是對稱加密

對稱加密顧名思義就是加密和解密的密鑰是相同的。

㈡ 用圖示說明對稱加密技術和非對稱加密技術相結合(即數字信封技術)的工作過程。

數字信封技術用於保證資料在傳輸過程中的安全。對稱密鑰加密和公鑰加密技術各有其優缺點,對稱密鑰加密演算法效率高,但密鑰的憤發和管理都很困難;而公鑰加密演算法密鑰易於管理和傳遞,但運行效率太低,不適於加密大量的消息,而且它要求被加密的信息塊長度要小於密鑰的長度。數字信封技術結合了密鑰加密技術和公鑰加密技術各自的優點,克服了密鑰加密技術中密鑰分發和管理困難和公鑰加密技術中加解密效率低的缺點,充分利用了密鑰系統的高效性和公鑰系統的靈活性,保證信息在傳輸過程中的靈活性。
數字信封技術首先使用密鑰加密技術對要發送的消息進行加密;再利用公鑰加密技術對密鑰系統中使用的密鑰進行加密。然後把加密的消息和加密的密鑰一起傳送給接收方。其具體的實現方法和步驟如下:

說明:以上圖中的步驟可以解釋為:
①在需要發送信息時,發送方Alice先生成一個對稱密鑰K;
②Alice利用生成的對稱密鑰K和相應的對稱密鑰演算法E( • )對要發送的明文消息P進行加密,生成密文C=Ek(P);
③然後Alice再用接收方Bob提供的公鑰KpB 對剛才用到的加密明文P的密鑰K進行加密,得到加密後的密鑰Ck;
④Alice把加密後的消息C和加密後的對稱密鑰Ck作為密文一起傳送給Bob。
⑤Bob接收到密文後,先用自己的私鑰解密Ck還原出對稱密鑰K,然後再用得到的K,根據實現商定好的對稱密鑰演算法解密得到明文P。

數字信封技術實際上是使用雙層加密體制。在內層,利用對稱密鑰加密技術,每次傳送消息都可以重新生成新的對稱密鑰,實現了一次一密,保證了信息的安全性。在外層,使用公鑰加密技術對對稱密鑰進行加密,保證對稱密鑰傳輸的安全性。數字信封技術的應用,使資料信息在公共為了中的傳輸有了安全保障。

㈢ 對稱加密演算法的加密演算法主要有哪些

1、3DES演算法

3DES(即Triple DES)是DES向AES過渡的加密演算法(1999年,NIST將3-DES指定為過渡的加密標准),加密演算法,其具體實現如下:設Ek()和Dk()代表DES演算法的加密和解密過程,K代表DES演算法使用的密鑰,M代表明文,C代表密文,這樣:

3DES加密過程為:C=Ek3(Dk2(Ek1(M)))

3DES解密過程為:M=Dk1(EK2(Dk3(C)))

2、Blowfish演算法

BlowFish演算法用來加密64Bit長度的字元串。

BlowFish演算法使用兩個「盒」——unsignedlongpbox[18]和unsignedlongsbox[4,256]。

BlowFish演算法中,有一個核心加密函數:BF_En(後文詳細介紹)。該函數輸入64位信息,運算後,以64位密文的形式輸出。用BlowFish演算法加密信息,需要兩個過程:密鑰預處理和信息加密。

分別說明如下:

密鑰預處理:

BlowFish演算法的源密鑰——pbox和sbox是固定的。我們要加密一個信息,需要自己選擇一個key,用這個key對pbox和sbox進行變換,得到下一步信息加密所要用的key_pbox和key_sbox。具體的變化演算法如下:

1)用sbox填充key_sbox

2)用自己選擇的key8個一組地去異或pbox,用異或的結果填充key_pbox。key可以循環使用。

比如說:選的key是"abcdefghijklmn"。則異或過程為:

key_pbox[0]=pbox[0]abcdefgh;

key_pbox[1]=pbox[1]ijklmnab;

…………

…………

如此循環,直到key_pbox填充完畢。

3)用BF_En加密一個全0的64位信息,用輸出的結果替換key_pbox[0]和key_pbox[1],i=0;

4)用BF_En加密替換後的key_pbox,key_pbox[i+1],用輸出替代key_pbox[i+2]和key_pbox[i+3];

5)i+2,繼續第4步,直到key_pbox全部被替換;

6)用key_pbox[16]和key_pbox[17]做首次輸入(相當於上面的全0的輸入),用類似的方法,替換key_sbox信息加密。

信息加密就是用函數把待加密信息x分成32位的兩部分:xL,xRBF_En對輸入信息進行變換。

3、RC5演算法

RC5是種比較新的演算法,Rivest設計了RC5的一種特殊的實現方式,因此RC5演算法有一個面向字的結構:RC5-w/r/b,這里w是字長其值可以是16、32或64對於不同的字長明文和密文塊的分組長度為2w位,r是加密輪數,b是密鑰位元組長度。

(3)對稱加密流程擴展閱讀:

普遍而言,有3個獨立密鑰的3DES(密鑰選項1)的密鑰長度為168位(三個56位的DES密鑰),但由於中途相遇攻擊,它的有效安全性僅為112位。密鑰選項2將密鑰長度縮短到了112位,但該選項對特定的選擇明文攻擊和已知明文攻擊的強度較弱,因此NIST認定它只有80位的安全性。

對密鑰選項1的已知最佳攻擊需要約2組已知明文,2部,2次DES加密以及2位內存(該論文提到了時間和內存的其它分配方案)。

這在現在是不現實的,因此NIST認為密鑰選項1可以使用到2030年。若攻擊者試圖在一些可能的(而不是全部的)密鑰中找到正確的,有一種在內存效率上較高的攻擊方法可以用每個密鑰對應的少數選擇明文和約2次加密操作找到2個目標密鑰中的一個。

㈣ 對稱加密演算法的工作原理、作用及其流程圖

對稱加密的核心——通信雙方共享一個密鑰


通信過程:

A有明文m,使用加密演算法E,密鑰key,生成密文c=E(key,m);

B收到密文c,使用解密演算法D,密鑰key,得到明文m=D(key,c);

比喻:

對稱加密是最直觀,也是歷史最久遠的加密手段,類似於加鎖和解鎖,只不過鑰匙的個數非常多(~~2^100),一個人窮其一生也試不完所有可能的鑰匙。

㈤ 非對稱加密和對稱加密的區別

非對稱加密和對稱加密在加密和解密過程、加密解密速度、傳輸的安全性上都有所不同,具體介紹如下:

1、加密和解密過程不同

對稱加密過程和解密過程使用的同一個密鑰,加密過程相當於用原文+密鑰可以傳輸出密文,同時解密過程用密文-密鑰可以推導出原文。但非對稱加密採用了兩個密鑰,一般使用公鑰進行加密,使用私鑰進行解密。

2、加密解密速度不同

對稱加密解密的速度比較快,適合數據比較長時的使用。非對稱加密和解密花費的時間長、速度相對較慢,只適合對少量數據的使用。

3、傳輸的安全性不同

對稱加密的過程中無法確保密鑰被安全傳遞,密文在傳輸過程中是可能被第三方截獲的,如果密碼本也被第三方截獲,則傳輸的密碼信息將被第三方破獲,安全性相對較低。

非對稱加密演算法中私鑰是基於不同的演算法生成不同的隨機數,私鑰通過一定的加密演算法推導出公鑰,但私鑰到公鑰的推導過程是單向的,也就是說公鑰無法反推導出私鑰。所以安全性較高。

㈥ 對稱密鑰加密技術的工作流程

SQL Server 2005一個令人激動的特性是內置了加密的功能。在這個新版的SQL Server中,開發團隊直接在T-SQL中加入了加密工具、證書創建和密鑰管理的功能。對於因為法律要求或商業需求而需要加密表中的數據的人來說,這是一個好禮物。對於猶豫是否用加密來保證數據安全的人來說,做決定也更容易了。這篇文章介紹新的加密功能是怎麼工作,怎麼使用。

TSQL現在支持使用對稱密鑰和非對稱密鑰,證書和密碼。本文介紹如何創建、管理和使用對稱密鑰和證書。

根據涉及的內容,我決定把本文分為三節:

第一部分:服務主密鑰和資料庫主密鑰
第二部分:證書
第三部分:對稱密鑰

1. 服務主密鑰和資料庫主密鑰

圖:SQL Server 2005加密層次結構

1.1 服務主密鑰

當第一次需要使用服務主密鑰對鏈接伺服器密碼、憑據或資料庫主密鑰進行加密時,便會自動生成服務主密鑰。服務主密鑰為 SQL Server 加密層次結構的根。服務主密鑰直接或間接地保護樹中的所有其他密鑰和機密內容。使用本地計算機密鑰和 Windows 數據保護 API 對服務主密鑰進行加密。該 API 使用從 SQL Server 服務帳戶的 Windows 憑據中派生出來的密鑰。

因為服務主密鑰是自動生成且由系統管理的,它只需要很少的管理。服務主密鑰可以通過BACKUP SERVICE MASTER KEY語句來備份,格式為:

BACKUP SERVICE MASTER KEY TO FILE = 'path_to_file' ENCRYPTION BY PASSWORD = 'password'

'path_to_file' 指定要將服務主密鑰導出到的文件的完整路徑(包括文件名)。此路徑可以是本地路徑,也可以是網路位置的 UNC 路徑。

'password' 用於對備份文件中的服務主密鑰進行加密的密碼。此密碼應通過復雜性檢查。

應當對服務主密鑰進行備份,並將其存儲在另外一個單獨的安全位置。創建該備份應該是首先在伺服器中執行的管理操作之一。

如果需要從備份文件中恢復服務主密鑰,使用RESTORE SERVICE MASTER KEY語句。

RESTORE SERVICE MASTER KEY FROM FILE = 'path_to_file'
DECRYPTION BY PASSWORD = 'password' [FORCE]

'path_to_file' 指定存儲服務主密鑰的完整路徑(包括文件名)。path_to_file 可以是本地路徑,也可以是網路位置的 UNC 路徑。

PASSWORD = 'password' 指定對從文件中導入的服務主密鑰進行解密時所需的密碼。

FORCE 即使存在數據丟失的風險,也要強制替換服務主密鑰。

註:如果你在使用RESTORE SERVICE MASTER KEY時不得不使用FORCE選項,你可能會遇到部分或全部加密數據丟失的情況。

如果你的服務主密鑰泄露了,或者你想更改SQL Server服務帳戶,你可以通過ALTERSERVICE MASTER KEY語句重新生成或者恢復服務主密鑰。它的用法請參考聯機叢書。

因為服務主密鑰是SQL Server自動生成的,所以,它沒有對應的CREATE和DROP語句。

1.2 資料庫主密鑰

正如每個SQL Server有一個服務主密鑰,每個資料庫有自己的資料庫主密鑰。資料庫主密鑰通過CREATE MASTER KEY語句生成:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password'
這個語句創建資料庫主密鑰,使用指定的密碼加密它,並保存在資料庫中。同時,資料庫主密鑰也被使用服務主密鑰加密之後保存在master資料庫中,這就是所謂的「自動密鑰管理」。這個特性我們待會再講。

象服務主密鑰一樣,你可以備份和恢復資料庫主密鑰。使用BACKUP MASTER KEY備份資料庫主密鑰。語法類似於備份服務主密鑰:
BACKUP MASTER KEY TO FILE = 'path_to_file'
ENCRYPTION BY PASSWORD = 'password'

恢復資料庫主密鑰使用RESTORE MASTER KEY語句,它需要使用DECRYPTION BY PASSWORD子句提供備份時指定的加密密碼,還要使用ENCRYPTION BY PASSWORD子句,SQL Server使用它提供的密碼來加密資料庫主密鑰之後保存在資料庫中。
RESTORE MASTER KEY FROM FILE = 'path_to_file'
DECRYPTION BY PASSWORD = 'password'
ENCRYPTION BY PASSWORD = 'password'
[ FORCE ]

同樣,FORCE表示你將忽略在解密過程中的錯誤。

建議你在創建了資料庫主密鑰之後立即備份資料庫主密鑰,並把它保存到一個安全的地方。同樣,使用FORCE語句可能導致已加密數據的丟失。

要刪除資料庫主密鑰,使用DROP MASTER KEY語句,它刪除當前資料庫的主密鑰。在執行之前,確定你在正確的資料庫上下文中。

1.3 自動密鑰管理

當創建資料庫主密鑰時,它被使用提供的密碼加密然後被保存到當前資料庫中。同時,它被使用服務主密鑰加密並保存到master資料庫中。這份保存的資料庫主密鑰允許伺服器在需要的時候解密資料庫主密鑰,這就是自動密鑰管理。沒有自動密鑰管理的話,你必須在每次使用證書或密鑰加密或解密數據(它需要使用資料庫主密鑰)時使用OPEN MASTER KEY語句同時提供加密的密碼。使用自動密鑰管理,你不需要執行OPEN MASTER KEY語句,也不需要提供密碼。

自動密鑰管理的缺點就是每個sysadmin角色的成員都能夠解密資料庫主密鑰。你可以通過ALTER MASTER KEY語句的DROP ENCRYPTION BY SERVICE MASTER KEY子句,從而不使用自動密鑰管理。ALTER MASTER KEY的使用方法參見聯機叢書。

㈦ 對稱加密和非對稱加密的區別

非對稱加密和對稱加密在加密和解密過程、加密解密速度、傳輸的安全性上都有所不同,具體介紹如下:
1、加密和解密過程不同
對稱加密過程和解密過程使用的同一個密鑰,加密過程相當於用原文+密鑰可以傳輸出密文,同時解密過程用密文-密鑰可以推導出原文。但非對稱加密採用了兩個密鑰,一般使用公鑰進行加密,使用私鑰進行解密。
2、加密解密速度不同
對稱加密解密的速度比較快,適合數據比較長時的使用。非對稱加密和解密花費的時間長、速度相對較慢,只適合對少量數據的使用。
3、傳輸的安全性不同
對稱加密的過程中無法確保密鑰被安全傳遞,密文在傳輸過程中是可能被第三方截獲的,如果密碼本也被第三方截獲,則傳輸的密碼信息將被第三方破獲,安全性相對較低。
非對稱加密演算法中私鑰是基於不同的演算法生成不同的隨機數,私鑰通過一定的加密演算法推導出公鑰,但私鑰到公鑰的推導過程是單向的,也就是說公鑰無法反推導出私鑰。所以安全性較高。
來源:-對稱加密
來源:-非對稱加密

㈧ 對稱加密的工作過程

下面舉個例子來簡要說明一下對稱加密的工作過程。甲和乙是一對生意搭檔,他們住在不同的城市。由於生意上的需要,他們經常會相互之間郵寄重要的貨物。為了保證貨物的安全,他們商定製作一個保險盒,將物品放入其中。他們打造了兩把相同的鑰匙分別保管,以便在收到包裹時用這個鑰匙打開保險盒,以及在郵寄貨物前用這把鑰匙鎖上保險盒。
上面是一個將重要資源安全傳遞到目的地的傳統方式,只要甲乙小心保管好鑰匙,那麼就算有人得到保險盒,也無法打開。這個思想被用到了現代計算機通信的信息加密中。在對稱加密中,數據發送方將明文(原始數據)和加密密鑰一起經過特殊加密演算法處理後,使其變成復雜的加密密文發送出去。接收方收到密文後,若想解讀原文,則需要使用加密密鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密演算法中,使用的密鑰只有一個,發收信雙方都使用這個密鑰對數據進行加密和解密。

㈨ 常用的對稱密碼演算法有哪些

對稱加密演算法用來對敏感數據等信息進行加密,常用的演算法包括:

DES(Data Encryption Standard):數據加密標准,速度較快,適用於加密大量數據的場合。

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

AES(Advanced Encryption Standard):高級加密標准,是下一代的加密演算法標准,速度快,安全級別高;

㈩ 誰幫我介紹下加密對稱演算法

A.對稱加密技術 a. 描述 對稱演算法(symmetric algorithm),有時又叫傳統密碼演算法,就是加密密鑰能夠從解密密鑰中推算出來,同時解密密鑰也可以從加密密鑰中推算出來。而在大多數的對稱演算法中,加密密鑰和解密密鑰是相同的。所以也稱這種加密演算法為秘密密鑰演算法或單密鑰演算法。它要求發送方和接收方在安全通信之前,商定一個密鑰。對稱演算法的安全性依賴於密鑰,泄漏密鑰就意味著任何人都可以對他們發送或接收的消息解密,所以密鑰的保密性對通信性至關重要。 b.特點分析 對稱加密的優點在於演算法實現後的效率高、速度快。 對稱加密的缺點在於密鑰的管理過於復雜。如果任何一對發送方和接收方都有他們各自商議的密鑰的話,那麼很明顯,假設有N個用戶進行對稱加密通信,如果按照上述方法,則他們要產生N(N-1)把密鑰,每一個用戶要記住或保留N-1把密鑰,當N很大時,記住是不可能的,而保留起來又會引起密鑰泄漏可能性的增加。常用的對稱加密演算法有DES,DEA等。 B.非對稱加密技術 a.描述 非對稱加密(dissymmetrical encryption),有時又叫公開密鑰演算法(public key algorithm)。這種加密演算法是這樣設計的:用作加密的密鑰不同於用作解密的密鑰,而且解密密鑰不能根據加密密鑰計算出來(至少在合理假定的長時間內)。之所以又叫做公開密鑰演算法是由於加密密鑰可以公開,即陌生人可以得到它並用來加密信息,但只有用相應的解密密鑰才能解密信息。在這種加密演算法中,加密密鑰被叫做公開密鑰(public key),而解密密鑰被叫做私有密鑰(private key)。 b.特點分析 非對稱加密的缺點在於演算法實現後的效率低、速度慢。 非對稱加密的優點在於用戶不必記憶大量的提前商定好的密鑰,因為發送方和接收方事先根本不必商定密鑰,發放方只要可以得到可靠的接收方的公開密鑰就可以給他發送信息了,而且即使雙方根本互不相識。但為了保證可靠性,非對稱加密演算法需要一種與之相配合使用的公開密鑰管理機制,這種公開密鑰管理機制還要解決其他一些公開密鑰所帶來的問題。常用的非對稱加密演算法有RSA等。 (3) 關於密碼技術 密碼技術包括加密技術和密碼分析技術,也即加密和解密技術兩個方面。在一個新的加密演算法的研發需要有相應的數學理論證明,證明這個演算法的安全性有多高,同時還要從密碼分析的角度對這個演算法進行安全證明,說明這個演算法對於所知的分析方法來說是有防範作用的。 三、對稱加密演算法分析 對稱加密演算法的分類 對稱加密演算法可以分成兩類:一類為序列演算法(stream algorithm):一次只對明文中單個位(有時為位元組)加密或解密運算。另一類為分組演算法(block algorithm):一次明文的一組固定長度的位元組加密或解密運算。 現代計算機密碼演算法一般採用的都是分組演算法,而且一般分組的長度為64位,之所以如此是由於這個長度大到足以防止分析破譯,但又小到足以方便使用。 1.DES加密演算法 (Data Encryption Standard )
(1) 演算法簡介
1973 年 5 月 15 日,美國國家標准局 (NBS) 在「聯邦注冊」上發布了一條通知,徵求密碼演算法,用於在傳輸和存儲期間保護數據。IBM 提交了一個候選演算法,它是 IBM 內部開發的,名為 LUCIFER。在美國國家安全局 (NSA) 的「指導」下完成了演算法評估之後,在 1977 年 7 月 15 日,NBS 採納了 LUCIFER 演算法的修正版作為新的數據加密標准。
原先規定使用10年,但由於新的加密標准還沒有完成,所以DES演算法及其的變形演算法一直廣泛的應用於信息加密方面。 (2) 演算法描述 (包括加密和解密)
Feistel結構(畫圖說明)。

DES 的工作方式:可怕的細節
DES 將消息分成 64 位(即 16 個十六進制數)一組進行加密。DES 使用「密鑰」進行加密,從符號的角度來看,「密鑰」的長度是 16 個十六進制數(或 64 位)。但是,由於某些原因(可能是因為 NSA 給 NBS 的「指引」),DES 演算法中每逢第 8 位就被忽略。這造成密鑰的實際大小變成 56 位。編碼系統對「強行」或「野蠻」攻擊的抵抗力與其密鑰空間或者系統可能有多少密鑰有直接關系。使用的位數越多轉換出的密鑰也越多。密鑰越多,就意味著強行攻擊中計算密鑰空間中可能的密鑰范圍所需的時間就越長。從總長度中切除 8 位就會在很大程度上限制了密鑰空間,這樣系統就更容易受到破壞。
DES 是塊加密演算法。這表示它處理特定大小的純文本塊(通常是 64 位),然後返回相同大小的密碼塊。這樣,64 位(每位不是 0 就是 1)有 264 種可能排列,DES 將生成其中的一種排列。每個 64 位的塊都被分成 L、R 左右兩塊,每塊 32 位。
DES 演算法使用以下步驟:
1. 創建 16 個子密鑰,每個長度是 48 位。根據指定的順序或「表」置換 64 位的密鑰。如果表中的第一項是 "27",這表示原始密鑰 K 中的第 27 位將變成置換後的密鑰 K+ 的第一位。如果表的第二項是 36,則這表示原始密鑰中的第 36 位將變成置換後密鑰的第二位,以此類推。這是一個線性替換方法,它創建了一種線性排列。置換後的密鑰中只出現了原始密鑰中的 56 位。
2. 接著,將這個密鑰分成左右兩半,C0 和 D0,每一半 28 位。定義了 C0 和 D0 之後,創建 16 個 Cn 和 Dn 塊,其中 1<=n<=16。每一對 Cn 和 Dn 塊都通過使用標識「左移位」的表分別從前一對 Cn-1 和 Dn-1 形成,n = 1, 2, ..., 16,而「左移位」表說明了要對哪一位進行操作。在所有情況下,單一左移位表示這些位輪流向左移動一個位置。在一次左移位之後,28 個位置中的這些位分別是以前的第 2、3……28 位。
通過將另一個置換表應用於每一個 CnDn 連接對,從而形成密鑰 Kn,1<=n<=16。每一對有 56 位,而置換表只使用其中的 48 位,因為每逢第 8 位都將被忽略。
3. 編碼每個 64 位的數據塊。
64 位的消息數據 M 有一個初始置換 IP。這將根據置換表重新排列這些位,置換表中的項按這些位的初始順序描述了它們新的排列。我們以前見過這種線性表結構。
使用函數 f 來生成一個 32 位的塊,函數 f 對兩個塊進行操作,一個是 32 位的數據塊,一個是 48 位的密鑰 Kn,連續迭代 16 次,其中 1<=n<=16。用 + 表示 XOR 加法(逐位相加,模除 2)。然後,n 從 1 到 16,計算 Ln = Rn-1 Rn = Ln-1 + f(Rn-1,Kn)。即在每次迭代中,我們用前一結果的右邊 32 位,並使它們成為當前步驟中的左邊 32 位。對於當前步驟中的右邊 32 位,我們用演算法 f XOR 前一步驟中的左邊 32 位。
要計算 f,首先將每一塊 Rn-1 從 32 位擴展到 48 位。可以使用選擇表來重復 Rn-1 中的一些位來完成這一操作。這個選擇表的使用就成了函數 f。因此 f(Rn-1) 的輸入塊是 32 位,輸出塊是 48 位。f 的輸出是 48 位,寫成 8 塊,每塊 6 位,這是通過根據已知表按順序選擇輸入中的位來實現的。
我們已經使用選擇表將 Rn-1 從 32 位擴展成 48 位,並將結果 XOR 密鑰 Kn。現在有 48 位,或者是 8 組,每組 6 位。每組中的 6 位現在將經歷一次變換,該變換是演算法的核心部分:在叫做「S 盒」的表中,我們將這些位當作地址使用。每組 6 位在不同的 S 盒中表示不同的地址。該地址中是一個 4 位數字,它將替換原來的 6 位。最終結果是 8 組,每組 6 位變換成 8 組,每組 4 位(S 盒的 4 位輸出),總共 32 位。
f 計算的最後階段是對 S 盒輸出執行置換 P,以得到 f 的最終值。f 的形式是 f = P(S1(B1)S2(B2)...S8(B8))。置換 P 根據 32 位輸入,在以上的過程中通過置換輸入塊中的位,生成 32 位輸出。

解密只是加密的逆過程,使用以上相同的步驟,但要逆轉應用子密鑰的順序。DES 演算法是可逆的
(2) 演算法的安全性分析
在知道一些明文和密文分組的條件下,從理論上講很容易知道對DES進行一次窮舉攻擊的復雜程度:密鑰的長度是56位,所以會有 種的可能的密鑰。
在1993年的一年一度的世界密碼大會上,加拿大北方電信公司貝爾實驗室的 Michael Wiener 描述了如何構造一台專用的機器破譯DES,該機器利用一種每秒能搜索5000萬個密鑰的專用晶元。而且此機器的擴展性很好,投入的經費越多則效率越高。用100萬美元構造的機器平均3.5小時就可以破譯密碼。
如果不用專用的機器,破譯DES也有其他的方法。在1994年的世界密碼大會上,M.Matsui 提出一種攻克DES的新方法--"線性密碼分析"法。它可使用平均 個明文及其密文,在12台HP9000/735工作站上用此方法的軟體實現,花費50天時間完成對DES的攻擊。
如前所述DES作為加密演算法的標准已經二十多年了,可以說是一個很老的演算法,而在新的加密演算法的國際標准出現之前,許多DES的加固性改進演算法仍有實用價值,在本文的3.4節詳細的描述,同時考慮的以上所述DES的安全性已受到了威脅。
(4) 演算法的變體 三重DES(TDEA),使用3個密鑰,執行3次DES演算法:
加密:C = Ek3[Dk2[Ek1[P]]] 解密:P = Dk1[Ek2[Dk3[C]]]
特點:安全性得到增強,但是速度變慢。
2.AES
自 20 世紀 70 年代以來一直廣泛使用的「數據加密標准」(DES) 日益顯出衰老的痕跡,而一種新的演算法 -- Rijndael -- 正順利地逐漸變成新標准。這里,Larry Loeb 詳細說明了每一種演算法,並提供了關於為什麼會發生這種變化的內幕信息。
DES 演算法是全世界最廣泛使用的加密演算法。最近,就在 2000 年 10 月,它在其初期就取得的硬體方面的優勢已經阻礙了其發展,作為政府加密技術的基礎,它已由「高級加密標准」(AES) 中包含的另一種加密演算法代替了。AES 是指定的標准密碼系統,未來將由政府和銀行業用戶使用。AES 用來實際編碼數據的加密演算法與以前的 DES 標准不同。我們將討論這是如何發生的,以及 AES 中的 Rijndael 演算法是如何取代 DES 的演算法的。
「高級加密標准」成就
但直到 1997 年,美國國家標准技術局 (NIST) 才開始打著 AES 項目的旗幟徵集其接任者。1997 年 4 月的一個 AES 研討會宣布了以下 AES 成就的最初目標:
• 可供政府和商業使用的功能強大的加密演算法
• 支持標准密碼本方式
• 要明顯比 DES 3 有效
• 密鑰大小可變,這樣就可在必要時增加安全性
• 以公正和公開的方式進行選擇
• 可以公開定義
• 可以公開評估
AES 的草案中最低可接受要求和評估標準是:
A.1 AES 應該可以公開定義。
A.2 AES 應該是對稱的塊密碼。
A.3 AES 應該設計成密鑰長度可以根據需要增加。
A.4 AES 應該可以在硬體和軟體中實現。
A.5 AES 應該 a) 可免費獲得。
A.6 將根據以下要素評價符合上述要求的演算法:
1. 安全性(密碼分析所需的努力)
2. 計算效率
3. 內存需求
4. 硬體和軟體可適用性
5. 簡易性
6. 靈活性
7. 許可證需求(見上面的 A5)
Rijndael:AES 演算法獲勝者
1998年8月20日NIST召開了第一次AES侯選會議,並公布了15個AES侯選演算法。經過一年的考察,MARS,RC6,Rijndael,Serpent,Twofish共5種演算法通過了第二輪的選拔。2000 年 10 月,NIST 選擇 Rijndael(發音為 "Rhine dale")作為 AES 演算法。它目前還不會代替 DES 3 成為政府日常加密的方法,因為它還須通過測試過程,「使用者」將在該測試過程後發表他們的看法。但相信它可以順利過關。
Rijndael 是帶有可變塊長和可變密鑰長度的迭代塊密碼。塊長和密鑰長度可以分別指定成 128、192 或 256 位。
Rijndael 中的某些操作是在位元組級上定義的,位元組表示有限欄位 GF(28) 中的元素,一個位元組中有 8 位。其它操作都根據 4 位元組字定義。
加法照例對應於位元組級的簡單逐位 EXOR。
在多項式表示中,GF(28) 的乘法對應於多項式乘法模除階數為 8 的不可約分二進制多項式。(如果一個多項式除了 1 和它本身之外沒有其它約數,則稱它為不可約分的。)對於 Rijndael,這個多項式叫做 m(x),其中:m(x) = (x8 + x4 + x3 + x + 1) 或者十六進製表示為 '11B'。其結果是一個階數低於 8 的二進制多項式。不像加法,它沒有位元組級的簡單操作。
不使用 Feistel 結構!
在大多數加密演算法中,輪回變換都使用著名的 Feistel 結構。在這個結構中,中間 State 的位部分通常不做更改調換到另一個位置。(這種線性結構的示例是我們在 DES 部分中討論的那些表,即使用固定表的形式交換位。)Rijndael 的輪回變換不使用這個古老的 Feistel 結構。輪回變換由三個不同的可逆一致變換組成,叫做層。(「一致」在這里表示以類似方法處理 State 中的位。)
線性混合層保證了在多個輪回後的高度擴散。非線性層使用 S 盒的並行應用,該應用程序有期望的(因此是最佳的)最差非線性特性。S 盒是非線性的。依我看來,這就 DES 和 Rijndael 之間的密鑰概念差異。密鑰加法層是對中間 State 的輪回密鑰 (Round Key) 的簡單 EXOR,如以下所注。

Rijndael演算法

加密演算法
Rijndael演算法是一個由可變數據塊長和可變密鑰長的迭代分組加密演算法,數據塊長和密鑰長可分別為128,192或256比特。
數據塊要經過多次數據變換操作,每一次變換操作產生一個中間結果,這個中間結果叫做狀態。狀態可表示為二維位元組數組,它有4行,Nb列,且Nb等於數據塊長除32。如表2-3所示。

a0,0 a0,1 a0,2 a0,3 a0,4 a0,5
a1,0 a1,1 a1,2 a1,3 a1,4 a1,5
a2,0 a2,1 a2,2 a2,3 a2,4 a2,5
a3,0 a3,1 a3,2 a3,3 a3,4 a3,5

數據塊按a0,0 , a1,0 , a2,0 , a3,0 , a0,1 , a1,1 , a2,1 , a3,1 , a0,2…的順序映射為狀態中的位元組。在加密操作結束時,密文按同樣的順序從狀態中抽取。
密鑰也可類似地表示為二維位元組數組,它有4行,Nk列,且Nk等於密鑰塊長除32。演算法變換的圈數Nr由Nb和Nk共同決定,具體值列在表2-4中。
表3-2 Nb和Nk決定的Nr的值
Nr Nb = 4 Nb = 6 Nb = 8
Nk = 4 10 12 14
Nk = 6 12 12 14
Nk = 8 14 14 14

3.2.1圈變換
加密演算法的圈變換由4個不同的變換組成,定義成:
Round(State,RoundKey)
{
ByteSub(State);
ShiftRow(State);
MixColumn(State);
AddRoundKey(State,RoundKey); (EXORing a Round Key to the State)
}
加密演算法的最後一圈變換與上面的略有不同,定義如下:
FinalRound(State,RoundKey)
{
ByteSub(State);
ShiftRow(State);
AddRoundKey(State,RoundKey);
}

ByteSub變換
ByteSub變換是作用在狀態中每個位元組上的一種非線形位元組變換。這個S盒子是可逆的且由以下兩部分組成:
把位元組的值用它的乘法逆替代,其中『00』的逆就是它自己。
經(1)處理後的位元組值進行如下定義的仿射變換:

y0 1 1 1 1 1 0 0 0 x0 0
y1 0 1 1 1 1 1 0 0 x1 1
y2 0 0 1 1 1 1 1 0 x2 1
y3 0 0 0 1 1 1 1 1 x3 0
y4 = 1 0 0 0 1 1 1 1 x4 + 0
y5 1 1 0 0 0 1 1 1 x5 0
y6 1 1 1 0 0 0 1 1 x6 1
y7 1 1 1 1 0 0 0 1 x7 1

ShiftRow變換
在ShiftRow變換中,狀態的後3行以不同的移位值循環右移,行1移C1位元組,行2移C2位元組,行3移C3位元組。
移位值C1,C2和C3與加密塊長Nb有關,具體列在表2-5中:
表3-3 不同塊長的移位值
Nb C1 C2 C3
4 1 2 3

MixColumn變換
在MixColumn變換中,把狀態中的每一列看作GF(28)上的多項式與一固定多項式c(x)相乘然後模多項式x4+1,其中c(x)為:
c(x) =『03』x3 + 『01』x2 + 『01』x + 『02』
圈密鑰加法
在這個操作中,圈密鑰被簡單地使用異或操作按位應用到狀態中。圈密鑰通過密鑰編製得到,圈密鑰長等於數據塊長Nb。

在這個表示法中,「函數」(Round, ByteSub, ShiftRow,...) 對那些被提供指針 (State, RoundKey) 的數組進行操作。ByteSub 變換是非線性位元組交換,各自作用於每個 State 位元組上。在 ShiftRow 中,State 的行按不同的偏移量循環移位。在 MixColumn 中,將 State 的列視為 GF(28) 多項式,然後乘以固定多項式 c( x ) 並模除 x4 + 1,其中 c( x ) = '03' x3 + '01' x2+ '01' x + '02'。這個多項式與 x4 + 1 互質,因此是可逆的。
輪回密鑰通過密鑰計劃方式從密碼密鑰 (Cipher Key) 派生而出。它有兩個組件:密鑰擴展 (Key Expansion) 和輪回密鑰選擇 (Round Key Selection)。輪回密鑰的總位數等於塊長度乘以輪回次數加 1(例如,塊長度等於 128 位,10 次輪回,那麼就需要 1408 個輪回密鑰位)。
密碼密鑰擴充成擴展密鑰 (Expanded Key)。輪回密鑰是通過以下方法從這個擴展密鑰中派生的:第一個輪回密鑰由前 Nb(Nb = 塊長度)個字組成,第二個由接著的 Nb 個字組成,以此類推。
加密演算法由以下部分組成:初始輪回密鑰加法、Nr-1 個輪回和最後一個輪回。在偽 C 代碼中:
Rijndael(State,CipherKey)
{
KeyExpansion(CipherKey,ExpandedKey);
AddRoundKey(State,ExpandedKey);
For( i=1 ; i<Nr ; i++ ) Round(State,ExpandedKey + Nb*i);
FinalRound(State,ExpandedKey + Nb*Nr).
}
如果已經預先執行了密鑰擴展,則可以根據擴展密鑰指定加密演算法。
Rijndael(State,ExpandedKey)
{
AddRoundKey(State,ExpandedKey);
For( i=1 ; i<Nr ; i++ ) Round(State,ExpandedKey + Nb*i);
FinalRound(State,ExpandedKey + Nb*Nr);
}
由於 Rijndael 是可逆的,解密過程只是顛倒上述的步驟。
最後,開發者將仔細考慮如何集成這種安全性進展,使之成為繼 Rijndael 之後又一個得到廣泛使用的加密演算法。AES 將很快應一般商業團體的要求取代 DES 成為標准,而該領域的發展進步無疑將追隨其後。

3.IDEA加密演算法 (1) 演算法簡介 IDEA演算法是International Data Encryption Algorithmic 的縮寫,意為國際數據加密演算法。是由中國學者朱學嘉博士和著名密碼學家James Massey 於1990年聯合提出的,當時被叫作PES(Proposed Encryption Standard)演算法,後為了加強抵抗差分密碼分,經修改於1992年最後完成,並命名為IDEA演算法。 (2) 演算法描述 這個部分參見論文上的圖 (3) 演算法的安全性分析 安全性:IDEA的密鑰長度是128位,比DES長了2倍多。所以如果用窮舉強行攻擊的話, 么,為了獲得密鑰需要 次搜索,如果可以設計一種每秒能搜索十億把密鑰的晶元,並且 採用十億個晶元來並行處理的話,也要用上 年。而對於其他攻擊方式來說,由於此演算法 比較的新,在設計時已經考慮到了如差分攻擊等密碼分析的威脅,所以還未有關於有誰 發現了能比較成功的攻擊IDEA方法的結果。從這點來看,IDEA還是很安全的。
4.總結
幾種演算法的性能對比
演算法 密鑰長度 分組長度 循環次數
DES 56 64 16
三重DES 112、168 64 48
AES 128、192、256 128 10、12、14
IDEA 128 64 8

速度:在200MHz的奔騰機上的對比。
C++ DJGP(++pgcc101)
AES 30.2Mbps 68.275Mbps
DES(RSAREF) 10.6Mbps 16.7Mbps
3DES 4.4Mbps 7.3Mbps

Celeron 1GHz的機器上AES的速度,加密內存中的數據
128bits密鑰:
C/C++ (Mbps) 匯編(Mbps)
Linux 2.4.7 93 170
Windows2K 107 154
256bits密鑰:
C/C++ (Mbps) 匯編(Mbps)
Linux 2.4.7 76 148
Windows2K 92 135

安全性
1990年以來,特製的"DES Cracker"的機器可在幾個小時內找出一個DES密鑰。換句話說,通過測試所有可能的密鑰值,此硬體可以確定用於加密信息的是哪個密鑰。假設一台一秒內可找出DES密鑰的機器(如,每秒試255個密鑰),如果用它來找出128-bit AES的密鑰,大約需要149萬億年。

四、對稱加密應用 在保密通信中的應用。(保密電話) 附加內容
安全哈希演算法(SHA)
由NIST開發出來的。
此演算法以最大長度不超過264位的消息為輸入,生成160位的消息摘要輸出。主要步驟:
1. 附加填充位
2. 附加長度
3. 初始化MD緩沖區,為160位的數據
A=67452301
B=EFCDAB89
C=89BADCFE
D=10325476
E=C3D2E1F0
4. 處理512位消息塊,將緩沖虛數據和消息塊共同計算出下一個輸出
5. 輸出160位摘要
此外還有其他哈希演算法,如MD5(128位摘要),RIPEMD-160(160位摘要)等。

熱點內容
安卓夏日傳說存檔放哪個文件 發布:2025-05-17 06:12:44 瀏覽:605
如何通過伺服器id找到主人 發布:2025-05-17 06:12:11 瀏覽:36
ug編程吧 發布:2025-05-17 06:07:45 瀏覽:71
sql臨時表和表變數 發布:2025-05-17 06:02:38 瀏覽:723
蘋果如何用安卓無線耳機 發布:2025-05-17 06:01:53 瀏覽:821
sqlserver表關系 發布:2025-05-17 06:01:02 瀏覽:996
2017途觀配置什麼音響 發布:2025-05-17 05:53:50 瀏覽:843
64位安裝sql2000 發布:2025-05-17 05:33:17 瀏覽:845
安卓手機屏幕儀哪個好 發布:2025-05-17 05:33:16 瀏覽:592
加密的備忘錄 發布:2025-05-17 05:32:30 瀏覽:743