Author: Dain Nilsson

Thumbnail

Jul 25, 2022

WebAuthnの実装: Yubicoからの新規アップデートの重要性

WebAuthnではたくさんの略語とプロトコルが使われています。 しかし、これらの意味と、これらの中から重要なものだけを特定する方法を理解していますか? 弊社ではわかりやすい説明とサポートの両方をご用意しています。 このブログでは、WebAuthnの実装のコツや、java-webauthn-serverライブラリのアップデート、YubicoのWebAuthnスターターキットの最新版についてのニュースをお伝えします。 初期 Universal 2nd Factor(U2F)は、YubiKeyなどのハードウェアトークンを使ったオープン認証規格です。 これは当初、FIDOアライアンスによって2014年に公開されました。 Yubicoはこの規格を開発者で、YubiKeysは最初のUniversal 2nd Factor(U2F)セキュリティキーのひとつでした。 この規格は主に次の2つから構成されています。 ホストコンピュータ(クライアント)とセキュリティキー(オーセンティケータ)の間で USB または NFC を介して通信するために使用されるFIDO U2F HIDプロトコル (後にCTAP1、Client To Authenticator Protocolに改名). ウェブサイトで認証情報の登録と認定に使用されるFIDO U2F JavaScript API これらのプロトコルのサポートは複数の異なるブラウザに追加され、この規格はコンセプトを実証と証明に使われてきましたが、いくつかの制約が普及の妨げになっていました。 進化 U2Fはセキュリティの強化と使い勝手の面では優れていましたが、まだ改善の余地がありました。 U2Fの後続ソリューションはFIDO2で、「パスワードレスログイン」、デバイス上でのPINや生体認証のサポート、その他いくつかの拡張機能など、多数の新しいユースケースに対応しています。 この製品により、これらの新機能をセキュリティキーでサポートするCTAP2と、FIDO U2F JavaScript APIの後継製品であるWebAuthnという新しいAPIが登場しました。 WebAuthnは従来のJavaScript APIに完全に代わり、W3Cによって標準化され、主流ブラウザで実装されています。 旧型のU2F APIのサポートは現在段階的に終了していて、大半のブラウザでは機能していません。 ここで、WebAuthnの出番となります。WebAuthnは、CTAP1(U2Fプロトコル)およびCTAP2(FIDO2プロトコル)の両方と完全な互換性があります。 また、WebAuthn APIを利用した拡張機能により、古いU2F認証情報を継続して利用することも可能で、ユーザーはセキュリティキーを再登録しなくても、引き続き使用できます。 WebAuthnはほとんどの開発者が接するAPIなので、「WebAuthn」はブラウザだけでなく、セキュリティキーからサーバーまでのエンドツーエンドの実装全体を指す用語になっています。 WebAuthn実装方法   これまで、ホストから認証システムへの通信(CTAP)、Webページからブラウザへの通信(WebAuthn)について説明してきましたが、サーバー側についてはまだ確認していません。 FIDO2仕様書では、サーバーが認証情報を検証するために必要なことを段階的に説明していますが、実際のWebAuthnの実装は読者の演習として残されています。 実装に使えるライブラリはいくつかありますが、その中でもYubicoのjava-webauthn-serverライブラリバージョン2.0は、公開されたばかりです。 このライブラリを使用すると、既存のJVMベースのバックエンドにWebAuthnのサポートを追加し、次のことを実行できます。  クライアントに送信する必要があるバイナリメッセージの作成と読み込み 暗号署名の有効性確認  仕様によって課された規則の履行 この新しいライブラリは、FIDO Metadata Service