還在用過時的 OTP 保護帳號?來看看 FIDO U2F 吧!

語言

中文演講/中文投影片

分類

資訊安全

Python 難易度

中階

投影片連結

https://jong.sh/pycontw2016-u2f/

摘要

密碼,是許多人帳戶安全的最後一道防線,但是僅依賴密碼的傳統登入機制既不方便又不安全。對此,常見的一種補救措施是搭配 OTP 的兩步驟驗證,但它也有易用性與安全性方面的缺陷。由於種種困擾,人們組織了 FIDO 聯盟,希望制定一套安全、方便、通用、跨平台的標準,徹底解決線上身份認證實務上各種縱錯複雜的問題。近年來 FIDO 聯盟的主要成果包含陸續被採納的 UAF 與 U2F 以及關於 FIDO 2.0 的一組 W3C Member Submission 文件。在這場演講裡,我將會分析常見的幾種身份認證機制之優劣,並著重於介紹 U2F 這套 Google/Dropbox/GitHub 等網站都已經採用的標準。日前我以 Python 實作了一套沒有任何外部 dependency 的網站端 U2F 函式庫,所以我也會分享該函式庫的實作經驗與使用範例。如果您是一位網站開發者或技術愛好者,想要嘗試、採納 U2F 的話,本演講將提供給您足夠的基本知識與工具。

說明

本場演講主要會有以下幾點內容: - 剖析常見的身份認證機制 - 簡介 U2F 運作原理 - 分享我實作的一套輕量的網站端 U2F 函式庫 - 示範如何將 U2F 引入自己的網站 由[許多公司][members]組成的 FIDO 聯盟(包含軟體、硬體、銀行金流等各種不同領域的)現階段主要的成果有 U2F 與 UAF 兩個標準。這兩套標準提供了不太一樣的[使用者體驗][userexp],其中 U2F 所規範的技術細節和使用情境是比較簡單的,也比較容易被部署到現存的系統。繼 2014 年的 [Google][googleu2f] 之後,在 2015 年中 [Dropbox][dropboxu2f] 與 [GitHub][githubu2f] 也陸續推出了新的兩步驟身份驗證的方法。他們實作的正是 FIDO U2F 這套標準:任何人只要有一支符合 U2F 標準的 security key 設備(例如 Yubico 所推出的[產品][yubikey]),就可以拿它在各個網站既便利又安全地登入。就算有多個網站、多個帳戶,也都只需要一把 security key 即可。 註: FIDO 這個字的讀音,是 idol 的讀法前面加上一個 f 的唇音。(而不是 fiddle 那樣子) [members]: https://fidoalliance.org/membership/members/ [userexp]: https://fidoalliance.org/specifications/overview/ [googleu2f]: https://googleonlinesecurity.blogspot.tw/2014/10/strengthening-2-step-verification-with.html [dropboxu2f]: https://blogs.dropbox.com/dropbox/2015/08/u2f-security-keys/ [githubu2f]: https://github.com/blog/2071-github-supports-universal-2nd-factor-authentication [yubikey]: https://www.yubico.com/products/yubikey-hardware/fido-u2f-security-key/

吳忠憲

一位隨處可見的碼農。對密碼學、資訊安全、程式語言、軟體工程等主題有非常深的興趣。目前為臺灣大學快速密碼學實驗室的研究員。在去年的 HITCON 2015 閃電秀時埋下了一個和 U2F 相關的小伏筆,打算在今次 PyConTW 將這個 FIDO 推動的公開標準介紹給更多的人認識!

如果有任何想要討論的相關議題,都歡迎寫電子郵件至 js (at) jong.sh 與我聯繫!