見出し画像

Passkeyについて

事例研究とは、ある具体的な事例について、それを詳しく調べ、分析・研究して、その背後にある原理や法則性などを究明し、一般的な法則・理論を発見しようとする方法。
自分の関心のあるWebとセキュリティに関する研究をしたいと言って、情報セキュリティの研究室に入ったので、その筋を通すためにぴったりの事例がありました。

Passkeyとは

https://www.watch.impress.co.jp/docs/topic/1457233.html

Passkeyとは新しいパスワードレス認証方法です。
FIDO(ファイド)アライアンスとW3Cによって策定され、正式名称は「マルチデバイス対応FIDO認証資格情報(multi-device FIDO credential)」です。
2022年にApple, Google, Microsoftが対応

特徴

  • 生体要素所有要素(生成した秘密鍵)を必要とする二要素認証。

  • 公開鍵暗号方式を利用することで、サービス提供者側にすべてのログイン情報を登録する必要がない。
    また、サービス提供者側に保存された情報は公開鍵であるため、仮に情報が漏れたとしても秘密鍵がないとログインは不可能。

  • 指紋や顔といった生体認証を利用し、安全性と利便性を両立している

  • 従来のパスワード認証方法に比べて、フィッシング耐性が強い

    • 従来のパスワード認証は知識要素 + 所有要素(スマートフォンなどで受信したSMS情報など)で構成されてい流ためSMSなどによって得られたワンタイムパスワードでは被害者がフィッシングサイトを「本物」と信じきっているケースに対応できない(中間者攻撃のリスク)

    • Passkeyの認証資格情報は正規サイトのURL情報も保有しており、偽サイトへ情報が渡らない

  • パスワードを覚える必要がない

  • 認証資格情報は端末内のみでなく、AppleのiCloudキーチェーン、Google Chromeのパスワードマネージャなどのクラウド環境で保管される。
    これにより端末の破損紛失、機種変更などにおいても新端末への移行が簡単

    • しかし秘密鍵を含む認証資格情報をクラウドに保管するため、セキュリティリスクは当該クラウド環境に依存する。

技術概要

https://www.rworks.jp/cloud/azure/azure-column/azure-entry/27359/
  • FIDO2
    公開鍵暗号(公開鍵と秘密鍵を使用した暗号方式)と生体認証を用いたパスワードレス認証方法
    端末(スマートフォンなど)で生体認証を行い、認証された後に秘密鍵によって暗号化した電子署名をサーバへ送信。サーバは受信した電子署名を公開鍵で検証し、ログインを許可。生体認証自体は端末の中で閉じており、サーバや外部ネットワークへ送信されることはない。

  • WebAuthn
    FIDO2をWeb上で実現するAPI。FIDOが支援し、W3Cによって策定、標準化された。APIであるため、多くのWebサービスで実装可能。

  • Passkey(狭義)
    認証資格情報(マルチデバイス対応FIDO認証資格情報、Multi-Device FIDO Credential)を、クラウド経由で同期する仕組み。

    • 認証資格情報は端末内においてTEESEといった安全領域に格納される。

      • TEE: Trusted Execution Environment
        「秘密にしたいデータを信頼可能な領域に配置し、その信頼可能領域内でそのデータを用いた処理を完結させること」を実現させるハードウェア支援技術

      • SE: Secure Element
        耐タンパー性のプロセッサチップまたはセキュアコンポーネント内のセキュアオペレーティングシステム (OS) 。
        資産 (信頼のルート、機密データ、キー、証明書、アプリケーション) を高レベルのソフトウェアおよびハードウェア攻撃から保護できて、 SE上でこの機密データを処理するアプリケーションは分離されているため、OS 上の他の場所にあるソフトウェア (マルウェアの可能性を含む) の影響を受けず、制御された環境内で実行される。ハードウェアと組み込みソフトウェアは、セキュリティICプラットフォーム保護プロファイルの要件を満たしています。

つまり、FIDO2WebAuthnにより、Web上で生体認証を使ったパスワードレス認証を実現し、狭義のパスキーによって資格認証情報をクラウド経由で同期し、Passkeyは実現している。

使用方法

https://myaccount.google.com/signinoptions/passkeys
  1. 利用者は公開鍵と秘密鍵のペアを作成

  2. サービス提供者側に公開鍵を登録

  3. 利用者のデバイスに秘密鍵を保存。

  • ID/Passwordでアカウントへログイン

  • 「パスキーを作成」などの設定項目で、利用端末にて生体認証を実施。生体認証が成立すると端末内で秘密鍵を含む認証資格情報(マルチデバイス対応FIDO認証資格情報)が生成され、サーバ側へ送信。サーバで公開鍵が生成される。

  • 以後、ログイン時は生体認証を用いて端末内の認証資格情報を呼び出し、端末からサーバへ署名を送信することでログインが成立する。

公開鍵暗号方式を利用することで、サービス提供者側にすべてのログイン情報を登録する必要がありません。また、サービス提供者側に保存された情報は公開鍵であるため、仮に情報が漏れたとしても秘密鍵がないとログインは不可能です。

利用者が保存する秘密鍵は、デバイスごとに異なるものが生成されます。そのため、万が一盗み取られたとしても、ほかのデバイスではログインできません。

対応状況(一部)

2023年12月現在
Apple, Google, Microsoft, Yahoo! JAPAN, マネーフォワード, NTT docomo, mercari, Adobe, Github, TikTok, MIXI, nintendo, Amazon, Uberなどが対応

SSOとの違い

SSOとパスキーの違いを尋ねられた時にうまく答えられなかったので、双方の違いについても書いておきます。

SSOとは、シングルサインオンの略称で、一度のユーザ認証処理によって、独立した複数のソフトウェアシステム上のリソースが利用可能になる機能または環境です。
シングルサインオンによって、ユーザはシステムごとにユーザIDとパスワードの組を入力する必要がなくなります。

全く違いますね。パスキーはパスワードが必要ないですが、独立した複数のサービスに一度の認証で対応することはできません。

参考文献

この記事が気に入ったらサポートをしてみませんか?