?? rfc2451.txt
字號:
組織:中國互動出版網(http://www.china-pub.com/)
RFC文檔中文翻譯計劃(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
譯者:王海 (javen_wang wanghai@jbu.com.cn)
譯文發布時間:2001-8-9
版權:本中文翻譯文檔版權歸中國互動出版網所有。可以用于非商業用途自由轉載,但必須
保留本文檔的翻譯及版權信息。
Network Working Group R. Pereira
Request for Comments: 2451 TimeStep Corporation
Category: Standards Track R. Adams
Cisco Systems Inc.
November 1998
ESP CBC模式加密算法
(RFC2451——The ESP CBC-Mode Cipher Algorithms)
本備忘錄狀態
本文檔講述了一種Internet通信的標準Internet跟蹤協議,并對其改進提出了討論和建
議。請參考最新版本的"Internet Official Protocol Standards" (STD 1) 來獲得本協議的
標準化進程和狀態,此備忘錄的發布不受任何限制。
版權注意
版權歸因特網協會(1998)所有,保留一切權利。
摘要
本文檔描述了在IPSec ESP(封裝安全載荷)協議中如何使用CBC(加密塊鏈接)模式的
加密算法。它不僅清楚的規定了怎樣使用某種加密算法,也規定了怎樣使用所有的CBC模式
加密算法。
目錄
1. 導言 2
1.1 規范要求 3
1.2知識產權聲明 3
2. 加密算法 3
2.1 模式 3
2.2 密鑰長度 3
2.3 不健壯的密鑰 4
2.4 塊的大小和填充 5
2.5 Rounds 5
2.6 背景 6
2.7 性能 7
3. ESP 載荷 7
3.1 ESP 環境考慮 8
3.2 密鑰源 8
4. 安全考慮 8
5. 參考資料 8
6. 感謝 10
7. 編者的地址 10
8. 版權聲明 11
1. 導言
封裝安全載荷(ESP)[Kent98]為IP數據包提供機密性,來保護加密的載荷數據。本規范
描述了在ESP中使用CBC模式的加密算法。
而本文檔沒有描述使用缺省加密算法DES,讀者應該熟悉相關文檔。[Madson98]
假定讀者熟悉在“因特耐特協議安全體系結構”[Atkinson95],“IP安全文檔索引”
[Thayer97]和“IP封裝安全載荷(ESP)”[Kent98]文檔中描述的相關術語和定義。
而且本文檔和[Kent98]是相關的,必須聯系它的上下文來閱讀。
1.1 規范要求
在本文檔中出現的關鍵詞“MUST”,“MUST NOT”,“REQUIRED”,“SHOULD”,“SHOULD NOT”,
和“MAY”在[Bradner97]的描述中做了解釋。
1.2知識產權聲明
關于知識產權的有效性和范圍,使用本文檔描述的技術的權利,或是其他可使用與否的權
利的許可等
,IETF不堅持自己的立場。它也沒有對確定這些權利所做的努力有任何異議。關于ITIF在
跟蹤標準和相
關標準文檔中考慮這些權利的信息可以在BCP-11中找到。有關的出版和授權有效等,用戶可
以從IETF秘書
處獲得。
2. 加密算法
所有的對稱塊加密算法都共享公用的特點和變量。包括模式,密鑰大小,不健壯的密鑰,
塊的大小和Rounds,所有的這些都在下邊做了解釋。
本文檔舉例說明了某種加密算法,象Blowfish [Schneier93], CAST-128 [Adams97], 3DES,
IDEA[Lai] [MOV],和 RC5 [Baldwin96]和其他任何可以和ESP一起使用的塊加密算法,只要
他們使用的所有變量都包括在本文檔清晰定義的范圍內。
2.1 模式
所有在本文檔中描述或涉及的對稱塊加密算法都使用加密塊鏈接(BCB)模式。這種模式
的算法需要一個和塊的長度一樣大小的初始化向量(IV)。使用一個隨機產生的IV,防止完
全一致的和加密算法塊尺寸一樣長度的第一個明文數據塊產生完全一致的密文。
在數據加密之前,IV和第一個明文塊進行XOR運算。然后對于連續的塊,在當前的明文
塊加密之前,先和前一個密文塊進行一次XOR運算。
更多的關于CBC模式的信息可以在[Schneier95]中找到。
2.2 密鑰長度
一些加密算法允許使用可變長度的密鑰,而另一些只允許特定長度的密鑰。密鑰的長度是
和算法的健壯性想關聯的,因此較長的密鑰總是比較短的密鑰難于被攻擊。
本文檔規定所有的密鑰長度必須是8位的整數倍。
本文檔沒有為每個加密算法指定缺省的密鑰長度。密鑰的長度由算法的顧問專家和考慮算
法性能的健壯性來決定。
+==============+==================+=================+==========+
| Algorithm | Key Sizes (bits) | Popular Sizes | Default |
+==============+==================+=================+==========+
| CAST-128 [1] | 40 to 128 | 40, 64, 80, 128 | 128 |
+--------------+------------------+-----------------+----------+
| RC5 | 40 to 2040 | 40, 128, 160 | 128 |
+--------------+------------------+-----------------+----------+
| IDEA | 128 | 128 | 128 |
+--------------+------------------+-----------------+----------+
| Blowfish | 40 to 448 | 128 | 128 |
+--------------+------------------+-----------------+----------+
| 3DES [2] | 192 | 192 | 192 |
+--------------+------------------+-----------------+----------+
注:[1]對于CAST-128,因為CAST-128的密鑰計劃假設一個輸入密鑰是128位的,所以
密鑰少于128位時,必須在最右邊填充0或是多于128位時,取重要的128位。如果你有一
個80位長的密鑰“3B5D831CFE”,就應該進行填充處理使其成為一個128位的密鑰
“3B5D831CFE000000”。
[2]第一個3DES密鑰來自第一個64位,第二個密鑰來自下一個64位,第三個密鑰來
自最后64位。在開始接受一套新的密鑰的時候,實現必須考慮奇偶校驗位。三個密鑰中的每
一個是實際長度是56位,包括額外的8位用做奇偶校驗。
讀者應該注意到所有上面提到的加密算法的最小密鑰長度是40位長,編者強烈的建
議實現時不要使用短于40位的密鑰。
2.3 不健壯的密鑰
應該對不健壯的密鑰進行檢查。如果這樣的密鑰被發現,這個密鑰應該被拒絕,并發出新
的SA請求。一些算法有一定不能被使用的不健壯的密鑰或是本質上是不健壯的密鑰。
新的不健壯密鑰可能被發現,所以對于這些算法,本文檔不可能包括所有可能的不健壯密
鑰。請查看其他的密碼源資料,比如[MOV]和[Schneier],來獲知更多的不健壯密鑰。
CAST-128:
沒有已知的不健壯密鑰。
RC5:
當使用16rounds時,沒有已知的不健壯密鑰。
IDEA:
IDEA已經被發現存在不健壯密鑰,請查看[MOV]和[Schneier]來獲得更多的相關信息。
Blowfish:
對于Blowfish算法也發現了不健壯密鑰。不健壯密鑰就是那些對于特定的S-box產生完
全一致的輸入的密鑰。
不幸的是,在S-box值產生之前,,沒有辦法對不健壯密鑰進行測試。無論如何,隨機產
生這樣一個密鑰的機會是很小的。
3DES:
DES有64個已知的不健壯密鑰,包括所謂的semi-weak密鑰和possibly-weak密鑰
[Schneier95, pp 280-282]。
而隨機的產生一個這樣的密鑰的可能性是可以忽略的。
對于DES-EDE3,沒有已知的需要拒絕的不健壯或補充的密鑰。由于使用了多個密鑰,任
何的不健壯性都被排除了。
無論如何,如果前兩個或是后兩個獨立的64位密鑰是相同的(k1 == k2或k2 == k3),
那么3DES就和DES完全一樣了。實現者必須拒絕使用有這種屬性的密鑰。
2.4 塊的大小和填充
所有在本文檔中描述的算法都使用8個8位組(64位)的塊。
在排列載荷類型和填充長度8位組(在[Kent98]中有定義)時要使用填充。填充部分必須
完全的排列數據
使它滿足8個8位組(64位)的加密邊界要求。
2.5 Rounds
這個變量決定了一個塊被加密多少次。然而這個變量也可以協商決定,當不使用協商解決
的時候,缺省的值必須總是存在。
+====================+============+======================+
| Algorithm | Negotiable | Default Rounds |
+====================+============+======================+
| CAST-128 | No | key<=80 bits, 12 |
| | | key>80 bits, 16 |
+--------------------+------------+----------------------+
| RC5 | No | 16 |
+--------------------+------------+----------------------+
| IDEA | No | 8 |
+--------------------+------------+----------------------+
| Blowfish | No | 16 |
+--------------------+------------+----------------------+
| 3DES | No | 48 (16x3) |
+--------------------+------------+----------------------+
2.6 背景
CAST-128:
CAST設計程序最初是由Carlisle Adams和Stafford Tavares在Queen大學(位于加拿
大的安大略省的Kingston)提出的,后來的改進工作由Carlisle Adams和Michael Wiener
用了幾年時間完成。CAST-128是在[Adams97]中應用CAST設計程序作為大綱的結果。
RC5:
RC5加密算法是由Ron Rivest為RSA數據安全公司開發的。為了滿足更高的加密軟硬件
性能要求,還是選擇DES。RC5是有專利的(pat.no. 5,724,428)。關于RC5的描述可以在[MOV]
和[Schneier]中找到。
IDEA:
Xuejia Lai和James Massey提出了IDEA算法(International DataEncryption
Algorithm)。算法在[Lai], [Schneier]和[MOV]有詳細的描述。
IDEA算法在歐洲和美國是有專利的而在日本的專利申請還沒有批準。商業應用需要向
IDEA購買許可。
關于專利和許可信息,請參考:
Ascom Systec AG, Dept. CMVV
Gewerbepark, CH-5506
Magenwil, Switzerland
Phone: +41 64 56 59 83
Fax: +41 64 56 59 90
idea@ascom.ch
http://www.ascom.ch/Web/systec/policy/normal/exhibit1.html
Blowfish:
Bruce Schneier提出了Blowfish塊加密算法。在[Schneier93], [Schneier95]和
[Schneier]中有關于算法的詳細描述。
3DES:
這個DES的變形,通俗的說就是“Triple DES”或是“DES-EDE3”,處理每個塊三次,每
次都使用不同的密鑰。這種使用多余一個DES過程的技術在[Tuchman79]被中提議的。
P1 P2 Pi
| | |
IV->->(X) +>->->->(X) +>->->->(X)
v ^ v ^ v
+-----+ ^ +-----+ ^ +-----+
k1->| E | ^ k1->| E | ^ k1->| E |
+-----+ ^ +-----+ ^ +-----+
| ^ | ^ |
v ^ v ^ v
+-----+ ^ +-----+ ^ +-----+
k2->| D | ^ k2->| D | ^ k2->| D |
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -