Android
yubikey
U2F
GoogleAuthenticator
FIDO

Android × U2F で FIDO 認証する (USB直刺しで使えるようになったよ~)

はじめに

昨日家に帰って携帯から Google アカウントにアクセスしようとしたら、久々のログインだったためか 2要素認証の verification が出てきた。
私の携帯には NFC がついていないため、いつもは Google Authenticator の TOTP でログインしていたのだが…

2018-01-17_10h20_11.png

USB オプション追加されとるー!

動作環境

  • Android 7.0
  • YubiKey 4, 4C, Neo
  • Google
  • Chrome v63.0.3239.111
  • Google Authenticator v5.00

実際に試す場合は注意点を先に読んだほうが良いです。

何をする?

PCで使っている U2F のキーを、Android上の Chrome で使います。注意点にもありますが、TOTP は使わないのに Google Authenticator が必要です。

多分 Google Play services に統合されました。下の図のGoogle Authenticator となっている部分が GPS(Google Play開発者サービス)のAPIになってます。

2018-01-17_10h25_20.png

昨年9月のアップデートでひっそりと U2F が使えるようになっていたのですが、今回 Authenticator と U2F デバイスの通信に USB が、追加されました。

実際の動作

実際に U2F 対応サービス、 Google, facebook, Dropbox...etc などで使えます。
まだサービスにキーを登録してなかったり、とりあえず試してみたいだけであれば Yubico のDemoサイトで試せます。

Chrome とGoogle Authenticator の最新版がはいっていなければインストール or アップデートしてください。

https://demo.yubico.com/u2f

デモサイトなので適当な ID と パスワード (id/pass などでよい)で Next を押します。

Screenshot_20180117-105320.png

Google Authenticator をインストールしていれば、自動で以下画面になるので

Screenshot_20180117-104829.png

YubiKey Neo なら NFC でも使えますが、今回は USB でセキュリティキーを使用するを選択します。
(※私の格安スマホには NFC がついてない…)

Screenshot_20180117-104857.png

かなりシュールな絵が出てきますが、変換ケーブルを用いるか Type-C のものを使い YubiKey をスマホに刺します。
Google開発者サービスのポップアップが出るようなら OKを押します。

YubiKey がピカピカ光っていれば認識できていると思うので、PCでするように金属端子をタッチします。

Screenshot_20180117-104920.png

うまく認識できれば デバイスの Verify が完了!

注意点

  1. Google Authenticator は TOTP を使うわけじゃないがインストール必須
  2. YubiKey 4 series は OTP モードをオフにしないと USB では認識されない
  3. 一部の端末は USB を使う前に設定から登録が必要な場合がある

それぞれ軽く解説します

1. Google Authenticator は TOTP を使うわけじゃないがインストール必須 => 基本的には Google Play servicesに統合されてます。

Google Authenticator(Google認証サービス)は言わずと知れた TOTP を表示するアプリです。
何をする? でも話しましたが、実はこっそり U2F デバイスと通信する機能もついています。

2018-01-17_10h25_20.png

今までは Google Authenticator と U2F デバイスの通信は Bluetooth か NFC だったのですが、いつの間にか USB でも通信可能になっていました。

2018-06-11 追記
Android のバージョンによっては必要なさげです。少なくとも Andorid 8.0 では不要でした。

ちょっと蛇足
なぜOSネイティブではなく Google Authenticator につけたのかは、おそらくOSアップデートが追い付かない古い端末のために機能をアプリかしたのだと思う。
なぜChrome ではなく Google Authenticator に U2F サービスを組み込んだのかは、いろいろなアプリで使える API 的に使えるようになるのでは…と想像しているが、今のところこの API をほかのアプリから叩けるといったドキュメントは見当たらない。

2. YubiKey 4 series は OTP モードをオフにしないと USB では U2F デバイスとして認識されない

2018-04-18 追記
久しぶりにためしたら、OTPモードオンでも問題なく使えるようになってました。素敵。

YubiKey 4, Neo シリーズは、 U2F だけでなく Yubico OTP を含めた OTP 出力機能、 PIV, OpenPGP のスマートカード機能など複数の機能が搭載されたセキュリティトークンです。
PCではそれぞれの機能を状況に合わせて利用できるのですが、Androidでは認識できないらしく OTP モードをオフにする必要があります。

以下から YubiKey Neo Manager をダウンロードして起動

YubiKey NEO Manager | Yubico

起動したら、OTPをオフにしたいYubiKeyを挿入して、OTPモードをオフにします。

2018-01-17_10h40_15.gif

YubiKey 4 でも Neo Manager で設定できます。

これで Android でも USB経由で U2F が使えるようになりました。
(当然 OTP は使えなくなりますが… )

3. 一部の端末は USB を使う前に設定から登録が必要な場合がある

キャリア端末などは特にそのような設定がなされている場合があるので
以下の記事などを参考に [USB接続設定]-[USB機器を検出] などの設定を探して登録します。

http://www.iodata.jp/support/qanda/answer/s19559.htm

その他

Googleアカウントの新規追加など OSネイティブの U2F 認証では、まだ Bluetooth もしくは NFC しか使えないようでした。

今まで YubiKey を使っていて モバイルデバイスでは OTP しか使えなく、使いづらさを感じていたがこれで OTP を入力することのない未来にひとつ近づいた気がする。
自分でアプリに U2F を実装して USB や Bluetooth の通信を…とはやりたくないので、Chrome以外からもこれを使えるようなればなあと思う。

あ、YubiKey はソフト技研が Amazon で売ってますのでよろしくお願いいたします。

2018-01-17_11h06_57.png