Protokół łamigłówki wycieczki z przewodnikiem

Protokół Guided Tour Puzzle (GTP) to protokół kryptograficzny służący do łagodzenia ataków typu „odmowa usługi” w warstwie aplikacji . Ma na celu przezwyciężenie wad protokołów puzzli opartych na obliczeniach , w których klienci są zobowiązani do obliczania zagadek związanych z twardym procesorem lub pamięcią, które faworyzują klientów z obfitymi zasobami obliczeniowymi. Protokół łamigłówki z przewodnikiem może być postrzegany jako forma protokołu dowodu pracy (POW).

Przegląd

Etapy protokołu w protokole łamigłówki wycieczki z przewodnikiem są podobne do protokołu łamigłówki klienta. Wszyscy klienci są zobowiązani do rozwiązania zagadki wycieczki z przewodnikiem przed otrzymaniem usługi z serwera , jeśli serwer podejrzewa, że ​​jest obecnie atakowany w celu odmowy usługi lub jego obciążenie przekracza określony próg. Mówiąc najprościej, wycieczka z przewodnikiem to wycieczka, którą należy ukończyć, odbywając wiele podróży w obie strony do zestawu specjalnych węzłów, zwanych przewodnikami , w kolejności sekwencyjnej. Nazywa się to wycieczką z przewodnikiem , ponieważ kolejność zwiedzania przewodników jest nieznana klientowi, a każdy przewodnik musi skierować klienta do następnego przewodnika, aby klient ukończył oprowadzanie we właściwej kolejności. Pojedynczy przewodnik może pojawiać się wielokrotnie podczas wycieczki, dlatego termin przystanek jest używany do określenia pojedynczego pojawienia się przewodnika podczas wycieczki. Klient wie, który przewodnik jest na następnym przystanku, dopiero po zakończeniu wizyty na bieżącym przystanku. [ potrzebne źródło ]

Rozwiązanie zagadki związanej z wycieczką z przewodnikiem jest zasadniczo równoznaczne z ukończeniem wycieczki z przewodnikiem we właściwej kolejności. Począwszy od pierwszego przystanku, klient kontaktuje się z każdym przystankiem i otrzymuje odpowiedź. Każda odpowiedź zawiera unikalny token. Token w wiadomości zwrotnej z aktualnego przystanku służy do obliczenia adresu następnego przystanku przewodnika. Adres przewodnika pierwszego przystanku jest obliczany na podstawie tokena zawartego w pierwszej wiadomości zwrotnej serwera, która informuje klienta o rozpoczęciu procesu układania puzzli. [ potrzebne źródło ]

Klient musi wysłać token otrzymany od przewodnika z obecnego przystanku do przewodnika z następnym przystankiem, który użyje go jako danych wejściowych do funkcji obliczania tokena. Token otrzymany od przewodnika z ostatniego przystanku oraz token z wiadomości puzzli serwera są wysyłane na serwer jako dowód ukończenia wycieczki. Serwer może skutecznie zweryfikować te dwa tokeny i świadczy usługę klientowi dopiero po udowodnieniu ich ważności. [ potrzebne źródło ]

Kroki protokołu

Przykład układanki wycieczki z przewodnikiem, gdy liczba przewodników wynosi 2, a długość wycieczki wynosi 5. Kolejność wycieczki jest następująca: G1 -> G0 -> G1 -> G1 -> G0.

zagadka wycieczki z przewodnikiem będzie mogła się rozpocząć, systemie należy skonfigurować przewodników, gdzie . W międzyczasie serwer ustanawia z przewodnikiem za pomocą bezpiecznego kanału, gdzie . The server keeps a short-lived secret do obliczania pierwszej wartości skrótu, która jest zwracana klientowi jako część wiadomości układanki. Wiadomość z puzzlami również długość trasy która służy do kontrolowania trudności układanki z przewodnikiem. Rysunek przedstawia przykład wycieczki z przewodnikiem, gdy i i .

Poniżej wyjaśniono szczegóły każdego etapu protokołu w protokole układanki z przewodnikiem.

  • usługi : Klient wysyła usługi do serwera. Jeśli obciążenie serwera jest normalne, żądanie klienta jest obsługiwane jak zwykle; jeśli serwer jest przeciążony, przechodzi do początkowego etapu generowania puzzli .
  • Początkowe generowanie puzzli : serwer odpowiada klientowi wiadomością z , która informuje klienta o ukończeniu wycieczki z przewodnikiem układanki zawiera długość i skrótu Serwer oblicza przy użyciu następującego wzoru:
gdzie, oznacza konkatenację, to adres (lub dowolna unikalna wartość) klienta, ZA x {\ displaystyle A_ {x}} , znacznikiem czasu i jest taką jak SHA- .
  • Rozwiązywanie zagadek : klient oblicza indeks przewodnika na swojej wycieczki, korzystając z następującego wzoru:
