2016年8月20日 星期六

COSCUP 2016:「深入淺出 Google / Dropbox / GitHub 都採用的 FIDO U2F」






  「深入淺出 Google / Dropbox / GitHub 都採用的 FIDO U2F」是今年 COSCUP 第一場分軌的議程,講師吳忠憲目前為臺灣大學快速密碼學實驗室的成員(剛好也是我的實驗室學長 XD),本次演講主題著重在身份驗證和 FIDO U2F 的相關實作。


  在演講中,講師從一般性的密碼驗證開始討論,介紹包含密碼管理員等數種使用方式和其所帶來的危險性,例如一般線上服務的驗證方式,密碼會多次以明文型態在系統中出現,無論使用者端或伺服器端,都有許多可能將密碼洩漏出去的危機,也難以避開網路釣魚 (Phishing)、鍵盤側錄 (KeyLogger) 及中間人攻擊 (Man-In-The-Middle Attack) 等,而密碼本身的管理和避免被釣魚的責任仍與使用者本身使用習慣緊密關聯,因此傳統的驗證模式不僅安全性不足,甚至可能間接影響使用者、讓使用者習慣於使用類似或相同的密碼,使得原先就已搖搖欲墜的密碼安全更加薄弱。


  二階段驗證 (Second Factor Authentication, 2AF) 即為一種不錯的解決方式,透過輸入密碼外的第二重使用者身份驗證,能夠大大地提升安全性、避免弱密碼造成的安全性下降,其中單次有效密碼 (One Time Password, OTP) 就已行之有年、在一定程度上頗為被廣泛運用,OTP 主要以時間差做為密碼產生器和伺服器同步的方式,每次認證時都產生新的密碼且認證後便將其拋棄,因此可以緩解密碼不安全的問題並有效對抗重送攻擊 (Replay Attack)。然而,OTP 在使用者體驗的表現上仍有待加強,且客戶端、伺服器端的安全性亦有可能的疑慮,於是在 2012 年時由聯想、PayPal 等企業創辦了一個行業協會--FIDO 聯盟 (Fast IDentity Online Alliance) [1],FIDO 聯盟致力於開發更加簡單、安全、開源且跨平台的驗證標準,至今已有通用二因子驗證 (Universal 2nd Factor, U2F) 和通用驗證框架 (Universal Authentication Framework, UAF) 兩套標準文件釋出。

graphic_FIDOExperience_SM
圖片來源:https://fidoalliance.org/

  做為本場演講主角的 U2F 目前已被包含 Google、GitHub、Dropbox 在內的一些網站支援,它使用「Challenge-Response」的方式,在 Relying Party、Client、Authenticator 三方之間互相溝通、進行驗證,裝置在初始註冊時會生成新的金鑰配對,驗證時則接收並解開一個挑戰訊息簽章,再回傳數位簽章及 Auth Counter。U2F 具有以下幾個顯著的特色:
  1. 使用公鑰認證系統,秘密資訊不會洩漏。此外,每次註冊時都會產生一組專屬公私鑰配對,且有唯一的 Key Handle 作為標誌,提升了匿名性的同時也防止包含設備商在內的其他人取得秘密訊息。
  2. 元件間的介面均有規範,因此無需安裝任何額外的 Driver,使用上步驟也十分簡化,使用者體驗比之 OTP 更加良好。
  3. 可對抗網路釣魚、中間人攻擊、重送攻擊等,若有金鑰遭複製或竊取的狀況也可偵測到、做出反應。
  4. 驗證過程中完全不需要任何的可信賴第三方 (Trusted Third Party)。

U2F Process Flow
圖片來源:https://www.yubico.com/about/background/fido/

  綜上所述,我們可以發現 U2F 擁有很多面向上的安全優勢,但其實 U2F 也不是百分之百的完美。除了 COSCUP 外,講師吳忠憲今年亦有在 PyCon Taiwan [2] 和即將到來的 JSDC [3] 發表 FIDO U2F 主題的演講,而議程後我與講師稍微聊了一會,談到他在推廣 U2F 時觀察與遭遇到的狀況,他坦言 U2F 目前仍有其必須突破的困境,「因為現在瀏覽器中只有 Google Chrome 是官方就能使用 U2F 的,其他瀏覽器都得另外裝第三方的外掛,而且 U2F 的使用不像 OTP 那樣下載個 App 就解決了,還得要買一個小小的設備,再加上臺灣購買 YubiKey [4] 有些麻煩,所以一般使用者比較不會有機會使用......」他說,因此即使使用體驗改善了、技術門檻不高,但真的有在使用 U2F、能實際感受到 U2F 便利之處的使用者卻不多,導致並非所有網站都會引進這個正在起步中的 U2F 標準,多數都依然停留在觀望的階段。
   「至於開源與資安之間的關聯、影響,已經講了很久,把程式碼開放出去令更多人能一起用、一起看、一起改,當然就能讓程式變得更好更安全。我本身是因為喜歡這個技術、覺得這很棒,因而才想去推廣 U2F,但我也認為還有很多好東西都是需要被介紹給大家的,有像這樣的舞台可以推廣還不錯。」最後,他也十分謙虛的表示只會給自己今日的表現 40 分,以後會再多加調整和精進,期待未來能帶給大家更棒的演講。


-
參考及延伸
[1] FIDO Alliance https://fidoalliance.org/
[2] PyCon Taiwan 2016 https://tw.pycon.org/2016/
[3] JSDC 2016 http://2016.jsdc.tw/

沒有留言:

張貼留言