Passkey

簡単に言うと、FIDO2デバイスをクラウド上に保存して持ち歩く技術みたいなもの。

  • AndroidならGoogleアカウントに、iOSならiCloudに、WindowsならMicrosoftアカウントに、それぞれ秘密鍵等が共有される。

FIDO2とは何やねん

FIDO2は、公開鍵認証をより手軽にしたもの。基本的には物理デバイスで秘密鍵を管理するが、
今となっては定義が拡張されパスキーなどのクラウド保存もFIDO2に含まれる(要出典)

2022年にGoogle Apple Microsoftが共同声明を出したらしい。

なんか、逆に、同期パスキー・非同期パスキーという言葉があるらしく…
Appleは同期のみをパスキーとよんでいて、FIDOは両方パスキーとよんでいる。。。。

FIDO2は、ブラウザでパスキーを使うWebAuthnと、端末がパスキーを読み取るCTAPの2つの企画でできている。


主にECDSA P-256が使われている。
楕円曲線暗号

パスキーは、公開鍵暗号ではあるが、各サービスごとに鍵ペアを作成する。


パスキーでED25519があまり使われてない理由

そもそもECDSA P-256とED25519の違いはほとんど無い

ED25519の利点は、
パフォーマンスがいい(署名が2倍以上高速で、サーバーサイド、バッチ検証がある。)
署名生成時に乱数に依存を使用しないということくらいで
セキュリティ強度は変わらない。

※一応、パスキーでED25519は使える

WebAuthnでは、Ed25519も普通にサポートされている。
ただ、サイト運営側では最も普及しているECDSA P-256を必須にしてるパターンが多く、結果的にECDSA P-256が使われる場面が多くなっています。


以下Geminiさん

パスキーがECDSA P-256を主に使う理由

  1. FIDO U2Fからの歴史的経緯
    パスキーの基礎となった規格は、FIDOアライアンスが策定したU2F (Universal 2nd Factor) です。2014年頃に登場したこの規格では、セキュリティキーの暗号方式としてECDSA P-256が必須要件として定められました。当時、このアルゴリズムはハードウェアへの実装実績が豊富で、多くのチップが対応しており、安定した選択肢でした。

  2. 標準化と普及のタイミング
    U2FがWebAuthnとしてW3Cで標準化され、ブラウザやプラットフォームに広く実装される際、この「ECDSA P-256」が基本要件として引き継がれました。そのため、初期のセキュリティキーやプラットフォーム(Windows Hello, Touch IDなど)は、まずこのアルゴリズムに対応することから始まりました。

  3. NIST標準カーブの採用
    P-256は、米国国立標準技術研究所(NIST)によって標準化された暗号曲線の一つです。政府機関や多くの企業で採用実績があり、信頼性が高いと見なされていたことも、最初の標準として採用される後押しになりました。

SSHでEd25519が推奨される理由

一方、SSHでEd25519が人気なのは、より新しい技術で、いくつかの優れた特徴があるためです。

  1. 高いパフォーマンス
    Ed25519は、ECDSA P-256と比較して署名の生成と検証が高速です。

  2. 実装の安全性
    ECDSAは、署名生成時に質の悪い乱数を使うと秘密鍵が漏洩する脆弱性があり、安全な実装が少し難しいという側面があります。一方、Ed25519は署名生成が決定的(乱数に依存しない) であるため、この種の実装ミスによる脆弱性が原理的に発生しません。この安全性の高さが、ソフトウェアベースの鍵管理が多いSSHなどで特に評価されています。

  3. 特許の懸念がない
    Ed25519はパブリックドメインの技術であり、特許に関する懸念が一切ないクリーンなアルゴリズムとして設計されました。

まとめ

パスキー (ECDSA P-256)SSH (Ed25519)
背景FIDO U2F規格からの歴史的経緯。ハードウェアでの実装実績が豊富だった。より新しく、実装上の安全性を重視して設計された。
主な理由標準化の先行: 規格の初期段階で必須要件とされたため、デファクトスタンダードになった。実装の堅牢性: 乱数生成の失敗による脆弱性がなく、安全。
現状Ed25519も規格上は利用可能だが、互換性のためP-256が今も主流。パフォーマンスと安全性の観点から、新規作成時の第一推奨になっている。
Link to original