快轉到主要內容

Yubikey 硬體金鑰

邁向無密碼的時代

YubiKey 5Ci Launch Edition
YubiKey 5Ci 上市限定版

雖然早早就買了 YubiKey 的硬體金鑰,但是礙於之前一直沒有時間好好的給他來研究一下。今天突然想到來玩了一下,但是發現好像有蠻多複雜的細節,所以不如就寫給有需要的人 (a.k.a. 以後的 me XDDDD) 可以參考一下。

💾 軟體

名稱
Yubikey Manager功能最完整,裝這個就好
YubiKey Personalization GUIUI 有點醜但跟 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(無)
PIV123456
OpenPGP123456

記住幾個簡單的原則:

  1. 不知道的不用亂動
  2. 當你不知道要輸入哪一個的時候,優先試 FIDO2
  3. 不用擔心 PIN 碼忘記,反正隨時可以重設。只是原本用來登入的服務要重新設定,當然如果硬體金鑰是唯一登入的方法,就只能上香了 \|/

💡 複習知識

在進入功能之前,先複習一下現在的網站登入流程:

  1. 輸入帳號密碼
  2. 如果支援的話,會要求第二驗證方式,有以下幾種
    1. 簡訊 (SMS) 驗證
    2. 電子信箱 (Email) 驗證
    3. OTP 驗證
    4. 電話驗證:用綁定的電話打到某個號碼驗證
    5. 授權裝置驗證:在已經登入的裝置點確認
    6. Security Key
    7. PassKey
    8. Backup Codes:固定的備用碼
  3. 登入成功

關於哪些網站支援哪些協定,可以查詢 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

注意 這裡的 OTP 指的跟前面段落提到 OTP 不是同一個東西!

一個 YubiKey 最多可以同時支援 2 種 OTP 密碼,一個是短按、一個長按

Yubikey Manager OTP 截圖

可以從下面 4 種來選擇:

技術文檔設定教學影片
Yubico OTPYubicoVimeo
Challenge-ResponseYubicoVimeo
Static passwordYubicoVimeo
OATH-HOTPYubicoVimeo

目前實作這些協定的地方似乎很有限,或是我看不懂他在幹嘛。

唯一一個我看的懂的是 Static password,我是把裡面的密碼設定為系統管理者密碼,這樣遇到需要輸入系統管理者密碼的時候,可以透過觸碰金鑰的方式來輸入。

需要注意的是,它在輸入之後會自動按 enter/return ⏎,還有就是在一般沒有隱藏輸入的地方 (比方說一般的文字輸入框或是文字編輯器) 也會觸發,所以我是這個功能設定在 slot 2 (長按) 的欄位,避免誤觸。

PIV (Smart Card)

目前已知最大的功能是用來做 macOS 登入,詳細可以參考官方文檔,可是我目前對使用 Touch ID 很滿意,所以一樣 pass

OpenPGP

注意 這一 part 的內容會超出一般使用者的使用範圍,如果你不知道什麼是 OpenPGP 可以直接跳過

詳細的教學可以參考下面這支影片,雖然這支是在 Windows 上操作,但基本上跟在 macOS/Linux 上大同小異。

GPG 的開發群真的把安全的規格推的很頂,這個協定的作法本身是把整個 key + certificate 全部都存到金鑰上,讓這些資料跟著金鑰在不同的硬體上穿梭。

但 GPG 對我來說最大的用途就是用來簽署我的 git commit,所以我其實比較喜歡的作法是:把加密後的 key 留在本機上,透過 agent 去向硬體金鑰要求 authenticate,通過之後再一次性的把 key 解密簽署。

所以總而言之,這部分雖然是有點意思,但跟我目前的 workflow 不太合,再度 pass

結論

好像能玩的都玩過一遍了,但是並沒有真的走進我最常使用的那些使用場景,再加上 PassKey 就快要全面上路了,我想不到有了 passkey 之後,硬體金鑰的價值還剩下哪些。

也許等時候到了再來好好研究一下吧。

Q: 這東西會提升安全性嗎?
A: 當你把硬體金鑰設定為唯一的登入方式之後,會。但實際上通常不會這麼做,因為如果不小心把金鑰弄丟了,就 GG 思密達

Q: 推薦買嗎 ?
A: 為了好玩的話可以買,雖然這個價格可以拿去買更好玩的東西。為了安全的話就不用了。