Generated by GPT-5-mini| RFC 2104 | |
|---|---|
| Title | RFC 2104 |
| Type | Informational |
| Published | February 1997 |
| Authors | Hugo Krawczyk, Mihir Bellare, Ronald L. Rivest |
| Status | Best Current Practice |
RFC 2104
RFC 2104 is the Internet standard defining the Keyed-Hash Message Authentication Code (HMAC) construction. It specifies an algorithm combining a cryptographic hash function with a secret key to provide message authentication, integrity, and partial anti-replay properties. The document influenced cryptographic practice across Internet protocols and standards-setting bodies.
RFC 2104 formalizes the HMAC construction for use with a variety of hash functions such as MD5, SHA-1, and later SHA-256. Its authors—Hugo Krawczyk, Mihir Bellare, and Ronald L. Rivest—situated the specification amid ongoing work at organizations like the Internet Engineering Task Force, the Internet Society, and the MIT research community. The memo addresses interoperability concerns raised by implementers at institutions including Bell Labs, RSA Laboratories, Netscape Communications Corporation, and standards groups such as the IETF Working Group and the National Institute of Standards and Technology.
RFC 2104 arose from cryptographic analysis by researchers at IBM Research, UC Berkeley, Harvard University, and Stanford University who examined message authentication primitives like CBC-MAC, HMAC-MD5, and keyed constructions proposed in contemporaneous literature. The aim was to produce a practical, analyzable construct suitable for protocols developed by bodies such as the IETF, the World Wide Web Consortium, and the European Telecommunications Standards Institute. Concerns voiced by engineers at Microsoft Corporation, Sun Microsystems, and Cisco Systems about deployment, API design, and backward compatibility shaped the document’s goals. The specification sought to harmonize security proofs from theoreticians at RSA Laboratories and Bell Labs with implementability constraints from vendors like IBM, Intel Corporation, and Lucent Technologies.
RFC 2104 defines HMAC as a keyed application of a cryptographic hash function with two fixed padding constants, accommodating block-oriented hashes developed at research centers including Bell Labs (e.g., MD5), NSA-sponsored designs (e.g., SHA-1), and later hashes standardized by NIST such as SHA-256 and SHA-512. The memo specifies input processing, key normalization, inner and outer padding operations, and output truncation guidance used in protocol specifications by organizations like the IETF, ITU-T, and the 3GPP. The pseudocode and parameter choices reflect cryptanalytic work from teams at MIT, UC San Diego, and Caltech, and align with application use in systems developed by Sun Microsystems, Oracle Corporation, and Google LLC. Implementers in projects such as OpenSSL, GnuTLS, OpenSSH, and LibreSSL used the algorithmic description to produce interoperable libraries for platforms like Linux, FreeBSD, OpenBSD, and Windows NT.
RFC 2104 presents security arguments based on reductionist proofs connecting HMAC’s security to properties of the underlying hash functions analyzed by cryptographers at IBM Research, Bell Labs, and ETH Zurich. The memo discusses resistance to existential forgery under chosen-message attacks, considerations influenced by results from researchers at Eurocrypt, CRYPTO, and RSA Conference presentations. It cautions implementers about key management practices reflected in guidance from NIST, ENISA, and the IETF Security Area. The document also addresses collision and preimage attacks demonstrated in subsequent work at Shandong University, CWI Amsterdam, and Ecole Polytechnique, influencing migration paths toward SHA-2 and SHA-3 families standardized by NIST.
Following publication, RFC 2104’s HMAC was rapidly adopted in protocol specifications maintained by the IETF—notably in IPsec, TLS, SSH, and SMTP extensions—and by application-layer systems such as Amazon Web Services authentication, OAuth 1.0, and SAML bindings shaped at OASIS. Cryptographic libraries including OpenSSL, LibreSSL, Bouncy Castle, and NSS embedded HMAC primitives informed deployments in products from Cisco Systems, Juniper Networks, Microsoft Corporation, and Apple Inc.. The construction became a component in enterprise solutions from IBM, Oracle Corporation, and SAP SE, and in open-source projects like Linux Kernel subsystems, GNU Privacy Guard, and Dovecot. Hardware implementations and acceleration appeared in silicon from Intel Corporation, AMD, and ARM Holdings, and in dedicated security modules like Trusted Platform Module devices and Hardware Security Module offerings by Thales Group and Gemalto.
RFC 2104 received broad endorsement by standards bodies including IETF, NIST, and ITU-T, and was cited in security analyses published in venues such as Journal of Cryptology, IEEE Security & Privacy, and conference proceedings at CRYPTO and Eurocrypt. Its practical balance between provable security and implementability influenced subsequent work by researchers at Columbia University, Princeton University, and Cornell University. HMAC’s adoption shaped protocols standardized by the IETF and industry consortia like OASIS and the FIDO Alliance, and it remains a common choice in software libraries maintained on platforms like GitHub, SourceForge, and Bitbucket. RFC 2104’s legacy is evident in the continuing use of HMAC in authentication and integrity mechanisms across networking, cloud services, and embedded systems.
Category:Internet standards