Protokół uwierzytelniania Challenge-Handshake
W informatyce protokół CHAP ( Challenge-Handshake Authentication Protocol ) jest protokołem uwierzytelniania używanym pierwotnie przez protokół PPP (Point-to-Point Protocol ) do sprawdzania poprawności użytkowników. CHAP jest również używany w innych protokołach uwierzytelniania, takich jak RADIUS i Diameter .
Prawie wszystkie sieciowe systemy operacyjne obsługują protokół PPP z CHAP, podobnie jak większość serwerów dostępu do sieci . CHAP jest również używany w PPPoE do uwierzytelniania użytkowników DSL.
Ponieważ protokół PPP wysyła dane niezaszyfrowane i „niezaszyfrowane”, protokół CHAP jest narażony na atak każdego atakującego, który może obserwować sesję PPP. Osoba atakująca może zobaczyć nazwę użytkownika, wyzwanie CHAP, odpowiedź CHAP i wszelkie inne informacje związane z sesją PPP. Atakujący może następnie przeprowadzić atak słownikowy w trybie offline w celu uzyskania oryginalnego hasła. Używany w PPP, CHAP zapewnia również ochronę przed atakami powtórkowymi ze strony peera poprzez użycie wyzwania generowanego przez wystawcę uwierzytelnienia, którym zazwyczaj jest serwer dostępu do sieci .
Jeśli CHAP jest używany w innych protokołach, może być wysyłany w postaci jawnej lub może być chroniony przez warstwę zabezpieczeń, taką jak Transport Layer Security (TLS). Na przykład, gdy CHAP jest wysyłany przez RADIUS przy użyciu User Datagram Protocol (UDP), każdy atakujący, który widzi pakiety RADIUS, może przeprowadzić atak słownikowy offline , tak jak w przypadku PPP.
Protokół CHAP wymaga, aby zarówno klient, jak i serwer znali wersję hasła w postaci zwykłego tekstu, chociaż samo hasło nigdy nie jest przesyłane przez sieć. Tak więc CHAP, używany w protokole PPP, zapewnia lepsze bezpieczeństwo w porównaniu z protokołem uwierzytelniania hasła (PAP), który jest podatny na ataki z obu tych powodów.
Korzyści z CHAP
Gdy peer wysyła protokół CHAP, serwer uwierzytelniania odbierze go, pobierze „znane dobre” hasło z bazy danych i wykona obliczenia protokołu CHAP. Jeśli wynikowe skróty są zgodne, uznaje się, że użytkownik został uwierzytelniony. Jeśli skróty się nie zgadzają, próba uwierzytelnienia użytkownika jest odrzucana.
Ponieważ serwer uwierzytelniający musi przechowywać hasło w postaci zwykłego tekstu, nie jest możliwe użycie różnych formatów dla przechowywanego hasła . Gdyby osoba atakująca ukradła całą bazę haseł, wszystkie te hasła byłyby widoczne „na czysto” w bazie danych.
W rezultacie, chociaż CHAP może być bezpieczniejszy niż PAP, gdy jest używany przez łącze PPP, uniemożliwia bezpieczniejsze przechowywanie „w spoczynku” niż w przypadku innych metod, takich jak PAP .
Warianty
MS-CHAP jest podobny do CHAP, ale używa innego algorytmu wyznaczania wartości skrótu i umożliwia każdej ze stron uwierzytelnienie drugiej strony.
Cykl pracy
CHAP to schemat uwierzytelniania pierwotnie używany przez serwery protokołu Point-to-Point Protocol (PPP) do sprawdzania tożsamości klientów zdalnych. CHAP okresowo weryfikuje tożsamość klienta za pomocą trójstronnego uzgadniania . Dzieje się tak w momencie ustanawiania łącza początkowego (LCP) i może się powtórzyć w dowolnym momencie później. Weryfikacja odbywa się na podstawie współdzielonego sekretu (takiego jak hasło klienta).
- Po zakończeniu fazy ustanawiania łącza, osoba uwierzytelniająca wysyła komunikat „wyzwania” do peera.
- Partner odpowiada wartością obliczoną przy użyciu jednokierunkowej funkcji mieszającej dla wyzwania i połączonego sekretu.
- Autentyfikator sprawdza odpowiedź pod kątem własnych obliczeń oczekiwanej wartości skrótu. Jeśli wartości są zgodne, wystawca uwierzytelnienia potwierdza uwierzytelnienie; w przeciwnym razie powinien zakończyć połączenie.
- W protokole PPP osoba uwierzytelniająca może w losowych odstępach czasu wysłać nowe wezwanie do uczestnika i powtórzyć kroki od 1 do 3. Jednakże, gdy w większości sytuacji używany jest protokół CHAP (np. RADIUS ), ten krok nie jest wykonywany.
Pakiety CHAP
Opis | 1 bajt | 1 bajt | 2 bajty | 1 bajt | Zmienny | Zmienny |
---|---|---|---|---|---|---|
Wyzwanie | Kod = 1 | ID | Długość | Długość wyzwania | Wartość wyzwania | Nazwa |
Odpowiedź | Kod = 2 | ID | Długość | Długość odpowiedzi | Wartość odpowiedzi | Nazwa |
Powodzenie | Kod = 3 | ID | Długość | Wiadomość | ||
Awaria | Kod = 4 | ID | Długość | Wiadomość |
Identyfikator wybrany dla losowego wyzwania jest również używany w odpowiednich pakietach odpowiedzi, sukcesu i niepowodzenia. Nowe wyzwanie z nowym identyfikatorem musi różnić się od ostatniego wyzwania z innym identyfikatorem. Jeśli sukces lub niepowodzenie zostanie utracone, ta sama odpowiedź może zostać wysłana ponownie i wyzwala to samo wskazanie sukcesu lub niepowodzenia. W przypadku MD5 jako skrótu wartość odpowiedzi to MD5(ID||secret||challenge)
, MD5 dla konkatenacji identyfikatora, sekretu i wyzwania.
Zobacz też
- Lista protokołów uwierzytelniania
- Protokół uwierzytelniania hasła
- Uwierzytelnianie typu wyzwanie-odpowiedź
- Kryptograficzna funkcja skrótu