搜尋此網誌

2013/05/08

有SSL的連線一定安全嗎?


SSL連線一定安全嗎?開SSL時檢查一下連線吧!
SSL已經給人一種是安全連線的印象,大部份的人都已經知道、並且信任所謂的SSL連線,在上面安心的進行一些交易,很多網站也都標榜有用SSL安全連線,中間過程不會被第三方看到。
但是,在進行某些重要的交易前,還是請先養成習慣:看一下憑證內容。


有加密鎖頭圖案,卻不見得真的安全
例如以下的畫面,分別抓自IE和Chrome:
請注意:這個例子是在特殊的網路環境下執行的結果,www.google.com.tw本身的憑證並沒有任何的問題,如在家中連線時,不會出現如下方這種怪現象,這裡只是拿它當例子。


這二隻瀏覽器,看起來都是安全的,但是換用Firefox卻報錯,指出它用了無效的安全憑證:

再次說明,www.google.com的憑證是正確的,只是因為在寫本文時,執行的網路環境經過特殊設定,故會出現上述的狀況
讓我們來看一下憑證內容:
IE表示:



Chrome告訴我們:



上面有問題的是認證中心的名稱,似乎是怪怪的,通常一般最常看到的是VeriSign、GTE CyberTrust、GeoTrust等,「The Same As About」這名字一看就覺得是唬人的!到IE中去看憑證,結果如下:


發行單位的名字,是不是有點怪怪的?正常的連線,如果在Chrom下看憑證,正常來說應該是像這樣子,有大家較熟悉的憑證單位出現在上面:


這憑證很明顯有問題,那為何Chrome也會不會顯示這憑證有問題呢?推測是因為Chrome使用了Windows OS (或是IE) 的元件/服務?這點我不是很清楚;但是在設定Chrome的網路時,帶出的是IE的設定畫面。而Firefox 因為這部份,是自行撰寫,故如果這個有問題的憑證沒有匯入的話,就會跳出上述的畫面,如果匯入的話,應該也會和IE/Chrome一樣,看似運行正常。

SSL / TLS 的連線原理

TLS其實應該是目前用最多的傳輸層安全協定,它的前身即是SSL,但是普遍上大家已經認知SSL是安全的,故一般的網站都直接寫使用SSL加密傳輸,不會說使用TLS。
我們要連線到SSL網站時,會確認對方是不是真的是該網站,詳細的步驟可參考微軟Technet的文件「SSL/TLS in Detail」(http://technet.microsoft.com/en-us/library/cc785811(v=ws.10).aspx) ,說明圖我照著重畫一張如下:



Handshake階段主要是要確認伺服器是否真的是該伺服器,並建立一組所謂的Session Key,該Key用來做後續的加解密動作;會使用Session key來做加解密,是因為使用對稱式加密的效能,比公鑰/私鑰的非對稱式加密法來得快很多。而一般的公司單位,部份基於資訊安全考量,需要監控所有的流量,而SSL在經過最初的Handshake階段後,後面皆使用Session Key加密來傳輸資料,造成網管人員無法得知傳輸的內容,對營運單位來說,有可能的解決方式為:
發現可疑活動時,抓取用戶端的畫面
發現可疑活動時,看用戶端的連線記錄,看是連線到哪些網站
看一下連線的記錄,查詢內容是什麼,網頁、Skype等內容,一般皆可看見
想辦法解開加密的內容,看傳輸了什麼東西
由於一般公司皆設有Proxy,從Proxy上動手是最合適的。實際上的作法可能如下:
假設原來的連線簡化如下:



我們在中間架一台伺服器,在此隨便取個名字,就稱之為Gateway伺服器,架構如下:


Handshake階段即攔截

該Gateway有點像是掮客,武力介入原本Client和Server間單純的溝通動作,在中間負責把Client的訊息傳給Server,把Server的訊息轉給Client,Client以為是在和Server做Handshake,實際上是和Gateway在做溝通:




掮客當然是要撈一點點好處的,它主要就是要知道:原本加密的內容是什麼東西,故可解釋成如下:



如此一來,所有對外的網頁流量,皆可以監控及記錄;不管是不是SSL加密,後續皆可追蹤記錄,站在營運單位來說,可防止 / 事後追蹤。站在使用者來說,你在SSL連線中,所輸入的任何資料,對營運單位來說,都是完全透明的;對從外部的網際網路來看,依然是加密的狀態;也就是,如果中間有經過Gateway轉介,你輸入的帳號、密碼等安全資訊,網管人員是可人輕易的取得的,不管是網路銀行的身分證、帳號名稱及密碼三道輸入程序,或是一般購物網站、付費網站密碼輸入,在 Gateway 啓用的狀態下,只能以赤身露體來形容。如果你發現憑證,如同一開始說明的那些異常情況,在輸入敏感資料時,請自行斟酌。

沒有留言: