Pokaż się, pozostając w ukryciu — Anonimowe poświadczenia w protokole KILT
Suwerenność i prywatność danych zyskały duże znaczenie w ostatnich latach, ale na rynku brakuje powszechnych i użytecznych rozwiązań. Anonimowe poświadczenia to rodzaj poświadczeń cyfrowych, które podmioty mogą uzyskać od zaufanych podmiotów uwierzytelniających (wystawców) i pokazać je wielu weryfikatorom bez konieczności ujawniania jakichkolwiek informacji umożliwiających identyfikację. Identyfikacja osoby posługującej się poświadczeniem anonimowym nie będzie możliwa nawet w przypadku zmowy weryfikatorów. W poniższym artykule przedstawiamy PORTABLEGABI, bibliotekę anonimowych danych uwierzytelniających opartą na atrybutach, którą opracowaliśmy w ramach grantu, który otrzymaliśmy od Fundacji Web3.
Protokół KILT umożliwia weryfikowalne poświadczenia cyfrowe dla sieci Web 3.0
Mówi się, że w Internecie wszyscy jesteśmy anonimowi. Możemy jednak rozwiązać ten podstawowy problem za pomocą prostej koncepcji odwołalnych poświadczeń, w której zgłaszający roszczą sobie określone atrybuty (dane), zaufane podmioty (wystawcy) potwierdzają te dane, a weryfikatorzy identyfikują zgłaszających za pomocą rozwiązań kryptograficznych (aby uzyskać bardziej szczegółowy opis procesu, zapoznaj się z wyjaśnieniem na naszej stronie internetowej). Zasadniczo KILT jest protokołem typu open source dla systemów poświadczeń, w których dane przybierają postać poświadczeń (certyfikatów), które potwierdzają pewne dane dotyczące podmiotu, np. „Jestem członkiem fair-trade ” lub „Jestem członkiem siłowni SuperFit”.
Poświadczenia w KILT digitalizują model uwierzytelniania i autoryzacji z prawdziwego świata. Od setek lat koncepcja materialnych poświadczeń offline (np. Paszportu, dowodu) umożliwia użytkownikom potwierdzenie swojej tożsamości, poświadczenia te są często wyposażone w datę wygaśnięcia, w celu zasygnalizowania terminu ważności. Ponadto, gdy policjant sprawdza prawo jazdy podczas kontroli, musi zapytać centralną bazę danych, aby sprawdzić, czy prawo jazdy jest nadal ważne lub cofnięte z jakiegokolwiek powodu. W szybko zmieniającym się świecie cyfrowym i większej szybkości zmiany uprawnień mamy ogromne zapotrzebowanie na takie poświadczenia w postaci cyfrowej.
Odwoływalne poświadczenia w KILT
W obecnych rozwiązaniach dotyczących poświadczeń organ wydający (wystawca) uruchamia usługę weryfikacji statusu poświadczeń. Oznacza to, że kiedy wnioskodawca przedstawia swoje poświadczenie do weryfikacji, weryfikator musi zapytać organ, który wydał poświadczenie, czy jest ono nadal ważne.
Prowadzi to do ograniczenia prywatności zgłaszającego roszczenie, ponieważ osoba wystawca, może uzyskać informacje o transakcji lub usłudze, w której uczestniczy zgłaszający. Ponadto taki system wprowadza możliwość awarii w procesie weryfikacji (single point of failure), a organ wydający musi upewnić się, że usługa sprawdzania unieważnień jest zawsze uruchomiona. Ustanowienie takiej usługi o wysokiej dostępności może być bardzo skomplikowane technicznie i chociaż duże korporacje mają na to zasoby, małe firmy i osoby fizyczne, które chciałyby prowadzić działalność w zdecentralizowanej sieci Web 3.0, powinny mieć prostszą alternatywę.
W KILT przenosimy scentralizowane listy odwołań i usługę sprawdzania statusu z serwerów organu wydającego do zdecentralizowanej listy odwołań, którą jest KILT Blockchain. Dzięki temu możemy wyeliminować problem awarii (single point of failure). Nawet jeśli organ wydający poświadczenie zostanie zaatakowany, weryfikator nadal może sprawdzić status poświadczeń w KILT Blockchain.
Proces przepływu poświadczeń pokazano na powyższym rysunku. Organ wydający po otrzymaniu roszczenia sprawdza jego ważność i wystawia poświadczenie na jego podstawie. Ponadto organ wydający tworzy kryptograficzny zbiór kontrolny tzw „hash” i przechowuje go w łańcuchu KILT wraz ze statusem (ważny/nieważny).
Hash ma następujące właściwości:
- Hash można łatwo i jednoznacznie określić na podstawie danych uwierzytelniających.
- Prawdopodobieństwo, że dwa różne poświadczenia spowodują utworzenie tego samego hash jest znikome.
- Niemal niemożliwe jest odtworzyć poświadczenie z hash.
Jeśli otrzymaliśmy poświadczenie, możemy łatwo użyć hash i sprawdzić jego ważność. Dzięki temu mamy pewność, że sprawdzamy odpowiedni wpis w KILT Blockchain. Ponadto, podczas ataku na Blockchain, nie ma możliwości odtworzenia poświadczenia na podstawie hash, a tym samym zdobycia np.: danych osobowych przez osoby nieuprawnione.
Należy zauważyć, że organ wydający poświadczenie nadal będzie musiał uruchomić bazę danych, aby przechowywać informacje, które odwzorowują pewne możliwe do zidentyfikowania informacje zgłaszającego roszczenie do skrótu, aby móc odwołać odpowiednie poświadczenie, jeśli jest to wymagane. W najprostszym przypadku ta baza danych może być prostą aplikacją organu o funkcjonalności podobnej do menedżera haseł, w której aplikacja przechowuje mapowanie: konto i hasło. Organ może następnie po prostu odwołać poświadczenie w łańcuchu z aplikacją.
Co sprawia, że poświadczenia KILT są anonimowe i dlaczego tak ich potrzebujemy?
Jeśli dokładnie przyjrzysz się odwołalnym poświadczeniom opisanym powyżej, możesz zauważyć, że istnieje niewielki problem z prywatnością. Mianowicie, gdy zgłaszający wysyła swoje poświadczenia do wielu weryfikatorów, weryfikatorzy ci otrzymaliby tę samą wartość skrótu odpowiadającą poświadczeniom, dzięki czemu mogliby porównać wartości skrótu między sobą i dowiedzieć się, że mają do czynienia z tym samym zgłaszającym. Ponadto jeden weryfikator może śledzić zachowanie użytkownika w różnych sesjach za pomocą tej samej wartości skrótu poświadczeń. Powszechnie wiadomo, że w obecnych czasach większość stron internetowych zbiera i udostępniania dane klientów, a większość użytkowników o tym nie wie lub po prostu zgadza się na to.
Te niedociągnięcia są oczywiście problematyczne przy opracowywaniu prawdziwie prywatnego systemu uwierzytelniania i powodują trudności dla dwóch konkretnych przypadków użycia, które są obecnie wdrażane z protokołem KILT: Security tokens oferowanych przez SWARM i biletów komunikacji miejskiej opartych na blockchain od UNITB.
SWARM buduje otwartą infrastrukturę dla powstającej cyfrowej gospodarki papierów wartościowych, w której użytkownicy mogą inwestować w projekty lub brać udział na wstępnych etapach. Ponieważ wiele z tych projektów jest połączonych z publicznymi blockchain w taki czy inny sposób, zachowanie inwestora można łatwo śledzić w różnych systemach. Inwestor, jako zgłaszający w protokole KILT, nie powinien być zmuszony do dzielenia się swoją działalnością inwestycyjną z wieloma projektami (weryfikatorami), ale nadal mógłby im udowodnić, że jest w stanie prowadzić działalność związaną z inwestycjami w określonym kraju lub jurysdykcji.
UNITB opracowuje oparty na blockchain system biletów komunikacji miejskiej z protokołem KILT. W idealnym świecie, użytkownik powinien móc kupić bilet i zweryfikować go na odpowiedniej stacji, na której wsiadają lub w drodze, bez informowania władz dokładnie o trasie, którą jechał. Taki system zmniejszyłby ryzyko, że organy będą gromadzić dane dotyczące zwyczajów podróżujących w transporcie publicznym, celów podróży lub czasu podróży.
PORTABLEGABI, pakiet anonimowych poświadczeń w KILT
W KILT Protocol chcieliśmy mieć pewność, że tożsamość może pozostać całkowicie anonimowa, dlatego wdrożyliśmy rozwiązanie open source o nazwie PORTABLEGABI oparte na bibliotece Gabi. Biblioteka PORTABLEGABI zapewnia łatwy w użyciu interfejs API Typescript do podpisywania, weryfikowania i odwoływania poświadczeń. Stworzyliśmy PORTABLEGABI w sposób modułowy, aby cały ekosystem Polkadot mógł z niego łatwo korzystać i zintegrowaliśmy go również z naszym własnym KILT SDK.
Jak czytaliście powyżej, przy użyciu protokołu KILT zgłaszający, który posiada poświadczenie, może udowodnić stronie trzeciej (weryfikator), że określone właściwości są obecne w jej poświadczeniu, które zostało podpisane i poświadczone przez zaufanego poświadczającego. Ważnymi zaletami PORTABLEGABI są wybiórcze ujawnianie i brak możliwości łączenia: Zgłaszający może wybrać, które dane swojego poświadczenia mają być widoczne, aby ukryć wszystkie inne dane, a nawet zachować anonimowość podczas weryfikacji.
Wybiórcze ujawnienie umożliwia zgłaszającemu przedstawienie tylko części informacji zawartych w poświadczeniu. W protokole KILT, istnieje specjalny rodzaj poświadczenia (CTYPE) , który definiuje, jaki typ danych powinien być zawarty w poświadczeniu. Dzięki bibliotece PORTABLEGABI możemy umieścić dowolny typ danych w poświadczeniu, organy wydające mogą wykorzystać tę bibliotekę do tworzenia dowodów na atrybuty jako formy poświadczenia.
Z drugiej strony, brak możliwości łączenia utrudnia weryfikatorowi połączenie dwóch sesji weryfikacyjnych tego samego zgłaszającego z jedną tożsamością, a zatem weryfikator nie dowiaduje się o użytkowniku niczego poza celowo udostępnianymi danymi niezbędnymi do odpowiedniego procesu weryfikacji. W praktyce oznacza to, że zgłaszający może wchodzić w interakcje z tym samym weryfikatorem wiele razy, a weryfikator nie jest w stanie stwierdzić, czy rozmawiał z tym samym zgłaszającym. Weryfikator będzie mógł połączyć ze sobą wiele sesji, tylko jeśli wnioskodawca postanowi ujawnić dane, które jednoznacznie go identyfikują,
Zwykle w świecie cyfrowym pokazywanie to także kopiowanie. Aby zapobiec kopiowaniu, PORTABLEGABI wprowadza koncepcję prezentacji poświadczeń specyficznych dla transakcji. Prezentacja poświadczeń łączy się z zamierzoną transakcją i protokołem. W ten sposób przedstawione poświadczenia nie mogą być ponownie wykorzystane w złośliwy sposób, ponieważ okazałyby się nieważne do innych transakcji i celów.
Pakiet poświadczeń PORTABLEGABI zapewnia również schemat obsługi unieważniania poświadczeń za pomocą rozproszonej księgi bez narażania anonimowości zgłaszającego. Każde poświadczenie zawiera świadka nieodwołanego, który dowodzi, że poświadczenie nie zostało cofnięte. Każdy świadek jest domyślnie zawarty w zbiorze matematycznym zapisanym na łańcuchu blokowym opartym na Substrate, np. KILT Blockchain. Jeśli wystawca chce cofnąć zaświadczenie, usuwa świadka ze zbioru i aktualizuje łańcuch bloków nowym zbiorem.
W tym artykule przedstawiliśmy ogólne koncepcje i funkcje anonimowych poświadczeń zapewniane przez bibliotekę PORTABLEGABI. Jeśli chcesz zrozumieć szczegóły techniczne naszego pakietu anonimowych poświadczeń, po prostu zagłęb się bardziej i przejdź przez nasz samouczek, który wyjaśnia, w jaki sposób organy wydające poświadczenia mogą wystawiać poświadczenia za pomocą zbiorów na łańcuchu oraz jak działa odwołanie i weryfikacja.
Artykuł w oryginalnej wersji dostepny pod tym linkiem:
https://kilt-protocol.medium.com/show-yourself-but-stay-hidden-45705158935
Tłumaczenie wykonane przez członka Elevate Community Ventures — MickChep
Kilt Protocol — linki
- Website (https://www.kilt.io/
- KILT Announcements Channel (https://t.me/KiltProtocol)
- KILT Community Chat (https://t.me/kiltprotocolchat)
- KILT Twitter (https://twitter.com/Kiltprotocol)
- KILT Linkedin (https://www.linkedin.com/company/kilt-protocol/)
- KILT Medium (https://kilt-protocol.medium.com/)
- KILT Youtube (https://www.youtube.com/channel/UC5ihHD8UyGGx0oLZt78429w)
- KILT Riot.IM (https://riot.im/app/#/group/+kilt-community:matrix.org)
- White Paper (https://www.kilt.io/wp-content/uploads/2020/01/KILT-White-Paper-v2020-Jan-15.pdf)
- Github (https://github.com/KILTprotocol)