Fact-checked by Grok 2 weeks ago

CCM mode

Counter with CBC-MAC (CCM) is a generic authenticated encryption block cipher mode of operation that provides both confidentiality and authenticity for data, combining counter (CTR) mode encryption with cipher block chaining message authentication code (CBC-MAC) authentication. It is defined for use with 128-bit block ciphers, such as the Advanced Encryption Standard (AES), and requires a secret key, a unique nonce, the message to encrypt, and optional associated authenticated data. CCM was proposed in 2003 by Niels Ferguson, Russ Housley, and Doug Whiting, motivated by the need for an mode suitable for wireless security to avoid intellectual property issues with other modes. It was standardized in 3610 by the IETF and in NIST Special Publication 800-38C. In CCM, the authentication process begins by formatting the message and associated data into blocks and computing a using the secret key to generate an authentication . The message is then encrypted in CTR mode, where a counter block derived from the nonce is encrypted and XORed with the to produce ; the authentication is appended and similarly encrypted to form the final output. For decryption and , the receiver reverses the CTR encryption to recover the message and , then recomputes the to check authenticity before releasing the . This design ensures that any modification to the or associated data will likely fail with high probability. CCM includes configurable parameters such as L, the encoding of the length (ranging from 2 to 8 octets, which determines the maximum message size up to 2^(8L) octets and size of 15-L octets), and M, the tag length (4, 6, 8, 10, 12, 14, or 16 octets, with a minimum of 64 bits recommended for adequate ). depends on using a unique for each operation under the same to prevent attacks, with a total data limit of approximately 2^61 invocations per to maintain provable bounds. The mode achieves indistinguishability under and resistance to forgery, assuming the underlying is secure. CCM has been widely adopted in cryptographic standards and protocols, including as the basis for the Counter Mode Protocol (CCMP) in IEEE 802.11i for WPA2 , where AES-CCM encrypts and authenticates data frames. It is also specified for use in (TLS) via AES-CCM cipher suites in 6655, enabling in secure web communications. Additionally, CCM appears in for authentication and encryption, and in (LE) security procedures, where AES-CCM provides per-packet and . These applications highlight CCM's efficiency and suitability for resource-constrained environments like wireless and devices.

Introduction

Definition and Purpose

CCM mode, formally known as with , is a mode of operation for symmetric key block ciphers with a 128-bit block size, such as the (). It serves as an scheme that integrates and protection into a unified process. Specifically, CCM combines the () mode, which provides encryption through a stream-like generation of keystream, with the cipher block chaining message authentication code (), which ensures data authenticity by producing a tag over the input. This combination allows CCM to authenticate associated data (unencrypted but protected against tampering) alongside the plaintext, using a nonce to derive unique inputs for both components. The core purpose of CCM is to deliver with associated (AEAD) in a single pass over the , thereby guaranteeing both of the and of the entire , including any associated . By performing these operations concurrently, CCM achieves to chosen-ciphertext attacks, providing IND-CCA2 provided the underlying behaves as a and nonces are unique per key. This design meets the need for efficient protection in environments where must be secured against , , and , such as in protocols. At a high level, CCM computes the over the nonce, associated , and to generate an authentication tag, then applies CTR mode to encrypt both the and the tag into the final ciphertext. A key advantage of CCM over separate and () approaches is its reduced computational overhead, as it avoids redundant invocations and enables parallelizable processing in hardware. This efficiency is particularly valuable for resource-constrained devices, where minimizing code size and message expansion—limited to 4 to 16 octets depending on the tag length—is essential. CCM's structure also simplifies implementation by requiring only forward operations, making it well-suited for packet-based communications with all available upfront.

Historical Context

The development of CCM (Counter with CBC-MAC) mode originated in 2002 as a response to the need for a patent-free (AE) scheme suitable for emerging wireless standards. Invented by Niels Ferguson, Russ Housley, and Doug Whiting, CCM was specifically designed to address the limitations of earlier modes like (Offset Codebook), which, despite its efficiency, faced challenges due to patent encumbrances that threatened adoption in open standards. This motivated the creation of CCM as a simple, efficient alternative that combines counter mode for confidentiality with for , ensuring both and broad accessibility without barriers. Key milestones in CCM's standardization followed rapidly. In May 2002, CCM was introduced in the draft as the mandatory AE mechanism, replacing to enable unencumbered implementation. By June 2002, an initial specification was released, and in September 2002, it was submitted as an IETF draft. NIST expressed support for CCM as early as November 2002, recognizing its potential for federal standards. This culminated in the publication of 3610 in September 2003, which defined CCM generically for 128-bit block ciphers, providing a security proof and parameter guidelines. In 2004, NIST finalized its recommendation with Special Publication 800-38C, authored by Morris Dworkin, tailoring CCM specifically for use with (AES-CCM) and emphasizing its applicability to packet-based environments like wireless networks. The same year, CCM's integration into IEEE 802.11i (ratified in June 2004) drove its initial widespread adoption, forming the basis for WPA2 in , which mandated the CCMP built on AES-CCM to enhance and over prior WEP and WPA mechanisms. This early endorsement solidified CCM's role as a foundational, royalty-free AE mode for resource-constrained devices.

