たまにssh鍵を家に忘れることがある。こういうものはsshしたいときに限って忘れる
仕組み
自分はYubikeyを使っている。
6月ごろにtype-cのやつを買った。(右のやつは1年以上持ち歩いているが結構丈夫)
YubikeyはYubico社が出している電子鍵が安全に保管できるデバイスで、複数機能があるので一概にこれと説明はできない
ここらへんに機能一覧はのっている
メジャーな機能は下の4つ
- YubiOTP
- FIDO U2F
- PGP Card
- PIV card
ざっくりした説明をすると
Yubi OTP
One Time Passwordの一種
OTPは現在時刻を利用したのものやカウンターを利用した物があるが、ハードウェアデバイスならではのカウンター+暗号化が入っているのでセキュアな雰囲気がある
ここに日本語で書かれた最高の資料があるので仕組みを知りたい人はこっちを読んだほうが良い
会社とかの中央集権的な集団のログインには便利である。
YubiCloudを使わない場合、秘密のパスフレーズをYubikeyに突っ込んだ状態でYubukey配る必要があるのでウェブサービスには不向き
例えば、社員が入社したときにYubikeyが配られて(持っている人は自分のを使う)入社手続きの際にyubikeyを穴に突っ込んでYubiOTPがセットアップされる仕組み
そんなのはかっこいい
上の例はラズパイとかを使えば、簡単にできそうだがラズパイにはtype-cの穴はないし、さり気なくboot用のsd cardを攻撃者に交換されるリスクもある。
FIDO U2F
物理デバイスを使った二段階認証の規格があってそれを満たしている。
この規格は「みんな!この規格でいくぞ!!」みたいな流れが薄いイメージだったが、最近はだいぶサポートされている感じがする。
自分は複数サービスで使っている。
GitHub - github/SoftU2F: Software U2F authenticator for macOS
githubもライブラリを公開しているので試したい
PGP Card
PGPの鍵をimportすることができる(内部で生成することも可能だったような)規格である。また、exportはできない。
自分は主にこの機能をよく使っているように思える。
このyubikeyをパクればpgpで署名したり復号できるようになるかといえばそうでもなく、使うときにPINを打つ必要がある
この機能を使う上でPINとadmin PIN を設定する必要があり
PINを打つことに3回失敗すればロックされ、admin pin打たないと使えなくなる。このadmin PINを打つことに3回失敗すれば永久にロックされる。
gpgの機能としてpgp鍵をつかってsshする方法があり、それを普段のssh鍵にしている。
PIV card
PIV(Personal Identity Verification)の略の通り、身分証明用のIC cardの規格である。
この規格はアメリカの政府職員とかが持っているcardとかに採用されている
一般的にicチップが付いたカードは OpenSC(open smart card)を使えばread/writeやその他のやり取りができる
PIV cardの規格の一つに鍵を内部で生成する事ができ、それを使ってsshすることができるがpiv cardの仕様上rsa2048以上を使うことができない
なので昔はこちらを使ってsshしていたが、最近は使っていない。
日本には四季やマイナンバーがあるが、マイナンバーでsshすることができてもおそらくマイナンバーはPIV cardの仕様をみたしてはいなさそうである。
PIV cardは上のPGP cardの仕様と同じようにPINの仕組みがあり鍵をexportすることができないという仕様を考えると、公開鍵で暗号化されたものをPIV card内で複合しているのはないかと思う、これに関してはあまり良くわからない。
macだと support.apple.com こういったサポートがあり、Yubico社が出しているドライバーを入れるとログインに使うこともできる。
最後に
macだけにすべての情報が入っているのは怖く感じるのでこういったデバイスを使うようにしているが、逆にこのデバイスを紛失したときに大変なことにならないような運用が大事である
一応、自分の場合はそんなに困らないように作っているつもりであるので、暇な時またそれについて書く。