はじめに
GMOグローバルサイン・ホールディングスCTO室で研究開発をしている井上です。
今ブログでは認証技術仕様のFIDOと、FIDOを簡単に試すことができる外部セキュリティキーのYubiKeyに関して紹介します。
仕事でもプライベートでもアカウントのユーザー認証があるWebサービスを使用することが多いのでないでしょうか。現在、ユーザー認証はパスワードを使用するものが大半です。しかし、パスワード認証には様々なリスクや運用面での課題が指摘されています。フィッシング被害やパスワード忘れ等、トラブルが起こる可能性は常にあります。パスワード認証につきまとう様々な問題を解決すると期待されている認証技術仕様がFIDOです。
FIDOとは
FIDO(First IDentity Online)アライアンスは、ユーザー認証におけるパスワードへの依存を軽減するために、オープンで拡張性と相互運用性がある技術仕様を策定しています。日本でのFIDO普及の加速を目指す組織であるFIDO Japan Working Groupの説明は以下になります。
FIDOアライアンスについて
「高速なオンラインID認証」を意味する[FIDO(Fast IDentity Online)アライアンス]は、セキュリティと利便性の両立をめざすため、2012年7月に設立されたグローバルな非営利団体です。堅牢な認証に相互運用性が確保されていない状況を改善し、ユーザーが多くのIDとパスワードを覚えなければならないという煩わしさを解消することを目的としています。FIDOアライアンスは、認証におけるパスワード依存を軽減するために、オープンで拡張性と相互運用性のあるシンプルで堅牢な「FIDO認証」を標準化することで、オンラインサービスの本質に変革をもたらします。FIDO Japan WG
FIDO仕様
FIDO仕様について説明します。
UAF
UAF(Universal Authentication Standard)は、FIDO対応デバイスを利用してパスワードを使用無し認証を行う規格です。ユーザーの指紋、声紋等の生体情報の使用を想定しています。生体情報はユーザーデバイス側のみで使用され、ネットワーク上を流れたりサーバーへ送信されることがないため外部漏洩の心配がありません。デメリットとして、UAFに対応したデバイスが必須となることが上げられます。
U2F
U2F(Universal 2nd Factor)は、2要素認証の規格です。ID/パスワードを用いた認証の後に、セキュリティキーやセキュリティコード等で認証を行います。セキュリティキーとして、USBインターフェースに加えてNFCやBluetoothを使用することも可能です。生体情報に対応したFIDO規格のデバイスが不要である反面、ID/パスワードの認証が必要になります。
FIDO2仕様
FIDO2とは、FIDOアライアンスの最新の仕様の総称です。一般的なデバイスの利用時の、モバイル環境とデスクトップ環境の両方でのオンラインサービスへの認証を容易にします。FIDO2の具体的な仕様は、World Wide Web Consortium (W3C)のWeb Authentication (WebAuthn)と、Client-to-Authenticator Protocol (CTAP)です。
WebAuthn
Web Authentication (WebAuthn)は、Webブラウザへ組込みが容易な標準WebAPIを介して、FIDO認証を実現する仕様です。FIDOアライアンスの提案を基に、最終的にW3Cで標準化されています。Google Chrome、Mozilla Firefox、Microsoft Edge、Apple Safariの各主要Webブラウザと、Windows 10とAndroidプラットフォームでサポートされています。Webサービスやアプリケーションは、WebAuthnを有効にすることで、生体認証、モバイルデバイス、セキュリティキー等を介した認証を提供することができ、パスワードのみ認証よりも高いセキュリティを実現することができます。
オープン仕様のため詳細はドキュメントで確認することができます。WebAuthn APIガイドも充実しているため実装時の参考になります。
以下の通り、主要ブラウザの対応が進んでいます。
CTAP
Client-to-Authenticator Protocol (CTAP)は、多要素認証を実現するための仕様です。スマートフォンやセキュリティキー等の外部デバイスが、WebAuthnをサポートするブラウザ及びOS上で動作することを可能とし、Webサービスやアプリケーションの外部認証システムとして機能することを可能とします。CTAPの技術仕様も公開されています。
以下、FIDO2の概念図です。CTAPは外部デバイスとブラウザ間、WebAuthnがブラウザとウェブサービス間の仕様です。
YubiKeyを使用してFIDO U2F認証する
ここからは、簡単にFIDOを使用できる例として、FIDO認証セキュリティキーのYubiKeyを使用した、U2Fの2要素認証を試してみます。
YubiKey
YubiKeyは、アメリカとスウェーデンに拠点を置くセキュリティ企業のYubico社が開発と販売をしている多要素認証デバイスシリーズです。対応するプロトコルとインターフェース別に数種類の製品が発売されています。今回は、U2F対応のYubiKey5を使用します。
現在、GitHub、Dropbox、Twitter等、多くの主要WebサービスがU2Fの2要素認証に対応しています。今回は、Googleアカウントの認証を試します。ブラウザGoogle Chromeを使用します。
Googleアカウントの2要素認証設定
Googleアカウントのセキュリティ設定画面で「2段階認証プロセス」を選択します。
認証方法設定画面で他のオプションを表示後、「セキュリティキー」を選択して続行を選択します。
セキュリティキーをPCに挿入すると、ブラウザから許可を求められるので、許可します。
許可後すぐにセキュリティキーの登録が完了します。
Googleアカウントの2要素認証ログイン
次回のログインから通常のパスワード入力後に、YubiKeyへのタッチが要求されるので、タッチすると2要素認証が完了します。
ログイン時のキャプチャ動画になります。
FIDO対応のセキュリティキーを利用することで簡単にFIDO U2F認証の設定を行い2要素認証を設定することができました。2要素認証設定の他の選択肢として、SMSやスマホアプリの利用も可能ですが、FIDO対応セキュリティキーの利用で、はるかに簡単で信頼性の高い運用が可能になります。Googleが社内でYubiKeyを導入したところ、社員のアカウントの乗っ取りがゼロになったとの報告もあります。
今後のFIDOの展望
YubiKeyの指紋認証バージョンYubiKey Bioが近日中に発売される予定です。生体情報を利用したユーザー認証がより身近になることが予想されます。また、Appleが、FIDO2標準のWebAuthn APIを利用して、iOSとMacOS 14に搭載されるSafariで、WebログインにTouch IDとFace IDを利用できるようにすると発表しました。今後ますますFIDOを利用した認証が広まると考えられます。ユーザー視点では便利で堅牢になっていくので良いことですが、Webサービス提供者側からみるとはFIDO対応へ検討を始める時期がきていると言えるのではないでしょうか。
終わりに
今回は、パスワードに依存しない新しい認証技術であるFIDOに関しての紹介と、セキュリティキーYubiKeyを使用して実際にFIDO U2Fの2段階認証を試してみました。次回は、WebAuthn APIを動かしつつサービス側からFIDOについて考察する予定です。