Technical Mechanism

Inputs and Parameters

CCM mode, as an scheme for s with 128-bit blocks, requires several core inputs to perform its operations. The secret K serves as the symmetric for the underlying , such as , and is typically 128, 192, or 256 bits in length depending on the variant; it is used for both and processes. The nonce N is a unique value that must be distinct for each invocation under the same , with a length of 7 to 13 octets (specifically, $15 - L octets, where L is a defined below). The P represents the to be encrypted and authenticated, while the associated data A consists of additional information that is authenticated but not encrypted, ensuring its is protected alongside the . Two key parameters govern the CCM operation: the message length indicator L and the authentication tag length T. The value L specifies the number of octets used to encode the length of the plaintext P, ranging from 2 to 8 octets (with L = 1 reserved), which determines the maximum allowable plaintext length of up to $2^{8L} octets and inversely affects the nonce size. The authentication tag length T, also denoted as M in some specifications, can be 4, 6, 8, 10, 12, 14, or 16 octets, providing a trade-off between message overhead and resistance to forgery attacks. For processing, the nonce N, the plaintext length l(P), and the associated data A are formatted into specific blocks. The initial block B_0 begins with a flags octet that encodes the presence of associated data (bit 6 set to 1 if l(A) > 0, else 0), the tag length via M' = (T - 2)/2 (bits 5-3), and the length parameter via L' = L - 1 (bits 2-0), followed by the nonce N and the plaintext length encoded in L octets (most significant byte first). The associated data A is then formatted into subsequent blocks B_1 to B_{q-1}, where the length l(A) is encoded in the first two octets (most significant byte first) if $0 < l(A) < 2^{16} - 2^{8}, or with additional encoding for larger lengths up to $2^{64} - 1 octets (e.g., for $2^{16} - 2^{8} \leq l(A) < 2^{32}, the first block starts with octets 0xFF 0xFE followed by four octets of l(A) most significant byte first), padded as needed to 16-octet blocks. These formatted blocks prepare the inputs for the block cipher without altering their core content. Constraints on these inputs ensure secure and valid operation. The nonce N must remain unique for each encrypted under the same to maintain the mode's guarantees, as can compromise and . The parameter L directly influences the block count for processing the , with higher values allowing longer messages but shorter nonces, requiring careful selection based on application needs.

Encryption and Authentication Process

The and process in CCM mode operates in a two-pass manner, first computing a over the formatted associated and to provide , and then applying mode to the for , with the derived by combining elements from both passes. This process uses a 128-bit such as , with the key K, N (of length 15-L octets, where L \in \{2, \dots, 8\} determines the maximum length), associated A, P (of length encoded in L octets), and length M \in \{4, 6, 8, 10, 12, 14, 16\} octets. The formatting of inputs for the MAC computation, including length encodings and , follows the conventions defined for CCM to ensure proper . The first step generates the internal MAC value U using on the formatted inputs. The input blocks B_i (for i = 0, 1, \dots, q) are constructed as follows: B_0 consists of a flags octet (encoding presence of A, M, and L), followed by N and the L-octet most-significant-byte first encoding of |P|; subsequent blocks B_1 to B_q encode the length of A (if present), the padded A, and the padded P to full 16-octet blocks. The CBC-MAC computation initializes U_0 = 0^{128} (the zero block) and iterates U_{i+1} = \text{AES-Encrypt}_K(U_i \oplus B_i) for i = 0 to q, yielding U_m = U_{q+1} (where m = q+1). The internal MAC is then the most significant M octets of U_m, denoted \text{MSB}_M(U_m). This step authenticates both A and P without encrypting them at this stage. In the second step, counter blocks are generated to produce the keystream for encryption. Each counter block \text{Ctr}_i (for i = 0, 1, 2, \dots) is formatted as a flags octet (encoding only L, with all other flag bits zero), followed by N and the L-octet little-endian representation of the counter value i. The keystream blocks are computed as S_i = \text{AES-Encrypt}_K(\text{Ctr}_i) for i \geq 0. Note that S_0 (from \text{Ctr}_0, where the counter is $0^L) is reserved for the tag computation, while the encryption uses S_1, S_2, \dots, S_k (where k = \lceil |P|/16 \rceil). The plaintext P is then encrypted by XORing it with the initial portion of the keystream. Partition P into k blocks P_1, \dots, P_k (each 16 octets, with the last block possibly partial and unpadded). The ciphertext blocks are C_i = P_i \oplus S_i for i = 1 to k, and the full ciphertext C is the concatenation C_1 || \dots || C_k (using only the actual bytes of the last partial block if applicable). This counter-mode operation provides semantic security for P. Finally, the authentication T is computed to bind the and components, ensuring . It is given by T = \text{MSB}_M(S_0) \oplus \text{MSB}_M(U_m), where \text{MSB}_M(\cdot) extracts the most significant M octets. The complete output of the CCM is the concatenated C || T. This prevents certain malleability attacks by incorporating a fresh keystream .

