国際標準FIDO2 のしくみ
Verizon社の調査によると、2017年の米国の主要サイバー攻撃はほとんど従来通りで以下の表に分類されている。結論としては、サイバー攻撃の80%以上は”パスワードの漏えい”である。
更に、パスワードに代えて2要素認証を導入した場合には、サイバー攻撃の99%を防げるとの結論を得ている。パスワードなしのログインを目指すFIDO方式は重要な提案であることがわかる。実際、主だったブラウザ、SNSは2019年の時点でFIDO/WebAuthnの導入計画を発表している。
パスワードは危険
FIDO2 プロトコル
FIDO2の経緯
W3C(World Wide Web Consortium)は、パスワードのない新たな認証プロトコルの実現を目指すFIDO(Fast IDentity Online)協会は、Webでのユーザー認証の国際標準の設定を行っている。最新のプロトコルはFIDO2と呼ばれるもので、外部デバイスに内蔵された認証器(Authenticator)とWebブラウザとの間の方式を決めるCTAP(Client to Authenticator Protocol)と、2019年3月にブラウザとFIDO認証サーバーとの間の方式を決めるWebAuthnから構成される。後者のWebAuthnは、W3C(World Wide Web Consortium)で検討され、2019年3月に正式勧告が発表された。
FIDO2の仕組み
このFIDO2の仕組みを簡単に説明します。FIDO2は、指紋認証と公開鍵暗号基盤(PKI, Public Key Infrastructure)から成り立っています。指紋認証は、指紋を指紋センサーで読み取り、その特徴点などを登録してある登録データと照合して、入力指紋が登録指紋かどうかを判定する技術です。これに対して公開鍵暗号基盤は、サーバー側で作成された文書(認証毎に違う文書であるためチャレンジと呼ばれています)にデバイス側で秘密鍵を用いて電子署名させ、その電子署名を公開鍵を用いて検証して、署名がデバイス側で作成されたかどうかを判定する技術です。目的は、サーバーの本人確認ですので、指紋認証とデバイス側での電子署名が、連携している必要があります。そのため、この二つの作業はデバイス内のセキュアエレメント(SE)と呼ばれる安全領域で実行され、指紋認証が成功である場合にのみ電子署名が実行される仕組みになっています。
FIDO2のプロトコル
これらの原理から上図に示すように、FIDO2は実行されます。(図の番号と以下の番号は一致しています)
-
サーバーからチャレンジがデバイスに送付
-
デバイス内で指紋認証を実行
-
認証が成功な場合のみ、送付されたチャレンジにユーザーの秘密鍵を用いて電子署名
-
署名付きチャレンジをサーバーに送付
-
サーバーは電子署名をユーザーの公開鍵を用いて検証。検証が成功な場合のみ、本人確認終了。
という手順になります。
チャレンジはランダムに生成された乱数ですので、認証毎に通信路を通るデータは違います。前提として(1)登録指紋がデバイス内に保存されている。(2)ユーザーの秘密鍵と公開鍵のペアはデバイス内で秘密裏に生成されて、秘密鍵はデバイス内に保存、開示してよい公開鍵はサーバー側に送付して保存すること。(3)その他ユーザー名前などもサーバー側に保存されている。これらの条件が必要です。そのため、初めて認証を開始する前に”ユーザー登録”という作業が必要になります。
(注意点)
1.チャレンジには、乱数の他にサーバー名やユーザーIDが含まれています。ブラウザやデバイスがそれらを確認します。
2.Attestationは、認証サーバーがデバイスを認証する方法です。デバイスで、Attestation用の秘密鍵・公開鍵のペア、署名作成用のデータ、を元に署名を作成し、公開鍵、署名をサーバーに送付し、公開鍵を使用して署名を検証してデバイスを認証します。
公開鍵基盤(PKI)と電子署名