Czy bezpieczeństwo HMAC oparte na SHA-1 ma wpływ na ataki kolizji na SHA-1?Bezpieczeństwo HMAC - czy bezpieczeństwo HMAC oparte na SHA-1 ma wpływ na ataki kolizji na SHA-1?
Odpowiedz
Implikacje dla bezpieczeństwa HMAC zostały szczegółowo opisane w sekcji dotyczącej bezpieczeństwa pod numerem the RFC. Krótko mówiąc, bardzo silny atak jest wymagany, zanim zagrozi się bezpieczeństwu HMAC; istniejące ataki kolizyjne na SHA-1 z pewnością ich nie stanowią. HMAC jest specjalnie zaprojektowany, aby ataki trudne, a zwykłe ataki kolizji nie będzie na ogół wystarcza:
Zabezpieczenie mechanizmu uwierzytelniania wiadomości przedstawiony tu zależy od właściwości kryptograficznych funkcji skrótu H: opór do kolizji ze znalezieniem (ograniczone do przypadku, gdy wartość początkowa jest tajny i przypadkowe, a gdzie wyjście funkcja nie jest dostępna dla wyraźnie atakującego), i własności funkcji kompresjiuwierzytelniania wiadomości H przy stosowaniu pojedynczych bloków (w HMAC tych bloków są częściowo znane atakującego, ponieważ zawierają one wynikiem obliczeń wewnętrznej H , a w szczególności, nie może być w pełni wybrany przez atakującego).
Polecam lekturę całej sekcji; bardziej szczegółowo opisuje, jakie ataki powinny być wystarczające, aby złamać HMAC i ile wysiłku będzie trzeba.
Najsilniejszy atak znany z HMAC oparty jest na częstotliwości zderzeń dla funkcji hash H ("atak urodzinowy") [PV, BCK2] i jest całkowicie niepraktyczny dla minimalnie rozsądnych funkcji skrótu.
Na przykład, jeśli weźmiemy pod uwagę funkcję skrótu jak MD5 gdzie długość wyjściowy jest równy L = 16 (128 bitów) atakujący potrzebne do przejmują znaczniki prawidłowe uwierzytelnienia wiadomości obliczony (z samym tajemnicy klawisz K!) około 2 64 znanych tekstów jawnych. Wymagałoby to przetworzenia co najmniej 2 64 bloków pod H, niemożliwym zadaniem w każdym realistycznym scenariuszu (dla długości bloku 64 bajtów zajęłoby to 250 000 lat w ciągłym łączu 1Gbps i bez zmiany sekretu klawisz K przez cały ten czas). Atak ten może stać się realistyczny tylko wtedy, gdy wykryte zostaną poważne wady funkcji kolizji (np. Kolizje wykryte po 2 ** 30 wiadomościach). Takie odkrycie oznaczałoby natychmiastowe zastąpienie funkcji H (skutki takiego niepowodzenia byłyby o wiele bardziej poważne dla tradycyjnych zastosowań H w kontekście podpisów cyfrowych, certyfikatów kluczy publicznych itp.).
Uwaga: ten atak musi być silnie skontrastowane z regularnych ataków kolizyjnych dotyczących kryptograficznych funkcji skrótu, gdzie nie tajny klucz jest zaangażowany i gdzie 2 64 off-line parallelizable operacji wystarczy, aby znaleźć kolizje (!).Ten ostatni atak zbliża się do możliwości [VW] ***, podczas gdy atak urodzinowy na HMAC jest całkowicie niepraktyczny. (W powyższych przykładach, jeśli wykorzystuje funkcję skrótu , powiedzmy, 160 nieco wyjścia następnie 2 64 należy zastąpić 2 80). *
właściwego wykonania powyższej konstrukcji, wybór z losowych (lub kryptograficznie pseudolosowych) kluczy, bezpiecznego klucza mechanizmu wymiany, częstego kluczowego odświeżania i dobrej poufności ochrona kluczy jest niezbędnym składnikiem dla bezpieczeństwa mechanizmu weryfikacji integralności dostarczonego przez HMAC.
Jeśli masz zamiar obszernie cytować z RFC2104, uczciwym rozwiązaniem byłoby przyznać tyle. –
Zobacz dyskusję na ten sam temat na stronie this question. Krótko mówiąc: ataki kolizyjne nie szkodzą bezpośrednio HMAC. Ale istnienie kolizji implikuje, że funkcja kompresji, na której zbudowana jest funkcja skrótu, nie jest "przypadkową wyrocznią", a to unieważnia dowód bezpieczeństwa HMAC.
- 1. Python HMAC-SHA1 vs Java HMAC-SHA1 inne wyniki
- 2. HMAC SHA1 ColdFusion
- 3. java równoważne PHP HMAC-SHA1
- 4. Jak obliczyć kod uwierzytelniania HMAC-SHA1 w .NET 4.5 Core
- 5. Kod aktywacyjny Xive Device nie pasuje do algorytmu HMAC-SHA1.
- 6. hmac-sha1 w ruby różni się od C# HMACSHA1
- 7. Czy hash hmac-sha1 ma zawsze 20 bajtów długości? Kod Pythona
- 8. Wpływ na bezpieczeństwo tworzenia słów kluczowych Clojure z danych użytkownika?
- 9. Jak dokładnie działa bezpieczeństwo oparte na fragmentach hash?
- 10. Bezpieczeństwo oparte na rolach asp.net mvcRola bezpieczeństwa asp.net mvc
- 11. Wiosna Bezpieczeństwo @PreAuthorize na kontrolerach
- 12. Bezpieczeństwo uwierzytelniania opartego na tokenie
- 13. Dlaczego szyfrowanie HMAC-SHA1 w dokładnie tym samym kodzie w C# i PowerShell pokazuje różne wyniki?
- 14. Dlaczego base64 jest hash sha1/sha256?
- 15. strawienia/hmac jest częścią standardowego ruby lib
- 16. Parse.com bezpieczeństwo API dotyczy
- 17. Symfony2 bezpieczeństwo: Wiele dostawców
- 18. Użytkownik sonaty - Bezpieczeństwo na niestandardowym polu
- 19. Jak mogę odszyfrować HMAC?
- 20. Bezpieczeństwo na poziomie obszaru dla asp.net mvc
- 21. Czy kolejność przełączników ma wpływ na prędkość?
- 22. Czy CountDownLatch ma wpływ na fałszywe wybudzenia?
- 23. Bezpieczeństwo Wyjątek tylko na Androida 6
- 24. Keystore SHA1 różni się od cert.rsa SHA1 z APK
- 25. CodeIgniter 2.2.0 błąd niedopasowania HMAC
- 26. backbone.js Bezpieczeństwo
- 27. Kodowanie SHA1 w Haskell
- 28. node.js i SHA1
- 29. Hadoop Bezpieczeństwo
- 30. Żądania podpisania HMAC w Pythonie
Dziękuję za szybką odpowiedź :) –