Decryption and Verification Process

The decryption and verification process in CCM mode inverts the encryption and authentication operations to recover the while ensuring the and of the message. This process requires the recipient to possess the symmetric key K, N, the additional authenticated A, and the received ciphertext package consisting of the C and the authentication tag T. All computations rely solely on the block cipher's encryption primitive, without needing a decryption , which simplifies implementation in or software environments where only is available. The first step involves recovering the keystream blocks S_i by generating counter blocks using the same nonce N and length parameter L as in the encryption process. The counter blocks are formed with a flags octet having bits 7 to 3 set to 0 and bits 2 to 0 set to L-1, followed by the nonce N (15-L octets), and then L octets representing the block counter value in little-endian byte order. The block counter starts at 0 to generate S_0 (reserved for tag verification), and then increments to 1, 2, etc., to generate the keystream blocks S_1, S_2, \dots for decryption. Each counter block is then encrypted under key K to produce the keystream blocks S_i = \text{CIPHK}(\text{counter block}). This reuses the counter mode equations from encryption, ensuring the keystream matches exactly what was used to produce C. Next, the ciphertext C is decrypted by XORing it with the corresponding keystream blocks to yield the candidate P' = C \oplus S_{1..m}, where m is the number of blocks needed for the length of C (which equals the plaintext length). Any inconsistency in length with the maximum allowed by L (i.e., |C| < 2^{8L}) results in immediate rejection to prevent processing invalid inputs. The zeroth keystream block S_0, generated from the counter block with value 0, is reserved for tag and not used in . Authentication verification proceeds by recomputing the MAC on the associated data A and the candidate plaintext P' using the CBC-MAC construction identical to that in . This yields U', the encrypted authentication value, through iterative and XOR operations starting from a zero-initialized block. The candidate tag is then formed as T' = \text{MSB}_t(U' \oplus S_0), where t is the tag length (4, 6, 8, 10, 12, 14, or 16 octets) and \text{MSB}_t extracts the most significant t octets. The process reuses the CBC-MAC equations from , applied in the same forward manner but on the recovered inputs. Finally, the candidate tag T' is compared to the received tag T. If they match exactly, the message is accepted as authentic, and P' is output as the verified . If verification fails or any length inconsistencies are detected, the entire message is rejected without revealing P' or T to avoid leaking information that could aid attacks; the recipient signals only a generic failure. This constant-time comparison is recommended to mitigate timing side-channel vulnerabilities.

Security Properties

Confidentiality and Authenticity Guarantees

