• FIDOはこうして生まれた!

FIDOアライアンスは、パスワードレスのWebアクセスなどを実現するための仕様を提唱している。現在の仕様はFIDO2と呼ばれ、公開鍵暗号を使ってユーザー認証を行う。サービス(Webサイト)側には公開鍵を登録する。万一流出したとしても、公開鍵から秘密鍵を知ることはできず、セキュリティが保たれ、サービス側もパスワードのように厳重な管理が不要になる。パスワードの使い回しを想定した誕生日攻撃などを考えると、セキュリティの脆弱なサービスは、インターネット全体のセキュリティを危険にさらす可能性がある。

秘密鍵は、クライアント側のAuthenticatorが管理する。ログイン(ユーザー認証)時には、Webサーバーがチャレンジを送信、これを秘密鍵で電子署名して送り返す。電子署名されたチャレンジは、サーバー側に記録されている公開鍵で認証ができる。Authenticator側に指紋認証や顔認証など、ユーザーを特定する仕組みを組み合わせることで、ユーザーを認証することが可能になる(図01)。

  • 図01: FIDO2では、インターネット側のサービス(Webサイト)でのユーザー登録に公開鍵暗号の公開鍵を登録し、クライアントに送った「チャレンジ」を、クライアント側が秘密鍵で電子署名して戻す。これをサーバー側の公開鍵で認証する。W3CのWebAuthnは、ブラウザとOS間のインターフェースを定義することで、サーバー側との認証を定める。CTAP2は、OSとAuthenticatorの間を定義し、OSの指紋認証などの機構の利用を可能にし、さらに外部のRoaming Authenticatorとの接続方法を定める

基本的な仕組みは、W3CのWeb Authentication(WebAuthn)が担い、ブラウザとプラットフォーム(OS)間のインターフェースを定義することで、認証の仕組み全体を作る。FIDO2のCTAP2(Client to Authenticator Protocol)は、プラットフォームとAuthenticator間の接続を定義する。

Authenticatorには、Windowsなどのプラットフォーム組み込みの「Platform Authenticator」と、BluetoothやUSBなどで他のプラットフォームと接続する「Roaming Authenticator」がある。

すでに、WindowsではOutlook.com(Microsoftアカウント)へのログインにこのFIDOが使われており、パスワードを使わないユーザー認証が可能になっている(設定でOutlook.comからパスワードを廃止できる)。なお、FIDOやWebAuthnは、Windows自体のユーザー認証とは別の仕組みなので注意されたい。Windowsでは、ユーザーアカウントにMicrosoftアカウントを使い、ログイン時にOutlook.comに接続する必要があって、この部分にFIDOが使われているが、WindowsへのログインにFIDO2が使われているわけではない。

FIDOアライアンスには、GoogleやAmazon、Facebook(Meat)などが参加しているが、完全に普及したわけでもなく、いまだにパスワードを使うサイトも少なくない。というのも、FIDO2を使うためには、Webサーバー側の対応が必要になるからだ。すでにパスワードで運用されているサービスでは、ユーザーがAuthenticatorを用意し、FIDO2での再登録を行う必要もある(使っているスマホやPCが古くFIDO2対応していない可能性もある)。このため、FIDO2が広く普及しパスワードレスな社会に至るまでには、短くても数年程度は必要だろう。

現在の仕様では、Authenticatorが管理している秘密鍵は、セキュリティのためAuthenticatorの外には出すことができないようになっている。このため、スマホやPCなどの破損、紛失などでAuthenticatorの実行ができなくなると、登録をやり直さなければならない。インターネット側ではパスワードレスという安全性があるものの、実世界での安全性が高いわけではない。

これに対応しようとしているのが、WebAuthn Level 3と呼ばれる次のバージョンだ。最近、パスワードレスに関して、いろいろと発表があるのはWebAuthn Level 3が年内にも成立しそうな段階になったからだ。以下が現時点での仕様のドラフトである。

Web Authentication: An API for accessing Public Key Credentials - Level 3
https://w3c.github.io/webauthn/

このLevel 3では「Multi-Device Credential」が利用可能になる。これは、秘密鍵を複数デバイス(のAuthenticator)で共有可能にする仕組みだ。秘密鍵に対してAuthenticatorだけが解読可能な暗号化を行い、サーバー側に保存、必要に応じてAuthenticatorに戻すことが可能になる。これにより、スマートフォンを機種変更しても、同じCredentialを使い続けることができるようになる。ドラフトでは秘密鍵の暗号化がプラットフォーム依存するように受けとれるため、完全に制限がなくなるわけではなさそうだが、これでAuthenticatorであるPCやスマートフォンの変更や紛失などの事態に対応することが可能になった。ようやく、一般の人でも使えるような最低限の環境が整ったというところか。

今回のタイトルの元ネタは、日本でも1970年台に放送された英国のテレビドラマ「UFO」(1970。邦題 謎の円盤UFO)のエピソードの1つ「シャドーはこうして生まれた!」(原題 Confetti Check A-O. K.)である。同じプロダクションのThunderbirds(1965)に比べると、暗く容赦のなく厳しい深刻なエピソードが多く、それゆえのリアリティを感じる。なお、FIDOは「フィドー」ではなく「ファイド」と読む。念のため。