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日間、色々触りまくってだいぶ理解できました。
できないこともだいたい把握しました。

できるようになって欲しいのは、本当に多段ログインですね。
使い方がここだけわからずじまいです。

将来のアップデートでできるようになるのか、わかりませんが、とりあえず満足しました。
ご不明な点があればコメントいただければと思います。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

%d人のブロガーが「いいね」をつけました。