summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc9227.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc9227.txt')
-rw-r--r--doc/rfc/rfc9227.txt1094
1 files changed, 1094 insertions, 0 deletions
diff --git a/doc/rfc/rfc9227.txt b/doc/rfc/rfc9227.txt
new file mode 100644
index 0000000..93a903c
--- /dev/null
+++ b/doc/rfc/rfc9227.txt
@@ -0,0 +1,1094 @@
+
+
+
+
+Independent Submission V. Smyslov
+Request for Comments: 9227 ELVIS-PLUS
+Category: Informational March 2022
+ISSN: 2070-1721
+
+
+ Using GOST Ciphers in the Encapsulating Security Payload (ESP) and
+ Internet Key Exchange Version 2 (IKEv2) Protocols
+
+Abstract
+
+ This document defines a set of encryption transforms for use in the
+ Encapsulating Security Payload (ESP) and in the Internet Key Exchange
+ version 2 (IKEv2) protocols, which are parts of the IP Security
+ (IPsec) protocol suite. The transforms are based on the GOST R
+ 34.12-2015 block ciphers (which are named "Magma" and "Kuznyechik")
+ in Multilinear Galois Mode (MGM) and the external rekeying approach.
+
+ This specification was developed to facilitate implementations that
+ wish to support the GOST algorithms. This document does not imply
+ IETF endorsement of the cryptographic algorithms used in this
+ document.
+
+Status of This Memo
+
+ This document is not an Internet Standards Track specification; it is
+ published for informational purposes.
+
+ This is a contribution to the RFC Series, independently of any other
+ RFC stream. The RFC Editor has chosen to publish this document at
+ its discretion and makes no statement about its value for
+ implementation or deployment. Documents approved for publication by
+ the RFC Editor are not candidates for any level of Internet Standard;
+ see Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc9227.
+
+Copyright Notice
+
+ Copyright (c) 2022 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document.
+
+Table of Contents
+
+ 1. Introduction
+ 2. Requirements Language
+ 3. Overview
+ 4. Description of Transforms
+ 4.1. Tree-Based External Rekeying
+ 4.2. Initialization Vector Format
+ 4.3. Nonce Format for MGM
+ 4.3.1. MGM Nonce Format for Transforms Based on the
+ "Kuznyechik" Cipher
+ 4.3.2. MGM Nonce Format for Transforms Based on the "Magma"
+ Cipher
+ 4.4. Keying Material
+ 4.5. Integrity Check Value
+ 4.6. Plaintext Padding
+ 4.7. AAD Construction
+ 4.7.1. ESP AAD
+ 4.7.2. IKEv2 AAD
+ 4.8. Using Transforms
+ 5. Security Considerations
+ 6. IANA Considerations
+ 7. References
+ 7.1. Normative References
+ 7.2. Informative References
+ Appendix A. Test Vectors
+ Acknowledgments
+ Author's Address
+
+1. Introduction
+
+ The IP Security (IPsec) protocol suite consists of several protocols,
+ of which the Encapsulating Security Payload (ESP) [RFC4303] and the
+ Internet Key Exchange version 2 (IKEv2) [RFC7296] are most widely
+ used. This document defines four transforms for ESP and IKEv2 based
+ on Russian cryptographic standard algorithms (often referred to as
+ "GOST" algorithms). These definitions are based on the
+ recommendations [GOST-ESP] established by the Federal Agency on
+ Technical Regulating and Metrology (Rosstandart), which describe how
+ Russian cryptographic standard algorithms are used in ESP and IKEv2.
+ The transforms defined in this document are based on two block
+ ciphers from Russian cryptographic standard algorithms --
+ "Kuznyechik" [GOST3412-2015] [RFC7801] and "Magma" [GOST3412-2015]
+ [RFC8891] in Multilinear Galois Mode (MGM) [GOST-MGM] [RFC9058].
+ These transforms provide Authenticated Encryption with Associated
+ Data (AEAD). An external rekeying mechanism, described in [RFC8645],
+ is also used in these transforms to limit the load on session keys.
+
+ Because the GOST specification includes the definition of both
+ 128-bit ("Kuznyechik") and 64-bit ("Magma") block ciphers, both are
+ included in this document. Implementers should make themselves aware
+ of the relative security and other cost-benefit implications of the
+ two ciphers. See Section 5 for more details.
+
+ This specification was developed to facilitate implementations that
+ wish to support the GOST algorithms. This document does not imply
+ IETF endorsement of the cryptographic algorithms used in this
+ document.
+
+2. Requirements Language
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
+ "OPTIONAL" in this document are to be interpreted as described in
+ BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
+ capitals, as shown here.
+
+3. Overview
+
+ Russian cryptographic standard algorithms, often referred to as
+ "GOST" algorithms, constitute a set of cryptographic algorithms of
+ different types -- ciphers, hash functions, digital signatures, etc.
+ In particular, Russian cryptographic standard [GOST3412-2015] defines
+ two block ciphers -- "Kuznyechik" (also defined in [RFC7801]) and
+ "Magma" (also defined in [RFC8891]). Both ciphers use a 256-bit key.
+ "Kuznyechik" has a block size of 128 bits, while "Magma" has a 64-bit
+ block.
+
+ Multilinear Galois Mode (MGM) is an AEAD mode defined in [GOST-MGM]
+ and [RFC9058]. It is claimed to provide defense against some attacks
+ on well-known AEAD modes, like Galois/Counter Mode (GCM).
+
+ [RFC8645] defines mechanisms that can be used to limit the number of
+ times any particular session key is used. One of these mechanisms,
+ called external rekeying with tree-based construction (defined in
+ Section 5.2.3 of [RFC8645]), is used in the defined transforms. For
+ the purpose of deriving subordinate keys, the Key Derivation Function
+ (KDF) KDF_GOSTR3411_2012_256, defined in Section 4.5 of [RFC7836], is
+ used. This KDF is based on a Hashed Message Authentication Code
+ (HMAC) construction [RFC2104] with a Russian GOST hash function
+ defined in Russian cryptographic standard [GOST3411-2012] (also
+ defined in [RFC6986]).
+
+4. Description of Transforms
+
+ This document defines four transforms of Type 1 (Encryption
+ Algorithm) for use in ESP and IKEv2. All of them use MGM as the mode
+ of operation with tree-based external rekeying. The transforms
+ differ in underlying ciphers and in cryptographic services they
+ provide.
+
+ * ENCR_KUZNYECHIK_MGM_KTREE (Transform ID 32) is an AEAD transform
+ based on the "Kuznyechik" algorithm; it provides confidentiality
+ and message authentication and thus can be used in both ESP and
+ IKEv2.
+
+ * ENCR_MAGMA_MGM_KTREE (Transform ID 33) is an AEAD transform based
+ on the "Magma" algorithm; it provides confidentiality and message
+ authentication and thus can be used in both ESP and IKEv2.
+
+ * ENCR_KUZNYECHIK_MGM_MAC_KTREE (Transform ID 34) is a MAC-only
+ transform based on the "Kuznyechik" algorithm; it provides no
+ confidentiality and thus can only be used in ESP, but not in
+ IKEv2.
+
+ * ENCR_MAGMA_MGM_MAC_KTREE (Transform ID 35) is a MAC-only transform
+ based on the "Magma" algorithm; it provides no confidentiality and
+ thus can only be used in ESP, but not in IKEv2.
+
+ Note that transforms ENCR_KUZNYECHIK_MGM_MAC_KTREE and
+ ENCR_MAGMA_MGM_MAC_KTREE don't provide any confidentiality, but they
+ are defined as Type 1 (Encryption Algorithm) transforms because of
+ the need to include an Initialization Vector (IV), which is
+ impossible for Type 3 (Integrity Algorithm) transforms.
+
+4.1. Tree-Based External Rekeying
+
+ All four transforms use the same tree-based external rekeying
+ mechanism. The idea is that the key that is provided for the
+ transform is not directly used to protect messages. Instead, a tree
+ of keys is derived using this key as a root. This tree may have
+ several levels. The leaf keys are used for message protection, while
+ intermediate-node keys are used to derive lower-level keys, including
+ leaf keys. See Section 5.2.3 of [RFC8645] for more details. This
+ construction allows us to protect a large amount of data, at the same
+ time providing a bound on a number of times any particular key in the
+ tree is used, thus defending against some side-channel attacks and
+ also increasing the key lifetime limitations based on combinatorial
+ properties.
+
+ The transforms defined in this document use a three-level tree. The
+ leaf key that protects a message is computed as follows:
+
+ K_msg = KDF (KDF (KDF (K, l1, 0x00 | i1), l2, i2), l3, i3)
+
+ where:
+
+ KDF (k, l, s) Key Derivation Function KDF_GOSTR3411_2012_256
+ (defined in Section 4.5 of [RFC7836]), which accepts
+ three input parameters -- a key (k), a label (l), and
+ a seed (s) -- and provides a new key as output
+
+ K the root key for the tree (see Section 4.4)
+
+ l1, l2, l3 labels defined as 6-octet ASCII strings without null
+ termination:
+
+ l1 = "level1"
+
+ l2 = "level2"
+
+ l3 = "level3"
+
+ i1, i2, i3 parameters that determine which keys out of the tree
+ are used on each level. Together, they determine a
+ leaf key that is used for message protection; the
+ length of i1 is one octet, and i2 and i3 are two-
+ octet integers in network byte order
+
+ | indicates concatenation
+
+ This construction allows us to generate up to 2^8 keys on level 1 and
+ up to 2^16 keys on levels 2 and 3. So, the total number of possible
+ leaf keys generated from a single Security Association (SA) key is
+ 2^40.
+
+ This specification doesn't impose any requirements on how frequently
+ external rekeying takes place. It is expected that the sending
+ application will follow its own policy dictating how many times the
+ keys on each level must be used.
+
+4.2. Initialization Vector Format
+
+ Each message protected by the defined transforms MUST contain an IV.
+ The IV has a size of 64 bits and consists of four fields. The fields
+ i1, i2, and i3 are parameters that determine the particular leaf key
+ this message was protected with (see Section 4.1). The fourth field
+ is a counter, representing the message number for this key.
+
+ 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | i1 | i2 | i3 |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | i3 (cont) | pnum |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 1: IV Format
+
+ where:
+
+ i1 (1 octet), i2 (2 octets), i3 (2 octets): parameters that
+ determine the particular key used to protect this message; 2-octet
+ parameters are integers in network byte order
+
+ pnum (3 octets): message counter in network byte order for the leaf
+ key protecting this message; up to 2^24 messages may be protected
+ using a single leaf key
+
+ For any given SA, the IV MUST NOT be used more than once, but there
+ is no requirement that IV be unpredictable.
+
+4.3. Nonce Format for MGM
+
+ MGM requires a per-message nonce (called the Initial Counter Nonce,
+ or ICN in [RFC9058]) that MUST be unique in the context of any leaf
+ key. The size of the ICN is n-1 bits, where n is the block size of
+ the underlying cipher. The two ciphers used in the transforms
+ defined in this document have different block sizes, so two different
+ formats for the ICN are defined.
+
+ MGM specification requires that the nonce be n-1 bits in size, where
+ n is the block size of the underlying cipher. This document defines
+ MGM nonces having n bits (the block size of the underlying cipher) in
+ size. Since n is always a multiple of 8 bits, this makes MGM nonces
+ having a whole number of octets. When used inside MGM, the most
+ significant bit of the first octet of the nonce (represented as an
+ octet string) is dropped, making the effective size of the nonce
+ equal to n-1 bits. Note that the dropped bit is a part of the "zero"
+ field (see Figures 2 and 3), which is always set to 0, so no
+ information is lost when it is dropped.
+
+4.3.1. MGM Nonce Format for Transforms Based on the "Kuznyechik" Cipher
+
+ For transforms based on the "Kuznyechik" cipher
+ (ENCR_KUZNYECHIK_MGM_KTREE and ENCR_KUZNYECHIK_MGM_MAC_KTREE), the
+ ICN consists of a "zero" octet; a 24-bit message counter; and a
+ 96-bit secret salt, which is fixed for the SA and is not transmitted.
+
+ 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | zero | pnum |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ | salt |
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 2: Nonce Format for Transforms Based on the "Kuznyechik"
+ Cipher
+
+ where:
+
+ zero (1 octet): set to 0
+
+ pnum (3 octets): the counter for the messages protected by the given
+ leaf key; this field MUST be equal to the pnum field in the IV
+
+ salt (12 octets): secret salt. The salt is a string of bits that
+ are formed when the SA is created (see Section 4.4 for details).
+ The salt does not change during the SA's lifetime and is not
+ transmitted on the wire. Every SA will have its own salt.
+
+4.3.2. MGM Nonce Format for Transforms Based on the "Magma" Cipher
+
+ For transforms based on the "Magma" cipher (ENCR_MAGMA_MGM_KTREE and
+ ENCR_MAGMA_MGM_MAC_KTREE), the ICN consists of a "zero" octet; a
+ 24-bit message counter; and a 32-bit secret salt, which is fixed for
+ the SA and is not transmitted.
+
+ 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | zero | pnum |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | salt |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 3: Nonce Format for Transforms Based on the "Magma" Cipher
+
+ where:
+
+ zero (1 octet): set to 0
+
+ pnum (3 octets): the counter for the messages protected by the given
+ leaf key; this field MUST be equal to the pnum field in the IV
+
+ salt (4 octets): secret salt. The salt is a string of bits that are
+ formed when the SA is created (see Section 4.4 for details). The
+ salt does not change during the SA's lifetime and is not
+ transmitted on the wire. Every SA will have its own salt.
+
+4.4. Keying Material
+
+ We'll call a string of bits that is used to initialize the transforms
+ defined in this specification a "transform key". The transform key
+ is a composite entity consisting of the root key for the tree and the
+ secret salt.
+
+ The transform key for the ENCR_KUZNYECHIK_MGM_KTREE and
+ ENCR_KUZNYECHIK_MGM_MAC_KTREE transforms consists of 352 bits (44
+ octets), of which the first 256 bits is a root key for the tree
+ (denoted as K in Section 4.1) and the remaining 96 bits is a secret
+ salt (see Section 4.3.1).
+
+ The transform key for the ENCR_MAGMA_MGM_KTREE and
+ ENCR_MAGMA_MGM_MAC_KTREE transforms consists of 288 bits (36 octets),
+ of which the first 256 bits is a root key for the tree (denoted as K
+ in Section 4.1) and the remaining 32 bits is a secret salt (see
+ Section 4.3.2).
+
+ In the case of ESP, the transform keys are extracted from the KEYMAT
+ as defined in Section 2.17 of [RFC7296]. In the case of IKEv2, the
+ transform keys are either SK_ei or SK_er, which are generated as
+ defined in Section 2.14 of [RFC7296]. Note that since these
+ transforms provide authenticated encryption, no additional keys are
+ needed for authentication. This means that, in the case of IKEv2,
+ the keys SK_ai/SK_ar are not used and MUST be treated as having zero
+ length.
+
+4.5. Integrity Check Value
+
+ The length of the authentication tag that MGM can compute is in the
+ range from 32 bits to the block size of the underlying cipher.
+ Section 4 of [RFC9058] states that the authentication tag length MUST
+ be fixed for a particular protocol. For transforms based on the
+ "Kuznyechik" cipher (ENCR_KUZNYECHIK_MGM_KTREE and
+ ENCR_KUZNYECHIK_MGM_MAC_KTREE), the resulting Integrity Check Value
+ (ICV) length is set to 96 bits. For transforms based on the "Magma"
+ cipher (ENCR_MAGMA_MGM_KTREE and ENCR_MAGMA_MGM_MAC_KTREE), the full
+ ICV length is set to the block size (64 bits).
+
+4.6. Plaintext Padding
+
+ The transforms defined in this document don't require any plaintext
+ padding, as specified in [RFC9058]. This means that only those
+ padding requirements that are imposed by the protocol are applied (4
+ bytes for ESP, no padding for IKEv2).
+
+4.7. AAD Construction
+
+4.7.1. ESP AAD
+
+ Additional Authenticated Data (AAD) in ESP is constructed
+ differently, depending on the transform being used and whether the
+ Extended Sequence Number (ESN) is in use or not. The
+ ENCR_KUZNYECHIK_MGM_KTREE and ENCR_MAGMA_MGM_KTREE transforms provide
+ confidentiality, so the content of the ESP body is encrypted and the
+ AAD consists of the ESP Security Parameter Index (SPI) and (E)SN.
+ The AAD is constructed similarly to the AAD in [RFC4106].
+
+ On the other hand, the ENCR_KUZNYECHIK_MGM_MAC_KTREE and
+ ENCR_MAGMA_MGM_MAC_KTREE transforms don't provide confidentiality;
+ they provide only message authentication. For this purpose, the IV
+ and the part of the ESP packet that is normally encrypted are
+ included in the AAD. For these transforms, the encryption capability
+ provided by MGM is not used. The AAD is constructed similarly to the
+ AAD in [RFC4543].
+
+ 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | SPI |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 32-bit Sequence Number |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 4: AAD for AEAD Transforms with 32-Bit SN
+
+ 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | SPI |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 64-bit Extended Sequence Number |
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 5: AAD for AEAD Transforms with 64-Bit ESN
+
+ 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | SPI |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 32-bit Sequence Number |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | IV |
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ ~ Payload Data (variable) ~
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Padding (0-255 bytes) |
+ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | | Pad Length | Next Header |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 6: AAD for Authentication-Only Transforms with 32-Bit SN
+
+ 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | SPI |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | 64-bit Extended Sequence Number |
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | IV |
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ ~ Payload Data (variable) ~
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Padding (0-255 bytes) |
+ + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | | Pad Length | Next Header |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 7: AAD for Authentication-Only Transforms with 64-Bit ESN
+
+4.7.2. IKEv2 AAD
+
+ For IKEv2, the AAD consists of the IKEv2 Header, any unencrypted
+ payloads following it (if present), and either the Encrypted payload
+ header (Section 3.14 of [RFC7296]) or the Encrypted Fragment payload
+ (Section 2.5 of [RFC7383]), depending on whether IKE fragmentation is
+ used. The AAD is constructed similarly to the AAD in [RFC5282].
+
+ 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ IKEv2 Header ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Unencrypted IKE Payloads ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Next Payload |C| RESERVED | Payload Length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 8: AAD for IKEv2 in the Case of the Encrypted Payload
+
+ 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ IKEv2 Header ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ ~ Unencrypted IKE Payloads ~
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Next Payload |C| RESERVED | Payload Length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Fragment Number | Total Fragments |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 9: AAD for IKEv2 in the Case of the Encrypted Fragment Payload
+
+4.8. Using Transforms
+
+ When the SA is established, the i1, i2, and i3 parameters are set to
+ 0 by the sender and a leaf key is calculated. The pnum parameter
+ starts from 0 and is incremented with each message protected by the
+ same leaf key. When the sender decides that the leaf should be
+ changed, it increments the i3 parameter and generates a new leaf key.
+ The pnum parameter for the new leaf key is reset to 0, and the
+ process continues. If the sender decides that a third-level key
+ corresponding to i3 is used enough times, it increments i2, resets i3
+ to 0, and calculates a new leaf key. The pnum is reset to 0 (as with
+ every new leaf key), and the process continues. A similar procedure
+ is used when a second-level key needs to be changed.
+
+ A combination of i1, i2, i3, and pnum MUST NOT repeat for any
+ particular SA. This means that the wrapping of these counters is not
+ allowed: when i2, i3, or pnum reaches its respective maximum value, a
+ procedure for changing a leaf key, described above, is executed, and
+ if all four parameters reach their maximum values, the IPsec SA
+ becomes unusable.
+
+ There may be other reasons to recalculate leaf keys besides reaching
+ maximum values for the counters. For example, as described in
+ Section 5, it is RECOMMENDED that the sender count the number of
+ octets protected by a particular leaf key and generate a new key when
+ some threshold is reached, and at the latest when reaching the octet
+ limits stated in Section 5 for each of the ciphers.
+
+ The receiver always uses i1, i2, and i3 from the received message.
+ If they differ from the values in previously received packets, a new
+ leaf key is calculated. The pnum parameter is always used from the
+ received packet. To improve performance, implementations may cache
+ recently used leaf keys. When a new leaf key is calculated (based on
+ the values from the received message), the old key may be kept for
+ some time to improve performance in the case of possible packet
+ reordering (when packets protected by the old leaf key are delayed
+ and arrive later).
+
+5. Security Considerations
+
+ The most important security consideration for MGM is that the nonce
+ MUST NOT repeat for a given key. For this reason, the transforms
+ defined in this document MUST NOT be used with manual keying.
+
+ Excessive use of the same key can give an attacker advantages in
+ breaking security properties of the transforms defined in this
+ document. For this reason, the amount of data that any particular
+ key is used to protect should be limited. This is especially
+ important for algorithms with a 64-bit block size (like "Magma"),
+ which currently are generally considered insecure after protecting a
+ relatively small amount of data. For example, Section 3.4 of
+ [SP800-67] limits the number of blocks that are allowed to be
+ encrypted with the Triple DES cipher to 2^20 (8 MB of data). This
+ document defines a rekeying mechanism that allows the mitigation of
+ weak security of a 64-bit block cipher by frequently changing the
+ encryption key.
+
+ For transforms defined in this document, [GOST-ESP] recommends
+ limiting the number of octets protected with a single K_msg key by
+ the following values:
+
+ * 2^41 octets for transforms based on the "Kuznyechik" cipher
+ (ENCR_KUZNYECHIK_MGM_KTREE and ENCR_KUZNYECHIK_MGM_MAC_KTREE)
+
+ * 2^28 octets for transforms based on the "Magma" cipher
+ (ENCR_MAGMA_MGM_KTREE and ENCR_MAGMA_MGM_MAC_KTREE)
+
+ These values are based on combinatorial properties and may be further
+ restricted if side-channel attacks are taken into consideration.
+ Note that the limit for transforms based on the "Kuznyechik" cipher
+ is unreachable because, due to the construction of the transforms,
+ the number of protected messages is limited to 2^24 and each message
+ (either IKEv2 messages or ESP datagrams) is limited to 2^16 octets in
+ size, giving 2^40 octets as the maximum amount of data that can be
+ protected with a single K_msg.
+
+ Section 4 of [RFC9058] discusses the possibility of truncating
+ authentication tags in MGM as a trade-off between message expansion
+ and the probability of forgery. This specification truncates an
+ authentication tag length for transforms based on the "Kuznyechik"
+ cipher to 96 bits. This decreases message expansion while still
+ providing a very low probability of forgery: 2^-96.
+
+ An attacker can send a lot of packets with arbitrarily chosen i1, i2,
+ and i3 parameters. This will 1) force a recipient to recalculate the
+ leaf key for every received packet if i1, i2, and i3 are different
+ from these values in previously received packets, thus consuming CPU
+ resources and 2) force a recipient to make verification attempts
+ (that would fail) on a large amount of data, thus allowing the
+ attacker a deeper analysis of the underlying cryptographic primitive
+ (see [AEAD-USAGE-LIMITS]). Implementations MAY initiate rekeying if
+ they deem that they receive too many packets with an invalid ICV.
+
+ Security properties of MGM are discussed in [MGM-SECURITY].
+
+6. IANA Considerations
+
+ IANA maintains a registry called "Internet Key Exchange Version 2
+ (IKEv2) Parameters" with a subregistry called "Transform Type
+ Values". IANA has added the following four Transform IDs to the
+ "Transform Type 1 - Encryption Algorithm Transform IDs" subregistry.
+
+ +========+===============================+===========+===========+
+ | Number | Name | ESP | IKEv2 |
+ | | | Reference | Reference |
+ +========+===============================+===========+===========+
+ | 32 | ENCR_KUZNYECHIK_MGM_KTREE | RFC 9227 | RFC 9227 |
+ +--------+-------------------------------+-----------+-----------+
+ | 33 | ENCR_MAGMA_MGM_KTREE | RFC 9227 | RFC 9227 |
+ +--------+-------------------------------+-----------+-----------+
+ | 34 | ENCR_KUZNYECHIK_MGM_MAC_KTREE | RFC 9227 | Not |
+ | | | | allowed |
+ +--------+-------------------------------+-----------+-----------+
+ | 35 | ENCR_MAGMA_MGM_MAC_KTREE | RFC 9227 | Not |
+ | | | | allowed |
+ +--------+-------------------------------+-----------+-----------+
+
+ Table 1: Transform IDs
+
+7. References
+
+7.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
+ 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
+ May 2017, <https://www.rfc-editor.org/info/rfc8174>.
+
+ [RFC4303] Kent, S., "IP Encapsulating Security Payload (ESP)",
+ RFC 4303, DOI 10.17487/RFC4303, December 2005,
+ <https://www.rfc-editor.org/info/rfc4303>.
+
+ [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T.
+ Kivinen, "Internet Key Exchange Protocol Version 2
+ (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October
+ 2014, <https://www.rfc-editor.org/info/rfc7296>.
+
+ [RFC7383] Smyslov, V., "Internet Key Exchange Protocol Version 2
+ (IKEv2) Message Fragmentation", RFC 7383,
+ DOI 10.17487/RFC7383, November 2014,
+ <https://www.rfc-editor.org/info/rfc7383>.
+
+ [RFC6986] Dolmatov, V., Ed. and A. Degtyarev, "GOST R 34.11-2012:
+ Hash Function", RFC 6986, DOI 10.17487/RFC6986, August
+ 2013, <https://www.rfc-editor.org/info/rfc6986>.
+
+ [RFC7801] Dolmatov, V., Ed., "GOST R 34.12-2015: Block Cipher
+ "Kuznyechik"", RFC 7801, DOI 10.17487/RFC7801, March 2016,
+ <https://www.rfc-editor.org/info/rfc7801>.
+
+ [RFC8891] Dolmatov, V., Ed. and D. Baryshkov, "GOST R 34.12-2015:
+ Block Cipher "Magma"", RFC 8891, DOI 10.17487/RFC8891,
+ September 2020, <https://www.rfc-editor.org/info/rfc8891>.
+
+ [RFC9058] Smyshlyaev, S., Ed., Nozdrunov, V., Shishkin, V., and E.
+ Griboedova, "Multilinear Galois Mode (MGM)", RFC 9058,
+ DOI 10.17487/RFC9058, June 2021,
+ <https://www.rfc-editor.org/info/rfc9058>.
+
+ [RFC7836] Smyshlyaev, S., Ed., Alekseev, E., Oshkin, I., Popov, V.,
+ Leontiev, S., Podobaev, V., and D. Belyavsky, "Guidelines
+ on the Cryptographic Algorithms to Accompany the Usage of
+ Standards GOST R 34.10-2012 and GOST R 34.11-2012",
+ RFC 7836, DOI 10.17487/RFC7836, March 2016,
+ <https://www.rfc-editor.org/info/rfc7836>.
+
+7.2. Informative References
+
+ [GOST3411-2012]
+ Federal Agency on Technical Regulating and Metrology,
+ "Information technology. Cryptographic data security. Hash
+ function", GOST R 34.11-2012, August 2012. (In Russian)
+
+ [GOST3412-2015]
+ Federal Agency on Technical Regulating and Metrology,
+ "Information technology. Cryptographic data security.
+ Block ciphers", GOST R 34.12-2015, June 2015. (In
+ Russian)
+
+ [GOST-MGM] Federal Agency on Technical Regulating and Metrology,
+ "Information technology. Cryptographic information
+ security. Block Cipher Modes Implementing Authenticated
+ Encryption", R 1323565.1.026-2019, September 2019. (In
+ Russian)
+
+ [GOST-ESP] Federal Agency on Technical Regulating and Metrology,
+ "Information technology. Cryptographic information
+ protection. The use of Russian cryptographic algorithms in
+ the ESP information protection protocol",
+ R 1323565.1.035-2021, January 2021. (In Russian)
+
+ [RFC2104] Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-
+ Hashing for Message Authentication", RFC 2104,
+ DOI 10.17487/RFC2104, February 1997,
+ <https://www.rfc-editor.org/info/rfc2104>.
+
+ [RFC4106] Viega, J. and D. McGrew, "The Use of Galois/Counter Mode
+ (GCM) in IPsec Encapsulating Security Payload (ESP)",
+ RFC 4106, DOI 10.17487/RFC4106, June 2005,
+ <https://www.rfc-editor.org/info/rfc4106>.
+
+ [RFC4543] McGrew, D. and J. Viega, "The Use of Galois Message
+ Authentication Code (GMAC) in IPsec ESP and AH", RFC 4543,
+ DOI 10.17487/RFC4543, May 2006,
+ <https://www.rfc-editor.org/info/rfc4543>.
+
+ [RFC5282] Black, D. and D. McGrew, "Using Authenticated Encryption
+ Algorithms with the Encrypted Payload of the Internet Key
+ Exchange version 2 (IKEv2) Protocol", RFC 5282,
+ DOI 10.17487/RFC5282, August 2008,
+ <https://www.rfc-editor.org/info/rfc5282>.
+
+ [RFC8645] Smyshlyaev, S., Ed., "Re-keying Mechanisms for Symmetric
+ Keys", RFC 8645, DOI 10.17487/RFC8645, August 2019,
+ <https://www.rfc-editor.org/info/rfc8645>.
+
+ [MGM-SECURITY]
+ Akhmetzyanova, L., Alekseev, E., Karpunin, G., and V.
+ Nozdrunov, "Security of Multilinear Galois Mode (MGM)",
+ 2019, <https://eprint.iacr.org/2019/123.pdf>.
+
+ [SP800-67] National Institute of Standards and Technology,
+ "Recommendation for the Triple Data Encryption Algorithm
+ (TDEA) Block Cipher", DOI 10.6028/NIST.SP.800-67r2,
+ November 2017,
+ <https://nvlpubs.nist.gov/nistpubs/SpecialPublications/
+ NIST.SP.800-67r2.pdf>.
+
+ [AEAD-USAGE-LIMITS]
+ Günther, F., Thomson, M., and C. A. Wood, "Usage Limits on
+ AEAD Algorithms", Work in Progress, Internet-Draft, draft-
+ irtf-cfrg-aead-limits-04, 7 March 2022,
+ <https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-
+ aead-limits-04>.
+
+Appendix A. Test Vectors
+
+ In the following test vectors, binary data is represented in
+ hexadecimal format. The numbers in square brackets indicate the size
+ of the corresponding data in decimal format.
+
+ 1. ENCR_KUZNYECHIK_MGM_KTREE (Example 1):
+
+ transform key [44]:
+ b6 18 0c 14 5c 51 2d bd 69 d9 ce a9 2c ac 1b 5c
+ e1 bc fa 73 79 2d 61 af 0b 44 0d 84 b5 22 cc 38
+ 7b 67 e6 f2 44 f9 7f 06 78 95 2e 45
+ K [32]:
+ b6 18 0c 14 5c 51 2d bd 69 d9 ce a9 2c ac 1b 5c
+ e1 bc fa 73 79 2d 61 af 0b 44 0d 84 b5 22 cc 38
+ salt [12]:
+ 7b 67 e6 f2 44 f9 7f 06 78 95 2e 45
+ i1 = 00, i2 = 0000, i3 = 0000, pnum = 000000
+ K_msg [32]:
+ 2f f1 c9 0e de 78 6e 06 1e 17 b3 74 d7 82 af 7b
+ d8 80 bd 52 7c 66 a2 ba dc 3e 56 9a ab 27 1d a4
+ nonce [16]:
+ 00 00 00 00 7b 67 e6 f2 44 f9 7f 06 78 95 2e 45
+ IV [8]:
+ 00 00 00 00 00 00 00 00
+ AAD [8]:
+ 51 46 53 6b 00 00 00 01
+ plaintext [64]:
+ 45 00 00 3c 23 35 00 00 7f 01 ee cc 0a 6f 0a c5
+ 0a 6f 0a 1d 08 00 f3 5b 02 00 58 00 61 62 63 64
+ 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74
+ 75 76 77 61 62 63 64 65 66 67 68 69 01 02 02 04
+ ciphertext [64]:
+ 18 9d 12 88 b7 18 f9 ea be 55 4b 23 9b ee 65 96
+ c6 d4 ea fd 31 64 96 ef 90 1c ac 31 60 05 aa 07
+ 62 97 b2 24 bf 6d 2b e3 5f d6 f6 7e 7b 9d eb 31
+ 85 ff e9 17 9c a9 bf 0b db af c2 3e ae 4d a5 6f
+ ESP ICV [12]:
+ 50 b0 70 a1 5a 2b d9 73 86 89 f8 ed
+ ESP packet [112]:
+ 45 00 00 70 00 4d 00 00 ff 32 91 4f 0a 6f 0a c5
+ 0a 6f 0a 1d 51 46 53 6b 00 00 00 01 00 00 00 00
+ 00 00 00 00 18 9d 12 88 b7 18 f9 ea be 55 4b 23
+ 9b ee 65 96 c6 d4 ea fd 31 64 96 ef 90 1c ac 31
+ 60 05 aa 07 62 97 b2 24 bf 6d 2b e3 5f d6 f6 7e
+ 7b 9d eb 31 85 ff e9 17 9c a9 bf 0b db af c2 3e
+ ae 4d a5 6f 50 b0 70 a1 5a 2b d9 73 86 89 f8 ed
+
+ 2. ENCR_KUZNYECHIK_MGM_KTREE (Example 2):
+
+ transform key [44]:
+ b6 18 0c 14 5c 51 2d bd 69 d9 ce a9 2c ac 1b 5c
+ e1 bc fa 73 79 2d 61 af 0b 44 0d 84 b5 22 cc 38
+ 7b 67 e6 f2 44 f9 7f 06 78 95 2e 45
+ K [32]:
+ b6 18 0c 14 5c 51 2d bd 69 d9 ce a9 2c ac 1b 5c
+ e1 bc fa 73 79 2d 61 af 0b 44 0d 84 b5 22 cc 38
+ salt [12]:
+ 7b 67 e6 f2 44 f9 7f 06 78 95 2e 45
+ i1 = 00, i2 = 0001, i3 = 0001, pnum = 000000
+ K_msg [32]:
+ 9a ba c6 57 78 18 0e 6f 2a f6 1f b8 d5 71 62 36
+ 66 c2 f5 13 0d 54 e2 11 6c 7d 53 0e 6e 7d 48 bc
+ nonce [16]:
+ 00 00 00 00 7b 67 e6 f2 44 f9 7f 06 78 95 2e 45
+ IV [8]:
+ 00 00 01 00 01 00 00 00
+ AAD [8]:
+ 51 46 53 6b 00 00 00 10
+ plaintext [64]:
+ 45 00 00 3c 23 48 00 00 7f 01 ee b9 0a 6f 0a c5
+ 0a 6f 0a 1d 08 00 e4 5b 02 00 67 00 61 62 63 64
+ 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74
+ 75 76 77 61 62 63 64 65 66 67 68 69 01 02 02 04
+ ciphertext [64]:
+ 78 0a 2c 62 62 32 15 7b fe 01 76 32 f3 2d b4 d0
+ a4 fa 61 2f 66 c2 bf 79 d5 e2 14 9b ac 1d fc 4b
+ 15 4b 69 03 4d c2 1d ef 20 90 6d 59 62 81 12 7c
+ ff 72 56 ab f0 0b a1 22 bb 5e 6c 71 a4 d4 9a 4d
+ ESP ICV [12]:
+ c2 2f 87 40 83 8e 3d fa ce 91 cc b8
+ ESP packet [112]:
+ 45 00 00 70 00 5c 00 00 ff 32 91 40 0a 6f 0a c5
+ 0a 6f 0a 1d 51 46 53 6b 00 00 00 10 00 00 01 00
+ 01 00 00 00 78 0a 2c 62 62 32 15 7b fe 01 76 32
+ f3 2d b4 d0 a4 fa 61 2f 66 c2 bf 79 d5 e2 14 9b
+ ac 1d fc 4b 15 4b 69 03 4d c2 1d ef 20 90 6d 59
+ 62 81 12 7c ff 72 56 ab f0 0b a1 22 bb 5e 6c 71
+ a4 d4 9a 4d c2 2f 87 40 83 8e 3d fa ce 91 cc b8
+
+ 3. ENCR_MAGMA_MGM_KTREE (Example 1):
+
+ transform key [36]:
+ 5b 50 bf 33 78 87 02 38 f3 ca 74 0f d1 24 ba 6c
+ 22 83 ef 58 9b e6 f4 6a 89 4a a3 5d 5f 06 b2 03
+ cf 36 63 12
+ K [32]:
+ 5b 50 bf 33 78 87 02 38 f3 ca 74 0f d1 24 ba 6c
+ 22 83 ef 58 9b e6 f4 6a 89 4a a3 5d 5f 06 b2 03
+ salt [4]:
+ cf 36 63 12
+ i1 = 00, i2 = 0000, i3 = 0000, pnum = 000000
+ K_msg [32]:
+ 25 65 21 e2 70 b7 4a 16 4d fc 26 e6 bf 0c ca 76
+ 5e 9d 41 02 7d 4b 7b 19 76 2b 1c c9 01 dc de 7f
+ nonce [8]:
+ 00 00 00 00 cf 36 63 12
+ IV [8]:
+ 00 00 00 00 00 00 00 00
+ AAD [8]:
+ c8 c2 b2 8d 00 00 00 01
+ plaintext [64]:
+ 45 00 00 3c 24 2d 00 00 7f 01 ed d4 0a 6f 0a c5
+ 0a 6f 0a 1d 08 00 de 5b 02 00 6d 00 61 62 63 64
+ 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74
+ 75 76 77 61 62 63 64 65 66 67 68 69 01 02 02 04
+ ciphertext [64]:
+ fa 08 40 33 2c 4f 3f c9 64 4d 8c 2c 4a 91 7e 0c
+ d8 6f 8e 61 04 03 87 64 6b b9 df bd 91 50 3f 4a
+ f5 d2 42 69 49 d3 5a 22 9e 1e 0e fc 99 ac ee 9e
+ 32 43 e2 3b a4 d1 1e 84 5c 91 a7 19 15 52 cc e8
+ ESP ICV [8]:
+ 5f 4a fa 8b 02 94 0f 5c
+ ESP packet [108]:
+ 45 00 00 6c 00 62 00 00 ff 32 91 3e 0a 6f 0a c5
+ 0a 6f 0a 1d c8 c2 b2 8d 00 00 00 01 00 00 00 00
+ 00 00 00 00 fa 08 40 33 2c 4f 3f c9 64 4d 8c 2c
+ 4a 91 7e 0c d8 6f 8e 61 04 03 87 64 6b b9 df bd
+ 91 50 3f 4a f5 d2 42 69 49 d3 5a 22 9e 1e 0e fc
+ 99 ac ee 9e 32 43 e2 3b a4 d1 1e 84 5c 91 a7 19
+ 15 52 cc e8 5f 4a fa 8b 02 94 0f 5c
+
+ 4. ENCR_MAGMA_MGM_KTREE (Example 2):
+
+ transform key [36]:
+ 5b 50 bf 33 78 87 02 38 f3 ca 74 0f d1 24 ba 6c
+ 22 83 ef 58 9b e6 f4 6a 89 4a a3 5d 5f 06 b2 03
+ cf 36 63 12
+ K [32]:
+ 5b 50 bf 33 78 87 02 38 f3 ca 74 0f d1 24 ba 6c
+ 22 83 ef 58 9b e6 f4 6a 89 4a a3 5d 5f 06 b2 03
+ salt [4]:
+ cf 36 63 12
+ i1 = 00, i2 = 0001, i3 = 0001, pnum = 000000
+ K_msg [32]:
+ 20 e0 46 d4 09 83 9b 23 f0 66 a5 0a 7a 06 5b 4a
+ 39 24 4f 0e 29 ef 1e 6f 2e 5d 2e 13 55 f5 da 08
+ nonce [8]:
+ 00 00 00 00 cf 36 63 12
+ IV [8]:
+ 00 00 01 00 01 00 00 00
+ AAD [8]:
+ c8 c2 b2 8d 00 00 00 10
+ plaintext [64]:
+ 45 00 00 3c 24 40 00 00 7f 01 ed c1 0a 6f 0a c5
+ 0a 6f 0a 1d 08 00 cf 5b 02 00 7c 00 61 62 63 64
+ 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74
+ 75 76 77 61 62 63 64 65 66 67 68 69 01 02 02 04
+ ciphertext [64]:
+ 7a 71 48 41 a5 34 b7 58 93 6a 8e ab 26 91 40 a8
+ 25 a7 f3 5d b9 e4 37 1f e7 6c 99 9c 9b 88 db 72
+ 1d c7 59 f6 56 b5 b3 ea b6 b1 4d 6b d7 7a 07 1d
+ 4b 93 78 bd 08 97 6c 33 ed 9a 01 91 bf fe a1 dd
+ ESP ICV [8]:
+ dd 5d 50 9a fd b8 09 98
+ ESP packet [108]:
+ 45 00 00 6c 00 71 00 00 ff 32 91 2f 0a 6f 0a c5
+ 0a 6f 0a 1d c8 c2 b2 8d 00 00 00 10 00 00 01 00
+ 01 00 00 00 7a 71 48 41 a5 34 b7 58 93 6a 8e ab
+ 26 91 40 a8 25 a7 f3 5d b9 e4 37 1f e7 6c 99 9c
+ 9b 88 db 72 1d c7 59 f6 56 b5 b3 ea b6 b1 4d 6b
+ d7 7a 07 1d 4b 93 78 bd 08 97 6c 33 ed 9a 01 91
+ bf fe a1 dd dd 5d 50 9a fd b8 09 98
+
+ 5. ENCR_KUZNYECHIK_MGM_MAC_KTREE (Example 1):
+
+ transform key [44]:
+ 98 bd 34 ce 3b e1 9a 34 65 e4 87 c0 06 48 83 f4
+ 88 cc 23 92 63 dc 32 04 91 9b 64 3f e7 57 b2 be
+ 6c 51 cb ac 93 c4 5b ea 99 62 79 1d
+ K [32]:
+ 98 bd 34 ce 3b e1 9a 34 65 e4 87 c0 06 48 83 f4
+ 88 cc 23 92 63 dc 32 04 91 9b 64 3f e7 57 b2 be
+ salt [12]:
+ 6c 51 cb ac 93 c4 5b ea 99 62 79 1d
+ i1 = 00, i2 = 0000, i3 = 0000, pnum = 000000
+ K_msg [32]:
+ 98 f1 03 01 81 0a 04 1c da dd e1 bd 85 a0 8f 21
+ 8b ac b5 7e 00 35 e2 22 c8 31 e3 e4 f0 a2 0c 8f
+ nonce [16]:
+ 00 00 00 00 6c 51 cb ac 93 c4 5b ea 99 62 79 1d
+ IV [8]:
+ 00 00 00 00 00 00 00 00
+ AAD [80]:
+ 3d ac 92 6a 00 00 00 01 00 00 00 00 00 00 00 00
+ 45 00 00 3c 0c f1 00 00 7f 01 05 11 0a 6f 0a c5
+ 0a 6f 0a 1d 08 00 48 5c 02 00 03 00 61 62 63 64
+ 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74
+ 75 76 77 61 62 63 64 65 66 67 68 69 01 02 02 04
+ plaintext [0]:
+ ciphertext [0]:
+ ESP ICV [12]:
+ ca c5 8c e5 e8 8b 4b f3 2d 6c f0 4d
+ ESP packet [112]:
+ 45 00 00 70 00 01 00 00 ff 32 91 9b 0a 6f 0a c5
+ 0a 6f 0a 1d 3d ac 92 6a 00 00 00 01 00 00 00 00
+ 00 00 00 00 45 00 00 3c 0c f1 00 00 7f 01 05 11
+ 0a 6f 0a c5 0a 6f 0a 1d 08 00 48 5c 02 00 03 00
+ 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70
+ 71 72 73 74 75 76 77 61 62 63 64 65 66 67 68 69
+ 01 02 02 04 ca c5 8c e5 e8 8b 4b f3 2d 6c f0 4d
+
+ 6. ENCR_KUZNYECHIK_MGM_MAC_KTREE (Example 2):
+
+ transform key [44]:
+ 98 bd 34 ce 3b e1 9a 34 65 e4 87 c0 06 48 83 f4
+ 88 cc 23 92 63 dc 32 04 91 9b 64 3f e7 57 b2 be
+ 6c 51 cb ac 93 c4 5b ea 99 62 79 1d
+ K [32]:
+ 98 bd 34 ce 3b e1 9a 34 65 e4 87 c0 06 48 83 f4
+ 88 cc 23 92 63 dc 32 04 91 9b 64 3f e7 57 b2 be
+ salt [12]:
+ 6c 51 cb ac 93 c4 5b ea 99 62 79 1d
+ i1 = 00, i2 = 0000, i3 = 0001, pnum = 000000
+ K_msg [32]:
+ 02 c5 41 87 7c c6 23 f3 f1 35 91 9a 75 13 b6 f8
+ a8 a1 8c b2 63 99 86 2f 50 81 4f 52 91 01 67 84
+ nonce [16]:
+ 00 00 00 00 6c 51 cb ac 93 c4 5b ea 99 62 79 1d
+ IV [8]:
+ 00 00 00 00 01 00 00 00
+ AAD [80]:
+ 3d ac 92 6a 00 00 00 06 00 00 00 00 01 00 00 00
+ 45 00 00 3c 0c fb 00 00 7f 01 05 07 0a 6f 0a c5
+ 0a 6f 0a 1d 08 00 43 5c 02 00 08 00 61 62 63 64
+ 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74
+ 75 76 77 61 62 63 64 65 66 67 68 69 01 02 02 04
+ plaintext [0]:
+ ciphertext [0]:
+ ESP ICV [12]:
+ ba bc 67 ec 72 a8 c3 1a 89 b4 0e 91
+ ESP packet [112]:
+ 45 00 00 70 00 06 00 00 ff 32 91 96 0a 6f 0a c5
+ 0a 6f 0a 1d 3d ac 92 6a 00 00 00 06 00 00 00 00
+ 01 00 00 00 45 00 00 3c 0c fb 00 00 7f 01 05 07
+ 0a 6f 0a c5 0a 6f 0a 1d 08 00 43 5c 02 00 08 00
+ 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70
+ 71 72 73 74 75 76 77 61 62 63 64 65 66 67 68 69
+ 01 02 02 04 ba bc 67 ec 72 a8 c3 1a 89 b4 0e 91
+
+ 7. ENCR_MAGMA_MGM_MAC_KTREE (Example 1):
+
+ transform key [36]:
+ d0 65 b5 30 fa 20 b8 24 c7 57 0c 1d 86 2a e3 39
+ 2c 1c 07 6d fa da 69 75 74 4a 07 a8 85 7d bd 30
+ 88 79 8f 29
+ K [32]:
+ d0 65 b5 30 fa 20 b8 24 c7 57 0c 1d 86 2a e3 39
+ 2c 1c 07 6d fa da 69 75 74 4a 07 a8 85 7d bd 30
+ salt [4]:
+ 88 79 8f 29
+ i1 = 00, i2 = 0000, i3 = 0000, pnum = 000000
+ K_msg [32]:
+ 4c 61 45 99 a0 a0 67 f1 94 87 24 0a e1 00 e1 b7
+ ea f2 3e da f8 7e 38 73 50 86 1c 68 3b a4 04 46
+ nonce [8]:
+ 00 00 00 00 88 79 8f 29
+ IV [8]:
+ 00 00 00 00 00 00 00 00
+ AAD [80]:
+ 3e 40 69 9c 00 00 00 01 00 00 00 00 00 00 00 00
+ 45 00 00 3c 0e 08 00 00 7f 01 03 fa 0a 6f 0a c5
+ 0a 6f 0a 1d 08 00 36 5c 02 00 15 00 61 62 63 64
+ 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74
+ 75 76 77 61 62 63 64 65 66 67 68 69 01 02 02 04
+ plaintext [0]:
+ ciphertext [0]:
+ ESP ICV [8]:
+ 4d d4 25 8a 25 35 95 df
+ ESP packet [108]:
+ 45 00 00 6c 00 13 00 00 ff 32 91 8d 0a 6f 0a c5
+ 0a 6f 0a 1d 3e 40 69 9c 00 00 00 01 00 00 00 00
+ 00 00 00 00 45 00 00 3c 0e 08 00 00 7f 01 03 fa
+ 0a 6f 0a c5 0a 6f 0a 1d 08 00 36 5c 02 00 15 00
+ 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70
+ 71 72 73 74 75 76 77 61 62 63 64 65 66 67 68 69
+ 01 02 02 04 4d d4 25 8a 25 35 95 df
+
+ 8. ENCR_MAGMA_MGM_MAC_KTREE (Example 2):
+
+ transform key [36]:
+ d0 65 b5 30 fa 20 b8 24 c7 57 0c 1d 86 2a e3 39
+ 2c 1c 07 6d fa da 69 75 74 4a 07 a8 85 7d bd 30
+ 88 79 8f 29
+ K [32]:
+ d0 65 b5 30 fa 20 b8 24 c7 57 0c 1d 86 2a e3 39
+ 2c 1c 07 6d fa da 69 75 74 4a 07 a8 85 7d bd 30
+ salt [4]:
+ 88 79 8f 29
+ i1 = 00, i2 = 0000, i3 = 0001, pnum = 000000
+ K_msg [32]:
+ b4 f3 f9 0d c4 87 fa b8 c4 af d0 eb 45 49 f2 f0
+ e4 36 32 b6 79 19 37 2e 1e 96 09 ea f0 b8 e2 28
+ nonce [8]:
+ 00 00 00 00 88 79 8f 29
+ IV [8]:
+ 00 00 00 00 01 00 00 00
+ AAD [80]:
+ 3e 40 69 9c 00 00 00 06 00 00 00 00 01 00 00 00
+ 45 00 00 3c 0e 13 00 00 7f 01 03 ef 0a 6f 0a c5
+ 0a 6f 0a 1d 08 00 31 5c 02 00 1a 00 61 62 63 64
+ 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74
+ 75 76 77 61 62 63 64 65 66 67 68 69 01 02 02 04
+ plaintext [0]:
+ ciphertext [0]:
+ ESP ICV [8]:
+ 84 84 a9 23 30 a0 b1 96
+ ESP packet [108]:
+ 45 00 00 6c 00 18 00 00 ff 32 91 88 0a 6f 0a c5
+ 0a 6f 0a 1d 3e 40 69 9c 00 00 00 06 00 00 00 00
+ 01 00 00 00 45 00 00 3c 0e 13 00 00 7f 01 03 ef
+ 0a 6f 0a c5 0a 6f 0a 1d 08 00 31 5c 02 00 1a 00
+ 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70
+ 71 72 73 74 75 76 77 61 62 63 64 65 66 67 68 69
+ 01 02 02 04 84 84 a9 23 30 a0 b1 96
+
+Acknowledgments
+
+ The author wants to thank Adrian Farrel, Russ Housley, Yaron Sheffer,
+ and Stanislav Smyshlyaev for valuable input during the publication
+ process for this document.
+
+Author's Address
+
+ Valery Smyslov
+ ELVIS-PLUS
+ PO Box 81
+ Moscow (Zelenograd)
+ 124460
+ Russian Federation
+ Phone: +7 495 276 0211
+ Email: svan@elvis.ru