CCM mode provides through its use of the (CTR) mode for as part of an scheme that achieves indistinguishable under (IND-CCA2) security overall, assuming the underlying , such as , behaves as a secure (PRP). This security is established via a to the PRP security of the , where an adversary's advantage in distinguishing CCM ciphertexts is bounded by the PRP advantage plus a term quadratic in the number of invocations divided by $2^{n}, with n being the block size (e.g., 128 bits for ). The CTR component ensures that the is malleability-resistant when combined with the mechanism, preventing from exploiting modifications to ciphertexts. For authenticity, CCM delivers strong (MAC) against forgery attempts, leveraging the properties of on the and associated while using CTR-derived values to encrypt the MAC and prevent malleability. This combination yields integrity against chosen-ciphertext attacks (INT-CTXT), with the proof reducing to the pseudorandom () of the underlying . The probability of a successful forgery after q queries is bounded by \frac{q}{2^{|T|}} plus additional terms dependent on the block size, where |T| is the length (typically 4 to 16 bytes); however, the dominant term for practical tag lengths emphasizes the in |T|. Overall, IND-CPA and INT-CTXT securities together imply IND-CCA2 for the scheme. These guarantees hold under the assumptions of unique for each under the same and no key reuse across different modes or instances, ensuring prefix-free inputs and avoiding nonce repetition that could compromise the CTR and components. The security reductions demonstrate that CCM inherits the PRP/PRF strength of the , providing concrete bounds that scale with the number of queries and the lengths of the , , and .

Known Limitations and Best Practices

One of the primary limitations of CCM mode is its vulnerability to catastrophic failure if the same is reused with the same , which can lead to keystream reuse and enable attacks such as , akin to a two-time pad where an adversary can recover or forge by XORing ciphertexts. This risk arises because CCM derives the counter blocks deterministically from the , making reuse equivalent to reusing the stream and authentication inputs. Additional limitations include the weakening of authenticity guarantees with short authentication tag lengths, such as T=4 (32 bits), which reduces the security against forgery to impractical but theoretically possible levels under high message volumes; NIST recommends a minimum of 64 bits unless decryption attempts are strictly limited. Furthermore, while some implementations impose practical limits on additional authenticated data (AAD) length, the CCM specification supports AAD lengths up to 2^{32} - 1 bytes, with a 16-bit encoding for AAD up to 2^{16} - 2^8 bytes and a longer encoding for larger values. To mitigate these risks, best practices include using the standard 96-bit nonce length (12 octets) with L=3, providing a 24-bit counter to support messages up to 2^{24} - 1 bytes (approximately 2^{20} blocks). Nonces should be generated predictably but uniquely per key, such as via monotonically increasing sequence numbers or timestamps concatenated with device identifiers, ensuring no repetition across sessions. Prefer tag lengths of at least 8 octets (64 bits) for robust authenticity, and rotate keys after processing approximately 2^{48} messages to stay within proven security limits. Recent analyses as of 2024 confirm no practical breaks against CCM when used correctly, though NIST guidelines continue to emphasize strict () management to avoid misuse-related vulnerabilities; these studies also highlight CCM's robustness to release of unverified and misuse compared to modes like GCM.

Performance and Implementation

Efficiency Metrics

CCM mode operates in two distinct passes over the input data: a CBC-MAC pass for authentication and a CTR pass for encryption. The authentication pass requires one block cipher invocation for the initial formatted block B_0, plus additional invocations for each block of the associated data (approximately |A|/16 blocks, where |A| is the length in bytes) and the plaintext (approximately |P|/16 blocks, where |P| is the plaintext length in bytes), totaling roughly 1 + |A|/16 + |P|/16 block cipher calls. The subsequent CTR encryption pass requires one invocation to generate the initial counter block S_0, plus one per plaintext block, adding approximately |P|/16 + 1 calls. Overall, this results in about |A|/16 + 2(|P|/16) + 2 block cipher invocations for AES-128 in CCM mode. While the CTR encryption phase supports parallelization across plaintext blocks, the CBC-MAC authentication phase processes data sequentially due to its dependency, limiting overall parallelism in CCM implementations. This sequential nature of the MAC computation prevents full parallel execution, even though the mode can be implemented in a single by precomputing counters if needed; however, standard descriptions emphasize the two-pass structure for clarity and security. Compared to plain CTR mode, which requires only about |P|/16 + 1 block cipher calls and achieves high efficiency (e.g., 1.3 cycles per byte on processors with AES-NI), CCM incurs additional overhead from the MAC pass, resulting in roughly 3-4 times more cycles per byte in software implementations. For AES-128 on an i5 with AES-NI instructions, CCM requires approximately 4.17 cycles per byte for 4 messages, compared to 1.3 for CTR alone, yielding a slowdown factor of about 3.2x. The tag in CCM adds 4 to 16 bytes of overhead, configurable based on needs (e.g., 8 or 12 bytes common for balancing and efficiency), which must be appended to the and verified during decryption. This tag length impacts minimal message overhead but does not significantly affect core computational efficiency. In software implementations like on modern CPUs with AES-NI, AES-128-CCM achieves throughputs of approximately 500-1000 MB/s for typical message sizes, limited by the sequential MAC step despite hardware acceleration for individual block operations. Dedicated hardware accelerators, such as those in FPGAs or , can substantially improve performance, reaching 10 /s or more.

