Yubikeyを購入して、使ってみました。
Yubikeyとは
Y our ubi quitous key の略です。
USBやUSB Type-Cや色々とあるのですが、個人を証明するハードウェアになります。
マイナンバーカードみたいなものですね。
何ができるの?
できることは幅が広く、U2Fという2FAの代替手段から、PCログイン時にパスワードを使わず、PINを使うこと、SSHログインで秘密鍵が不要になる(しかし、制約があるのでいまいちな)こと、GnuPGによりメールに署名すること、パスワード管理をしてくれる(とはいえ、最近はパスワードマネージャーに任せてるので出番はない)こと、ワンタイムパスワード発行などができます。
詳細はこちらを参照ください。
https://www.cloudgate.jp/yubikey.html
ぼくが買ったものは、yubikey 4になります。
NEOだと暗号強度が2048止まりなので。。。と思ってたんですが、SSHに使える鍵の強度は2048まででした。
4096まで使えるのは、メールの署名などのGnuPGでした。
GnuPGは1デバイスにつき、1つの認証が行えます。
どの機能を使ってるの?
まず間違いなく使っているのは、U2Fです。
次がPCログイン時のPIN認証です。
そして、GnuPGの署名を個人として使い始めることにしました。
SSHにログインするのが楽になればいいなーと思ったのですが、多段接続はサポートされていないというか、パスフレーズがわからないというか、うまく行きません。
ssh-add -s /usr/local/lib/opensc-pkcs11.so
Enter passphrase for PKCS#11:
Could not add card "/usr/local/lib/opensc-pkcs11.so": agent refused operation
ググってみたけど、解決できたという人はいなさそうなので、pkcsの対応待ちという感じかもしれません。
ssh-add -sでおそらくfinger printを保持してくれるのだと思いますが、こういうagent refused operationと言われて、多段もできません。
個人利用レベルであれば踏み台サーバなんて用意しないので、多段接続は不要なのかもしれませんね。
初期設定など
PINとPUKがあるので、両方変えておきましょう。
変える方法は以下を参照ください。
http://mirahouse.jp/n10/2017/08/29-121537.html
次にPIN
デフォルトのPINは123456で、同じくデフォルトのPUKは12345678。
yubico-piv-tool -a change-pin
yubico-piv-tool -a change-puk
yubico-piv-toolはGUIでもCUIでも構いません。
どちらでも同じように利用できるようになっています。
https://developers.yubico.com/yubico-piv-tool/Releases/
GnuPGを入れる
まずはgnupgをインストール。
brew install gnupg@2.0
gnupgはgnupgを操作するのに必要なソフトウェアです。
openscはpkcsを使うために必要なものです。
英語が読める人は、以下を読めばやれることがわかります。
YubiKey GPG key for SSH authentication
以下を.zprofileもしくは.bashに書いておきましょう。
[ -f ~/.gpg-agent-info ] && source ~/.gpg-agent-info
if [ -S "${GPG_AGENT_INFO%%:*}" ]; then
export GPG_AGENT_INFO
export SSH_AUTH_SOCK
export SSH_AGENT_PID
else
eval $( gpg-agent --daemon )
fi
あとは、以下のコマンドを順に実行してください。
gpg --card-edit
admin
passwd
generate
passwdやgenerate中の文字化けは感覚で打ち込みましょう。
基本的に日本語にしてくれているので、何となくでわかります。
SSHログインをyubikeyでやってみたい
まずは必要なライブラリを追加します。
brew install opensc yubico-piv-tool
PIVを操作するツールもインストールしましょう。
https://developers.yubico.com/yubikey-piv-manager/
使い方はこちらで良いかと。(さすがクラスメソッドだ…)
https://dev.classmethod.jp/security/macos-pin-login-using-yubikey/
~/.ssh/configに以下を記述しましょう
ServerAliveInterval 15
PKCS11Provider /usr/local/lib/opensc-pkcs11.so
ForwardAgent yes
あ、注意点として、先に公開鍵を各種サーバに登録しておきましょう。
もし先に公開鍵を削除しちゃったら、ログインできなくなって詰む可能性があります。
まとめ
あー、この2日間、色々触りまくってだいぶ理解できました。
できないこともだいたい把握しました。
できるようになって欲しいのは、本当に多段ログインですね。
使い方がここだけわからずじまいです。
将来のアップデートでできるようになるのか、わかりませんが、とりあえず満足しました。
ご不明な点があればコメントいただければと思います。