RFC 4307

Cryptographic Algorithms for Use in the Internet Key Exchange Version 2 (IKEv2)

πŸ“… published December 2005, from ietf

RFC 4307 πŸŽ€ Cryptographic Algorithms for Use in the Internet Key Exchange Version 2 (IKEv2)

okay bestie, this is the RFC that picks which crypto algorithms IKEv2 implementations have to support, so they can always find at least one thing to agree on πŸ”βœ¨

  • Series: Network Working Group
  • Author: Jeffrey I. Schiller, Massachusetts Institute of Technology
  • Category: Standards Track
  • Date: December 2005
  • Obsoletes / Updates: the title block doesn't list anything this document obsoletes or updates 🧐

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 (C) The Internet Society (2005).

Abstract πŸ’–

The IPsec series of protocols uses a bunch of cryptographic algorithms to deliver security services πŸ” The Internet Key Exchange (IKE (RFC 2409) and IKEv2) gives you a way to negotiate which algorithms get used in any given association 🀝 But to make sure different implementations can actually talk to each other, you need a set of mandatory-to-implement algorithms, so there's always at least one algorithm everyone has available ✨ This document defines the current set of algorithms that are mandatory to implement as part of IKEv2, plus the algorithms that should be implemented because they might get promoted to mandatory later πŸ¦‹

1. Introduction 🌸

The Internet Key Exchange protocol lets both endpoints of a cryptographic association negotiate which cryptographic algorithms to use πŸ’… Different IPsec and IKE implementations might offer different algorithms. But the IETF really wants everything to be able to interoperate, so IKE has to define a set of mandatory-to-implement algorithms, since IKE itself uses those algorithms as part of its own negotiations 🧚 That means some set of algorithms has to be specified as "mandatory-to-implement" for IKE.

Cryptography is a constant plot twist 😭 New algorithms keep showing up and existing ones keep getting attacked. An algorithm that's strong today could be shown to be weak tomorrow πŸ’€ So the choice of mandatory-to-implement algorithm should be conservative, to lower the odds that it gets compromised quickly. Performance matters too, because lots of IPsec deployments are in environments where speed is a real concern πŸ”₯

Finally, the mandatory-to-implement algorithm(s) may need to change over time as the world changes πŸ‘‘ That's why the choice of mandatory-to-implement algorithms got pulled out of the main IKEv2 specification and moved into this document. When the choice of algorithm changes, only this document should need updating πŸŽ€

Ideally, tomorrow's mandatory-to-implement algorithm is already sitting in most IPsec implementations by the time it becomes mandatory πŸ™Œ So we'll try to list the algorithms we know about today in this document. There's no guarantee that the algorithms we think might be mandatory later will actually end up that way. Every algorithm we know today is subject to cryptographic attack and could be broken in the future 😬

2. Requirements Terminology πŸ“

Keywords "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", and "MAY" that appear in this document are to be interpreted as described in [RFC2119].

We define some extra terms here, bestie:

  • SHOULD+: This term means the same as SHOULD. However, it's likely that an algorithm marked as SHOULD+ will be promoted at some future time to be a MUST. πŸš€
  • SHOULD-: This term means the same as SHOULD. However, an algorithm marked as SHOULD- may be deprecated to a MAY in a future version of this document. πŸ“‰
  • MUST-: This term means the same as MUST. However, we expect at some point that this algorithm will no longer be a MUST in a future document. Its status will be decided later, but it's reasonable to expect that if a future revision changes the status of a MUST- algorithm, it will stay at least a SHOULD or a SHOULD-. πŸ₯Ί

3. Algorithm Selection πŸŽ€

3.1. IKEv2 Algorithm Selection πŸ”

3.1.1. Encrypted Payload Algorithms πŸ’Œ

The IKEv2 Encrypted Payload needs both a confidentiality algorithm and an integrity algorithm 🫢 For confidentiality, implementations MUST- implement 3DES-CBC and SHOULD+ implement AES-128-CBC. For integrity, HMAC-SHA1 MUST be implemented.

3.1.2. Diffie-Hellman Groups 🧁

There are several Modular Exponential (MODP) groups defined for use in IKEv2. They're defined in both the [IKEv2] base document and in the MODP extensions document, and they're identified by group number. Any groups not listed here are considered as "MAY be implemented" 🌈

      Group Number        Bit Length            Status     Defined
      2                   1024 MODP Group       MUST-      [RFC2409]
      14                  2048 MODP Group       SHOULD+    [RFC3526]

3.1.3. IKEv2 Transform Type 1 Algorithms πŸ”’

IKEv2 defines several possible algorithms for Transfer Type 1 (encryption). They're listed below with their implementation status πŸ’–

      Name                     Number    Defined In      Status
      RESERVED                 0
      ENCR_3DES                3         [RFC2451]       MUST-
      ENCR_NULL                11        [RFC2410]       MAY
      ENCR_AES_CBC             12        [AES-CBC]       SHOULD+
      ENCR_AES_CTR             13        [AES-CTR]       SHOULD

3.1.4. IKEv2 Transform Type 2 Algorithms 🎲

Transfer Type 2 Algorithms are pseudo-random functions used to generate random values when they're needed ✨

      Name                Number     Defined In   Status
      RESERVED            0
      PRF_HMAC_MD5        1          [RFC2104]    MAY
      PRF_HMAC_SHA1       2          [RFC2104]    MUST
      PRF_AES128_CBC      4          [AESPRF]     SHOULD+

3.1.5. IKEv2 Transform Type 3 Algorithms πŸ›‘οΈ

Transfer Type 3 Algorithms are integrity algorithms used to protect data against tampering 🫑

      Name                     Number       Defined In           Status
      NONE                     0
      AUTH_HMAC_MD5_96         1            [RFC2403]            MAY
      AUTH_HMAC_SHA1_96        2            [RFC2404]            MUST
      AUTH_AES_XCBC_96         5            [AES-MAC]            SHOULD+

4. Security Considerations 🚨

The security of cryptographic-based systems depends on both the strength of the cryptographic algorithms chosen and the strength of the keys used with those algorithms. It also depends on the engineering of the protocol used by the system, to make sure there are no non-cryptographic ways to get around the security of the overall system. πŸ’€

This document is about selecting cryptographic algorithms for IKEv2, specifically the selection of "mandatory-to-implement" algorithms πŸ” The algorithms identified in this document as "MUST implement" or "SHOULD implement" aren't known to be broken right now, and cryptographic research so far suggests they'll likely stay secure for the foreseeable future. But it isn't necessarily forever 😭 So we'd expect new revisions of this document to come out from time to time, reflecting the current best practice in this area πŸ¦‹

Intellectual Property ✨

okay so bestie, the IETF is NOT taking a position on whether any Intellectual Property Rights or other rights could apply to the tech in this doc, or whether any license for them is actually available. it also hasn't done any independent digging to find such rights πŸ™ˆ for the rules on rights in RFC docs, check out BCP 78 and BCP 79 πŸ’…

the IETF on-line IPR repository at http://www.ietf.org/ipr is where you'd find copies of IPR disclosures sent to the IETF Secretariat, any licensing assurances that were promised, and the results of anyone trying to get a general license or permission to use those proprietary rights πŸŽ€

and if you know about any copyrights, patents, patent applications, or other proprietary rights that might cover tech needed to implement this standard, the IETF wants to hear about it! send that info to ietf-ipr@ietf.org 🫢

Acknowledgement 🌸

the RFC Editor function is currently funded by the Internet Society, so a big thank you to them πŸ§šπŸ’–

πŸ“¦ where this page comes from