數(shù)據(jù)加密作為一項(xiàng)基本技術(shù)是所有通信安全的基石。數(shù)據(jù)加密過(guò)程是由形形色色的加密算法來(lái)具體實(shí)施,它以很小的代價(jià)提供很大的安全保護(hù)。在多數(shù)情況下,數(shù)據(jù)加密是保證信息機(jī)密性的唯一方法。據(jù)不完全統(tǒng)計(jì),到目前為止,已經(jīng)公開(kāi)發(fā)表的各種加密算法多達(dá)數(shù)百種。如果按照收發(fā)雙方密鑰是否相同來(lái)分類,可以將這些加密算法分為常規(guī)密碼算法和公鑰密碼算法。
在常規(guī)密碼中,收信方和發(fā)信方使用相同的密鑰,即加密密鑰和解密密鑰是相同或等價(jià)的。比較著名的常規(guī)密碼算法有:美國(guó)的DES及其各種變形,比如Triple DES、GDES、New DES和DES的前身Lucifer; 歐洲的IDEA;日本的FEAL?N、LOKI?91、Skipjack、RC4、RC5以及以代換密碼和轉(zhuǎn)輪密碼為代表的古典密碼等。在眾多的常規(guī)密碼中影響最大的是DES密碼。
常規(guī)密碼的優(yōu)點(diǎn)是有很強(qiáng)的保密強(qiáng)度,且經(jīng)受住時(shí)間的檢驗(yàn)和攻擊,但其密鑰必須通過(guò)安全的途徑傳送。因此,其密鑰管理成為系統(tǒng)安全的重要因素。
在公鑰密碼中,收信方和發(fā)信方使用的密鑰互不相同,而且?guī)缀醪豢赡軓募用苊荑€推導(dǎo)解密密鑰。比較著名的公鑰密碼算法有:RSA、背包密碼、McEliece密碼、Diffe?Hellman、Rabin、Ong?Fiat?Shamir、零知識(shí)證明的算法、橢圓曲線、EIGamal算法等等。最有影響的公鑰密碼算法是RSA,它能抵抗到目前為止已知的所有密碼攻擊。
公鑰密碼的優(yōu)點(diǎn)是可以適應(yīng)網(wǎng)絡(luò)的開(kāi)放性要求,且密鑰管理問(wèn)題也較為簡(jiǎn)單,尤其可方便的實(shí)現(xiàn)數(shù)字簽名和驗(yàn)證。但其算法復(fù)雜,加密數(shù)據(jù)的速率較低。盡管如此,隨著現(xiàn)代電子技術(shù)和密碼技術(shù)的發(fā)展,公鑰密碼算法將是一種很有前途的網(wǎng)絡(luò)安全加密體制。
當(dāng)然在實(shí)際應(yīng)用中人們通常將常規(guī)密碼和公鑰密碼結(jié)合在一起使用,比如:利用DES或者IDEA來(lái)加密信息,而采用RSA來(lái)傳遞會(huì)話密鑰。如果按照每次加密所處理的比特來(lái)分類,可以將加密算法分為序列密碼和分組密碼。前者每次只加密一個(gè)比特而后者則先將信息序列分組,每次處理一個(gè)組。
密碼技術(shù)是網(wǎng)絡(luò)安全最有效的技術(shù)之一。一個(gè)加密網(wǎng)絡(luò),不但可以防止非授權(quán)用戶的搭線竊聽(tīng)和入網(wǎng),而且也是對(duì)付惡意軟件的有效方法之一。
一般的數(shù)據(jù)加密可以在通信的三個(gè)層次來(lái)實(shí)現(xiàn): 鏈路加密、節(jié)點(diǎn)加密和端到端加密。
鏈路加密
對(duì)于在兩個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)間的某一次通信鏈路, 鏈路加密能為網(wǎng)上傳輸?shù)臄?shù)據(jù)提供安全保證。對(duì)于鏈路加密(又稱在線加密), 所有消息在被傳輸之前進(jìn)行加密, 在每一個(gè)節(jié)點(diǎn)對(duì)接收到的消息進(jìn)行解密, 然后先使用下一個(gè)鏈路的密鑰對(duì)消息進(jìn)行加密, 再進(jìn)行傳輸。在到達(dá)目的地之前, 一條消息可能要經(jīng)過(guò)許多通信鏈路的傳輸。
由于在每一個(gè)中間傳輸節(jié)點(diǎn)消息均被解密后重新進(jìn)行加密, 因此, 包括路由信息在內(nèi)的鏈路上的所有數(shù)據(jù)均以密文形式出現(xiàn)。這樣, 鏈路加密就掩蓋了被傳輸消息的源點(diǎn)與終點(diǎn)。由于填充技術(shù)的使用以及填充字符在不需要傳輸數(shù)據(jù)的情況下就可以進(jìn)行加密,這使得消息的頻率和長(zhǎng)度特性得以掩蓋, 從而可以防止對(duì)通信業(yè)務(wù)進(jìn)行分析。
盡管鏈路加密在計(jì)算機(jī)網(wǎng)絡(luò)環(huán)境中使用得相當(dāng)普遍, 但它并非沒(méi)有問(wèn)題。鏈路加密通常用在點(diǎn)對(duì)點(diǎn)的同步或異步線路上, 它要求先對(duì)在鏈路兩端的加密設(shè)備進(jìn)行同步, 然后使用一種鏈模式對(duì)鏈路上傳輸?shù)臄?shù)據(jù)進(jìn)行加密。這就給網(wǎng)絡(luò)的性能和可管理性帶來(lái)了副作用。
在線路/信號(hào)經(jīng)常不通的海外或衛(wèi)星網(wǎng)絡(luò)中,鏈路上的加密設(shè)備需要頻繁地進(jìn)行同步, 帶來(lái)的后果是數(shù)據(jù)丟失或重傳。另一方面, 即使僅一小部分?jǐn)?shù)據(jù)需要進(jìn)行加密, 也會(huì)使得所有傳輸數(shù)據(jù)被加密。
在一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn), 鏈路加密僅在通信鏈路上提供安全性, 消息以明文形式存在, 因此所有節(jié)點(diǎn)在物理上必須是安全的, 否則就會(huì)泄漏明文內(nèi)容。然而保證每一個(gè)節(jié)點(diǎn)的安全性需要較高的費(fèi)用, 為每一個(gè)節(jié)點(diǎn)提供加密硬件設(shè)備和一個(gè)安全的物理環(huán)境所需要的費(fèi)用由以下幾部分組成: 保護(hù)節(jié)點(diǎn)物理安全的雇員開(kāi)銷, 為確保安全策略和程序的正確執(zhí)行而進(jìn)行審計(jì)時(shí)的費(fèi)用, 以及為防止安全性被破壞時(shí)帶來(lái)?yè)p失而參加保險(xiǎn)的費(fèi)用。
在傳統(tǒng)的加密算法中, 用于解密消息的密鑰與用于加密的密鑰是相同的,該密鑰必須被秘密保存, 并按一定規(guī)則進(jìn)行變化。這樣, 密鑰分配在鏈路加密系統(tǒng)中就成了一個(gè)問(wèn)題, 因?yàn)槊恳粋€(gè)節(jié)點(diǎn)必須存儲(chǔ)與其相連接的所有鏈路的加密密鑰, 這就需要對(duì)密鑰進(jìn)行物理傳送或者建立專用網(wǎng)絡(luò)設(shè)施。而網(wǎng)絡(luò)節(jié)點(diǎn)地理分布的廣闊性使得這一過(guò)程變得復(fù)雜, 同時(shí)增加了密鑰連續(xù)分配時(shí)的費(fèi)用。
節(jié)點(diǎn)加密
盡管節(jié)點(diǎn)加密能給網(wǎng)絡(luò)數(shù)據(jù)提供較高的安全性, 但它在操作方式上與鏈路加密是類似的: 兩者均在通信鏈路上為傳輸?shù)南⑻峁┌踩? 都在中間節(jié)點(diǎn)先對(duì)消息進(jìn)行解密,然后進(jìn)行加密。因?yàn)橐獙?duì)所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密, 所以加密過(guò)程對(duì)用戶是透明的。
然而,與鏈路加密不同, 節(jié)點(diǎn)加密不允許消息在網(wǎng)絡(luò)節(jié)點(diǎn)以明文形式存在,它先把收到的消息進(jìn)行解密, 然后采用另一個(gè)不同的密鑰進(jìn)行加密, 這一過(guò)程是在節(jié)點(diǎn)上的一個(gè)安全模塊中進(jìn)行。
節(jié)點(diǎn)加密要求報(bào)頭和路由信息以明文形式傳輸, 以便中間節(jié)點(diǎn)能得到如何處理消息的信息。因此這種方法對(duì)于防止攻擊者分析通信業(yè)務(wù)是脆弱的。
端到端加密
端到端加密允許數(shù)據(jù)在從源點(diǎn)到終點(diǎn)的傳輸過(guò)程中始終以密文形式存在。采用端到端加密(又稱脫線加密或包加密), 消息在被傳輸時(shí)到達(dá)終點(diǎn)之前不進(jìn)行解密, 因?yàn)橄⒃谡麄€(gè)傳輸過(guò)程中均受到保護(hù), 所以即使有節(jié)點(diǎn)被損壞也不會(huì)使消息泄露。
端到端加密系統(tǒng)的價(jià)格便宜些, 并且與鏈路加密和節(jié)點(diǎn)加密相比更可靠,更容易設(shè)計(jì)、實(shí)現(xiàn)和維護(hù)。端到端加密還避免了其它加密系統(tǒng)所固有的同步問(wèn)題, 因?yàn)槊總€(gè)報(bào)文包均是獨(dú)立被加密的, 所以一個(gè)報(bào)文包所發(fā)生的傳輸錯(cuò)誤不會(huì)影響后續(xù)的報(bào)文包。此外,從用戶對(duì)安全需求的直覺(jué)上講, 端到端加密更自然些。單個(gè)用戶可能會(huì)選用這種加密方法, 以便不影響網(wǎng)絡(luò)上的其他用戶, 此方法只需要源和目的節(jié)點(diǎn)是保密的即可。
端到端加密系統(tǒng)通常不允許對(duì)消息的目的地址進(jìn)行加密, 這是因?yàn)槊恳粋€(gè)消息所經(jīng)過(guò)的節(jié)點(diǎn)都要用此地址來(lái)確定如何傳輸消息。由于這種加密方法不能掩蓋被傳輸消息的源點(diǎn)與終點(diǎn), 因此它對(duì)于防止攻擊者分析通信業(yè)務(wù)是脆弱的。