キー0: ピア公開鍵
非圧縮X9.62公開鍵バイト(P-256の場合33バイト)。スマートフォンはこれを使って暗号化トンネルを確立します。
規格 · FIDO CTAP 2.2ハイブリッド(パスキーQR)
あなた自身がQRを表示しているデバイスでパスキーサインインを開始した場合のみ安全です。他の誰かがQRを生成した場合(見知らぬ人、「ヘルプデスク」担当者、テクニカルサポートの電話など)、スマートフォンでスキャンすると、あなたのアカウントにその人がサインインされてしまいます。プロトコルのオープン規格(FIDO CTAP 2.2ハイブリッド)は堅固です。脅威は「サインイン」ボタンを最初に押したのが誰かという、社会工学的な問題です。
パスキーは認証情報、つまり公開鍵/秘密鍵のペアで、あなたのデバイスのひとつに紐付けられています。スマートフォンでexample.comのパスキーを登録した場合、example.comのログインチャレンジに署名できるのはあなたのスマートフォンだけです。
スマートフォンでサインインする場合は問題ありません。しかし、そのサイトのパスキーを持っていないラップトップでサインインしようとするとどうなるでしょうか?選択肢は:
オプション3がFIDO CTAP 2.2「ハイブリッド」が定義していることです。QRはブートストラップであり、スマートフォンがBluetoothローエナジーを介してラップトップを発見し、ワンタイムセキュアトンネルを確立し、WebAuthn処理をプロキシするために必要な情報を含んでいます。
URIは次のようになります:
FIDO:/0123456789012345678901234567890123456789...
10進数はCBORマップのbase10エンコーディングです。base10デコード + CBORパース後、マップには整数キーがあります:
非圧縮X9.62公開鍵バイト(P-256の場合33バイト)。スマートフォンはこれを使って暗号化トンネルを確立します。
10バイトのランダムデータ。この特定のQRを識別します。BLEアドバタイズメントはそのハッシュをブロードキャストするので、スマートフォンが正しいラップトップを見つけられます。
0 = make-credential(新しいパスキーの登録)、1 = get-assertion(サインイン)、2 = discoverable-credential。
直接BLEが届かない場合(NATなど)に2デバイス間のトンネルをプロキシするHTTPSホスト。通常はベンダーが運営するサーバー(Googleのcable.ua5v.comやApple/MSのcable.auth.comなど)です。
QRが生成されたときのエポックからの秒数。リプレイ保護に使用されます。スマートフォンは数分以上古いQRの処理を拒否します。
ブール値。ラップトップがスマートフォンにパッシブ状態管理への参加を求めているかどうかを示します(主に資格情報列挙フローに関連)。
プロトコルは暗号学的に堅固です。Bluetooth近接チェックは本物で、攻撃を物理的に近くにいる人に限定します。では、どこで問題が起きるのでしょうか?
開始の段階での社会工学的な操作によって。攻撃者はあなたのアカウントへのパスキーサインインを自分のラップトップで開始します。そのラップトップにFIDO QRが表示されます。攻撃者はそのQRを何らかの形であなたの前に提示します:
スキャンすると、スマートフォンはあなたのパスキー署名を攻撃者のラップトップのブラウザにプロキシします。あなたがパスキーを持っているサイトは、あなたがサインインしたと判断します。攻撃者はあなたのアカウントにログインしています。
近接チェックは役立ちません。攻撃者が物理的にそこにいます。QRの内容も役立ちません。暗号的に有効です。ログイン先も役立ちません。あなたがパスキーを持っている正しいサイトです。唯一役立つのは状況を認識することです:自分のデバイスで「サインイン」をクリックして生成したFIDO QR以外は絶対にスキャンしてはいけません。
FIDOのQRを当スキャナーにドロップすると、判定に表示されます:
cable.ua5v.com、Appleのトンネルサーバーなど)?脅威クラスは常にsuspicious(疑わしい)です。プロトコルが壊れているからではなく、安全性の判断は状況によって異なり、スキャナーは誰が「サインイン」を押したかを知ることができないためです。判定の開示には正確にこう記されています:「スキャンすると、別のデバイスで誰かが開始したサインインが完了します。自分でログインを開始していない場合は拒否してください。」
安全:ラップトップに座り、銀行やメールサイトを開き、「パスキーでサインイン」をクリックし、ラップトップがQRを表示した。スマートフォンを手に取り、QRをスキャンし、近接プロンプトを承認。完了。
安全でない:あなた以外の誰かがサインインを開始した場合。電話越しの誰か、リモートサポート通話の誰か、QRをメールで送ってきた誰か、「本人確認のためのQR」を見せた誰か、そして自分の新しく表示したデバイス以外の場所にあるQRすべてが該当します。
QRが自分でサインインを開始したものかどうかわからない場合は、元のデバイスでサインインをキャンセル(ブラウザタブを閉じる)し、意図したデバイスで最初からやり直してください。本物のFIDO QRは約10分間しか有効ではありません。やり直すと進行中のセッションがフラッシュされ、脅威は不可能になります。
画像をドロップするかFIDO: URIを貼り付けてください。判定には操作、トンネルサーバー、タイムスタンプが表示され、自分でサインインを開始しない限り拒否するよう強く警告します。