Dane uwierzytelniające sesji powiązanej z urządzeniem (DBSC) to nowa funkcja internetowa, która ma chronić sesje użytkowników przed kradzieżą plików cookie i przejęciem sesji. Ta funkcja jest teraz dostępna do testowania w ramach Origin Trial w Chrome 135.
Tło
Pliki cookie odgrywają kluczową rolę w nowoczesnym uwierzytelnianiu w internecie, ponieważ umożliwiają użytkownikom pozostawanie zalogowanym w trakcie sesji przeglądania. Jednak coraz częściej atakujący wykorzystują skradzione pliki cookie uwierzytelniania do przejęcia sesji, omijając uwierzytelnianie wielopoziomowe i inne mechanizmy zabezpieczeń logowania.
Operatorzy złośliwego oprogramowania często wydobywają pliki cookie sesji z zainfekowanych urządzeń, umożliwiając w ten sposób nieautoryzowany dostęp do kont użytkowników. Ponieważ pliki cookie są tokenami tożsamości, umożliwiają dostęp bez konieczności przedstawiania dowodu posiadania, co czyni je atrakcyjnym celem dla hakerów.
Dane uwierzytelniające sesji powiązane z urządzeniem (DBSC) mają na celu zapobieganie kradzieży plików cookie przez tworzenie sesji uwierzytelnionej powiązanej z urządzeniem. Takie podejście zmniejsza ryzyko, że wycieknięte pliki cookie uzyskają dostęp do kont na innym urządzeniu.
Jak to działa
DBSC wprowadza nowy interfejs API, który umożliwia serwerom tworzenie uwierzytelnionej sesji powiązanej z urządzeniem. Po rozpoczęciu sesji przeglądarka generuje parę kluczy publiczno-prywatnych, a klucz prywatny przechowuje bezpiecznie za pomocą pamięci masowej obsługiwanej przez sprzęt, np. modułu TPM (Trusted Platform Module).
Następnie przeglądarka wygeneruje zwykły plik cookie sesji. Podczas trwania sesji przeglądarka okresowo potwierdza posiadanie klucza prywatnego i odświeża plik cookie sesji. Czas życia pliku cookie można ustawić na tyle krótki, że kradzież pliku nie będzie dla atakujących korzystna.
Kluczowe komponenty
Rejestracja na sesję:
- Gdy użytkownik się zaloguje, serwer prosi o sesję powiązaną z urządzeniem, używając nagłówka HTTP
Sec-Session-Registration
. - Przeglądarka wygeneruje nową parę kluczy, bezpiecznie przechowując klucz prywatny.
- Tworzony jest też krótkotrwały plik cookie uwierzytelniania, który jest powiązany z tą parą kluczy.
- Serwer łączy sesję z odpowiednim kluczem publicznym, dzięki czemu można jej używać tylko na pierwotnym urządzeniu.
- Gdy użytkownik się zaloguje, serwer prosi o sesję powiązaną z urządzeniem, używając nagłówka HTTP
Odświeżanie sesji i potwierdzenie posiadania:
- Gdy krótkie pliki cookie wygasną, Chrome powoduje odświeżenie sesji.
- Przeglądarka wysyła żądanie do punktu końcowego odświeżania zdefiniowanego przez serwer (podawanego podczas rejestracji sesji) oraz, jeśli serwer go udostępnia, podpisane wyzwanie za pomocą nagłówka
Sec-Session-Challenge
. - Serwer weryfikuje dowód posiadania, sprawdzając odpowiedź podpisaną kluczem prywatnym sesji.
- Jeśli jest prawidłowy, serwer wygeneruje nowy krótkotrwały plik cookie, który pozwoli kontynuować sesję.
Jedną z zalet tego podejścia jest to, że Chrome opóźnia żądania, które w przeciwnym razie nie miałyby odświeżonego krótkotrwałego pliku cookie. Dzięki temu pliki cookie związane z sesją są stale dostępne przez całą sesję, a deweloperzy mogą z nich korzystać z większym przekonaniem niż w przypadku podejścia, w którym pliki cookie mogą wygasnąć lub zniknąć bez automatycznego odnowienia.
Przykładowa implementacja
Serwer może poprosić o sesję związaną z urządzeniem w ten sposób:
HTTP/1.1 200 OK
Sec-Session-Registration: (ES256);path="/refresh";challenge="12345"
Gdy sesja jest aktywna, serwer może ją zweryfikować za pomocą wymiany zadań i odpowiedzi:
HTTP/1.1 401 Unauthorized
Sec-Session-Challenge: "verify-session"
Przeglądarka odpowiada:
POST /refresh
Sec-Session-Response: "signed-proof"
Zalety
- Ograniczenie kradzieży plików cookie: nawet jeśli pliki cookie sesji zostaną skradzione, nie można ich użyć na innym urządzeniu.
- Zwiększa bezpieczeństwo bez wprowadzania istotnych zmian w UX: działa w tle bez konieczności dodatkowej interakcji z użytkownikiem.
- Zmniejszenie zależności od długotrwałych plików cookie sesji: pliki cookie o krótkim czasie życia są automatycznie odświeżane, dopóki sesja jest ważna na oryginalnym urządzeniu.
- Obsługuje standardowe mechanizmy kryptograficzne: korzysta z zabezpieczonego magazynu danych chronionego przez moduł TPM (jeśli jest dostępny), co zapewnia silną ochronę przed wyciekiem danych.
Kwestie związane z ochroną prywatności i bezpieczeństwem
DBSC ma na celu zwiększenie bezpieczeństwa przy jednoczesnym zachowaniu prywatności użytkowników:
- Brak dodatkowych wektorów śledzenia: każda sesja jest powiązana z unikalną parą kluczy, co zapobiega śledzeniu w różnych sesjach.
- Brak długoterminowego identyfikowania urządzenia: serwery nie mogą korelować różnych sesji na tym samym urządzeniu, chyba że użytkownik wyraźnie na to zezwoli.
- Możliwość usunięcia przez użytkowników: sesje i klucze są usuwane, gdy użytkownik usunie dane witryny.
- Zgodność z zasadami dotyczącymi plików cookie: DBSC stosuje takie samo ograniczenie zakresu działania jak pliki cookie, co zapewnia, że nie dochodzi do wycieków danych między domenami.
Wypróbuj
Testowanie wersji próbnej Origin z danymi uwierzytelniania sesji powiązanych z urządzeniem jest dostępne od wersji Chrome 135.
Testowanie lokalne
Aby przetestować DBSC lokalnie:
- Otwórz
chrome://flags#device-bound-session-credentials
i włącz tę funkcję.
Testowanie publiczne
Aby przetestować DBSC z testem źródła w środowisku publicznym:
- Otwórz stronę Chrome Origin Trials i zarejestruj się.
Dodaj podany token do nagłówków HTTP witryny:
Origin-Trial: <your-trial-token>
Zasoby
- Specyfikacja danych uwierzytelniających sesji powiązanych z urządzeniem
- Repozytorium GitHub dla DBSC
- Przewodnik po integracji danych uwierzytelniających sesji powiązanych z urządzeniem (DBSC)
Weź udział w kształtowaniu przyszłości bezpieczeństwa w internecie
Dołącz do nas i pomóż nam zwiększyć bezpieczeństwo uwierzytelniania w internecie. Zachęcamy deweloperów do przetestowania DBSC, zintegrowania go z aplikacją i przesłania opinii. Możesz się z nami skontaktować na GitHub lub wziąć udział w dyskusjach z grupą roboczą ds. bezpieczeństwa aplikacji internetowych.
Dzięki wdrożeniu DBSC możemy wspólnie zmniejszyć ryzyko przejęcia sesji i zwiększyć bezpieczeństwo uwierzytelniania użytkowników. Zacznij już dziś i pomóż nam określić przyszłość bezpieczeństwa w internecie.