PassKeys:一体何ですか?

William Shakespeare
William Shakespeareオリジナル
2025-03-09 10:44:11706ブラウズ

Passkeys: What the Heck and Why?

PassKeysは、革新的な認証方法として急速に牽引力を獲得しています。 W3C TPAC 2022で目立つように、Safari 16、MacOS、iOSに統合されており、1Passwordのようなパスワードマネージャーの標準になる態勢が整っています。 既にAndroidでサポートされている将来のリリースは、PassKey機能をChrome OSとWindowsにもたらします。

フロントエンドコミュニティではしばしば見落とされていますが、特に認証とフォーム処理に関するパスキーのユーザーエクスペリエンスへの影響は否定できません。 この記事では、PassKeysとWebauthn APIを調べて、この新しいテクノロジーの包括的な理解を提供します。

目次

キー用語
  • PassKeysの理解
  • PassKeys:パスワードの交換
  • 暗号化は説明されています
  • PassKeysへのアクセス
  • passkeys vs. webauthn
  • 認証プロセス:要約
  • PassKeyの実装の詳細
  • 潜在的な欠点
  • PassKeysの未来
  • さらなるリソース
  • キー用語

パスキーの世界をナビゲートするには、特定の用語に精通する必要があります。 いくつかの重要な概念を明確にしましょう:

    頼るパーティ(サーバー):
  • サーバーは認証要求を処理します。 この記事全体で「サーバー」を使用します クライアント:
  • Webブラウザーまたはオペレーティングシステム。
  • 認証者:
  • ソフトウェアまたはハードウェア公開キーペアの生成と保存。
  • fido:
  • fido資格情報を定義するオープンスタンダード組織。
  • webauthn:
  • PassKeysの基礎となるプロトコル(FIDO2資格情報または単一デバイスFIDO資格情報とも呼ばれます)。
  • passkeys:クラウド同期を備えたWebauthn(マルチデバイスFIDO資格情報、発見可能資格、または常駐資格情報)。
  • 公開キーの暗号化:署名/検証または暗号化/復号化のためにプライベートキーと公開キーのペアを使用するシステム(非対称暗号化)。
  • rsa:
  • 公開キー暗号化アルゴリズム。
  • 楕円曲線暗号化(ECC):
  • 現代の公開キー暗号化アルゴリズム。 es256:
  • sha256ハッシュを使用したECDSA署名アルゴリズムを使用した楕円曲線公開キー。
  • rs256:
  • PassKeysの理解
  • PassKeysについて議論する前に、Webauthn(FIDO2)を理解する必要があります。 PassKeysはWebAuthnに基づいて構築され、パスワードを置き換えるために公開キーの暗号化を活用します。 セキュリティデバイス(ハードウェアキーまたはTPM)は、プライベートキーとパブリックキーを生成します。

    公開キーは公然とアクセスできますが、秘密鍵は生成デバイスにしっかりと保存されたままです。 Webauthnの重要な制限は、デバイスの依存関係でした。デバイスを失うことは、アクセスを失うことを意味しました。 PassKeysは、クラウドの同期を介してこれに対処し、複数のデバイスにアクセスできるようにします。 ただし、単一デバイスの資格情報も存在することに注意することが重要です。

    現在、iOS、MacOS、およびAndroidは、ブラウザの互換性が依然として要因のままですが、クラウドシンクスパスキーを包括的にサポートしています。 Google Password ManagerとApple Icloudキーチェーンは、同期を促進します

    PassKeys:パスワードの交換

    公開キーの暗号化は

    署名

    を使用しています。 データは、署名アルゴリズムを介して秘密鍵を使用して処理され、公開キーを使用して検証されます。 誰でもキーペアを生成できますが、対応する公開キーで検証可能な署名を作成できます。 この署名はパスワードを置き換えます。 サーバーは公開キーを保存し、認証にはランダムな課題に署名することにより、秘密鍵の所有を確認することが含まれます。 このアプローチは、パスワード違反に関連するリスクを排除します。 データベースが侵害されている場合、パブリックキーのみが公開され、攻撃者には役に立たなくなります。 ブラウザが資格情報を覚えているため、ログインプロセスを簡素化するにつれて、忘れられたパスワードは過去のものになります。 生体認証またはピンはセキュリティを強化する可能性があります 暗号化は説明されています

    公開キーの暗号化は、プライベートキーと公開キーのペアを利用しています。 暗号化は、受信者の公開キーを使用して、受信者の秘密鍵のみが復号化できるようにします。これにより、

    機密性があります

    信ity性

    署名と検証を通じて保証されます。 送信者の秘密鍵は、送信者の公開鍵でのみ検証可能なメッセージのハッシュに署名します。 PassKeysへのアクセス アクセスには、Authenticator

    (ハードウェアまたはソフトウェア)によって促進されることが多いキー生成とストレージが必要です。 ソフトウェア認証者はTPMまたはセキュアエンクレーブを使用する場合がありますが、ハードウェア認証器にはYubikeysなどのデバイスが含まれます。

    Authenticator Protocol(CTAP)へのクライアントは、さまざまな方法(NFC、USB、Bluetooth)を介して認証器にアクセスするためのインターフェイスを提供します。 ユニークな機能は、ネイティブパスキーサポートのないデバイスの認証者として(Bluetooth経由)を使用することです。

    passkeys vs. webauthn

    PassKeys(Multi-Device)は、ストレージおよびログインプロセスのWebAuthnキー(単一デバイス)とは異なります。 WebAuthnにはユーザーハンドルとAllowCredentialsリストが必要です。PassKeysは、サーバーのドメイン名を利用して関連するキーを識別し、ログインプロセスを合理化します。 暗号化すると、それらは本質的に同一です。

    認証プロセス:要約

    WebauthnとPassKeyの両方の生成には、サーバーチャレンジを受信し、navigator.credentials.createを使用してキーペアを生成することが含まれます。公開キーはサーバーに送信されます。 ログインはnavigator.credentials.getを使用して新しいチャレンジに署名し、サーバーによって検証されます。

    PassKeyの実装の詳細

    PassKeyの使用には、(登録)および assertion(login)フェーズが含まれます 証明

    は証明の中心です。 オプション目的のキーペアを指定します:

    navigator.credentials.create応答には、公開キーと

    // ... (code snippet for PublicKeyCredentialCreationOptions) ...

    、およびclientDataJSONを含む)が含まれます。 サーバーはこのデータを検証し、公開キー、ID、およびオプションでtypeおよびCOSEアルゴリズムを保存します。 challengeアサーションorigin attestationObject

    ハンドルアサーション。

    応答には、署名とnavigator.credentials.get(原点のハッシュと

    を含む)が含まれます。 サーバーは、認証のために署名、
    // ... (code snippet for PublicKeyCredentialRequestOptions) ...
    、および

    を検証します。 authenticatorData潜在的な欠点signCount clientDataJSON現在の制限には、限られたオペレーティングシステムのサポート(特にWindowsとLinux)とGoogleとAppleのPassKeyプラットフォーム間の相互運用性の欠如が含まれます。 signCountPassKeysの未来

    広範なオペレーティングシステムの採用により、使用量が増加します。 パスワードマネージャーはPassKeyサポートを統合し、AndroidとiOSでのネイティブサポートはさらにその位置を固めます。 PassKeysは、パスワードレスの未来を約束し、セキュリティとユーザーエクスペリエンスを向上させます。

    さらなるリソース

    live demo

    デモGithubリポジトリ

    yubikeyドキュメント

      passkeys.dev
    • passkeys.io
    • webauthn.io

以上がPassKeys:一体何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。