Przejdź do głównej treści

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ć.

Nowa jest tylko trzecia część. Usuń ją, a zostanie poświadczenie na okaziciela, które działa dla każdego, kto je ma przy sobie.

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.

Kroki 1 i 2 odbywają się raz, przy wydaniu poświadczenia. Kroki 3 i 4 powtarzają się przy każdym jego okazaniu.

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

  1. IETF SD-JWT-based Verifiable Digital Credentials (SD-JWT VC), wciąż w wersji roboczej
  2. OpenID for Verifiable Credential Issuance, o dowodzie posiadania klucza przy wydaniu
  3. OpenID for Verifiable Presentations, o powiązaniu odpowiedzi z jednym żądaniem
  4. 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.

Porozmawiaj z nami o wydawaniu powiązanych poświadczeń