OTP 已死 U2F 永存�JavaScript U2F 兩步驟驗證實戰!
jong.sh/jsdc2016
js@jong.sh
About Me
本日講題目標
線上使用者身份認證
傳統密碼身份認證
傳統密碼身份認證
傳統密碼身份認證 + 密碼管理員
兩步驟驗證 (2FA)
簡訊 OTP
TOTP (每 30 秒更新一次)
有大量使用者的線上服務
資安,必須考慮的面向非常多
線上使用者身份認證�如何改善?
U2F 是個兩步驟驗證的解決方案
基於公鑰數位簽章的 U2F
U2F 並沒有解決...
U2F 標準文件
https://fidoalliance.org/specs/fido-u2f-v1.0-ps-20141009/
FIDO 聯盟 (2012-)
U2F 框架下的三種角色
U2F�Client
U2F�Authenticator
U2F�Relying Party
req/res
req/res
U2F Client
U2F Authenticator
U2F RP (Client-Side)
U2F RP (Server-Side)
Google Chrome
YubiKey
a web page of Dropbox
Dropbox backend server
U2F Client
U2F Authenticator
U2F RP (Client-Side)
U2F RP (Server-Side)
兩種 challenge-response 訊息:
U2F Client�JavaScript API
U2F Client
U2F RP (Client-Side)
U2F Authenticator
U2F RP (Server-Side)
四種 APDU 指令:
U2F Raw Message�Protocol
Framed over USBHID,�NFC, Bluetooth, or BLE
愈來愈多線上服務支援 U2F 兩步驟驗證了
如果您作為使用者重視某些帳戶的安全性
如果您是網站開發人員
如果 U2F token 弄丟了怎麼辦?
如果信用卡弄丟了怎麼辦?
如果密碼弄丟了怎麼辦?
把密碼弄丟了
兩種「弄丟」方式
兩種應對方式
把 U2F token 弄丟了
兩種「弄丟」方式
兩種應對方式
把 U2F token 弄丟了
許多線上服務,都有多種登入選擇
服務端軟體函式庫實作
concise/lightu2f-nodejs on GitHub
U2F JavaScript API
Let's check out lightu2f
客戶端 U2F 虛擬硬體實作
Google Chrome 的 U2F Client 實作
Google Chrome 的 U2F Client
var p = chrome.runtime.connect( ID );�p.postMessage( <request> );�p.onMessage.addListener( <response_callback> );
google-chrome�--show-component-extension-options
Google Chrome 如何和 U2F USB 裝置互動?
一個 U2F USB 裝置如何接收來自瀏覽器的請求?
USB�packets
U2F HID�protocol�fragments
U2F raw�messages
U2F Transaction�Logic Processor
Secure Storage�for Secret Keys
如何使我的程式被辨識為一個 U2F 裝置?
Linux User-Space HID I/O Driver
讀寫 /dev/uhid 檔案
在 Linux 上實現 USBHID 的 U2F 裝置
USB�packets
U2F HID�protocol�fragments
U2F raw�messages
U2F Transaction�Logic Processor
在 Linux 上實現 USBHID 的 U2F 裝置
U2F HID�protocol�fragments
U2F raw�messages
U2F Transaction�Logic Processor
read() bytes�from /dev/uhid
write() bytes�to /dev/uhid
在 Linux 上實現 USBHID 的 U2F 裝置
U2F HID�protocol�fragments
U2F raw�messages
U2F Transaction�Logic Processor
將密鑰保存在�指定的目錄下
read() bytes�from /dev/uhid
write() bytes�to /dev/uhid
concise/v2f-nodejs-linux on GitHub
Let's see v2f in action
軟體解決方案安全性的侷限
總結
U2F 相較於 OTP 的優勢
U2F 的幾點阻力
Questions ?
Thanks!
有更多和 U2F 相關的問題�歡迎來信至 js@jong.sh 和我討論