LoginSignup
12
5

More than 5 years have passed since last update.

FIDO U2FデバイスなしでMacbookだけでFIDO U2F対応してみた

Posted at

FIDOの仕組み

FIDOのプロトコルでは、標準的な公開鍵暗号方式を用いて堅牢な認証を実現しています。オンラインサービスへの登録時に、ユーザーのクライアントデバイスは新しい鍵のペアを生成します。秘密鍵はクライアントデバイスに保持され、公開鍵がオンラインサービスに登録されます。クライアントデバイスがチャレンジに署名することにより、秘密鍵を保持していることをオンラインサービスに証明すると、認証が完了します。クライアントデバイスに保持された秘密鍵は、ユーザーがデバイス上でロック解除を行うことで始めて使用することができます。ロック解除には、指紋の読み取り、暗証番号の入力、マイクに対する発話、2段階認証デバイスの挿入、ボタンの押下など、ユーザーにとって使いやすく安全なアクションを採用することができます。

-- FIDO Allianceより

TouchID(Secure Enclave Processor)はFIDOに参加していないため、互換性がないため、TouchIDあり(Touchbarあり)のMacbookでもFIDO U2Fには対応できていません。

SOFT U2Fを使う

Githubが、FIDO U2Fのソフトウェアトークンを作っています。OSX Keychainを使ってデバイスをエミュレートしたものになるので、mac以外で利用することはできません。
これによって、FIDO U2Fのデバイスを持っていなくても、FIDO U2F

インストール

brew cask install softu2f

デフォルト

デフォルトでは、FIDO端末を使わずに必要に応じて、キーが生成され、それを認証時に使用するという流れになります。

TouchIDをつかう

SoftU2Fには、TouchID(Secure Enclave Processor)の指紋認証を間借りするオプションが用意されています。
これによって、FIDOデバイスを使っているときと同等な状態にする事ができます
READMEには記載されていないようです: https://github.com/github/SoftU2F/pull/29

使用前に下記を実行してください

/Applications/SoftU2F.app/Contents/MacOS/SoftU2F --enable-sep

実際にやってみる

デフォルト

  1. yubicoのテストページにアクセスします 001.png
  2. 許可を求められるので許可します(初回のみ) 002.png
  3. 認証するかどうか求められるので、Approveを選択します 003.png
  4. 認証できました 005.png

TouchIDを使う

  1. yubicoのテストページにアクセスします 001.png
  2. 許可を求められるので許可します(初回のみ) 002.png
  3. TouchIDを求められるので、TouchIDで指紋認証します 004.png
  4. 認証できました 005.png

ハードトークンとソフトトークンどちらを使うべき?

softU2Fの使用上の注意

ブラウザのエクステンションとして動くため、ブラウザでは正常に動作しますが、ローカルのアプリケーションでFIDO U2F認証を求められた場合は正常に動かない場合があります。

ハードトークン

使用時にUSBに挿さなければいけない。管理が面倒などの問題がありますが、物理的にも認証に使う端末が2要素に分かれるので、セキュリティが重視されるケースではハードトークンを利用するのがいいと思います。

ソフトトークン

利用時に別途何かをしなければいけないわけではなく、1デバイスのみ管理すればいいので、利便性を求めた場合は、ソフトトークンを使うといいかと思います。ただし、デバイスの盗難にあった場合に乗っ取られるという危険性はハードトークンよりは上がると思います。

12
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
5