以下でそれらについて詳しく説明します。

/ Flickr / マークバーネット / CS
WebAuthnは、W3CとFIDO Allianceコンソーシアムのコラボレーションの結果です。 1つ目は、インターネットの技術標準の導入に従事し、2つ目は、ネットワーク上の信頼できる認証標準の開発と改善です。
WebAuthn標準の作業は、FIDOがFIDO2仕様グループをW3Cコンソーシアムに移行した2015年に始まりました。 FIDO 2.0 Web APIの後続バージョンでは、ユーザーはシークレットトークンを使用してGoogle、Facebook、Dropbox、GitHubなどにログインできます。
WebAuthnはFIDO 2.0 Web APIと同じ原理で動作しますが、他の多くの認証方法をサポートしています。 この新しい標準により、ユーザーは指紋、顔、網膜、およびその他の生体指標によってネットワークアプリケーションおよびサイトで自分自身を識別することができます。
また、FIDO Allianceは新しいCTAP (Client-to-Authenticator Protocol)認証プロトコルを開発しました。これにより、外部セキュリティキー(USBキーなど)またはモバイルデバイスを使用してユーザーを識別できます。
この標準は、Microsoft、Apple、Google、PayPalなどの代表者によって既に承認されているため、まもなくITエコシステムへの統合が開始されます。 特に、W3Cコンソーシアムは、開発者にWebAuthn実装の作業を開始することを既に奨励しています。

/ Flickr / christiaan colen / cc
WebAuthnの仕組み
新しい標準を使用した認証中のユーザーアクションのシーケンスは次のとおりです。
- ユーザーは、コンピューターまたはラップトップを介してexample.ruにログオンし、「電話を使用してログイン」オプションが表示されます。
- ユーザーはこのオプションを選択し、ブラウザから「電話でログインしてください」というメッセージを受け取ります。
- 「example.ruにログイン」という通知が電話に届きます。
- 通知をクリックすると、アカウントのリストが表示され、そこから必要なアカウントが選択されます。
- 次に、認証要求(指のスキャン、PINコードの入力など)があり、成功すると、サイトがコンピューター/ラップトップで開きます。
ログインデータはユーザーのものであり、WebAuthnを使用するサービスがブラウザーとOSを介してやり取りする認証システムによって制御されます。 スクリプトの助けを借りて、新しいログインデータを作成するための操作が実行されるか、既存のデータで認証が実行されます。 スクリプトはユーザーデータにアクセスできませんが、オブジェクトの形式でスクリプトに関する情報のみを受け取ります。
この標準は、登録とログインを行う2つの基本的な方法に基づいています: navigator.credentials.create()とnavigator.credentials.get()です。 彼らの助けを借りて、WebAuthnはサーバーに資格情報を記録し、それを使用してユーザーを認証します。
- Navigator.credentials.create()は、アカウントを登録するとき、または新しい非対称キーペアを既存のアカウントに関連付けるために、アクセスの詳細を作成します。
- Navigator.credentials.get()は、サービスの認証に既知のアクセス詳細を使用します。
どちらの方法でも安全な接続が必要です(例:https)。 実際、操作中にサーバーからチャレンジと呼ばれる長い番号を受け取り、それを送り返し、秘密鍵で署名します。 これは、ユーザーが認証に必要な秘密キーを持っていることをサーバーに証明します。 したがって、ネットワーク上で追加の秘密を開示する必要はありません。
同時に、ログイン用のユーザーデータは一意のIDに関連付けられます。 このIDは、各操作中にクライアントからオーセンティケーターに送信され、すべてが識別されたサービスのフレームワーク内で排他的に渡されるようにします。
CTAPについて
CTAPプロトコルは 、概念的には 、認証API、メッセージエンコーディング、トランスポート固有のバインディングの3つの層で構成されます。
Authenticator API抽象化レベルでは、各操作はAPI呼び出しとして定義されます-入力パラメーターを受け入れ、結果(またはエラー)を返します。 ここでは、新しい入力を生成するauthenticatorMakeCredential、認証を確認するauthenticatorGetAssertion、現在のすべての操作をキャンセルするauthenticatorCancelのメソッドが使用されます。
メッセージエンコーディングレベルでは、Authenticator APIへのすべてのリクエストが生成および暗号化されます。 ホストは、要求を作成して暗号化し、選択したトランスポートプロトコルを使用してオーセンティケータに送信する必要があります。
トランスポート固有のバインディングレベルに関しては、ここで要求と応答はUSB、NFC、Bluetoothなどを使用して外部認証システムに送信されます。
実装者
Firefoxの60 回目のリリースとChromeの67回目のリリース(5月にリリース予定)は、WebAuthnをサポートします。 Microsoft は 、2月にEdgeブラウザーと統合資格情報認証システムであるWindows Helloでこの仕様を発表しました。
企業は、ブラウザーの革新により、フィッシング、中間攻撃(MITM)、およびリプレイ攻撃に対する保護が強化されると確信しています。
AppleはSafariでの標準のサポートについてはまだコメントしていませんが、そのエンジニアの一部はWebAuthnワーキンググループの一部です。 したがって、新しい標準の実装に関するニュースが間もなく登場することを期待できます。
マイクロソフトパートナーシップのディレクターであり、WebAuthn仕様の編集者の1人であるマイケルジョーンズは、次のように述べています。