はじめに
過去に参画していた案件で、FIDOという認証技術とそれに関連したものについて
扱ったので、それらの情報を簡単にですがまとめました。
FIDOについて
FIDOとは
**Fast IDentity Online(素早いオンライン認証)**の略語で、認証技術の1つになります。
FIDOはPKIと同様に、公開鍵暗号による署名技術を採用しています。
PKIについてはこちらを参照してください。
認証技術なので本人確認の為にFIDOは利用されますが、FIDOでの認証では
ユーザーの生体情報等を利用するので、ユーザーがパスワードを覚える必要がないことが特徴になります。
加えて、認証自体は専門端末で実行されるので、
認証に利用した情報はネットワーク上に流れず、サーバーで保持しないため
情報漏洩のリスクが軽減されることも特徴の一つです。
FIDOの仕様では、ネットワーク上に流れる情報は
端末側の秘密鍵で署名されたトークンのみで、サーバー側には公開鍵の情報のみ保持しています。
そのため、第三者がトークンと公開鍵を傍受したとしても、秘密鍵に応じたトークンを
作成することはできず、不正ログインを行うことはできません。
FIDOには、FIDO/UAFとFIDO/U2Fと呼ばれる2種類の規格が存在しています。
FIDO/UAFとは
FIDO1.0仕様での規格の1つで、
**Universal Authentication Framework(汎用的な認証基盤)**の略語です。
FIDOに対応するデバイスを利用することで、パスワードを使わずに認証を行う仕組みになります。
こちらの方式では、認証に指紋や声紋などの生体情報を用います。
パスワードは一切不要で、認証のために使われた生体情報はサーバー側に一切流れません。
よって、個人情報はネットワーク上にはまったく流れないで済みます。
万一、認証用の端末を紛失・盗難などがあった場合でも、不正に利用される可能性は現状ではきわめて低いと言えます。
将来的には生体情報の偽装が容易になる可能性はありますが、現状ではきわめてハードルが高いものになります。
しかし、UAFの利用にはFIDOに対応した端末が必要となり、FIDO対応の端末を揃える際は相応のコスト負担が発生します。
端末変更にともない、ユーザーインターフェースの変更が発生する可能性もあります。
FIDO/U2Fとは
FIDO1.0仕様での規格の1つで、
**Universal 2nd Factor(汎用的な第2要素)**の略語です。
二段階認証を採用しており、ID/パスワードの1段階目の認証に加えて、
セキュリティコードやセキュリティキーを使った認証を行います。
セキュリティキーとして、USBキーに加えてBluetoothとNFCをサポートした仕様となっています。
認証の流れとしては、ユーザーIDとパスワード、あるいは安全が確保された上での
PINコード(暗証番号)入力により行います。
このあと、端末のUSBポートにトークンを挿す、あるいはNFCやBluetoothを用いた
キーを近づけることで、本人認証を行います。
対応端末が必要ない分、UAFに比べると導入が容易であると言えます。
認証の情報はローカルに留まりますが、完全にパスワードフリーにはなりません。
そのため、UAFに比較するとセキュリティは弱くなる面が存在します。
FIDO2について
FIDO2とは、WebAPI仕様として提案されたUAFとU2Fを統合した仕様のことです。
FIDO1.0では生体認証に専用端末を利用していましたが、FIDO2では
専用端末を利用せずPCやスマホからFIDO2対応ブラウザを介して認証ができるので、
導入コストを抑えつつ強固なセキュリティを維持できます。
FIDO2は、
- 認証デバイス(TPM内蔵PCの指紋リーダー、USBやBluetoothデバイス等)
- ブラウザ(FireFox、Edge、Chrome等のFIDO2対応ブラウザ)
- RPサーバー(FIDO2/WebAuthn認証サーバー、サービス等)
の要素で構成されます。
FIDO2では、WebAuthnとCTAPという2つのプロトコルで認証を行い、
WebAuthnはネットワークを流れるプロトコル部分を、CTAPはPC内でブラウザから
USBなどに接続されている認証デバイスを呼び出す部分を担当します。
WebAuthnとは
WebAuthnとは、FIDO2を構成する技術の一つで、ブラウザや関連するWebサービスの
基盤に組み込む標準のWeb APIを定義しています。
WebAuthnのAPIによって、認証デバイスから取得した生体情報を利用し
登録/認証の処理を行います。
CTAPとは
CTAPとは、「Client to Authenticator Protocol」の略語で、
FIDOの外部認証デバイスとPlatform(クライアントプログラム)との通信プロトコルのことです。
CTAPによって、WebAuthn実行時に端末で利用できる認証デバイスの検出を行います。
登録/認証の流れ等については、こちらを参照してください。
最後に
これまでFIDOとFIDO2について紹介しましたが、FIDOに類似したPBIと呼ばれる
日立が開発した認証技術も存在しているので、ご興味のある方はこちらをご覧ください。