Hardware and Software Considerations

CCM mode implementations in software libraries such as OpenSSL and Crypto++ provide efficient support for authenticated encryption, leveraging the mode's design for integration with existing AES primitives. In OpenSSL, CCM is accessible through the EVP interface, enabling operations like EVP_EncryptInit_ex with ciphers such as EVP_aes_128_ccm, which handles both encryption and authentication in a single pass. Similarly, Crypto++ offers a CCM class that encapsulates the mode's counter and CBC-MAC components, supporting key sizes of 128, 192, and 256 bits as per NIST standards. These libraries ensure compliance with the big-endian byte order specified in the mode's formatting rules for fields like the initial counter block (B_0) and associated data, requiring developers to perform explicit byte swaps on little-endian platforms to avoid interoperability issues during nonce and length encoding. To mitigate timing attacks, software implementations of CCM must employ constant-time operations, particularly in conditional branches for tag comparison and length checks, as variable-time executions could leak information about message lengths or keys through side-channel analysis. Libraries like Crypto++ incorporate such safeguards in their core routines, while developers are advised to use the library's built-in constant-time primitives to prevent exploitation in high-security contexts. On the hardware side, Intel's AES-NI instruction set, introduced in 2010 with Westmere processors, significantly accelerates CCM by optimizing the encryption rounds used in both the CTR encryption and authentication steps, enabling up to several gigabytes per second throughput on multi-core systems. For resource-constrained devices, ARM's CryptoCell-310 and later variants include dedicated hardware engines for CCM, supporting modes like CTR, , and full CCM operations with minimal CPU intervention, which reduces power consumption and latency in embedded applications. Optimizations in CCM implementations often focus on the CTR component's parallelizability; precomputing counter blocks allows multiple encryption operations to proceed concurrently across CPU cores or hardware pipelines, improving scalability for large payloads without altering the sequential computation. A related variant, CCM*, tailored for wireless networks, enables decryption of the payload before full verification by adjusting the authentication process to use the decrypted directly, avoiding redundant recomputation in low-overhead scenarios like data transmission. Overall, CCM exhibits low memory usage, requiring only O(1) additional space beyond buffers for temporary blocks and state, making it suitable for constrained devices; however, nonce management introduces overhead, as ensuring uniqueness—typically via per-session counters or timestamps—demands persistent storage or mechanisms to prevent reuse attacks in distributed environments.

Standardization and Applications

Key Standards

The CCM mode is defined and endorsed by several authoritative standards bodies, providing precise specifications for its implementation in cryptographic systems to ensure , , and . The National Institute of Standards and Technology (NIST) established the primary specification for AES-CCM through Special Publication (SP) 800-38C, published in May 2004, which details the mode's construction using the AES , including requirements for formats, associated data handling, authentication tag lengths (4 to 16 octets), and a comprehensive set of test vectors for validation and . This document emphasizes CCM's role in providing both and message in a single pass, suitable for resource-constrained environments, and includes security proofs against chosen-plaintext and forgery attacks under proper usage. An update released in July 2007 incorporated minor editorial clarifications and errata corrections without altering the core algorithm or security properties. In response to ongoing reviews, NIST announced in April 2025 a decision to revise SP 800-38C, focusing on enhanced clarity and alignment with modern cryptographic practices, though no substantive changes to the CCM definition were introduced by November 2025. Complementing NIST's AES-specific guidance, the (IETF) formalized CCM as a generic mode in () 3610, issued in August 2003, which describes its application to any 128-bit and outlines the integration of counter mode for encryption with for . This specifies key parameters such as the 13-octet structure (to avoid reuse risks), support for variable-length messages and associated data up to 2^64 - 1 octets, and restrictions on authentication tag truncation to maintain bounds, making it foundational for designers beyond . In the domain of wireless communications, the Institute of Electrical and Electronics Engineers (IEEE) incorporated AES-CCM as a mandatory component in IEEE Std 802.11i-2004, the amendment to the standard that defines security enhancements, requiring CCM for all robust security network associations to protect unicast, , and broadcast data frames. This standard specifies CCM's use with 128-bit keys, a 48-bit packet number as the nonce component, and an 8-octet authentication tag, ensuring resistance to replay attacks and providing the cryptographic basis for 2 (WPA2) and subsequent enhancements in WPA3. For international harmonization, the (ISO) and (IEC) include CCM within ISO/IEC 19772:2020, which specifies mechanisms using block ciphers, positioning CCM as an scheme compatible with algorithms like and . This standard reiterates CCM's single-pass efficiency and security requirements, aligning closely with RFC 3610 and NIST SP 800-38C to facilitate global adoption in diverse systems.

