HTTPS的"S"不代表SSL
This is a localised version of the original article here.
當瀏覽器出現一個掛鎖圖像時,我們很自然的會假設該網站正使用SSL以確保我們的通訊安全。它同時也告知消費者該網站是安全的。根據CA Security Council的2015消費者信任調查,只有3%消費者會將他們的信用卡資訊提供給沒有掛鎖圖像的網站。
此種安全印象的影響性並不局限於消費者。F5最新的應用交付現狀調查報告顯示,已經或有計畫建置"SSL Everywhere"的受訪者表示,對於他們企業承受應用層攻擊的能力比較有信心,在1到5的信心評分中獲得3或更高的評價。
事實是,大多數人無法告訴你SSL代表什麼意義,更別說是描述它的運作方式。他們只知道那是一種確保應用或網站交易,包含潛在的機密資訊的安全機制。
那有一部分是科技專有名詞描述的錯。我們用SSL來描述協定(RFC 6101),以及作為描述一個安全連接的通稱。SSL是安全性的通稱,就好像Google是搜索引擎或者舒潔是衛生紙的代名詞一樣。
實際上,HTTPS並不是真的需要SSL。HTTPS的"S"代表安全(secure),而且它只簡單的要求提供確保二個端點,例如一個瀏覽器和一個Web網站之間安全連接的方法。而且,越來越明顯的是,其所代表的意義事實上是指在TLS協定(而非SSL)之上的HTTP。
這是一個很重要的區別,因為儘管它們有著相同的根源,但TLS並不是SSL,SSL也不是TLS。它們是不同的協定,各有它們本身獨特的挑戰、問題和衝擊效應。二者都是以相同的方式確保安全連接 - 它們使用安全憑證以進行認證,以及使用公鑰/私鑰加密 - 然而雙方仍存在著建置上的差異性。
我們為何要關注這件事?你應該在意,因為最新的Web應用協定HTTP/2和SPDY並不支援SSL。它們支援的是TLS。它們本身並沒有這樣的要求,不過支援這二項協定的瀏覽器只能在TLS(而非SSL )之上提供該項支援。
必須承認的是,今天使用HTTP/2或SPDY的網站並不多,但數量正在成長。在W3CTech (July 2015)報導中指出,新的HTTP/2標準已於2015年5月發行最終版,現在獲得所有網站的0.4% (高於7月初的0.24%)以及頂尖1000網站的7.5% 採用。也就是說頂尖的1000網站中,現在有7.5% 藉由HTTP/2提供內容服務。
我們談論的並不是只局限於瀏覽器和伺服器。我們同時也必須思考在整合上所代表的意義,當使用頂尖1000網站的一些API時,或許會被迫非僅採用HTTP/2或SPDY,而且也包括TLS 。Google所有公共服務的加密都是使用TLS。如果你要整合Google的一些功能,就應注意他們使用的是TLS而非SSL。因為這有著實質上的差異。
另外還必須注意的是它涉及到商業上一些盤根錯節的問題。在支付卡產業(PCI)標準規範下,SSL在2016年6月30日之後不得繼續使用。那個時間點之後,將明確要求採用TLS。這意謂著必須做一些改變以維持遵循PCI。當然,你會做相應的配合,因為如果不遵循標準的話將面對很多複雜的挑戰。例如,信用卡發行者會要求較高的商家帳戶費用和罰鍰,或者完全取消你的支付與交易處理資格。如果發生權利侵害事件,你的公司將因為未能在安全性上做到正當注意調查(due diligence)而面對較高的法律訴訟與罰責風險。
當然,如果說期望你此刻就要從SSL轉移到TLS,也是不實際的。畢竟,雖然TLS是以SSL v3為基礎,但它並非100% 向下相容,而且需要做一些組態變更才能取消SSL以迫使使用TLS。組態變更通常需要進行一次重新啟動。對一個大規模環境而言,這個程序必然會造成服務中斷而且耗費時間。
不過,現在正是開始認真考慮的時刻,你必須決定還要支援SSL多久以及何時要轉移到純正的TLS。