Klucz 0, klucz publiczny partnera
Bajty nieskompresowanego klucza publicznego X9.62 (33 bajty dla P-256). Telefon używa tego do ustanowienia zaszyfrowanego tunelu.
Standardy · FIDO CTAP 2.2 hybrid (QR klucza 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.
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:
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.
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:
Bajty nieskompresowanego klucza publicznego X9.62 (33 bajty dla P-256). Telefon używa tego do ustanowienia zaszyfrowanego 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.
0 = make-credential (rejestrowanie nowego klucza dostępu), 1 = get-assertion (logowanie), 2 = discoverable-credential.
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).
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.
Wartość logiczna. Wskazuje, czy laptop chce, by telefon uczestniczył w pasywnym przechowywaniu stanu (istotne głównie dla przepływów wyliczania poświadczeń).
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.
Po upuszczeniu QR FIDO do naszego skanera wynik pokazuje:
cable.ua5v.com, serwer tunelu Apple itp.)?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.
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.
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.