Protocol Integrations

CCM mode, particularly AES-CCM, is integrated into wireless standards for securing communications. In the amendment, which underpins WPA2, the Counter with CBC-MAC Protocol (CCMP) employs AES-CCM to provide both encryption and authentication for and data frames. The nonce in this integration is derived from the packet number, the transmitter's (A2 field), and the frame's priority bits, ensuring uniqueness and preventing replay attacks. WPA3, introduced in and later revisions, continues to use AES-CCM via CCMP for robust protection of management and data frames in personal and enterprise modes. For low-power and sensor networks, , the foundation of protocols like , utilizes a variant called CCM* to accommodate resource-constrained devices. CCM* extends the standard CCM mode by supporting shorter authentication tags (4, 8, or 12 octets) and optional without , enabling flexible levels while maintaining with AES-128. This variant is specified in the -2006 standard and subsequent updates, allowing networks to secure frame payloads in low-data-rate personal area networks. In broadband wireless access, IEEE 802.16 () incorporates AES-CCM for encrypting and authenticating MAC protocol data units (PDUs) in both fixed and mobile configurations. The standard, as amended in IEEE 802.16e-2005, defines AES-CCM as a primary for connections, combining counter mode for confidentiality with for , and supports key sizes up to 256 bits. This integration facilitates secure data transmission in networks, with the packet number serving as part of the nonce construction. IPsec protocols leverage AES-CCM through the Encapsulating Security Payload (ESP) as detailed in RFC 4309, enabling for virtual private networks (VPNs). The mode uses an explicit 8-octet and variable-length integrity check values (8, 12, or 16 octets), with the nonce formed from a and number to ensure per-packet uniqueness. AES-CCM was selected for its patent-free status, avoiding licensing issues associated with other schemes, and supports 128-, 192-, and 256-bit keys for flexible deployment in environments. Beyond these, CCM finds optional use in higher-layer protocols like TLS 1.3 and (LE). TLS 1.3, per 8446, includes AES-128-CCM and AES-128-CCM-8 as optional cipher suites for record protection, providing where GCM is unavailable, though implementations must support GCM mandatorily. In LE, AES-CCM secures pairing and data exchange since the Bluetooth 4.2 specification (released in 2014), using 128-bit keys in Security Mode 1 for link-layer encryption and authentication in low-energy devices. As of 2025, AES-CCM remains a baseline symmetric mechanism across these protocols, valued for its efficiency and standards compliance, even as asymmetric components migrate to post-quantum algorithms like those from NIST's PQC . While post-quantum key exchanges are increasingly adopted in 7, , and TLS to counter quantum threats, the symmetric AES-CCM core persists due to its resistance to quantum attacks via , which only quadratically weakens 256-bit keys.

Intellectual Property

Patent History

The CCM mode was developed in specifically as a royalty-free and patent-unencumbered alternative to earlier schemes like , which was encumbered by rights held by its inventor Phillip Rogaway. This design choice was driven by the need for a freely implementable mode suitable for widespread adoption, particularly in standards like IEEE 802.11i (WPA2), where OCB's licensing requirements posed barriers. The mode's creators, Doug Whiting, Russell Housley, and Niels Ferguson, submitted it to the (IETF) via 3610, emphasizing its openness. In 2004, the National Institute of Standards and Technology (NIST) formalized CCM in Special Publication 800-38C, confirming its suitability for public use without known royalty obligations during the evaluation process. CCM itself faced no subsequent challenges or litigation, solidifying its status as a non-controversial, .

Current Licensing Status

