Czy HTTPS wystarcza, aby uniknąć ataków powtórkowych?

10

Udostępniam kilka metod REST na serwerze dla aplikacji mobilnej.

Chciałbym uniknąć, aby użytkownicy mogli wąchać, w jaki sposób budowane są metody HTTP (z aplikacji mobilnej), a następnie wysyłać je ponownie na serwer. Przykład:

  • Aplikacja mobilna wysyła zapytanie
  • Użytkownik korzysta z serwera proxy i może sprawdzić, co dzieje się w sieci
  • Użytkownik widzi i zapisuje żądanie, które właśnie wysłał telefon
  • => Teraz nie chcę, aby użytkownik mógł ręcznie przesłać to żądanie

Czy wystarczy zabezpieczyć serwer przez HTTPS?

MartinMoizard
źródło

Odpowiedzi:

7

HTTPS może wystarczyć, aby zabezpieczyć serwer przed atakami odtwarzania (ta sama wiadomość jest wysyłana dwukrotnie), jeśli serwer jest skonfigurowany tak, aby zezwalał tylko na protokół TLS zgodnie z sekcją F.2 rfc2246.

Wychodzące dane są chronione MAC przed transmisją. Aby zapobiec atakom polegającym na odtwarzaniu lub modyfikowaniu wiadomości, MAC jest obliczany na podstawie tajnego adresu MAC, numeru sekwencji [...]

Emirikol
źródło
1
Nie jest to już prawdą w przypadku (wersji roboczej) TLS 1.3, jeśli włączone są bilety 0-RTT . Ponadto - choć nie jest to ściśle objęte zakresem pytania - atak powtórkowy może zostać przeprowadzony nawet w przypadku bieżącej wersji TLS, jeśli używana jest przeglądarka internetowa .
Alex Shpilkin
9

HTTPS oznacza po prostu, że transportowane dane są szyfrowane, więc tylko klient i serwer mogą je odszyfrować (w idealnym świecie, nie mówiąc o atakach MITM itp.).

W związku z tym nic w protokole nie powstrzyma powtarzających się ataków.

Konieczne będzie wbudowanie mechanizmu unikania ataków typu „powtórz” (coś w rodzaju tokenów wygasających lub tokenów, które unieważniają się po zakończeniu procesu), aby upewnić się, że aplikacja nie jest narażona na ataki typu „powtórzenie”. Tego mechanizmu można używać z normalnym HTTP.

Oded
źródło
8
Te odpowiedzi wydają się sugerować coś przeciwnego: stackoverflow.com/questions/2769992/... Masz pojęcie, dlaczego różnica?
Brian Armstrong,
1
@BrianArmstrong Myślę, że problem polega na tym, że HTTPS ma różne implementacje, jak wspomniano w odpowiedzi Emirikola. Niektóre protokoły zapobiegają atakom powtórkowym, a niektóre nie. (Zdarza się to podczas wymiany kluczy, wymiana kluczy RSA uniemożliwia, ale anonimowa wymiana kluczy nie. Ref: tools.ietf.org/html/draft-ietf-tls-ssl-version3-00#app Annex-F ) Dlatego właśnie tokeny ( jak csrf) są ważne (scenariusz referencyjny jest tutaj: stackoverflow.com/a/2770135/4206925 )
MewX