https://newera17031.activehosted.com/index.php?action=social&chash=ba1b3eba322eab5d895aa3023fe78b9c.2767&nosocial=1
https://newera17031.activehosted.com/index.php?action=social&chash=ba1b3eba322eab5d895aa3023fe78b9c.2767&nosocial=1

觀點

確保傳輸安全

2006 / 05 / 29
ERIC COLE
確保傳輸安全

為何採用TLS
針對網路連線,SSL和TLS二者都是採密碼學加密方式,達成身分證明和保護穩私權的目的。事實上,TLS是設計用來取代SSL,且其版本定位為SSL3.1版。它們之間只存在一小部份差異性,幾乎是微不足道,你腦袋瓜子一定會浮現出一個疑問,「那為何還要創造一個新協定出來?」
答案就出在SSL身上,它是由網景Netscape公司在十幾年前所建立的,是一個封閉性且只屬於網景的協定。一般社群並不能將其隨意修改,也無法檢驗它的安全。於是乎,技術規範組織(IETF,Internet Engineering Task Force)便造出了TLS協定,也因為TLS是公開的,所以任何人都可以自由的使用並且為它加以註解,此舉可防止單一公司控制並獨佔某一標準!
事實上,不管你使用何者,它們之間的差異性相當地小,而SSL的使用許可不論你用那一種伺服器套件,它老早就被一股兒腦塞在裡面,但多數的企業目前正選擇整合至TLS,因為它的支援度較好。
不管如何,即便是十分相像,SSL和TLS之間的資料是無法相互交換和使用的。這也意謂著,要是你的伺服器是調整成使用TLS時,它並不能接受只採用SSL協定的用戶端。不過,較新版的瀏覽器以及其他一些Web應用程式都是SSL和TLS兩者兼具,所以這點通常算不上什麼大問題,但是我們還是要稍微知道一下。

SSL/TLS如何運作
SSL及TLS在TCP/IP頂層的運作模式雷同:在傳送端和接收端的電腦之間會產生一把對稱金鑰,接著,私密資料以此金鑰加密,然後再將加密過的資料進行傳送。這在TCP/IP頂層是非常容易辦到的,但我們還是得了解一下重要細節。(請參見「SSL的運作過程」圖示)
首先,加密過程是由應用程式來執行,而非作業系統。應用程式開發者並不需要實作出一個協定,只要指定在建立連線時的安全通道(secure socket)即可。而通道(socket)不過就是一個特別型態的檔案描述而已,但不是陳述要開啟的檔案名稱為何,而是指定目的端電腦的IP位置和埠號。作業系統所關心的只是將資料作成封包,並送進適當的位置,而所有底層較低階的工作(假設是以TCP的狀況來講),像是計算檢查碼(checksums)以及追蹤和排列封包序號(sequence number)的順序,都是統籌由作業系統一手包辦。
SSL及TLS協定在運作過程會歷經三個步驟:
1. 在用戶及伺服器之間協調,是要採用TLS方式還是要指定SSL版本(2.0或3.0)。這階段就會決定編碼加密的方式,以作為之後協定在交換上的使用。其實,目前是有不少公開且是對稱金鑰加密演算法可供利用的。
2. 在雙方溝通完編碼加密的方法後,伺服器端要接受驗證,然後用戶才會產生出一把對稱金鑰,以作為之後傳輸資料的使用。至目前為止,整個過程都是在公開金鑰和X.509數位憑證之下所完成的,而數位憑證是憑證管理中心(CA, Certificate Authority)所核發出來的,通常交由公正的第三方來判別伺服端的真確性。
進行這種單向的驗證是有其必要性的,因為用戶端要知道他正在與合法的伺服器溝通,而非偽裝者-就像一個造假的金融網站,會利用網路釣魚的方式不當獲利。用戶接下來要提供帳號及密碼,或是再進行一連串的驗證。所以,在此種封閉式的環境裡,會有一群已知的用戶保持連線也就是說,裡頭就只存在合法的公司(或中間商)與交易用戶這些雙向驗證方式可是能提高線上交易的安全性。
3. 對稱金鑰是以公開金鑰加密過後再傳給伺服器端的,而公開金鑰裡頭包含由CA所驗證通過的數位憑證;所以在建立以及交換對稱金鑰之後,一切的通訊將使用對稱金鑰的演算法進行,而非以前所使用的公開金鑰。原因很簡單,因為對稱金鑰演算法較有效率,較容易計算出所得數值。到現在,所有client-server的交易活動均會以此對稱金鑰進行加密,直到連結中斷或金鑰過期為止,故這種方法即是在用戶端和伺服器之間,建立起一個安全連結的通道。


