最近買了 yubikey,第一次碰到這個東西,特別來記錄一下
下面主要是紀錄將 Yubikey 作為 smart card 使用的筆記
首先如果像我一樣把 gpg 的處裡放在 vmware 裡面的話記得在 vmx 加這兩行才讀的到 yubikey
1 | usb.generic.allowHID = "TRUE" |
要長得像下圖才是連線成功,下面的這個名稱是改完 vmx 之後才會出現
如果前面有加上 Shared
的字串是無法讀到的,如果沒有改 vmx 只會出現紅框的選項
之後就可以開始著手下載必要的套件 (建議照順序)
1 | sudo apt install scdaemon |
下面針對常用的功能記錄下指令
- 確認 yubikey 的連線狀態
1
ykman list
- 確認 yubikey 狀態 (同時會讀取 yubikey 內的金鑰)
1
gpg --card-status
- 設定 yubikey 的狀態 (如果要使用進階功能需要在進入 gpg shell 之後,下
admin
指令解鎖)想要更改 PIN 碼的話可以下1
gpg --edit-card
passwd
進行更改 - 產生 gpg key,下面的指令能選擇所有的加密演算法
1
gpg --full-generate-key --expert
這邊是聽同事的建議選擇ECC and ECC
和25519
,但如果要通用性(支援性)來說還是 RSA 比較好
接著輸入能識別這把 key 的資訊
產完之後他就會自動匯入 gpg 的庫裡面了 列出已匯入的 gpg public key
1
2
3gpg -k
or
gpg --list-keys --keyid-format=long列出已匯入的 gpg private key
1
2
3gpg -K
or
gpg --list-secret-keys --keyid-format=long將 private key 匯出成檔案
1
gpg --export-secret-keys > secret.key
- 將 private (public) key 匯入 gpg 庫內
1
gpg --import [key]
將 private key 寫入 yubikey 內
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20gpg --edit-key [GPG key ID]
gpg> toggle
gpg> keytocard
Really move the primary key? (y/N) y
Please select where to store the key:
(1) Signature key
(3) Authentication key
Your selection? 1
gpg> key 1
gpg> keytocard
Please select where to store the key:
(2) Encryption key
Your selection? 2
gpg> key 0
gpg> keytocard
Really move the primary key? (y/N) y
Please select where to store the key:
(1) Signature key
(3) Authentication key
Your selection? 3退出後記得選不要 save,不然下次把同一把 key 匯入另一個 yubikey 當成備用的時候會出現以下錯誤
如果出現這個錯誤的時候只要把 gpg 的私鑰庫清掉就可以繼續用了rm -r ~/.gnupg/private-keys-v1.d/*
有時候 gpg-agent 異常的時候也需要 kill agent 重新啟動
1
gpgconf --kill gpg-agent
- 針對檔案進行加密
1
gpg --encrypt -o output.pgp -r [e-mail] ./source.txt
- 針對檔案進行解密
1
gpg -o source.txt --decrypt output.pgp
如果沒插進 yubikey 進行解密會這樣
如果是像我一樣使用備援的 yubikey 進行解密的話,因為現在的 gpg 庫所綁的 private key 是綁主要 yubikey 的序號,所以一樣可以清掉 gpg 庫再重新 get card-status 就可以用備援的 key 解密了rm -r ~/.gnupg/private-keys-v1.d/*
ref:
https://developers.yubico.com/PGP/YubiKey_5.2.3_Enhancements_to_OpenPGP_3.4.html