gdzie, . Gdy kontaktuje się z klientem , przewodnik turystyczny wartość skrótu ) korzystając ze wzoru:
gdzie -ty przystanek wycieczki klienta, między przewodnikiem a . Po kliencie odpowiedź serwera, rozpoczyna wycieczkę z przewodnikiem, obliczając indeks przewodnika za pomocą wzoru na . klient wysyła zestaw wartości ( , ) do przewodnika , gdzie druga wartość oznacza, na którym przystanku wycieczki aktualnie znajduje się klient. odpowiedzi klient otrzymuje wartość skrótu , gdzie jest obliczany przy użyciu wzoru na . Klient powtarza ten proces przewodnikami . Wiadomość zwrotna od przewodnika z ostatniego przystanku wartość skrótu a klient wysyła ( ) do serwera jako odpowiedź na zagadkę.
{
  • Weryfikacja puzzli : gdy serwer otrzymuje żądanie od klienta odpowiedzią na zagadkę ( L załączeniu najpierw sprawdza, czy równe wartości obliczonej przy użyciu wzoru na . tak, serwer oblicza wielokrotnie używając formuły dla sprawdza, czy jest równa . Jeśli obie wartości skrótu są prawidłowe, serwer przydziela zasoby do przetworzenia żądania klienta. Ponieważ serwer zna współdzielone klucze , może obliczyć łańcuch skrótów żadnym przewodnikiem. Luźna synchronizacja czasu między serwerem a przewodnikami jest wymagana w celu obliczenia tej samej wartości skrótu na serwerze i przewodnikach.

Porównanie z innymi protokołami puzzli

Protokoły łamigłówek obliczeniowych związanych z procesorem, takie jak Client Puzzle Protocol , mogą złagodzić skutki ataku typu „odmowa usługi”, ponieważ im bardziej atakujący chce przeciążyć serwer, tym więcej zagadek musi obliczyć i tym bardziej musi wykorzystywać swoje własne zasoby obliczeniowe. Klienci o dużej mocy obliczeniowej mogą rozwiązywać zagadki znacznie szybciej niż klienci bez środków do życia i mogą w niepożądany sposób zajmować większość zasobów serwera.

Inną istotną wadą protokołów łamigłówek obliczeniowych jest to, że wszyscy klienci, w tym wszyscy legalni klienci, są zobowiązani do wykonywania takich obliczeń intensywnie wykorzystujących procesor, które nie przyczyniają się do żadnej znaczącej usługi lub aplikacji.

Protokół układanki z przewodnikiem wymusza opóźnienia na klientach poprzez opóźnienia w obie strony , dzięki czemu żądania klientów docierają z szybkością, która jest znośna dla serwera. Zaletą korzystania z opóźnień w obie strony, w przeciwieństwie do trudnych problemów obliczeniowych, jest to, że opóźnienie w obie strony małego pakietu jest określane głównie przez opóźnienia przetwarzania, opóźnienia kolejkowania i opóźnienia propagacji na routerach pośrednich , dlatego jest poza kontrolą hostów końcowych (klientów). W związku z tym nawet osoba atakująca dysponująca dużymi zasobami obliczeniowymi nie może przedkładać siebie nad źle wyposażonych legalnych klientów. [ potrzebne źródło ]

Co więcej, w protokole łamigłówki z przewodnikiem obliczenia wymagane od klienta są trywialne. Ponieważ długość wycieczki z przewodnikiem jest zwykle niewielka, rzędu dziesiątek lub mniej, narzut związany z przepustowością związany z ukończeniem wycieczki z przewodnikiem jest również niewielki. W rezultacie klienci nie są obciążani ciężkimi obliczeniami (które są zwykle wymagane przez protokoły puzzli związane z procesorem lub pamięcią). [ potrzebne źródło ]

Zobacz też

  1. ^ a b Mehmud Abliz i Taieb Znati. Zagadka z przewodnikiem do zapobiegania atakom typu „odmowa usługi”. W Proceedings of the Annual Computer Security Applications Conference (ACSAC) 2009 , strony 279-288, Honolulu, HI, grudzień 2009.
  2. ^ „Pułapki bezpieczeństwa cybernetycznego” . Zarchiwizowane od oryginału w dniu 21 sierpnia 2016 r . Źródło 2 sierpnia 2016 r .
  3. ^ Martin Abadi, Mike Burrows, Mark Manasse i Ted Wobber. Umiarkowanie trudne, ograniczone pamięcią funkcje. W Proceedings of NDSS 2003 , strony 25-39, 2003.
  4. ^ Cynthia Dwork, Andrew Goldberg i Moni Naor. O funkcjach związanych z pamięcią do walki ze spamem. W Proceedings of CRYPTO 2003 , strony 426-444, 2003.

Linki zewnętrzne