分類:Security

為甚麼網路銀行不安全, 或, 為甚麼十幾年了還不安全

目前網路銀行不安全的問題, 尤其是釣魚詐騙網站, 在於銀行的系統設計, 銀行認證客戶身分, 客戶沒有認證銀行身分. 即使可以讓客戶很方便的用密碼認證銀行身份

一開始 web 只有 HTTP 協定, 明碼協定很容易被竊聽程式聽走, 所以 Netscape 就說好吧, 我們設計了 SSL 協定(現在叫TLS), 把 HTTP 包在裡面, SSL 提供一個加密的通道, 這樣裡面的東西都不用改. 所以客戶還是一樣用密碼認證, 銀行端一樣有客戶密碼的明碼 [1]

客戶怎麼認證銀行身分呢, SSL 的設計依賴公開金鑰基礎建設(PKI), 有個可信任第三方(CA)發一張憑證給銀行, 客戶的瀏覽器檢查憑證合不合法, 有沒有過期. 譬如說常見的 CA 商是 Verisign, 中國信託, 國泰世華, 台新都是用 Verisign 發出來的憑證.

看出來問題了嗎?

  1. 銀行的執照是政府發的, 我等升斗小民聽都沒聽過 Verisign, 誰知道能不能信任. 
  2. Verisign 真的難以信任, 有人就曾經成功的假冒成 Microsoft 讓 Verisign 發出憑證.
  3. 最嚴重的是, 客戶根本不知道 PKI, CA, Certificate 是甚麼鬼, 看到瀏覽器的憑證警告, 自動跳過. 所以 客戶認證銀行 這個部份, 完全失效了

接下來就是釣魚詐騙網站上場了, 不論是 Phishing 還是 Pharming 攻擊, 都是連到看起來一個像是真的假銀行網站, 客戶的密碼被加密傳給詐騙集團, 詐騙集團在解密, 很愉快的看到明碼的密碼.

PKI/CA 是一個很大的產業, 制定 PKI 標準的組織, 一直在宣傳 PKI 才安全, 用密碼認證的系統不安全. 當憑證變的很容易, 很便宜, 只要一個 email address 就可以取得的時後, 他們就推出了加強版憑證(EV Certificate), 宣稱執行更嚴格的查驗手續, 收更貴的費用. 實驗證明, 首先大量使用 EV Certificate 的, 就是詐騙集團 😛

用密碼認證的系統真的那麼不可取嗎? 不要再相信沒有根據的說法了. SSL 3.0 在 1996 年發布, 而從 1992 開始, 一系列的 PAKE(Password authenticated key exchange) 協定也開始發展. PAKE 優點在於:

  1. server 端不需要持有密碼.
  2. client 端不需要把密碼傳給 server.
  3. 對需要移動性的使用者來講, 用密碼比用 public/private key 方便
  4. 密碼可以用來認證 server, 不像 SSH/SSL 有 Man-in-middle-attack (如果使用者忽略 server key change/certificate invalid 的警告). [2]

不知道為甚麼, 銀行業沒有施壓 Microsoft 支援 PAKE Protocol, 也許是銀行 IT 人員不懂, 也許是銀行不在乎客戶被詐騙 XD

另一方面. 根據2007年12月的討論, Mozilla 底層 NSS security library 的成員說, 如果 Firefox 沒有 SRP 的 UI, 他不太想加 SRP 進去, 這下變成蛋生雞雞生蛋的問題了 orz

所以說, 簡單易用的安全設計真是一條漫長的路啊…

[1] 技術上來說, 有些不是 plaintext, 不過也是 plaintext-equivalence, 或是 weak autehntication

[2] 關於 Man-in-middle-attack 的部份為甚麼這麼威, 要請讀者去看論文, 都是數學我實在是看不懂也不能解釋 XD

Technorati 的標籤:,,,,