As of 2025, the CCM (Counter with CBC-MAC) mode of operation for is fully in the , with no active patents claiming the core worldwide. This status is confirmed by the original specification authors in 3610, who explicitly released all rights associated with CCM to the , stating that it comprises a simple combination of established techniques obvious to those skilled in the art. The (IETF) and National Institute of Standards and Technology (NIST) have endorsed this unencumbered nature, with no known patent applications or grants covering CCM since its inception. Implementations of CCM are free for both commercial and non-commercial use, without royalties or licensing restrictions, and are widely incorporated into open-source cryptographic libraries such as and Bouncy Castle. This royalty-free availability has facilitated its adoption in standards-compliant software and hardware, ensuring broad accessibility for developers and vendors. NIST's Special Publication 800-38C, which standardizes CCM for use with block ciphers like , further supports unrestricted implementation as part of federal cryptographic guidelines. No new patents affecting CCM have emerged post-2010, maintaining its patent-free status through 2025, as verified by comprehensive reviews of cryptographic mode landscapes. CCM remains compatible with validated cryptographic modules, where it is approved for use in providing and without introducing additional encumbrances. Developers implementing CCM are advised to review any patents on the underlying , such as (whose original Rijndael patents expired in 2015), but the CCM mode itself imposes no such obligations.

