Kod uwierzytelniania wiadomości z szyfrowaniem
Keyed-Hash Code uwierzytelniania wiadomości ( HMAC ) jest kod Message Authentication (MAC), którego konstrukcja oparta jest na kryptograficznej funkcji skrótu , takie jak Secure Hash Algorithm (SHA) oraz tajnego klucza . HMAC są określone w RFC 2104 oraz w standardzie NIST FIPS 198 i rozszerzone w RFC 4868 do użytku w IPsec . Mogą być również używane w protokołach TLS i SSH , na przykład .
budowa
HMAC jest obliczany na podstawie wiadomości i tajnego klucza przy użyciu funkcji skrótu zgodnie z RFC 2104 w następujący sposób. jest dopełniany do długości bloku funkcji mieszającej przez dodanie zerowych bajtów ("dopełnienie") ; czyli 64 bajty (512 bitów) dla większości popularnych funkcji skrótu. Jeśli długość jest większa niż długość bloku funkcji mieszającej, jest ona zastępowana przez .
Wartości ("outer pad", string) i ("inner pad", inny łańcuch) są stałymi, oznaczają operację bit po bicie XOR i łączenie poprzez prosty montaż ( konkatenacja ).
Zgodnie z RFC 2104 , obie stałe „zewnętrzna podkładka” i „wewnętrzna podkładka” są zdefiniowane w następujący sposób:
- .
Zasady projektowania
Konstrukcja, która na pierwszy rzut oka wydaje się uciążliwa, wynika z faktu, że większość starszych kryptograficznych funkcji skrótu bazuje na konstrukcji Merkle-Damgård , czyli na iteracji funkcji kompresji. Na przykład istnieje prosty atak na projekt MAC jako . Ze względu na strukturę funkcji skrótu, wartość skrótu można łatwo obliczyć dla dowolnej wartości skrótu nieznanej wiadomości M, jeśli brakuje funkcji finalizacji lub można ją łatwo odwrócić. Można to jednak również wykorzystać do rozszerzenia (atak „przedłużenia długości”).
Jeżeli zakłada się, że podstawowa funkcja mieszająca jest odporna na kolizje , możliwe są proste konstrukcje MAC, na przykład obliczenia jako . Jednak konstrukcja jest niepewna, gdy tylko zostanie stwierdzone zderzenie, ponieważ jeśli jest , to K jest niezależne od klucza ze względu na konstrukcję .
Ideą konstrukcji HMAC nie jest poleganie na odporności na kolizje funkcji skrótu dla bezpieczeństwa, ale na słabszych założeniach. Z tego powodu HMAC oparty na MD5 jest nadal bezpieczny, mimo że kolizje zostały już wykryte dla MD5.
bezpieczeństwo
Jeśli podstawowa funkcja kompresji jest funkcją pseudolosową , to konstrukcja HMAC jest również funkcją pseudolosową. Ponieważ każda funkcja pseudolosowa jest również dobrym MAC, konstrukcja HMAC jest również dobrym MAC. Najprostszym atakiem na HMAC jest odgadnięcie ukrytego tajnego klucza, np. za pomocą brute force .
RFC 6151 został opublikowany w 2011 roku w celu oceny bezpieczeństwa MD5 i HMAC-MD5. W przypadku tego ostatniego podsumowuje się, że chociaż MD5 należy uznać za zagrożone, znane obecnie ataki na HMAC-MD5 nie stanowią „praktycznej luki w zabezpieczeniach”, jeśli jest ona używana jako „Kod uwierzytelniania wiadomości”. Dodaje jednak, że w przypadku nowych projektów protokołów „HMAC-MD5 nie powinien być już używany”.
literatura
- William Stallings: Kryptografia i bezpieczeństwo sieci: zasady i praktyka. Wydanie piąte. (Wydanie międzynarodowe), Pearson Education, wydawnictwo Prentice Hall, 2011, ISBN 978-0-13-705632-3 .
linki internetowe
- RFC 2104 , HMAC: szyfrowanie kluczem do uwierzytelniania wiadomości
- RFC 2202 , wektory testowe HMAC-MD5 i HMAC-SHA1, implementacja HMAC-SHA1 w C
- FIPS PUB 198-1, kod uwierzytelniania wiadomości z kluczem skrótu (PDF; 126 KiB)
Indywidualne dowody
- ^ Stallings: Kryptografia i bezpieczeństwo sieci: zasady i praktyka. s. 399-400.
- ^ T. Dierks, E. Rescorla: RFC 5246, protokół Transport Layer Security (TLS) w wersji 1.2 . IETF . Str. 14. Pobrano 11 listopada 2011 r.: „Warstwa rekordów TLS wykorzystuje kod uwierzytelniania wiadomości (MAC) z kluczem w celu ochrony integralności wiadomości. Zestawy szyfrów zdefiniowane w tym dokumencie wykorzystują konstrukcję znaną jako HMAC, opisaną w [HMAC], która opiera się na funkcji skrótu. Inne zestawy szyfrów MOGĄ definiować własne konstrukcje MAC, jeśli to konieczne.”
- ↑ T. Ylonen, C. Lonvick, Ed.: RFC 4253, Protokół warstwy transportowej Secure Shell (SSH) . IETF . Str. 12. Pobrane 11 listopada 2011 r.: "Algorytmy" hmac- * "są opisane w [RFC2104]."
- ↑ a b c d H. Krawczyk, M. Bellare, R. Canetti: RFC 2104, HMAC: Keyed-Hashing for Message Authentication . IETF . Źródło 11 listopada 2011.
- ↑ a b W przykładowym kodzie w załączniku RFC 2104 , "0x36" jest używane dla wkładki wewnętrznej i "0x5c" dla wkładki zewnętrznej
- ↑ a b Mihir Bellare, Ran Canetti i Hugo Krawczyk: Kluczowanie funkcji skrótu do uwierzytelniania wiadomości . W: Postępy w kryptologii - Postępowanie kryptograficzne 96 . LNCS 1109. Springer, 1996, s. 1-15 , doi : 10.1007/3-540-68697-5_1 ( link ).
- ↑ Mihir Bellare: Nowe dowody dla NMAC i HMAC: Bezpieczeństwo bez odporności na kolizje . W: Postępy w kryptologii - Crypto 2006 Proceedings . LNCS 4117. Springer, 2006, s. 602-619 , doi : 10.1007/11818175_36 ( link ).
- ↑ Mihir Bellare, Oded Goldreich i Anton Mityagin: Moc zapytań weryfikacyjnych w uwierzytelnianiu wiadomości i szyfrowaniu uwierzytelnionym . 2004 ( iacr.org ).
- ↑ Sean Turner, Lily Chen: Zaktualizowane zagadnienia dotyczące bezpieczeństwa algorytmów MD5 Message-Digest i HMAC-MD5. marzec 2011, dostęp 5 grudnia 2020 .