Yubikey 硬體金鑰
邁向無密碼的時代
目錄
雖然早早就買了 YubiKey 的硬體金鑰,但是礙於之前一直沒有時間好好的給他來研究一下。今天突然想到來玩了一下,但是發現好像有蠻多複雜的細節,所以不如就寫給有需要的人 (a.k.a. 以後的 me XDDDD) 可以參考一下。
💾 軟體 #
名稱 | |
---|---|
Yubikey Manager | 功能最完整,裝這個就好 |
YubiKey Personalization GUI | UI 有點醜但跟 Yubikey Manager 有點像。反正目前沒發現只有這個才有的功能,不用裝 |
YubiKey PIV Manager | 管理 PIV 功能用的,其實 Yubikey Manager 就有提供了,不用裝 |
Yubico Authenticator | 提供網頁登入時的各項功能,細節下面 FIDO2 會講,有需要再裝 |
pkman CLI | 選配,維護還不錯的 CLI。不想跟 GUI 鬼扯的時候,這個還不錯用 |
不想看那麼多的話,下面這個貼到終端機就對了:
brew install --cask yubico-yubikey-manager
pipx install yubikey-manager
*️⃣ PIN 碼 #
一把 YubiKey 有 3 種 PIN 碼:
預設 | |
---|---|
FIDO2 | (無) |
PIV | 123456 |
OpenPGP | 123456 |
記住幾個簡單的原則:
- 不知道的不用亂動
- 當你不知道要輸入哪一個的時候,優先試 FIDO2
- 不用擔心 PIN 碼忘記,反正隨時可以重設。只是原本用來登入的服務要重新設定,當然如果硬體金鑰是唯一登入的方法,就只能上香了 \|/
💡 複習知識 #
在進入功能之前,先複習一下現在的網站登入流程:
- 輸入帳號密碼
- 如果支援的話,會要求第二驗證方式,有以下幾種
- 簡訊 (SMS) 驗證
- 電子信箱 (Email) 驗證
- OTP 驗證
- 電話驗證:用綁定的電話打到某個號碼驗證
- 授權裝置驗證:在已經登入的裝置點確認
- Security Key
- PassKey
- Backup Codes:固定的備用碼
- 登入成功
關於哪些網站支援哪些協定,可以查詢 2FA Directory
礙於那些發明規格的人喜歡咬文嚼字,幫大家整理以下幾個常見的詞:
二步驟驗證 #
- 2FA
- MFA
- 2-step verification
指的是整個步驟二,M 只是代表多個的意思
一次性密碼 #
- OTP
- TOTP
狹義來說指的是步驟二的第 3 項,也就是實作 TOTP 協定的二步驟認證。
廣義來說的話,任何一次性使用的密碼都算,也就是步驟二的 1~3 項。像台灣的銀行常用 OTP 來指刷卡或轉帳時的簡訊或 Email 的驗證碼。只是國外不常這樣用。
通用第二因素 #
- U2F
- WebAuthn
- FIDO2
包含步驟二 6~7 項的協定。如果你使用的是 Chromium 系列的瀏覽器,可以在在網址列輸入chrome://settings/passkeys
查詢目前瀏覽器有儲存的 PassKey
FIDO2 是一個專案 (或協定、標準),FIDO 是負責制定的聯盟 (由眾家廠商組合而成)
如果你懂網頁開發的話,可以參考ArvinH 大大的文章來實作
✨ 功能 #
FIDO2 & OTP #
可能是這支金鑰最大的用處 xDDDD:在支援硬體金鑰的網站上,可以用來驗證身分。
最近的大新聞是 Apple 終於在 iOS 16.3 和 macOS Ventura 13.2 支援了,而且還一口氣往前推進到要求至少 2 把硬體金鑰,看起來是挺認真研究過這個生態系的。
詳細的設定和使用大概長這樣:
需要注意的是,有的網站 (比如 Microsoft 和 Mailcow) 會在使用硬體金鑰的時候要求進一步驗證,這時候就會用到 FIDO2 PIN 碼,而在登入的同時,網站和帳號也會寫入這支金鑰。至於有哪些帳號登錄在金鑰上,可以在 Yubico Authenticator 中的 WebAuthn 分頁中查看。
Yubico Authenticator 的另外一個功能就是可以把 OTP 密碼 存入金鑰裡,然後這個金鑰在任何裝有 Yubico Authenticator 的地方都可以存取這些 OTP,缺點是最多只支援 32 個帳號。
但我很滿意我目前使用的 1Password,所以 pass
Yubico OTP #
一個 YubiKey 最多可以同時支援 2 種 OTP 密碼,一個是短按、一個長按
可以從下面 4 種來選擇:
技術文檔 | 設定教學影片 | |
---|---|---|
Yubico OTP | Yubico | Vimeo |
Challenge-Response | Yubico | Vimeo |
Static password | Yubico | Vimeo |
OATH-HOTP | Yubico | Vimeo |
目前實作這些協定的地方似乎很有限,或是我看不懂他在幹嘛。
唯一一個我看的懂的是 Static password,我是把裡面的密碼設定為系統管理者密碼,這樣遇到需要輸入系統管理者密碼的時候,可以透過觸碰金鑰的方式來輸入。
需要注意的是,它在輸入之後會自動按 enter/return ⏎
,還有就是在一般沒有隱藏輸入的地方 (比方說一般的文字輸入框或是文字編輯器) 也會觸發,所以我是這個功能設定在 slot 2 (長按) 的欄位,避免誤觸。
PIV (Smart Card) #
目前已知最大的功能是用來做 macOS 登入,詳細可以參考官方文檔,可是我目前對使用 Touch ID 很滿意,所以一樣 pass
OpenPGP #
詳細的教學可以參考下面這支影片,雖然這支是在 Windows 上操作,但基本上跟在 macOS/Linux 上大同小異。
GPG 的開發群真的把安全的規格推的很頂,這個協定的作法本身是把整個 key + certificate 全部都存到金鑰上,讓這些資料跟著金鑰在不同的硬體上穿梭。
但 GPG 對我來說最大的用途就是用來簽署我的 git commit,所以我其實比較喜歡的作法是:把加密後的 key 留在本機上,透過 agent 去向硬體金鑰要求 authenticate,通過之後再一次性的把 key 解密簽署。
所以總而言之,這部分雖然是有點意思,但跟我目前的 workflow 不太合,再度 pass
結論 #
好像能玩的都玩過一遍了,但是並沒有真的走進我最常使用的那些使用場景,再加上 PassKey 就快要全面上路了,我想不到有了 passkey 之後,硬體金鑰的價值還剩下哪些。
也許等時候到了再來好好研究一下吧。
Q: 這東西會提升安全性嗎?
A: 當你把硬體金鑰設定為唯一的登入方式之後,會。但實際上通常不會這麼做,因為如果不小心把金鑰弄丟了,就 GG 思密達
Q: 推薦買嗎 ?
A: 為了好玩的話可以買,雖然這個價格可以拿去買更好玩的東西。為了安全的話就不用了。