References

  1. [1]
    RFC 3610 - Counter with CBC-MAC (CCM) - IETF Datatracker
    Counter with CBC-MAC (CCM) is a generic authenticated encryption block cipher mode. CCM is defined for use with 128-bit block ciphers, such as the Advanced ...
  2. [2]
    [PDF] Recommendation for block cipher modes of operation: the CCM ...
    CCM may be used to provide assurance of the confidentiality and the authenticity of computer data by combining the techniques of the Counter (CTR) mode and the.
  3. [3]
    RFC 6655 - AES-CCM Cipher Suites for Transport Layer Security ...
    This document describes the use of Advanced Encryption Standard (AES) [AES] in Counter with CBC-MAC Mode (CCM) [CCM] in several TLS ciphersuites.
  4. [4]
    [PDF] Counter with CBC-MAC (CCM) AES Mode of Operation - CSRC
    Mode Specification​​ CCM is a generic authenticate-and-encrypt block cipher mode. CCM is only defined for use with 128-bit block ciphers, such as AES. The CCM ...
  5. [5]
    [PDF] On the Security of CTR + CBC-MAC
    Our object is to demonstrate that CCM is as secure as the two-key variant covered in [19]. Property 2 turns out to be of significant help in the security ...
  6. [6]
    [PDF] A Critique of CCM 1 Introduction 2 Definition of CCM Mode
    Feb 2, 2003 · CCM's inventors went on to propose their mode for applications beyond. IEEE 802.11, providing it to the IETF [17] and NIST [16]. NIST has ...
  7. [7]
    RFC 3610 - Counter with CBC-MAC (CCM) - IETF Datatracker
    Jan 28, 2022 · Counter with CBC-MAC (CCM) (RFC 3610, September 2003) ... CCM Mode Specification For the generic CCM mode there are two parameter choices.
  8. [8]
    [PDF] Guide to IEEE 802.11i: Establishing Robust Security Networks
    CCMP is based on CCM, a generic authenticated encryption block cipher mode of AES. ... Both WPA and WPA2 have two modes of operation: Personal and Enterprise.
  9. [9]
  10. [10]
  11. [11]
  12. [12]
    [PDF] On the Security of the CCM Encryption Mode and of a Slight Variant
    Abstract. In this paper, we present an analysis of the CCM mode of operations and of a slight variant. CCM is a simple and efficient en-.
  13. [13]
    RFC 5084 - Using AES-CCM and AES-GCM Authenticated ...
    Automated Key Management The reuse of an AES-CCM or AES-GCM nonce/key combination destroys the security guarantees. As a result, it can be extremely ...Missing: limitations | Show results with:limitations
  14. [14]
    RFC 4309: Using Advanced Encryption Standard (AES) CCM Mode ...
    This document describes the use of AES in CCM (Counter with CBC-MAC) mode (AES CCM), with an explicit initialization vector (IV), as an IPsec Encapsulating ...<|control11|><|separator|>
  15. [15]
    [PDF] Recommendations and Key Lengths, Version 2025-01 - BSI
    With CCM, it must be ensured that an initialisation vector is not used twice with the same key, since. CCM is derived from the counter mode and the latter ...
  16. [16]
    [PDF] The Software Performance of Authenticated-Encryption Modes
    Mar 21, 2011 · We study the software performance of authenticated-encryption modes CCM, GCM, and OCB. Across a variety of platforms, we find OCB to be ...
  17. [17]
    (PDF) A Low Area, Low Power 8-bit AES-CCM Authenticated ...
    Aug 6, 2025 · AES-CCM core architecture. AES-CCM ... The maximum operating frequency of the AES engine is 255 MHz, resulting in 2.97 Gb/s throughput.
  18. [18]
    FPGA implementation of AES algorithm for high throughput using ...
    Oct 12, 2012 · This work gives a high throughput of 37.1 Gb/s with a maximum ... Hardware implementation of AES-CCM for robust secure wireless network.
  19. [19]
    CCM Mode - Crypto++ Wiki
    CCM, or Counter with CBC-MAC, is a mode of operation for cryptographic block ciphers. The mode is defined in NIST's SP 800-38C (2004), P1363, and RFC 3610.
  20. [20]
    A beginner's guide to constant-time cryptography - Chosen Plaintext
    The comparison operator, “!==”, is vulnerable to a timing attack. The string comparison compares the two keys one byte at a time, stopping as soon as it finds ...
  21. [21]
    [PDF] Intel® Advanced Encryption Standard (AES) New Instructions Set
    The Intel AES New Instructions can support AES encryption and decryption with each one of the standard key lengths (128, 192, and 256 bits), using the standard ...Missing: CCM | Show results with:CCM<|separator|>
  22. [22]
    Formal Specification of the CCM* Mode of Operation - IEEE Mentor
    Sep 9, 2005 · Ferguson, Counter with CBC-MAC (CCM), submitted to N.I.S.T., June 3, 2002. Available from http://csrc.nist.gov/encryption/modes/proposedmodes/.<|control11|><|separator|>
  23. [23]
    [PDF] The Cost of OSCORE and EDHOC for Constrained Devices - arXiv
    Mar 25, 2021 · The parameters carried in the OSCORE option are saved locally in a state variable. After that, a nonce is created and the plaintext is encrypted ...
  24. [24]
    SP 800-38C, Recommendation for Block Cipher Modes of Operation
    CCM may be used to provide assurance of the confidentiality and the authenticity of computer data by combining the techniques of the Counter (CTR) mode and the ...Missing: origins 2002-2003
  25. [25]
  26. [26]
    802.11i Overview - IEEE 802
    • AES-CCMP – all new security protocol based on AES-128 in CCM mode. • TKIP ... • AES-CCMP appears to meet all 802.11i security goals. – External review ...
  27. [27]
    802.11i/D3, Draft Supplement to Standard for Telecommunications ...
    8.3.4.1 CCMP overview. 1. The CCMP protocol is based on AES using the CCM mode of operation. The CCM mode combines. 2. Counter (CTR) mode privacy and Cipher ...
  28. [28]
    [DOC] CCM* for 802.15.4 - IEEE 802
    Sep 30, 2004 · This document provides the formal specification of the CCM* mode of operation for 802.15.4. This document is an edited version of IEEE ...
  29. [29]
    AES-CCM Encryption and Authentication Mode for 802.16 - IEEE 802
    Jan 10, 2004 · These changes introduce a new encryption algorithm, authentication algorithm and key encryption algorithm based on AES operating in CCM mode.
  30. [30]
    RFC 4309 - Using Advanced Encryption Standard (AES) CCM Mode ...
    ... CCM-imposed limit. The construction of the AAD described in Section 5 ... maximum-length Jumbograms. 10. Design Rationale In the development of this ...
  31. [31]
    RFC 8446 - The Transport Layer Security (TLS) Protocol Version 1.3
    RFC 8446 specifies TLS 1.3, which allows secure client/server communication over the internet, preventing eavesdropping, tampering, and forgery.<|control11|><|separator|>
  32. [32]
    A survey on Bluetooth Low Energy security and privacy
    Mar 14, 2022 · Version 4.2 of 2014 marks a major update with a complete overhaul of the pairing ... Key negotiation of bluetooth (KNOB) attack on legacy pairing ...
  33. [33]
    State of the post-quantum Internet in 2025 - The Cloudflare Blog
    Oct 28, 2025 · Today over half of human-initiated traffic with Cloudflare is protected against harvest-now/decrypt-later with post-quantum encryption.
  34. [34]
    [PDF] Development of SP 800-38 Series for Block Cipher Modes
    May 29, 2014 · • AEAD modes, submitted as alternatives to CCM, KW. • EAXPrime ... royalty-free alternatives are available. Page 10. • Expertise of ...
  35. [35]
    OCB - An Authenticated-Encryption Scheme - Background - Rogaway
    Feb 21, 2023 · The mode is not similar to OCB, but it is similar to Jutla's IACBC. ... CCM was developed as a less-efficient but IP-free alternative to OCB.
  36. [36]
  37. [37]