10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【セキスぺ】WebAuthnの仕組みをざっくりと

10
Posted at

はじめに

お疲れ様です!
情報処理安全確保支援士(通称「セキスぺ」)の勉強をするにあたり、午前・午後問題の頻出のテーマに関して、学んだことをアウトプットしていきます!備忘録半分ではありますが、皆さんのご理解の一助となれば幸いです🙇
今回はWebAuthn編。

この記事で書くこと

  • 概要
  • 仕組み(ユーザー登録・認証)
  • メリット・デメリット

実装や機能の細かい部分には触れません🙇
セキスぺの問題を解くにあたっての知識の整理という位置づけで読んでいただけますと幸いです🙇

WebAuthn(ウェブオースン)の概要

パスワードレス認証を目指すFIDO Allianceという団体制定した規格であるFIDO2をベースにした認証の仕組み。
Web上での生体情報などを用いたパスワードレス認証を行う。

ざっくり、以下のようなイメージ

  • スマホとかで生体情報(指紋・顔)を使ってログインとかするアレ
  • パスワードの代わりに生体認証や外部デバイスを使って行う認証

仕組み

登場人物

0. 認証サーバ

認証情報の登録、認証結果の検証を行う。

1. Webアプリ

サービスを提供する。Relying Party(RP)ともいう。実際にログインして使うアプリなど。

2. 認証器

署名に使う鍵ペアを生成し、セキュアな領域に保存する。指紋や顔情報を読みとるスマホなど。

3. ブラウザ

フロントエンド。ユーザーが操作する。

WebAuthnの仕組み ~登録編~

1. ユーザー操作の開始

ユーザーがWebアプリを通じてアカウント登録や認証情報の設定を行う。

2. 登録の要求

Webアプリがブラウザを通してサーバに登録をリクエストする。リクエストにはRPのIDやチャレンジ(一度だけ使われるユニークな値)が含まれている。

3. 認証器の呼び出し

ブラウザがWebAuthnAPIを呼び出し、ユーザーのデバイスに接続されている(組み込まれている)認証器を呼び出す。

4. 登録情報の生成と署名

認証器は新しい鍵ペア(秘密鍵・公開鍵)を生成し、生成した秘密鍵を用いてチャレンジなどに対して署名を行う。この時、認証器はユーザーに生体情報などをリクエストし、正当なユーザーであることを検証する。検証成功後、生成した公開鍵とAttestation(署名されたチャレンジや認証器の正当性を示す情報。Attestation証明書や署名が含まれる)などをブラウザに対して返す。

5. データをWebアプリへ送信

ブラウザは認証器から受け取った情報をWebアプリに送信する。

6. 登録情報の保存

Webアプリはブラウザから受け取った情報を改めて認証サーバに送る。認証サーバは公開鍵で署名を検証し、認証器の正当性を確認する。検証に成功した場合、情報をユーザーのデータとして認証サーバに保存する。

ポイント

  • 「4.登録情報の生成と署名」にて、認証器はユーザーの認証を行います。ユーザー情報の登録の前時点で認証器にユーザーの生体情報を登録しておく必要があります。(ユーザー登録の際にスマホにあらかじめ登録された指紋・顔情報などの生体情報を使うやつイメージしてください)
  • ユーザーの認証時、ユーザーは認証器に生体情報を求められますが、この生体情報はあくまでローカル扱われ、生体情報そのものが認証サーバに送信されるといったことはありません。

WebAuthnの仕組み ~認証編~

1. 認証要求の開始

ユーザーがWebアプリにログインを試みる。Webアプリがユーザーの識別情報(ユーザー名など)を用いて認証プロセスを開始する。

2. 認証の要求

Webアプリがブラウザを通してサーバに認証をリクエストする。リクエストにはRPのIDやチャレンジが含まれる。

3. 登録済みユーザかの検証

認証サーバが受け取ったユーザーの識別情報をもとに、対応するユーザ情報が既に登録済みかを確認する。

4. 認証器の呼び出し

ユーザ情報が登録済みであると検証出来た後、ブラウザがWebAuthnAPIを呼び出し、ユーザーのデバイスに接続されている(組み込まれている)認証器を呼び出す。

5. ユーザーの認証と署名の生成

認証器はユーザーに生体情報などをリクエストし、正当なユーザーであることを検証。検証成功後、Attestationなどをブラウザに対して返す。

6. データをWebアプリへ送信

ブラウザは認証器から受け取った情報をWebアプリに送信する。

7. 登録情報の保存

Webアプリはブラウザから受け取った情報を改めて認証サーバーに送る。認証サーバは公開鍵で署名を検証し、認証器の正当性を確認する。検証に成功した場合、正当なユーザーとしてログインを承認する。

メリット

ログインの利便化

ユーザは生体情報の提示だけでログインが完了するので、いちいちパスワード等を暗記する必要がありません。

セキュリティ向上

認証に必要な生体情報などがローカルに格納されるため、ログインに必要な情報が流出する可能性が極めて低いです。また、仮に攻撃者が認証情報を取得したとしても、署名時に必要な秘密鍵を入手するのは困難です。さらに、一度しか使われないユニークな値であるチャレンジを使用するため、フィッシングやリプレイ攻撃にも強いという特徴があります。

デメリット

ハードウェアへの依存性

生体情報を用いる場合、認証器が生体認証などに対応できる必要があります。そのため、導入に関してはコストが発生する可能性があります。また、実装の複雑化も起こり得ます。

デバイス紛失時のリスク

パスワード認証と異なり、デバイス側に認証情報が格納されるため、デバイスを紛失した際にはすぐに復旧することが難しいという面があります。

普及率の低さ

比較的新しい技術であるために、まだまだ普及率が低めです。

まとめ

今回はWebAuthnについてざっくり記述いたしました。
セキスぺの過去問でもちらほら目にするこの技術。令和5年度の午後問でもWebAuthnの仕組みそのものを問われる設問がありました。
上述の通り比較的新しい技術なので試験前に押さえておきたいですね!

参考

10
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?