第2の人生の構築ログ

自分の好きなことをやりつつ、インカムもしっかりと。実現していく過程での記録など。読書、IT系、旅行、お金に関係する話などの話題。

Yahoo カウントのログインにFIDO2(生体認証)を使う

7pay 問題でホットなキーワードとなった「2段階認証」ですが、「2段階認証」自体は認証のプロセスを2段階にするという話しで、そのプロセスの中でも2要素認証をしっかりやっておくということはとても重要なことです。今年から施行される(若干延長されそうですが。。)ヨーロッパの決済サービス指令 PSD2 では Strong Customer Authentication (SCA) のなかで2要素認証を明確に定義し、一定額以上の決済、特定条件における決済においては2要素認証が必須となっています。

2要素認証とは、認証の3要素、知ってること、持ってるもの、生まれつき備わっているもの(要は生体)のうちの何れか2つの要素を組み合わせて使う認証のことです。一昔前は2要素は重要とわかりつつも、一手間、二手間かかり、ユーザビリティを下げるということでなかなか利用されておりませんでしたが、スマホの登場により時代は変わりました。生体の利用ができるようになったことで生体の認証をパス(1要素目)した場合に「鍵」(2要素目)を使ったワンタイムパスワード/レスポンスの生成を行い、ネットワーク越しにそのワンタイムパスワード/レスポンスを飛ばして検証することで、ユーザの利便性を下げることなく2要素認証ができるようになりました。

この仕組みをうまく利用した FIDO という規格があり、元々 docomo さんが docomo アカウントで FIDO の UAF という規格を使い始めていました。それに加えて、Web ブラウザをクライアントとした FIDO2 の規格が今年から大分ホットとなってきているように感じます。

まず今回は Yahoo Japan さんの FIDO2 利用についてとりあげます。Google アカウントでも FIDO 2 の利用が可能になっています。これは次回にします。

Yahoo Japan さんは FIDO Alliance の Board Level Members でもあり、日本国内での FIDO の普及にとても積極的です。 その Yahoo Japan が Yahoo アカウントを FIDO2 に対応させたのが昨年の10月でした。

about.yahoo.co.jp

ヤフー株式会社(以下、ヤフー)は、2018年9月に国内企業で唯一認定を取得した、生体認証デバイスなどを利用して安全なログインを実現する規格「FIDO(ファイド)2」に対応しました。これにより本日から、Androidスマートフォンのウェブブラウザー上において、ヤフーのサービスに指紋認証などの生体認証を使用してログインできるようになりました。

ヤフー、Androidスマートフォンのウェブブラウザー上でのログインが指紋認証などの生体認証に対応 - プレスルーム - ヤフー株式会社 2018/10/23

Android 端末は 7 以上であれば、Chrome ブラウザとセットでFIDO2が使えます。スマホで以下の設定ページにアクセスし、生体を登録してみてください。スマホでの Yahoo アカウントのログインに FIDO2 が使えるようになります。

直接アクセスではない場合には、yahoo アカウントの登録情報のページの中に「ログインとセキュリティ」メニューがあります。ここから辿ってきます。

f:id:dr_taka_n:20190803160935p:plain:w300f:id:dr_taka_n:20190803161050p:plain:w300

「指紋・顔などでログイン」と進みます。

f:id:dr_taka_n:20190803161313p:plain:w300

「指紋・顔認証などの設定」のこの画面がFIDO2の設定画面です。

f:id:dr_taka_n:20190803161422p:plain:w300

「指紋・顔認証など」と書いてある理由は、このFIDO2では、OSが用意している生体認証(Native Biometrics)を利用しますので、OSの生体認証で指紋が使えれば指紋を、顔が使えれば顔を、その他生体が使えればその他生体が使えるということです。

「この端末を登録する」をタップすると、既に生体の登録を行っている場合には、「本人確認」のダイアログがあがりますので、登録してある生体を使います。認証が通ると、以下の画面のようになります。

f:id:dr_taka_n:20190803161921p:plain:w300

端末の名前を登録しておきます。(デフォルトのままとしておきます)

f:id:dr_taka_n:20190803162114p:plain:w300 f:id:dr_taka_n:20190803162244p:plain:w300

登録されました。

f:id:dr_taka_n:20190803162330p:plain:w300

これで Yahoo カウントのログインが求められる場面では、FIDO2 が使われます。裏側で技術的なことことがいろいろ行われますが、利用者がやるのは、「本人認証」ダイアログが出てきますので、登録した生体を使って生体認証を行うだけです。これでログインができるようになりました。便利ですね。便利な上にしっかり2要素認証をしています。

f:id:dr_taka_n:20190803162607p:plain:w300

ここまでの FIDO2 認証の設定の作業で気付かれた方はいると思うのですが、この FIDO2 の仕様自体がうまく既存の技術を使ったプロトコルであるという点はあるのですが、それ以上にユーザにとってうれしいところは、FIDO2 認証を行うにあたって、新たに何かインストールする必要がなかったという点です。

生体認証はOSの生体認証がそのまま使われていました。では、先に書きました生体認証をパスした後の「鍵」はどこに誰が保管し、管理しているのでしょうか。この「鍵」の管理もOSがデフォルトで用意してくれているのです。Android7以降との書かれているのはそれが理由で、Android7 以降であればOSがこの鍵の管理も行ってくれるということです。(正確にはOSがFIDOのAuthenticatorを用意してくれています。)
また、FIDO2のFIDOクライアントにあたる部分は、Web ブラウザが実装してくれています。

そうなんです。ユーザはAndroid7以降の端末を持っていれば、それだけで FIDO2 を利用できるのです。逆に言いますと、サービス提供者(ここではYahoo Japanさん)は、自分のサービスのためにモバイル用の認証アプリを用意する必要はないんですね。(FIDOのクライアントは、Webブラウザが実装してくれていますので、それをJavaScritpで利用するだけになります。)

Apple が iPhone で FIDO 対応してくれば、世の中の認証トークンの世界の景色は変わってくるのではないでしょうか。(Microsoft は Windows Hello で FIDO2 対応しています。)