The Use of HMAC-SHA-1-96 within ESP and AH
How IPsec uses HMAC with SHA-1, cut down to 96 bits, to prove a packet is genuine and unaltered.
Madson, C. and R. Glenn, "The Use of HMAC-SHA-1-96 within ESP and AH", RFC 2404, DOI 10.17487/RFC2404, November 1998, <https://www.rfc-editor.org/info/rfc2404>.
@misc{rfc2404,
series = {Request for Comments},
number = 2404,
howpublished = {RFC 2404},
publisher = {RFC Editor},
doi = {10.17487/RFC2404},
url = {https://www.rfc-editor.org/info/rfc2404},
author = {C. Madson and R. Glenn},
title = {{The Use of HMAC-SHA-1-96 within ESP and AH}},
pagetotal = 7,
year = 1998,
month = nov,
} RFC text
Contents
Network Working Group C. Madson
Request for Comments: 2404 Cisco Systems Inc.
Category: Standards Track R. Glenn
NIST
November 1998
The Use of HMAC-SHA-1-96 within ESP and AH
Status of this Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (1998). All Rights Reserved.
Abstract
This memo describes the use of the HMAC algorithm [RFC-2104] in
conjunction with the SHA-1 algorithm [FIPS-180-1] as an
authentication mechanism within the revised IPSEC Encapsulating
Security Payload [ESP] and the revised IPSEC Authentication Header
[AH]. HMAC with SHA-1 provides data origin authentication and
integrity protection.
Further information on the other components necessary for ESP and AH
implementations is provided by [Thayer97a].
1. Introduction
This memo specifies the use of SHA-1 [FIPS-180-1] combined with HMAC
[RFC-2104] as a keyed authentication mechanism within the context of
the Encapsulating Security Payload and the Authentication Header.
The goal of HMAC-SHA-1-96 is to ensure that the packet is authentic
and cannot be modified in transit.
HMAC is a secret key authentication algorithm. Data integrity and
data origin authentication as provided by HMAC are dependent upon the
scope of the distribution of the secret key. If only the source and
destination know the HMAC key, this provides both data origin
authentication and data integrity for packets sent between the two
parties; if the HMAC is correct, this proves that it must have been
added by the source.
In this memo, HMAC-SHA-1-96 is used within the context of ESP and AH.
For further information on how the various pieces of ESP - including
the confidentiality mechanism -- fit together to provide security
services, refer to [ESP] and [Thayer97a]. For further information on
AH, refer to [AH] and [Thayer97a].
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC 2119].
2. Algorithm and Mode
[FIPS-180-1] describes the underlying SHA-1 algorithm, while [RFC-
2104] describes the HMAC algorithm. The HMAC algorithm provides a
framework for inserting various hashing algorithms such as SHA-1.
HMAC-SHA-1-96 operates on 64-byte blocks of data. Padding
requirements are specified in [FIPS-180-1] and are part of the SHA-1
algorithm. If you build SHA-1 according to [FIPS-180-1] you do not
need to add any additional padding as far as HMAC-SHA-1-96 is
concerned. With regard to "implicit packet padding" as defined in
[AH] no implicit packet padding is required.
HMAC-SHA-1-96 produces a 160-bit authenticator value. This 160-bit
value can be truncated as described in RFC2104. For use with either
ESP or AH, a truncated value using the first 96 bits MUST be
supported. Upon sending, the truncated value is stored within the
authenticator field. Upon receipt, the entire 160-bit value is
computed and the first 96 bits are compared to the value stored in
the authenticator field. No other authenticator value lengths are
supported by HMAC-SHA-1-96.
The length of 96 bits was selected because it is the default
authenticator length as specified in [AH] and meets the security
requirements described in [RFC-2104].
2.1 Performance
[Bellare96a] states that "(HMAC) performance is essentially that of
the underlying hash function". As of this writing no detailed
performance analysis has been done of SHA-1, HMAC or HMAC combined
with SHA-1.
[RFC-2104] outlines an implementation modification which can improve
per-packet performance without affecting interoperability.
3. Keying Material
HMAC-SHA-1-96 is a secret key algorithm. While no fixed key length is
specified in [RFC-2104], for use with either ESP or AH a fixed key
length of 160-bits MUST be supported. Key lengths other than 160-
bits MUST NOT be supported (i.e. only 160-bit keys are to be used by
HMAC-SHA-1-96). A key length of 160-bits was chosen based on the
recommendations in [RFC-2104] (i.e. key lengths less than the
authenticator length decrease security strength and keys longer than
the authenticator length do not significantly increase security
strength).
[RFC-2104] discusses requirements for key material, which includes a
discussion on requirements for strong randomness. A strong pseudo-
random function MUST be used to generate the required 160-bit key.
At the time of this writing there are no specified weak keys for use
with HMAC. This does not mean to imply that weak keys do not exist.
If, at some point, a set of weak keys for HMAC are identified, the
use of these weak keys must be rejected followed by a request for
replacement keys or a newly negotiated Security Association.
[ARCH] describes the general mechanism for obtaining keying material
when multiple keys are required for a single SA (e.g. when an ESP SA
requires a key for confidentiality and a key for authentication).
In order to provide data origin authentication, the key distribution
mechanism must ensure that unique keys are allocated and that they
are distributed only to the parties participating in the
communication.
[RFC-2104] makes the following recommendation with regard to
rekeying. Current attacks do not indicate a specific recommended
frequency for key changes as these attacks are practically
infeasible. However, periodic key refreshment is a fundamental
security practice that helps against potential weaknesses of the
function and keys, reduces the information avaliable to a
cryptanalyst, and limits the damage of an exposed key.
4. Interaction with the ESP Cipher Mechanism
As of this writing, there are no known issues which preclude the use
of the HMAC-SHA-1-96 algorithm with any specific cipher algorithm.
5. Security Considerations
The security provided by HMAC-SHA-1-96 is based upon the strength of
HMAC, and to a lesser degree, the strength of SHA-1. At the time of
this writing there are no practical cryptographic attacks against
HMAC-SHA-1-96.
[RFC-2104] states that for "minimally reasonable hash functions" the
"birthday attack" is impractical. For a 64-byte block hash such as
HMAC-SHA-1-96, an attack involving the successful processing of 2**80
blocks would be infeasible unless it were discovered that the
underlying hash had collisions after processing 2**30 blocks. A hash
with such weak collision-resistance characteristics would generally
be considered to be unusable.
It is also important to consider that while SHA-1 was never developed
to be used as a keyed hash algorithm, HMAC had that criteria from the
onset.
[RFC-2104] also discusses the potential additional security which is
provided by the truncation of the resulting hash. Specifications
which include HMAC are strongly encouraged to perform this hash
truncation.
As [RFC-2104] provides a framework for incorporating various hash
algorithms with HMAC, it is possible to replace SHA-1 with other
algorithms such as MD5. [RFC-2104] contains a detailed discussion on
the strengths and weaknesses of HMAC algorithms.
As is true with any cryptographic algorithm, part of its strength
lies in the correctness of the algorithm implementation, the security
of the key management mechanism and its implementation, the strength
of the associated secret key, and upon the correctness of the
implementation in all of the participating systems. [RFC-2202]
contains test vectors and example code to assist in verifying the
correctness of HMAC-SHA-1-96 code.
6. Acknowledgments
This document is derived in part from previous works by Jim Hughes,
those people that worked with Jim on the combined DES/CBC+HMAC-MD5
ESP transforms, the ANX bakeoff participants, and the members of the
IPsec working group.
We would also like to thank Hugo Krawczyk for his comments and
recommendations regarding some of the cryptographic specific text in
this document.
7. References
[FIPS-180-1] NIST, FIPS PUB 180-1: Secure Hash Standard,
April 1995.
http://csrc.nist.gov/fips/fip180-1.txt (ascii)
http://csrc.nist.gov/fips/fip180-1.ps (postscript)
[RFC-2104] Krawczyk, H., Bellare, M. and R. Canetti, "HMAC: Keyed-
Hashing for Message Authentication", RFC 2104, February
1997.
[Bellare96a] Bellare, M., Canetti, R., and H. Krawczyk, "Keying Hash
Functions for Message Authentication", Advances in
Cryptography, Crypto96 Proceeding, June 1996.
[ARCH] Kent, S., and R. Atkinson, "Security Architecture for
the Internet Protocol", RFC 2401, November 1998.
[ESP] Kent, S., and R. Atkinson, "IP Encapsulating Security
Payload", RFC 2406, November 1998.
[AH] Kent, S., and R. Atkinson, "IP Authentication Header",
RFC 2402, November 1998.
[Thayer97a] Thayer, R., Doraswamy, N., and R. Glenn, "IP Security
Document Roadmap", RFC 2411, November 1998.
[RFC-2202] Cheng, P., and R. Glenn, "Test Cases for HMAC-MD5 and
HMAC-SHA-1", RFC 2202, March 1997.
[RFC-2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
8. Editors' Address
Cheryl Madson
Cisco Systems, Inc.
EMail: cmadson@cisco.com
Rob Glenn
NIST
EMail: rob.glenn@nist.gov
The IPsec working group can be contacted through the chairs:
Robert Moskowitz
ICSA
EMail: rgm@icsa.net
Ted T'so
Massachusetts Institute of Technology
EMail: tytso@mit.edu
9. Full Copyright Statement
Copyright (C) The Internet Society (1998). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
AI ELI5
On this page
§1Introduction
RFC 2404 specifies how to combine the SHA-1 hash with HMAC (defined in RFC 2104) as a keyed authentication mechanism inside the IPsec Encapsulating Security Payload (ESP) and the Authentication Header (AH). The goal of HMAC-SHA-1-96 is to ensure that the packet is authentic and cannot be modified in transit.
HMAC is a secret key algorithm, so what it proves depends on who knows the key. If only the source and destination know the key, a correct HMAC proves that it must have been added by the source. That gives both data origin authentication and data integrity for packets exchanged between the two parties.
Two people share a secret. When a message arrives with the right secret mark, the receiver knows it came from the other person and was not changed.
§2Algorithm and Mode
The SHA-1 algorithm is described in FIPS 180-1 and the HMAC algorithm in RFC 2104. HMAC is a framework into which various hashing algorithms, such as SHA-1, can be inserted. HMAC-SHA-1-96 operates on 64-byte blocks of data. Padding requirements are part of SHA-1 itself, so a SHA-1 built to FIPS 180-1 needs no additional padding, and no implicit packet padding is required for AH.
The algorithm produces a 160-bit authenticator value, which can be truncated as RFC 2104 describes. For ESP or AH, an implementation MUST support a truncated value that uses the first 96 bits.
- On sending, the truncated value is stored in the authenticator field.
- On receipt, the entire 160-bit value is computed and the first 96 bits are compared with the value in the authenticator field.
- No other authenticator lengths are supported by HMAC-SHA-1-96.
The 96-bit length was chosen because it is the default authenticator length in AH and meets the security requirements of RFC 2104.
The recipe makes a long fingerprint, but only the first part is written on the packet. The receiver makes the whole fingerprint again and checks that the first part matches.
- Packet + first 96 bitsThe 160-bit HMAC-SHA-1 value is truncated to its first 96 bits and stored in the authenticator field.
- Recompute 160 bitsThe full value is computed, and its first 96 bits are compared with the stored value.
§2.1Performance
The RFC quotes Bellare and colleagues: HMAC performance is essentially that of the underlying hash function. It adds that, at the time of writing, no detailed performance analysis had been done of SHA-1, HMAC, or HMAC combined with SHA-1.
RFC 2104 outlines an implementation modification that can improve per-packet performance without affecting interoperability.
Adding the secret mark costs about as much work as running the underlying scrambler once. There is also a known trick to make it a bit faster.
§3Keying Material
HMAC-SHA-1-96 is a secret key algorithm. Although RFC 2104 specifies no fixed key length, for ESP or AH a fixed key length of 160 bits MUST be supported, and other key lengths MUST NOT be supported. The choice follows RFC 2104: keys shorter than the authenticator length weaken security, and longer keys do not significantly add strength.
A strong pseudo-random function MUST be used to generate the 160-bit key. No weak keys were specified for HMAC at the time of writing, though the RFC says this does not imply that none exist. If weak keys are ever identified, they must be rejected, followed by a request for replacement keys or a newly negotiated Security Association.
To give data origin authentication, the key distribution mechanism must make sure unique keys are allocated and are given only to the parties in the communication. The RFC also repeats the advice that periodic key refreshment is a fundamental security practice, even though current attacks do not point to a specific rekeying frequency. How keying material is obtained when one SA needs several keys is described in RFC 2401.
The secret must be exactly one size, must be made by a really good random-number maker, and must be shared with only the two people talking. Changing it every so often is also a good habit.
§4Interaction with the ESP Cipher
The RFC says that, as of writing, there are no known issues that prevent HMAC-SHA-1-96 from being used with any specific ESP cipher algorithm. In ESP, the authentication step is separate from the confidentiality mechanism, so it can sit beside whichever cipher is chosen.
The secret mark works no matter which secret code is used to hide the message.
§5Security Considerations
The security of HMAC-SHA-1-96 rests on the strength of HMAC and, to a lesser degree, the strength of SHA-1. At the time of writing there were no practical cryptographic attacks against it. The RFC notes that SHA-1 was never designed as a keyed hash, whereas HMAC had that goal from the start.
It cites RFC 2104: for a 64-byte block hash, a birthday attack involving the processing of 2^80 blocks would be infeasible unless the underlying hash were found to have collisions after 2^30 blocks, and a hash that weak would generally be considered unusable. Truncating the output may add security, and specifications that include HMAC are strongly encouraged to truncate.
Strength also depends on the correctness of the implementation, the key management mechanism, the secret key and every participating system. RFC 2202 provides test vectors and example code to help check HMAC-SHA-1-96 implementations.
As far as anyone knew then, nobody could fake the mark without the secret. It also matters that everyone builds the recipe correctly and keeps the secret safe.