Holder binding wyjaśniony: dlaczego skopiowane poświadczenie jest bezwartościowe
Podpisane poświadczenie jest bardzo dobrą kopią samego siebie. Każdy, kto je zdobędzie, ma dokument z ważnym podpisem wydawcy, a sprawdzenie tego podpisu bez wahania potwierdzi, że jest autentyczny. Holder binding zamyka tę lukę: wiąże poświadczenie z kluczem, którego może użyć tylko jedna osoba, więc do jego przedstawienia nie wystarczy samo posiadanie.
Ta strona to wersja w prostym języku. Wyjaśnia, czym właściwie jest to powiązanie, kiedy powstaje, jak realizuje je każdy z dwóch europejskich formatów poświadczeń, oraz to, co większość objaśnień pomija: czego holder binding nadal nie mówi weryfikatorowi.
Problem, który rozwiązuje
Dokumenty cyfrowe kopiują się idealnie. Zdjęcie paszportu to marne fałszerstwo, bo papier ma cechy fizyczne, które fotokopia traci, ale podpisane poświadczenie nie ma żadnego takiego znaku. Skopiuj plik, a kopia przejdzie weryfikację dokładnie tak samo jak oryginał, bo podpis wydawcy obejmuje treść, a treść się nie zmieniła.
Weryfikator, który sprawdza tylko podpis wydawcy, odpowiada więc na niewłaściwe pytanie. Dowiedział się, że oświadczenia są autentyczne. Nie dowiedział się niczego o tym, czy strona przed nim ma do nich prawo, a zwykle właśnie to chciał wiedzieć.
Oświadczenia
Fakty, które stwierdza poświadczenie: imię i nazwisko, data urodzenia, kategoria prawa jazdy, numer firmy. To część, którą każdy sobie wyobraża, myśląc o poświadczeniu.
Podpis wydawcy
Dowód, że te fakty pochodzą od wydawcy i od tego czasu nie zostały zmienione. Nie mówi absolutnie nic o tym, kto je teraz posiada.
Klucz publiczny posiadacza
Element, który tworzy powiązanie. Wydawca wpisuje klucz publiczny posiadacza do podpisanego poświadczenia, więc poświadczenie wskazuje teraz klucz, który może je przedstawić.
Kiedy powiązanie powstaje i kiedy jest używane
Powiązanie powstaje raz, przy wydaniu, i jest wykorzystywane przy każdym okazaniu poświadczenia. Posiadacz nie widzi z tego nic poza prośbą o odblokowanie, której i tak się spodziewa.
1. Portfel tworzy klucz
Zanim o cokolwiek poprosi, portfel tworzy nową parę kluczy we własnym bezpiecznym sprzęcie telefonu. Części prywatnej nie da się odczytać, nawet aplikacji portfela.
2. Wydawca go wpisuje
Portfel wysyła część publiczną wraz z żądaniem i dowodzi, że posiada część prywatną. Wydawca umieszcza ten klucz publiczny w poświadczeniu przed jego podpisaniem.
3. Weryfikator pyta
Żądanie zawiera nową losową wartość i wskazuje, kto pyta, więc odpowiedzi można użyć tylko raz i tylko przez stronę, która o nią poprosiła.
4. Portfel podpisuje
Portfel podpisuje odpowiedź kluczem prywatnym, zwykle po odcisku palca lub PIN-ie. Weryfikator sprawdza ten podpis kluczem zawartym w poświadczeniu.
Gdzie naprawdę znajduje się klucz prywatny
Powiązanie jest dokładnie tak dobre, jak trudno jest użyć klucza bez posiadacza. Dlatego portfele generują te klucze w dedykowanym sprzęcie, czyli w secure element lub jego odpowiedniku, który chroni też dane płatnicze telefonu, zamiast przechowywać je w pliku, który system operacyjny może przekazać każdej aplikacji, która o to poprosi.
Weryfikator nie widzi niczego z tego w samej prezentacji. Podpis dowodzi, że klucza użyto, a nie że był dobrze chroniony. To, czy klucz rzeczywiście znajduje się w certyfikowanym sprzęcie, to osobna gwarancja, przenoszona przez atestacje, które portfel przedstawia wydawcy, zanim cokolwiek otrzyma, a w europejskich przepisach właśnie temu służą atestacja portfela i atestacja klucza.
Holder binding odpowiada na pytanie
Czy tę odpowiedź wygenerował klucz, dla którego wydano to poświadczenie, dla tego żądania, przed chwilą?
Atestacja klucza odpowiada na pytanie
Czy ten klucz jest przechowywany tam, skąd atakujący nie zdoła go wydobyć? Inne pytanie, inne dowody, rozstrzygane przy wydaniu.
Jak robią to dwa europejskie formaty
Idea jest taka sama w obu formatach, na których opiera się europejski portfel. Różni się mechanika, co ma znaczenie dla tego, kto implementuje weryfikatora, i dla prawie nikogo więcej.
SD-JWT VC
Wydawca umieszcza klucz publiczny posiadacza w oświadczeniu potwierdzającym wewnątrz podpisanego poświadczenia. Podczas prezentacji portfel dodaje mały, osobny token podpisany kluczem prywatnym, który obejmuje tożsamość weryfikatora i losową wartość z żądania. Weryfikator, który pomija ten token, sprawdził wydawcę i nic więcej.
Przeczytaj definicjęmdoc
Klucz urządzenia jest wskazany w podpisanym obiekcie chroniącym elementy danych, a telefon podpisuje zapis sesji, w której uczestniczy. Ponieważ ten zapis obejmuje wymianę między dwoma urządzeniami, nagrania jednej prezentacji nie da się odtworzyć w innej, i właśnie dlatego kontrola offline przy drodze czy przy drzwiach jest bezpieczna.
Przeczytaj definicjęPortfel w europejskim ekosystemie zwykle przechowuje to samo poświadczenie w obu formatach i przekazuje to, które rozumie druga strona, więc organizacja przyjmująca poświadczenia musi umieć sprawdzić powiązanie w obu.
Czego holder binding nie dowodzi
Holder binding dowodzi kontroli nad kluczem. Nie dowodzi, kto trzyma telefon. Ktoś, komu przekazano urządzenie i PIN, generuje dokładnie taką samą ważną odpowiedź jak prawowity posiadacz, a żadna kryptografia w poświadczeniu nie dostrzeże różnicy.
Nie mówi też nic o tym, jak starannie wydawca sprawdził tożsamość przed wydaniem. Poświadczenie powiązane z kluczem jest nadal tylko tak wiarygodne jak proces, który je utworzył, a do opisania tego służy Level of Assurance. Bardzo mocne powiązanie z kluczem słabo wydanego poświadczenia nie czyni zawartych w nim oświadczeń ani trochę prawdziwszymi.
Razem podział zadań jest dość jasny. Holder binding zapobiega odtwarzaniu i kopiowaniu, odblokowanie portfela wiąże klucz z obecnym człowiekiem, Level of Assurance opisuje, jak dobrze tego człowieka zidentyfikowano, a Trusted List mówi, których wydawców w ogóle akceptujesz. Weryfikator, który chce prawdziwej odpowiedzi, potrzebuje wszystkich czterech, a nie tylko tego, który przychodzi gratis z poświadczeniem.
Co to oznacza dla ciebie
Wydawca
Twoje poświadczenia stają się bezużyteczne dla każdego, kto ukradnie ich kopię, co eliminuje całą kategorię oszustw, które w przeciwnym razie trzeba by wykrywać po fakcie. Ceną jest gotowość do ponownego wydania za każdym razem, gdy posiadacz zmienia urządzenie.
Weryfikator
Sprawdzaj powiązanie, a nie tylko podpis wydawcy. Wysyłaj nową losową wartość z każdym żądaniem i odrzucaj odpowiedź, która jej nie podpisuje, w przeciwnym razie nagrana prezentacja może zostać później odtworzona u Ciebie.
Posiadacz portfela
Nic do zarządzania i jedna rzecz do zapamiętania: Twoje poświadczenia są powiązane z tym urządzeniem, więc nowy telefon oznacza ich ponowne uzyskanie, a nie przywrócenie z kopii zapasowej.
Powiązane pojęcia
Najczęściej zadawane pytania
Czy holder binding to to samo co key binding lub device binding?
W praktyce tak, a różne nazwy wynikają z różnych specyfikacji, a nie z różnicy znaczenia. Holder binding to właściwość: to poświadczenie należy do tego posiadacza. Key binding to nazwa mechanizmu w świecie SD-JWT VC, a strona ISO mówi o device binding lub device authentication, ponieważ klucz znajduje się w konkretnym telefonie. Jeśli dokument używa jednego z tych terminów, czytaj go jako tę samą ideę widzianą pod innym kątem.
Czy holder binding dowodzi, że osoba przedstawiająca poświadczenie jest jego podmiotem?
Nie, i to najczęstsze nieporozumienie. Dowodzi, że ten, kto wygenerował odpowiedź, kontroluje klucz, dla którego wydano poświadczenie. To, czy człowiek dotykający telefonu jest osobą opisaną w oświadczeniach, zależy od sposobu odblokowania portfela, od tego, jak starannie wydawca sprawdził tożsamość na początku, oraz od tego, czy posiadacz nie przekazał urządzenia i PIN-u komuś innemu. Przy weryfikacji o wysokiej stawce łączy się powiązanie z portfelem wymagającym biometrii i z poświadczeniem wydanym na poziomie Level of Assurance odpowiednim do ryzyka.
Co dzieje się z powiązanym poświadczeniem, gdy posiadacz zmienia telefon?
Nie przenosi się. Cały sens przechowywania klucza prywatnego w bezpiecznym sprzęcie polega na tym, że nie da się go wyeksportować, więc poświadczenia powiązanego ze starym telefonem nie można przywrócić na nowym i oczekiwać, że zadziała. Nowe urządzenie generuje własny klucz, a poświadczenie jest wydawane ponownie dla tego klucza. Traktuj ponowne wydanie jako normalne, częste zdarzenie, a nie wyjątek, bo dla Twoich użytkowników to po prostu dzień, w którym wymienili telefon.
Czy istnieją poświadczenia bez holder binding?
Tak, i mają swoje miejsce. Poświadczenie bez holder binding to poświadczenie na okaziciela: korzyść uzyskuje ten, kto je przedstawi, jak w przypadku papierowego biletu. To rozsądny kompromis dla czegoś o niskiej wartości i krótkiej ważności, gdzie koszt ponownego użycia kopii jest niewielki, a nie chcesz prosić posiadacza o odblokowanie czegokolwiek. To zły wybór w przypadku tożsamości, uprawnień i wszystkiego, co oszust uznałby za warte ponownego wykorzystania.
Źródła
- IETF SD-JWT-based Verifiable Digital Credentials (SD-JWT VC), wciąż w wersji roboczej
- OpenID for Verifiable Credential Issuance, o dowodzie posiadania klucza przy wydaniu
- OpenID for Verifiable Presentations, o powiązaniu odpowiedzi z jednym żądaniem
- ISO/IEC 18013-5, o uwierzytelnianiu urządzenia dla dokumentów mobilnych
Ta strona ma charakter informacyjny i nie stanowi porady prawnej. Wiążące brzmienie znajdziesz bezpośrednio w specyfikacjach.