rainren
rainren 我不在線
注冊時間2002-09-25 16:32:25 最後登錄2013-05-30 23:52:50 精華11 帖子1013
用戶頭銜:臨時退役版主
狀態:我不在線
樓主
發表於 2003-11-13 18:52:47
Cryptographic Terminology 101
(密碼術語101)[翻譯]
原文:
作者:Dru Lavigne
翻譯: rainren
本人能力有限, 很多地方自我感覺都翻譯的不對, 請大家指出, 我慢慢修改。
在接下來的幾篇文章中,我將介紹怎樣在網絡中安全的傳送數據。如果你還記得IP數據包系列(查看 抓取TCP包 -- 原文: see Capturing TCP Packets)大部分網絡傳輸都是使用明文傳輸, 有很多packet sniffing工具能將它們解開查看信息。如果數據包中含有usernames, passwords或其它一些敏感數據, 這將非常糟糕。幸運地, 有一些工具可以加密你的網絡傳輸。
在配置之前, 你需要了解加密的條件和它將要使用的算法。這一篇是密碼術語101, 接下來的文章將實證介紹如何在FreeBSD上配置使用。
什麼是加密, 你為什麼要使用它?加密工具使用組合算法, 它由下面三個部分構成:privacy, integrity, authenticity。不同的加密工具使用不同的算法, 但所有這些加密工具都需要這三個部分。每一個都很重要, 讓我們分別看看每一部分:
Privacy
Privacy保證只有接收者才能明白網絡傳輸的內容。即使是數據包被捕獲, 它也不能將信息解開閱讀。密碼系統使用一種加密算法, 或密碼, 在傳輸前它會將明文加密成密文。只有特定的接收都才能使用一個key將密文解密成明文。這個key存在於發送者和接收者之間,用它來加密解密文件。顯然,這只能允許接收者才能有這個key, 否則任何人都可以解密文件了。
有些人沒有key他可能會使用分解或猜測加密文件的key來解開這個密碼。 一個強壯的加密算法應該有一個怎樣解開密碼的難易度。通常, 強壯的條件使用bitsize來表示。例如:解開使用56位的加密算法的時間比使用256位加密算法的時間要少。
這是否就是說我們應該使用盡可能多的位的加密算法呢?並不一定。很有代表性地, 隨著bit size的增加, 加密解密數據需要的時間會越來越長。在現實中, 這個轉化會發費大量CPU的工作時間和增大網絡流量。根據你的硬件和網絡情況選擇適當的加密bit size。近幾年, CPU的工作頻率增加的很快。這就允許我們可以選擇使用較強壯的算法。這樣, 你應該過段時間就變改你的密碼。很多加密系統可以自動的做這項工作。
還有一些別的因素影響到如何選擇加密算法。有些算法使用需要licenses或專利; 有些算法很容易被破解;有些算法比使用同樣bit size的算法快或慢。如:DES和3DES都很慢,而Blowfish盡管使用了很大的bit size, 但它還是很快速。
每個國家的法律不同, 一些國家會強行限制使用。也就是說你可以在國內使用一個很強壯的加密算法加密敏感數據但卻不允許將它發送給國外的接收者。The United States限制使用40位加密算法加密的數據發送到國外, 這就是為何有些算法使用少於40位加密的原因。
如果你不確定你所在的國家對這方面的限制,在加密你的FreeBSD系統前先找找相關的資料。
下面顯示一些算法的使用情況:
Algorithm: DES Bit Size: 56 comment: slow, easily cracked
Algorithm: 3DES Bit Size: 168 comment: slow
Algorithm: Blowfish Bit Size: 32- 448 Patented: no Comment: extremely fast
Algorithm: IDEA Bit Size: 128 Patented: yes
Algorithm: CAST Bit Size: 40-128 Patented: yes
Algorithm: Arcfour Bit Size: 40, 128
Algorithm: AES(Rijndael) Bit Size: 128, 192, 256 Patented: no Comment: fast
Algorithm: Twofish Bit Size: 128, 256 Patended: no Comment: fast
原始數據包在使用encryption模式時有哪些內容會被加密呢。如果加密系統使用的是傳輸模式, 原始數據包的報頭將是明文, 只有一部分數據被加密。這就是說, 網絡嗅探器截獲的數據包雖然不能看到數據包裡的內容但卻可以知道發送者和接收者的IP地址和發送接收使用的端口。
如果使用tunnel模式, 整個數據包包括報頭和內容都將被加密。數據包還需要到目的地的路由, 現在3層新的報頭被創建。新的報頭會包含所有到目的地的IP地址。(This is known as encapsulation, and it is quite possible that the new header contains totally different IP addresses than the original IP header)。我們將在下一篇為FreeBSD系統配置IPSEC時看到為什麼會這樣。
Integrity
Integrity是加密系統的第二部分。這部分保證接收到的數據包在傳輸過程中存在完整沒有丟失。這需要一個不同的算法,如:cryptographic checksums 或 cryptographic hashes。你應該熟悉使用checksums檢查對方發送過來的數據包的順序。雖然frame和header checksums使用的算法很簡單,它們只是簡單的修改bits並且使用的是相同的算法。Cryptographic checksums need to be more tamper-resistant。
同加密算法一樣, Cryptographic checksums有不同的用途。越長的效驗和越難以改變數據和制作同樣的效驗和。當然,有一些checksums我們已知道它的缺陷了。如下面所示:
Cryptographic checksum: MD4
Checksum Length: 128 Known Flaws: yes
Cryptographic checksum: MD5
Checksum Length: 128 Known Flaws: theoretical
Cryptographic checksum: SHA
Checksum Length: 160 Known Flaws: theoretical
Cryptographic checksum: SHA-1 Checksum Length: 160 Known Flaws: not yet
上面是有意排列的。正如它所示:MD4是最不安全的而SHA-1是最安全的。通常應能為你的加密系統選擇盡可能高的checksum級別。
在cryptographic 裡還有另外一種checksum:HMAC或Hash-based Message Authentication Code。簡要說明:checksum algorith (效驗算法)使用checksum效驗值作為算法的key。 Good, 如果不能訪問這個key你將很難改變 checksum(效驗值)。如果有Cryptographic checksum使用HMAC, 它將會在checksum名字前面顯示出來。例如:HMAC-MD4比MD4 安全; HMAC-SHA比SHA安全。如果我們對checksum algorithm(效驗算法)排序,它如下所示:
· MD4
· MD5
· SHA
· SHA-1
· HMAC-MD4
· HMAC-MD5
· HMAC-SHA
· HMAC-SHA-1
Authenticity
現在, 我們保證了數據的加密和它在傳輸過程中沒有被改變。但是如果我們的數據, key被錯誤的傳送給錯誤的接收者將怎麼辦? 這就是我們第三部分所要描述的:authenticity。
在一些加密算法使用前, key可能已創建和改變。在一個session中使用同樣的key加密解密數據,它會知道如何對稱或session key。我們應怎樣安全的改變這個key呢?我們怎麼能確定我們所改變的這個KEY只有接收者在使用而不會是另外的人呢?
這就需要別的算法類型來了解不對稱性或公共密匙算法。這些算法具有不對稱性是因為它們在發送者和接收者之間並不使用同樣的KEY。Instead, 發送者和接收者之間分別創建密匙對來進行工作。接收者從發送者那裡取得一份公共密匙。別的密匙, 如私匙, 必須保持隱密。如果用戶的私匙已過期, 他應該立即撤回以前的key並重新創建新的密匙對。
當密匙對創建時, 它將有一個獨特的string of short nonsense作為fingerprint(指紋)。這個fingerprint(指紋)給你用來檢查公共密匙。在校驗接收者前, 它們首先要傳輸一個公共密匙給你。你需要double-check the fingerprint(指紋)以讓別人知道你已取得了公共密匙。在下一篇文章中我們創建密匙對, 讓你看自己的fingerprint時會有更多的了解。
大多數密匙創建算法是RSA。你平常在數字證書或認證中心應該看到過RSA。數字證書包含了接收者使用的公共密匙和其它一些信息, 還有終止日期。The X.509 or PKCS #9 standard dictates the information found in a digital certificate. You can read the standard for yourself at or 。
數字證書通常作為Certificate Authority存儲在計算機裡。這就是說作為一個接收者你並不需要手動修改公共密匙。Instead,你的系統將會詢問CN何時copy一個接收者使用的公共密匙。這需要一個可以升級證書的系統。CA為許多接收者儲備了數字證書,這些接收者可以是用戶或電腦。
同樣可以使用DSA算法來產生數字證書。但這個算法需要專利並且比RSA慢。Here is a FAQ on the difference between RSA and DSA. (The entire RSA Laboratories' FAQ is very good reading if you would like a more in depth understanding of cryptography.)
數