rfc-4312

The Camellia Cipher Algorithm and Its Use With IPsec

A. Kato, S. Moriai, M. Kanda
date2005-12 streamIETF wgnon working group statusPROPOSED STANDARD pages8 canonicalhttps://www.rfc-editor.org/rfc/rfc4312 doi10.17487/RFC4312 errataview
This document describes the use of the Camellia block cipher algorithm in Cipher Block Chaining Mode, with an explicit Initialization Vector, as a confidentiality mechanism within the context of the IPsec Encapsulating Security Payload (ESP). [STANDARDS-TRACK]

Extracted elements (17)

design-rationale §4

Camellia was designed to follow the same API as AES, so only Phase 1 and Phase 2 identifiers differ from AES-CBC in IKE interactions; all other IKE considerations are identical to those for AES.

ipsec, crypto, design-rationale

design-rationale §3

Including the IV in each datagram ensures that each received datagram can be decrypted even when some datagrams are dropped or re-ordered in transit, which is a necessary property for ESP use over IP.

ipsec, vpn, crypto

interoperability-note §3.1

Currently there are no known issues regarding interactions between Camellia and other aspects of ESP, such as the use of certain authentication schemes.

ipsec, vpn, crypto

interoperability-note §2.4

The 16-octet block size of Camellia guarantees that the ESP Pad Length and Next Header fields will be right-aligned within a 4-octet word, so no additional padding beyond the 16-octet alignment requirement is needed for ESP framing.

ipsec, vpn

normative-requirement §2.2 MUST

All implementations MUST support the 128-bit key size for Camellia. Implementations MAY also support 192-bit and 256-bit key sizes.

crypto, ipsec, vpn

normative-requirement §3 MUST NOT

Implementations MUST NOT use a counter or other low Hamming-distance source for IVs, to avoid CBC encryption of very similar plaintext blocks in different packets.

crypto, ipsec, security

normative-requirement §2.4 MUST

Padding MUST be added as specified in ESP such that the data to be encrypted (including the ESP Pad Length and Next Header fields) is a multiple of 16 octets.

ipsec, vpn

normative-requirement §3 MUST

The IV field MUST be the same size as the block size of the cipher algorithm (16 octets). The IV MUST be chosen at random and MUST be unpredictable.

crypto, ipsec, vpn

normative-requirement §2.2 MUST

When a 128-bit key is used, implementations MUST use 18 rounds. When a 192-bit or 256-bit key is used, implementations MUST use 24 rounds.

crypto, ipsec

protocol-element §2.1

Camellia is used in CBC (Cipher Block Chaining) mode within ESP. The CBC IV is XOR'd with the first plaintext block before encryption; successive blocks XOR the previous ciphertext block with the current plaintext before encryption.

crypto, ipsec, vpn

protocol-element §2

Camellia supports 128-bit block size and 128-, 192-, and 256-bit key lengths, matching the AES interface specification. It uses a Feistel structure and was developed jointly by NTT and Mitsubishi Electric Corporation in 2000.

crypto, ipsec

protocol-element §4.1

For IKE Phase 1 negotiations, IANA has assigned Encryption Algorithm ID 8 to CAMELLIA-CBC.

ipsec, vpn, registry

protocol-element §4.2

For IKE Phase 2 negotiations, IANA has assigned ESP Transform Identifier 22 to ESP_CAMELLIA.

ipsec, vpn, registry

registry §6

IANA assigned Encryption Algorithm ID = 8 to CAMELLIA-CBC for IKE Phase 1, and ESP Transform Identifier = 22 to ESP_CAMELLIA for IKE Phase 2.

registry, ipsec, vpn

security-consideration §5

Implementations are encouraged to use the largest key sizes they can, considering performance. A 128-bit key size is considered secure for the foreseeable future, but both client and server sides of a channel must be considered when selecting key size.

security, crypto, ipsec

security-consideration §5

No security problem has been found on Camellia per the CRYPTREC and NESSIE evaluations. Camellia was designed to withstand all known cryptanalytic attacks and has been scrutinized by worldwide cryptographic experts.

security, crypto

wire-format §3

The ESP payload consists of a 16-octet Initialization Vector followed by the encrypted payload (variable length, a multiple of 16 octets). The IV occupies the first 16 octets of the payload field.

ipsec, vpn, crypto