安全議題
SSL2.0是最先公開釋出的版本,已被發現有安全上的漏洞,所以採用SSL3.0或者是TLS是較明確的選擇。目前市面上的瀏覽器,包括Internet Explorer、Firefox和Netscape都允許用戶端使用SSL2.0、3.0,還有TLS。而目前暫為beta版的IE7.0,甚至還會更進一步要求用戶使用SSL3.0,或是TLS。
不過,最主要的議題應該是在於挑選一個好的編碼加密方式。雖然有部份公開及對稱金鑰加密演算法可供在SSL/TLS傳輸之中使用,但是TripleDES,甚至於更好的AES演算法,才是最安全、最備受推崇的。若以DES為加密演算法,而MD5為雜湊函數,就目前所知,已經不再安全了!
DES的弱點是易遭到暴力攻擊法(brute force attack),因為其鑰匙長度僅止於56-bit,所以可以在短時間內,以運算能力較強的電腦破解。針對設備精良的攻擊者,或者是可以運用叢集電腦的人來說,這顯然不夠安全!於是TripleDES孕育而生:它是利用二把不同的鑰匙,連續使用DES編碼三次而成的。
另外,還有AES(Advanced Encryption Standard)也加入戰局,它是一種新的塊狀密碼演算法標準,是用來取代DES的。它使用一個128-bit長度的區塊,並可選擇128-bit、192-bit及256-bit的鑰匙長度,這使得它成為更加安全的選擇。相對於DES/TripleDES這種固定長度的演算法而言,它是可變長度的,也就是AES的鑰匙長度能被加長,以對抗在電腦日益增快的運算速度之下,所受到的暴力攻擊!一般來講, AES大多被運用於TLS之中。可是,最近連MD5及SHA1也頻頻遭殃,最嚴重的莫過於對MD5的攻擊了。因為二者都是以舊有MD4為基礎所衍生出來,而連日來的攻擊顯示出它們都已經不再有用!SHA1起步較晚,也避掉一些MD5的缺陷,儘管被拿出來討論,但它目前仍受到廣泛使用。而國家標準和技術組織(NIST, National Institute for Stands and Technology )更希望能辦場競賽,就如同產生AES的過程一樣,以創造出一個更新、更強的雜湊函數。作為一個公開金鑰的密碼機制而言,較老牌的RSA依然獲得首選。所以,唯一可以確保安全的方式,就是挑一個夠長的RSA鑰匙,如此一來,便能預防任何的暴力破解攻擊。RSA已經被視為最嚴密的公開金鑰加密演算法,並且仍舊屹立不搖!就光靠這點看來,要找出其缺陷的機會,真的是微乎其微。
若使用方式正確,再加上採取良好的加密演算法,SSL/TLS可說是相當安全的協定。要是用戶端有檢查數位憑證,那麼,就算遭到攔截攻擊(man-in-the-middle attack)冒充合法伺服器端,這種行為也終將會被察覺而受到抵制。然而,一個粗心大意的用戶如果沒有檢查有嫌疑的憑證,他仍舊可能會被愚弄欺騙。

SSL協定的妙用
除了可以保護與網站伺服器的連結之外,SSL還有許多的應用。比方說,SSL/TLS可以讓應用程式設計者拿來建立至某一伺服主機的連結,這協定可以很輕易的套用在本地端的網路之中,就理論上來講,任何形態的網路連線都可以使用。SSL/TLS常被運用在企業間網路還有私有網路當中,以防止來自於內部的威脅,SSL甚至還可包裹住像SMTP和FTP此類毫無安全性可言的網路協定。
因為SSL/TLS均將所有的資料當成二進位,所以任何形式的資料都可以安全的傳送,諸如HTML、Word docs,還有圖片等格式。
雖然如此,我們依然期待在內部運作上,可以將有些事情放在程式撰寫方面。就在稍早提過的,可以讓一個應用程式使用SSL的通道呼叫(socket call)以後,會有一整套的系統/函式庫呼叫(system/library call)緊跟著建立連結到伺服器端的連結。我想,所有這些工作必須要讓用戶端及伺服器端的應用程式設計師來設計才會比較好。
綜觀以上,SSL能將電子商務化不可能為可能。隨意一個顧客便可連上商務網站,他所要作的,只是小心地傳送這些機密資料,例如信用卡資訊。然後,不需要任何先備知識,就可以建立起一個經加密,且幾經驗證的安全連線,它確保用戶端所連結到的網站是合法的,好讓顧客可以放心的在網站上進行交易。
ERIC COLE, CISSP, GIAC, Sytex Group的首席科學家,也是Hackers Beware 和 Network Security Bible的作者,如您對本文有意見請寄信至iseditor@asmag.com