diff options
Diffstat (limited to 'doc/rfc/rfc9227.txt')
-rw-r--r-- | doc/rfc/rfc9227.txt | 1094 |
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 |