Standardy · FIDO CTAP 2.2 hybrid (QR klucza dostępu)

Czy powinienem/powinnam skanować ten QR logowania kluczem dostępu?

Tylko jeśli SAM/SAMA właśnie zainicjował/a logowanie kluczem dostępu na urządzeniu wyświetlającym QR. Jeśli ktokolwiek inny wygenerował QR — nieznajomy, agent pomocy technicznej, rozmowa wsparcia — zeskanowanie go telefonem loguje ICH na Twoje konto, nie Ciebie. Otwarty standard protokołu (FIDO CTAP 2.2 hybrid) jest solidny; zagrożenie to socjotechnika wokół tego, kto pierwszy nacisnął przycisk Zaloguj się kluczem dostępu.

Sprawdź QR klucza dostępu → Wszystkie standardy →

Jak działa logowanie kluczem dostępu między urządzeniami

Klucz dostępu to poświadczenie — para kluczy publiczny/prywatny — powiązane z jednym z Twoich urządzeń. Jeśli zarejestrowałeś/aś klucz dostępu dla example.com na telefonie, tylko Twój telefon może podpisać wyzwanie logowania dla example.com.

Działa to dobrze, gdy logujesz się NA telefonie. Co jednak, gdy logujesz się na laptopie, który nie ma klucza dostępu dla tej strony? Możesz:

  1. Wpisz hasło — co niweczy cały sens kluczy dostępu.
  2. Zarejestruj nowy klucz dostępu na laptopie — w porządku, ale tylko jeśli ufasz temu laptopowi długoterminowo.
  3. Użyj klucza dostępu z telefonu przez transport cross-device — laptop wyświetla QR, telefon go skanuje, telefon podpisuje wyzwanie, przeglądarka laptopa odbiera wynik i jesteś zalogowany/a.

Opcja 3 to właśnie FIDO CTAP 2.2 hybrid. QR to punkt startowy — zawiera wystarczające informacje, by Twój telefon wykrył laptop przez Bluetooth Low Energy, ustanowił jednorazowy bezpieczny tunel i pośredniczył w ceremonii WebAuthn.

Co jest w środku QR

URI wygląda następująco:

FIDO:/0123456789012345678901234567890123456789...

Cyfry dziesiętne to kodowanie base10 mapy CBOR. Po dekodowaniu base10 i parsowaniu CBOR mapa ma klucze całkowite:

Klucz 0, klucz publiczny partnera

Bajty nieskompresowanego klucza publicznego X9.62 (33 bajty dla P-256). Telefon używa tego do ustanowienia zaszyfrowanego tunelu.

Klucz 1, sekret QR / nonce tunelu

10 bajtów losowych danych. Identyfikuje ten konkretny QR; ogłoszenie BLE rozgłasza jego hash, by telefon mógł znaleźć właściwy laptop.

Klucz 2, wskazówka operacji

0 = make-credential (rejestrowanie nowego klucza dostępu), 1 = get-assertion (logowanie), 2 = discoverable-credential.

Klucz 3, domena serwera tunelu

Host HTTPS pośredniczący w tunelu między dwoma urządzeniami, gdy bezpośrednie BLE jest niedostępne (np. przez NAT). Zazwyczaj serwer zarządzany przez dostawcę, jak cable.ua5v.com (Google) lub cable.auth.com (Apple/MS).

Klucz 4, znacznik czasu

Sekundy od epoki Unix w momencie wygenerowania QR. Służy do ochrony przed atakami powtórkowymi — telefon odmawia realizacji QR starszego niż kilka minut.

Klucz 5, flaga asysty stanu

Wartość logiczna. Wskazuje, czy laptop chce, by telefon uczestniczył w pasywnym przechowywaniu stanu (istotne głównie dla przepływów wyliczania poświadczeń).

Model zagrożeń: kto pierwszy nacisnął Zaloguj się kluczem dostępu?

Protokół jest kryptograficznie solidny. Kontrola bliskości Bluetooth jest realna i ogranicza atak do osoby fizycznie blisko Ciebie. Jak więc może pójść źle?

Przez socjotechnikę na etapie inicjacji. Atakujący rozpoczyna logowanie kluczem dostępu na TWOJE konto na SWOIM laptopie. Jego laptop wyświetla QR FIDO. Atakujący w jakiś sposób pokazuje Ci ten QR:

Jeśli zeskanujesz, Twój telefon przesyła Twój podpis klucza dostępu do przeglądarki na laptopie atakującego. Strona, dla której masz klucz dostępu, uznaje, że się zalogowałeś/aś. Atakujący jest teraz zalogowany na Twoje konto.

Kontrola bliskości nie pomaga — atakujący jest fizycznie obecny. Zawartość QR nie pomaga — jest kryptograficznie poprawna. Cel logowania nie pomaga — to właściwa strona, dla której masz klucz dostępu. Pomaga tylko rozpoznanie sytuacji: nigdy nie powinieneś/powinna skanować QR FIDO, którego nie wygenerowałeś/aś samodzielnie klikając Zaloguj się na własnym urządzeniu.

Co pokazuje nasz skaner

Po upuszczeniu QR FIDO do naszego skanera wynik pokazuje:

Klasa zagrożenia to zawsze podejrzany — nie dlatego, że protokół jest wadliwy, ale dlatego, że ocena bezpieczeństwa jest kontekstualna i skaner nie może wiedzieć, kto nacisnął Zaloguj się. Ujawnienie w wyniku mówi dokładnie tyle: skanowanie kończy logowanie, które KTOŚ ZAINICJOWAŁ NA INNYM URZĄDZENIU. Jeśli nie zainicjowałeś/aś logowania samodzielnie, odmów.

Kiedy jest bezpiecznie (a kiedy nie)

Bezpiecznie: usiadłeś/aś przy laptopie, otworzyłeś/aś stronę banku lub poczty, kliknąłeś/aś Zaloguj się kluczem dostępu i laptop wyświetlił QR. Bierzesz telefon, skanujesz QR, zatwierdzasz monit o bliskość. Gotowe.

Niebezpiecznie: ktokolwiek poza Tobą zainicjował logowanie. Dotyczy to kogoś przez telefon, kogoś podczas zdalnej pomocy, kogoś, kto przesłał QR e-mailem, kogoś, kto pokazał QR w celu weryfikacji tożsamości, oraz każdego QR w miejscu innym niż Twoje własne, właśnie wyświetlone urządzenie.

Jeśli nie masz pewności, czy QR pochodzi z logowania, które SAM/SAMA zainicjowałeś/aś, anuluj logowanie na oryginalnym urządzeniu (zamknij kartę przeglądarki), a następnie zacznij od nowa na urządzeniu, które zamierzałeś/aś użyć. Prawdziwe QR FIDO są ważne tylko przez ok. 10 minut — ponowne uruchomienie czyści każdą aktywną sesję i czyni zagrożenie niemożliwym.

Powiązane

Sprawdź QR FIDO

Upuść obraz lub wklej URI FIDO:. Wynik pokazuje operację, serwer tunelu, znacznik czasu i wyraźne ostrzeżenie o odmowie, jeśli nie zainicjowałeś/aś logowania samodzielnie.

Otwórz skaner →