Fact-checked by Grok 2 weeks ago

RC6

RC6 is a symmetric-key algorithm derived from , developed by Ronald Rivest, Matt Robshaw, Ray Sidney, and Yiqun Lisa Yin in 1998 specifically to meet the cryptographic requirements of the U.S. National Institute of Standards and Technology's (NIST) (AES) selection process. The algorithm is parameterized as RC6-w/r/b, where w denotes the word size in bits (typically 32 for AES compatibility), r the number of rounds (20 for AES submissions), and b the key length in bytes (16, 24, or 32 for AES key sizes of 128, 192, or 256 bits), enabling flexible block sizes of 4w bits while emphasizing efficiency on 32-bit processors through data-dependent rotations and multiplication by a fixed odd constant. RC6 advances by incorporating four working registers, quadratic behavior in its core function, and a that expands the user key into subkeys using pseudorandom mixing, providing resistance to known attacks like differential and as demonstrated in its security evaluation. Submitted by Laboratories, RC6 advanced to the final round of five AES candidates in 1999 but was not selected, with Rijndael chosen as the basis for FIPS 197 () due to its performance across platforms and perceived security margins, though RC6 excelled in software speed on certain . Post-AES, RC6 has seen implementations in systems and niche applications, with ongoing cryptanalytic scrutiny confirming no practical breaks against full-round versions under standard parameters.

History and Development

Origins in RC5 and AES Submission

RC6 originated as an evolutionary adaptation of the block cipher, which Ronald Rivest designed and published in 1995 as a simple, parametric symmetric cipher relying on data-dependent rotations, modular addition, and XOR operations for mixing. While RC5's flexibility in word size, block length, key size, and rounds made it efficient for various implementations, its standard configurations—often using 32- or 64-bit words—did not fully align with the fixed 128-bit block size mandated for AES candidates. To address these constraints for the (AES) competition, initiated by NIST on January 2, 1997, to replace the aging (DES), the RC6 designers—Ronald Rivest of , and Matt Robshaw, Ray Sidney, and Yiqun Lisa Yin of RSA Laboratories—modified by expanding to four 32-bit words for the 128-bit block and introducing integer multiplication as a quadratic operation to improve and non-linearity. This multiplication, applied to two registers followed by by the higher-order bits of the result, provided stronger effects compared to RC5's purely linear and rotational mixing, while preserving the core iterative structure of three operations per round. RC6 was formally submitted by Laboratories in 1998 as one of 15 initial candidates in the process, supporting the required key sizes of 128, 192, and 256 bits with a variable number of rounds (typically 20). The submission emphasized RC6's simplicity, speed on modern processors benefiting from multiplication hardware, and margins extrapolated from RC5's resistance to known attacks, positioning it as a practical suited for both software and hardware. It advanced through the first two rounds of evaluation but was not selected as a finalist in the third round, where Rijndael ultimately prevailed in 2000.

Designers and Key Milestones

RC6 was designed by Ronald L. Rivest of the , along with Matt Robshaw, Ray Sidney, and Yiqun Lisa Yin, all affiliated with Laboratories at the time. The team drew from Rivest's earlier cipher, incorporating modifications such as quadratic operations and variable rotation amounts to enhance and for 32-bit architectures, while meeting the AES requirements for a 128-bit block size and key lengths of 128, 192, or 256 bits. Laboratories coordinated the submission, leveraging its expertise in symmetric ciphers, though Rivest provided the foundational design principles rooted in data-dependent rotations and minimal memory usage. Development of RC6 occurred in mid-1998, evolving directly from evaluations of RC5's suitability for the AES process, with the initial technical specification released as version 1.1 on August 20, 1998. This version targeted 20 rounds (denoted RC6-32/20/256 for the AES variant) and was submitted to NIST during the AES candidate solicitation period, which ran from April to September 1998. RC6 advanced through the first round of evaluations, announced by NIST in October 1998 among 15 initial candidates, due to its efficiency on modern processors and preliminary security claims against differential and linear cryptanalysis. In April 1999, RC6 was selected as one of five AES finalists alongside MARS, Rijndael, , and , based on performance metrics, security analyses, and implementation versatility across platforms. During the second round, the designers addressed community feedback, including potential correlations in low rounds, but RC6 was not chosen as the standard; on October 2, 2000, NIST announced Rijndael (later ) as the winner, citing its balance of security margins and efficiency. Post-AES, RC6 has seen limited adoption but remains analyzed for its parameterized flexibility and resistance to known attacks up to 14 rounds.

Design Principles

Core Parameters and Structure

RC6 designates a family of symmetric-key block ciphers parameterized as RC6-w/r/b, where w represents the word size in bits, r the number of rounds, and b the cipher key length in bytes. The plaintext and ciphertext blocks consist of four w-bit words, denoted as registers A, B, C, and D, yielding a block size of 4w bits. For the AES selection process, the proposal specified w=32 (producing 128-bit blocks), r=20, and b=16, 24, or 32 bytes (equivalent to key sizes of 128, 192, or 256 bits). The cipher's structure is an iterated design with r rounds, employing a four-branch generalized Feistel network that cycles the registers left after each round. Encryption begins with key expansion, which derives an array of 2r+4 subkey words S through S[2r+3] from the input key. The plaintext words are loaded into A, B, C, D, followed by pre-whitening: B ← (B + S) mod 2^w and D ← (D + S) mod 2^w. Each round i (for i=1 to r) computes two temporary w-bit values using a quadratic mixing function:
t ← (B × (2×B + 1)) ≪ lg(w) mod 2^w,
u ← (D × (2×D + 1)) ≪ lg(w) mod 2^w,
where × denotes multiplication modulo 2^w and ≪ k is left rotation by k bits. These update the odd-positioned registers:
A ← (( At ) ≪ u ) + S[2i] mod 2^w,
C ← (( Cu ) ≪ t ) + S[2i+1] mod 2^w,
followed by a left cyclic shift of the registers: (A, B, C, D) ← (B, C, D, A). After all rounds, post-whitening applies: A ← (A + S[2r+2]) mod 2^w and C ← (C + S[2r+3]) mod 2^w, with the resulting words forming the ciphertext.
The fundamental operations—addition and subtraction modulo 2^w, bitwise exclusive-or (⊕), and data-dependent left rotation—extend those of by incorporating the quadratic temporaries t and u to enhance through rotations up to w-1 bits. Decryption inverts this process by reversing the rounds with subtractions instead of additions and right rotations.

Mathematical Foundations and Operations

RC6 is a family of parametric block ciphers denoted RC6-w/r/b, where w is the word size in bits (typically 32 for AES compatibility, yielding a 128-bit block across four words), r is the number of rounds (default 20), and b is the key length in bytes (128, 192, or 256 for AES). The cipher processes the plaintext as four w-bit registers A, B, C, D initialized from the input block, with all arithmetic performed modulo 2^w in the ring of w-bit integers. The core operations leverage integer arithmetic for efficient : (+), (-), bitwise exclusive-or (⊕), and (×), all 2^w; left rotation (<<< k), which cyclically shifts the bits of a word left by k positions (where k is taken from the least significant lg w bits of the shift amount, with lg w = ⌈log₂ w⌉ = 5 for w=32); and right rotation (>>> k), defined analogously. These operations exploit support for and bit shifts to achieve rapid mixing, with providing quadratic growth in bit dependencies per round. Central to RC6's design is the function f(x) = (((x × (2x + 1)) mod 2^w) <<< lg w), a quadratic transformation followed by a fixed , which generates data-dependent rotation amounts with strong properties due to the odd multiplier (2x + 1) ensuring full bit involvement in the low-order bits. In each round i (1 to r), the transformation applies f to words B and D to compute t = f(B) and u = f(D), then updates A ← ((A ⊕ t) <<< u) + S[2i] and C ← ((C ⊕ u) <<< t) + S[2i+1], where S is the expanded round key array, followed by a cyclic shift of the registers: (A, B, C, D) ← (B, C, D, A). This structure combines substitution via XOR and multiplication-induced nonlinearity with through variable rotations and word cycling, promoting balanced across the state. Key derives the 2r + 4 subkey words S from the b-byte via an iterative starting with constants P_w = 0xb7e15163 (in , derived from the second base-2^w) and Q_w = 0x9e3779b9, mixing the key words L with S over v = 3 × max(⌈b/w⌉, 2r + 4) iterations using additions, XORs, and left rotations by 3: S ← ((S[j-1] + L) <<< 3) ⊕ S ⊕ L, cycling indices modulo their lengths. prepends subkey additions A ← A + S and D ← D + S[2r + 1], applies the r rounds, then appends B ← B + S[2r + 2] and C ← C + S[2r + 3]; decryption inverts these steps using subtractions and right rotations.

Encryption and Decryption Process

Key Expansion

The key expansion in RC6-w/r/b generates an array of 2r + 4 words, denoted S to S[2r + 3], from a user-supplied secret key of b bytes, where w is the word size in bits (typically 32 for candidates), r is the number of rounds (e.g., 20), and b ranges from 0 to 255. This process, nearly identical to RC5's but producing more subkey words to support additional rounds, initializes S with magic constants derived from the base of the natural logarithm and the φ: S = P_w = odd((e - 2) × 2^{w-1}) (hex 0xB7E15163 for w=32), and S = S[i-1] + Q_w for i=1 to 2r+3, where Q_w = odd((φ - 1) × 2^{w-1}) (hex 0x9E3779B9 for w=32). The secret key is copied into an array L of c words, where c = ⌈b / (w/8)⌉, with zeros if b is not a multiple of the word byte length, and words loaded in little-endian byte order. A mixing phase then follows, with variables A, B, i, j initialized to 0 and v = 3 × max(c, 2r + 4). For s = 1 to v, the subkeys and key words are updated as S ← (S + A + B) ≪≪ 3 ( by 3 bits) and L ← (L + A + B) ≪≪ () ( by the sum A + B), followed by i ← (i + 1) mod (2r + 4) and j ← (j + 1) mod c; all arithmetic is performed 2^w. This iterative mixing, performed three times the larger of the key or subkey array sizes, ensures diffusion between the key material and subkeys through additions and data-dependent rotations, leveraging the same even-odd reordering principle as in to avoid weak keys. For AES-relevant parameters like RC6-32/20/128 (b=16 bytes, c=4 words, 2r+4=44 words), v=3×44=132 iterations suffice, producing a 176-byte expanded that supports both encryption and decryption without recomputation.
pseudocode
S[0] ← P_w
for i ← 1 to 2r + 3 do
    S[i] ← S[i-1] + Q_w
A ← B ← i ← j ← 0
v ← 3 × max(c, 2r + 4)
for s ← 1 to v do
    S[i] ← (S[i] + A + B) ≪≪ 3
    L[j] ← (L[j] + A + B) ≪≪ (A + B)
    i ← (i + 1) mod (2r + 4)
    j ← (j + 1) mod c
The resulting S array provides subkeys S, S[2i+1], and S[2i+2] for the initial transformation and each of the r rounds, with S[2r+3] used in the final step, ensuring the schedule's relies on the proven resistance of the RC5-like mixing to related-key attacks over extended analysis.

Round Function Details

RC6 processes data in four w-bit working registers denoted as A, B, C, and D, where w is the word size, typically bits for 128-bit blocks as in the proposal. Prior to the rounds, the second and fourth words are augmented by adding the first two subkeys: B ← B + S and D ← D + S, where S is the expanded array. Each of the r rounds (r=20 for variants) applies a function that leverages data-dependent rotations derived from quadratic expressions, followed by a cyclic shift of the registers. In round i (for i from 1 to r), temporary values t and u are computed as t ← ((B × (2B + 1)) mod 2^w) ≪ lg w and u ← ((D × (2D + 1)) mod 2^w) ≪ lg w, where × denotes multiplication modulo 2^w, + denotes addition modulo 2^w, and lg w is the base-2 logarithm of w (e.g., lg = 5). These temporaries drive s: A ← ((A ⊕ t) ≪ u) + S[2i] and C ← ((C ⊕ u) ≪ t) + S[2i+1], with ⊕ as bitwise XOR and ≪ as left by the least significant lg w bits of the right operand. The registers are then rotated as (A, B, C, D) ← (B, C, D, A). This structure emphasizes the x(2x + 1) for generating large, data-dependent amounts, enhancing over fixed rotations in predecessor RC5. Following the r rounds, whitening adds the final subkeys: A ← A + S[2r + 2] and C ← C + S[2r + 3]. All operations occur 2^w except rotations, which are bit-level. The design's reliance on and variable rotations aims for efficient software implementation on 32-bit processors while resisting linear and differential attacks through high nonlinearity.
pseudocode
for i = 1 to r do
    t = (B * (2*B + 1)) << lg w   // mod 2^w implicit in operations
    u = (D * (2*D + 1)) << lg w
    A = ((A ⊕ t) << u) + S[2*i]
    C = ((C ⊕ u) << t) + S[2*i + 1]
    (A, B, C, D) = (B, C, D, A)

Decryption Inverse

The decryption process in RC6 inverts the encryption by applying the inverse operations in reverse order, ensuring perfect reversibility for the same expanded key schedule. Operations such as modular addition are inverted with modular subtraction (all arithmetic modulo $2^w, where w is the word size, typically 32), left rotations (\lll) are inverted with right rotations (\ggg), and XOR remains its own inverse. The round keys S{{grok:render&&&type=render_inline_citation&&&citation_id=0&&&citation_type=wikipedia}} to S[2r+3] are applied in reverse indexing, with the register permutation (A, B, C, D) \to (D, A, B, C) undone by its inverse (A, B, C, D) \to (B, C, D, A). This structure leverages the involutory nature of certain steps, such as the quadratic function f(x) = x(2x + 1) \lll \lg w, which is inverted through the data-dependent rotations derived from it. The decryption algorithm begins by loading the ciphertext into registers A, B, C, D (each w bits) and subtracting the final round keys from C and A: C \leftarrow C - S[2r + 3], \quad A \leftarrow A - S[2r + 2] For each round i from r down to 1, the steps are:
  1. Rotate registers: (A, B, C, D) \leftarrow (D, A, B, C)
  2. Compute t = B(2B + 1) \lll \lg w and u = D(2D + 1) \lll \lg w
  3. Invert the inner operations: C \leftarrow ((C \oplus u) \ggg t) + S[2i + 1], A \leftarrow ((A \oplus t) \ggg u) + S[2i]
After all rounds, subtract the initial keys: D \leftarrow D - S{{grok:render&&&type=render_inline_citation&&&citation_id=1&&&citation_type=wikipedia}}, B \leftarrow B - S{{grok:render&&&type=render_inline_citation&&&citation_id=0&&&citation_type=wikipedia}}, yielding the . These steps mirror encryption's additions, XORs, and left rotations but reverse their sequence and directions, with the multiplication-based rotation amounts enabling efficient inversion without additional precomputations. for RC6 decryption (for w=32, b=16 bytes input, r rounds) is as follows:
Input: [Ciphertext](/page/Ciphertext) (four w-bit words A, B, C, D); number of rounds r
Output: [Plaintext](/page/Plaintext) (four w-bit words A, B, C, D)
C ← C - S[2r+3]; A ← A - S[2r+2]
for i = r downto 1 do
    t ← (B × (2B + 1)) ≪ lg w; u ← (D × (2D + 1)) ≪ lg w
    C ← ((C ⊕ u) ≫ t) + S[2i+1]; A ← ((A ⊕ t) ≫ u) + S[2i]
    (A, B, C, D) ← (B, C, D, A)
B ← B - S[1]; D ← D - S[0]
This formulation ensures that applying decryption to recovers the exact , as verified in the algorithm's design and implementations.

Security Analysis

Resistance to Cryptanalytic Attacks

RC6 exhibits strong resistance to cryptanalysis, with the designers providing rigorous bounds demonstrating that the maximum probability of a differential characteristic over the full recommended rounds (typically 20 for AES-strength parameters) is exponentially small, on the order of $2^{-200} or lower for 128-bit blocks, rendering exhaustive search infeasible. This resistance stems from the variable rotation amounts derived from data-dependent quadratic operations, which decorrelate inputs across rounds and thwart high-probability differentials. Linear cryptanalysis similarly faces substantial barriers, as the in linear approximations decays rapidly due to the non-linear mixing in the round function; shows that even multi-linear approximations require $2^{100} or more known plaintexts to detect biases with statistical confidence, far exceeding practical availability for full-round RC6. No linear trails with non-negligible propagate beyond 10-12 rounds, and the key schedule's expansion further randomizes subkey influences, preventing effective partitioning attacks. For reduced-round variants, cryptanalysts have identified theoretical weaknesses, such as correlation-based distinguishers exploiting linear relations in the rotation mechanism, which can differentiate up to 15 rounds from random permutations with $2^{64} queries under weak keys, though the full 20-round structure remains unaffected. Multiple breaks 18-round RC6 with weak keys using $2^{112} known plaintexts and comparable time, but these require specific key classes and do not extend to standard parameters or full rounds. Key-recovery attacks via or impossible differentials target up to 10-12 rounds without whitening layers, with complexities around $2^{100} operations, underscoring a security margin of at least 8 rounds against such methods. No practical attacks—such as algebraic, , or —have been published that compromise full-round RC6 under recommended parameters (128-bit , 128-256-bit keys, 20 rounds), and independent evaluations during the AES selection process confirmed its robustness against then-known techniques, with no disqualifying vulnerabilities identified. The absence of structural flaws, combined with the data-dependent rotations, positions RC6 as secure against generic attacks like meet-in-the-middle, which would demand $2^{128} time for the block size.

Performance and Efficiency Evaluations

RC6 demonstrates strong software performance on 32-bit processors, achieving encryption rates of approximately 254 cycles per 128-bit in optimized on a MHz , equivalent to roughly throughput. In implementations on the same platform, encryption required 616 cycles per , yielding about . Decryption performance is comparable, at 566 cycles per in C and 254 in , reflecting the algorithm's symmetric design with efficient inverse operations. Key setup times range from 2,350 to 2,360 cycles for 128- to 256-bit keys in C, scaling linearly with key length due to the key expansion process involving modular reductions. On platforms like the , RC6 outperformed other finalists in first-round evaluations, achieving up to 97.8 Mbit/s encryption speeds in certain compiler configurations and leading in Java implementations with 25.2 Mbit/s per RSA Labs benchmarks versus NIST's lower figures for competitors. However, performance varies by architecture: on 64-bit systems such as , RC6 required about 467 cycles per block, lagging behind optimized candidates like DFC at 304 cycles. For constrained 8-bit environments like microcontrollers, encryption demands around 12,700 cycles per block plus 27,000–43,000 for key scheduling, with 176 bytes of usage, rendering it less efficient than lighter alternatives.
PlatformImplementationCycles per Block (Encryption)Throughput (MB/s, scaled to 200 MHz)
(266 MHz)Assembly25412.6
(266 MHz)6165.19
(200 MHz equiv.)Optimized C~273 (minimal rounds)N/A (faster than Rijndael's 440)
C467N/A
Compared to Rijndael (), RC6 exhibited superior speed on Pentium II/III processors during AES evaluations, with ~250 cycles per block versus Rijndael's higher counts in unaccelerated software, attributed to RC6's reliance on fast integer additions, rotations, XORs, and 32x32-bit multiplications without precomputed tables. Post-AES standardization, AES benefits from widespread (e.g., AES-NI instructions), often surpassing RC6 in modern environments, though RC6 remains competitive in scenarios lacking such support. Efficiency evaluations highlight RC6's low operational complexity—20 rounds for 128-bit using quadratic mixing—but note higher demands (e.g., 210 bytes versus AES's 52 on smart cards), impacting embedded deployments. Overall, RC6 prioritizes 32-bit software throughput over parallelism or 8/64-bit optimization, as evidenced by its AES finalist ranking where it excelled in and tests but underperformed in high-parallelism scenarios relative to peers.

Comparative Security with AES Finalists

RC6's security profile was evaluated alongside the other AES finalists—MARS, Rijndael, , and —primarily through resistance to differential cryptanalysis, , and other techniques prevalent during the NIST competition from 1997 to 2000. All finalists, including RC6 with its 20 rounds for 128-bit keys, demonstrated no practical breaks on the full cipher, with analyses confirming adequacy against exhaustive search and related-key attacks. RC6 benefited from extensive scrutiny inherited from its predecessor , yielding the most comprehensive analysis among finalists at the time, which validated its robustness via distinguishers and truncated differentials limited to far fewer than 20 rounds. Comparative assessments highlighted varying safety margins, defined as the excess rounds beyond those succumbing to theoretical attacks. RC6 and Rijndael exhibited smaller margins than (32 rounds) and (16 rounds), with reduced-round linear attacks reaching up to approximately 10-12 rounds for RC6 variants under high-data assumptions, but falling short of full-round feasibility due to its data-dependent rotations and quadratic mixing. In contrast, 's conservative SP-network structure resisted attacks to higher reduced-round counts, earning it a higher margin in independent reviews, while MARS faced modulus-related concerns but still qualified as high-margin alongside and . Rijndael, later , mirrored RC6's margin but prevailed in selection for its simplicity and performance without compromising core security. Post-competition analyses, including statistical and χ² attacks on RC6 reduced to 16 or fewer rounds, reaffirmed no viable full-cipher exploits, aligning its security with against brute-force (2^128 operations for 128-bit keys) and side-channel threats when implemented properly. Unlike , which has undergone broader scrutiny as a , RC6's innovative rotation-based design invites theoretical risks from algebraic or methods, though empirical bounds exceed workloads for practical breaks. Overall, RC6 matched finalists in empirical resilience but lagged conservative peers in provable margins, contributing to Rijndael's selection for balanced assurance.

Adoption and Implementations

Standardization Efforts and Usage

RC6 was submitted to the National Institute of Standards and Technology (NIST) as a candidate for the (AES) in August 1998, advancing to the third round of evaluation among five finalists. It underwent extensive analysis during this process, including assessments of its resistance to and , but was not selected, with Rijndael announced as the AES winner on October 2, 2000. No further formal standardization initiatives for RC6 have been documented by NIST, ISO, or other major bodies post-AES, as focus shifted to the adopted AES for federal and international use. Adoption of RC6 remains limited, primarily confined to , educational, and experimental contexts rather than or protocol-level deployment. Open-source implementations exist in languages such as and C++, often for algorithmic testing or custom applications like obfuscation, but RC6 is absent from mainstream cryptographic libraries including , , or Bouncy Castle. Hardware realizations, such as designs for FPGAs, have been developed for , reporting counts like 13,535 for a single block on 8051 microcontrollers. Its lack of standardization, combined with AES's superior hardware efficiency and royalty-free status, has precluded integration into protocols like TLS, , or widespread software products.

Software and Hardware Deployments

RC6 has seen limited deployment in software primarily through cryptographic libraries used for research, testing, and custom implementations rather than widespread commercial products. The Crypto++ library, a C++ class library for cryptographers, includes support for RC6 encryption in modes such as CBC, enabling developers to integrate it for experimental or legacy purposes. Similarly, the Bouncy Castle cryptography API for Java and C# provides RC6 implementations, facilitating its use in applications requiring alternative block ciphers beyond AES. Open-source repositories, such as Python-based RC6 implementations on GitHub, offer reference code derived from the original RC5 design but are not part of standard distributions like OpenSSL, which prioritizes AES. In , RC6 deployments are confined to academic and implementations on field-programmable gate arrays (FPGAs), with no evidence of integration into commercial or consumer devices. High-throughput architectures have been realized on FPGAs and , outperforming optimized software in throughput metrics, as demonstrated in designs achieving efficient rates through of RC6's data-dependent rotations. Compact implementations on Xilinx Virtex-II FPGAs utilize minimal resources for both and decryption, targeting resource-constrained environments like embedded systems for protocols. Further FPGA on devices such as XC40200XV report rates suitable for , though these remain experimental without standardization driving broader adoption. Absent selection as the standard in 2001, RC6 lacks the ecosystem support for production deployments seen in Rijndael-based implementations.

Controversies and Speculations

Alleged NSA Tool Integration

In August 2016, the hacking group known as leaked a collection of exploits, implants, and tools attributed to Group, a entity widely linked to the U.S. (NSA). Among the leaked artifacts were multiple implementations of the RC6 , used for encrypting communications and data in these tools. Security firm analyzed and identified over 300 tools sharing code similarities with previously attributed malware, including identical and encryption routines that employed specific setup procedures unseen outside this context. These variants, appearing in 24 forms within the dump, utilized custom key schedules and operational modes tailored for persistence and command-and-control traffic . Kaspersky concluded the tools' authenticity based on this cryptographic , noting the rarity of such implementations predating . The integration of RC6 into Equation Group tools does not imply a deliberate backdoor in the public RC6 algorithm itself, which was openly designed by and colleagues as an AES finalist in 1998. Rather, it reflects the agency's selection of RC6 for internal operational security, leveraging its efficiency for 32-bit word operations in resource-constrained environments like implants. No verifiable evidence has emerged of NSA influence on RC6's core design to facilitate unauthorized access, though the choice raised questions about the cipher's standalone scrutiny given its non-selection for standardization.

Implications for Trust and Backdoor Claims

The 's extensive use of for encrypting malware communications and data, as documented in Kaspersky Lab's 2015 of samples dating back to 2001, indicates that the Agency-linked actors considered the algorithm reliable for operational . This deployment persisted into tools leaked by in August 2016, where identical RC6 implementations—featuring specific quirks like handling the quadratic constant Q32—matched those in prior Equation Group artifacts, confirming the connection without evidence of intentional weaknesses. Such reliance on a non-standardized over suggests practical advantages, potentially including compact implementation in resource-constrained implants or resistance to certain side-channel attacks, rather than inherent flaws. No verifiable claims of backdoors or deliberate weaknesses in RC6's have emerged, despite post-Snowden of U.S. cryptographic standards. RC6's architecture, centered on data-dependent rotations and quadratic equations derived from , withstood differential, linear, and other cryptanalytic attacks during the evaluation (1997–2000), with security margins exceeding requirements for 128-bit keys. The Equation Group's variant implementations, while non-standard in details like sign handling for Q32, align with permissible optimizations rather than , as critiqued in independent reviews dismissing backdoor interpretations. Absent concrete evidence—unlike the NSA-influenced backdoor in (revealed 2013)—speculation remains unsubstantiated, with RC6's public dissection by global cryptographers providing a safeguard against hidden flaws. Trust implications are mixed: NSA adoption validates RC6's robustness for high-stakes use, countering narratives of obsolescence since its AES non-selection in 2000, yet raises questions about eschewing , possibly due to implementation overhead or targeted optimizations. RSA Security's 2013 acceptance of $10 million from the NSA to prioritize Dual_EC in BSAFE libraries eroded broader confidence in the firm's outputs, indirectly tainting RC6 despite its distinct origins with and team. Overall, RC6's track record supports deployment in non-critical contexts, but maximal caution favors audited, standardized alternatives like amid institutional influences on standards bodies. Some analysts note the choice's curiosity, attributing it to legacy code or efficiency in systems over AES's fixed S-boxes.

Licensing and Intellectual Property

Patent History and Expiration

RC6, a symmetric developed by researchers at Laboratories (Ronald Rivest, Matt Robshaw, Ray Sidney, and Yiqun Lisa Yin), was submitted as a candidate for the () in 1998 and is proprietary technology owned by , Inc. (formerly RSA Data Security, Inc.). The core innovations enabling RC6, including data-dependent rotations central to its design, are protected under U.S. No. 5,724,428 ("Block encryption algorithm with data-dependent rotations"), filed on April 21, 1995, and issued on March 3, 1998, to RSA Data Security, Inc. This patent, applicable to predecessor ciphers like upon which RC6 is based, expired on April 21, 2015, exactly 20 years from its filing date under U.S. patent term rules for applications filed before June 8, 1995 (the greater of 17 years from issuance or 20 years from filing). A related patent, U.S. Patent No. 5,835,600 (same title), filed as a divisional application stemming from the same priority date and issued on November 10, 1998, also to RSA Data Security, Inc., extended coverage of the rotation-based mechanism but shared the effective term tied to the parent filing, expiring around 2015–2017 depending on divisional adjustments and maintenance. The specific enhancements defining RC6, such as its variable block size (up to 256 bits), 20-round structure, and quadratic data-dependent operations, are detailed in U.S. Patent No. 6,269,163 ("Enhanced block ciphers with data-dependent rotations"), filed on June 15, 1998, and issued on July 31, 2001, to This patent explicitly describes RC6 as an illustrative embodiment and expired on June 15, 2018, 20 years from filing, rendering the algorithm fully available for unrestricted implementation thereafter without licensing requirements. Prior to these expirations, required licenses for commercial use, though non-commercial and research implementations were often permitted under or explicit waivers during the AES process.

Availability for Implementation

Following the expiration of relevant patents held by , the RC6 block cipher is freely available for implementation in both software and without licensing fees or obligations. The associated U.S. patents, including Nos. 5,724,428 (issued 1998) and 5,835,600 (issued 1998), expired between 2015 and 2017, entering the and eliminating prior proprietary restrictions. A related patent, U.S. No. 6,269,163 for data-dependent rotations central to RC6's (filed 1998), expired in June 2018. Open-source implementations of RC6 exist across multiple programming languages, including C, Python, and assembly variants optimized for specific architectures, confirming unrestricted use post-patent expiry. These resources, such as reference vectors and test suites published by the algorithm's designers, facilitate verification and integration without legal barriers. Developers can deploy RC6 in cryptographic libraries or custom applications, though its non-selection as AES has limited widespread adoption compared to royalty-free alternatives like AES itself.

References

  1. [1]
    [PDF] The RC6TM Block Cipher - People | MIT CSAIL
    An implementation of RC6 for the Intel 8051 was recently completed and this gave a count of 13;535 cycles for encrypting one block of data.Missing: specification | Show results with:specification
  2. [2]
    [PDF] The Security of the RC6 Block Cipher
    RC6 is one of a fully parameterized family of encryption algorithms. A version of RC6 is more accurately specified as RC6-w/r/b where the word size is w bits, ...
  3. [3]
    [PDF] Report on the Development of the Advanced Encryption Standard ...
    Oct 2, 2000 · RC6 was submitted to the AES development effort by RSA Laboratories. 1. The operation of 32-bit addition is referred to simply as addition; the ...
  4. [4]
    [PDF] The Case for RC6 as the AES - People | MIT CSAIL
    May 15, 2000 · Yet, two independent studies [23, 34] have already shown that RC6 in fact offers the fastest encryption speed of any of the AES finalists on ...
  5. [5]
    AES: the Advanced Encryption Standard - Cryptographic competitions
    Timeline · M-17, 1997.01.02: NIST announces AES competition. · M-14, 1997.04.15: AES Evaluation Criteria/Submission Requirements Workshop. · M-9, 1997.09.12: NIST ...
  6. [6]
    What is RC6 | Glossary - CyberGhost VPN
    RC6 was submitted to the AES competition in 1998 by RSA Security Inc. It was built on the foundation of the RC5 algorithm, which was also developed by Ronald ...
  7. [7]
    [PDF] The Case for RC6 as the AES - CSRC
    May 15, 2000 · 1 Introduction. Over the past few weeks an enormous amount of information has been presented to those following the AES effort.Missing: timeline | Show results with:timeline<|separator|>
  8. [8]
    AES Development - Cryptographic Standards and Guidelines | CSRC
    Dec 29, 2016 · The AES finalist candidate algorithms were MARS, RC6, Rijndael, Serpent, and Twofish, and NIST developed a Round 1 Report describing the ...Missing: milestones | Show results with:milestones
  9. [9]
    [PDF] The RC 6 TM Block Cipher | Semantic Scholar
    The RC6 TM block cipher is introduced, an evolutionary improvement of RC5, designed to meet the requirements of the Advanced Encryption Standard (AES), ...Missing: specification | Show results with:specification
  10. [10]
    Linear Cryptanalysis of RC5 and RC6 - ACM Digital Library
    In this paper we evaluate the resistance of the block cipher RC5 against linear cryptanalysis. We describe a known plaintext attack that can break RC5-32 ...
  11. [11]
    Correlations in RC6 with a Reduced Number of Rounds
    Estimates of the complexity of our analysis imply that reduced round versions of RC6 with up to 15 rounds are not random. The linear attacks in [4] deal with ...
  12. [12]
    Multiple Linear Cryptanalysis of a Reduced Round RC6
    In this paper, we apply multiple linear cryptanalysis to a reduced round RC6 block cipher. We show that 18-round RC6 with weak key is breakable by using the ...<|control11|><|separator|>
  13. [13]
    [PDF] Optimized 2-attack against RC6 - Miyaji Laboratory
    This paper is organized as follows. section 2 summarizes the notation ... of the RC6 Block Cipher. v 1.0," August 20, 1998. Available at http://www ...
  14. [14]
    [PDF] Cryptanalysis of Reduced-Round RC6 without Whitening - IME-USP
    RC6 [13] is a block cipher, which is constructed by only simple arithmetic such as multiplication, addition, bit- wise exclusive-or (XOR), and data-dependent ...<|separator|>
  15. [15]
    [PDF] RC6—The elegant AES choice - People | MIT CSAIL
    RC6—The elegant AES choice. Ron Rivest rivest@mit.edu. Matt Robshaw mrobshaw@supanet.com. Yiqun Lisa Yin yiqun@nttmcl.com. Page 2. RC6 is the right AES choice.Missing: designers competition timeline
  16. [16]
    [PDF] Analysis of RC6 - CRYPTREC
    Jan 12, 2001 · The design of RC6 is more complex than that of RC5, and consequently an analysis of the cipher gets more involved. The security of RC6 relies on ...
  17. [17]
    [PDF] Some Comments on the First Round AES Evaluation of RC6
    The first round of the AES process is coming to an end. Since August of 1998, the cryptographic community has had the opportunity to consider each of the.Missing: history | Show results with:history
  18. [18]
    [PDF] A Performance Comparison of the Five AES Finalists
    For example, RC6 is the fastest algorithm on the Pentium II/III family by a small margin, but is less half the speed of the fastest candidates on the. Pentium ...
  19. [19]
    [PDF] Performance Comparison of the AES Submissions
    The AES submissions vary greatly in their 32-bit CPU performance, from 250 clock cycles per block (RC6) to 6600 (Magenta). Some candidates' perfor- mances ...
  20. [20]
    AES-128 vs RC6-256 : A Detailed Comparison - MojoAuth
    RC6, lacking similar ubiquitous hardware acceleration, typically relies on software algorithms. This can lead to a noticeable performance disparity, especially ...Missing: efficiency | Show results with:efficiency
  21. [21]
    [PDF] RC6 as the AES
    Available from theory.lcs.mit.edu:80/~rivest/. 15. R.L. Rivest, M.J.B. Robshaw, R. Sidney, and Y.L. Yin. The RC6 Block Cipher. v1.1, August 20, 1998 ...
  22. [22]
    [PDF] The Twofish Team's Final Comments on AES Selection
    May 15, 2000 · RC6 and. Rijndael have the smallest safety factors. MARS does better, and Twofish better still. As expected, Serpent has the highest safety ...
  23. [23]
    [PDF] The Advanced Encryption Standard: A Review of the Finalists
    Oct 9, 2000 · "adequate security for the AES", three algorithms, MARS, Serpent, and Twofish, were noted as having a high security margin. MARS. This ...
  24. [24]
    [PDF] Proceedings of the Third AES Candidate Conference
    Title: Correlations in RC6. Authors: Lars Knudsen and Willi Meier. Abstract: In this paper the block cipher RC6 is analysed. RC6 is submitted as a candidate ...
  25. [25]
    RC6 - ASecuritySite.com
    RC6 (Rivest Cipher 6) is derived from RC5, and is a symmetric key block cipher. It was submitted to the NIST Advanced Encryption Standard (AES) competition.Missing: origins history<|separator|>
  26. [26]
    Implementation of RC6 encryption and decryption in python. - GitHub
    In cryptography, RC6 (Rivest Cipher 6) is a symmetric key block cipher derived from RC5. · It was designed by Ron Rivest, Matt Robshaw, Ray Sidney, and Yiqun ...Missing: milestones | Show results with:milestones
  27. [27]
    mauricelambert/RC6Encryption: This package implements the RC6 ...
    This pure python package implements the RC6 encryption (ECB and CBC encryption mode). All encryption and decryption mode are tested.
  28. [28]
    RC6 cipher implemented in Verilog - element14 Community
    Aug 5, 2022 · RC6 encryption is implement using automata iterating over required number of rounds (which is dynamically configurable). Some operations are ...
  29. [29]
    Difference between RC2, RC4, RC5 and RC6
    Apr 1, 2019 · RC6 is a 20-round Feistel block cipher based off of RC5, with tweaks done to make it acceptable for the AES competition (including using a fixed ...
  30. [30]
    RC6 - Crypto++ Wiki
    RC6 is a block cipher based on RC5 designed by Ron Rivest, Matt Robshaw, Ray ... The cipher was a candidate in the Advanced Encryption Standard (AES) competition.
  31. [31]
    RC6-256 in C# | SSOJet
    When implementing RC6-256 in C#, several libraries provide robust support for the algorithm: Bouncy Castle: A well-known cryptography library that supports ...
  32. [32]
    [PDF] High Throughput Implementations of the RC6 Block Cipher Using ...
    FPGA and ASIC approaches clearly outperform optimiz ed software solutions. ;. Conclusions. In this paper, improved architectures of the RC6 block cipher for ...
  33. [33]
    [PDF] Compact Hardware Implementation of FPGA Based RC6 Block Cipher
    Abstract: This study presents the implementation of RC6 Block cipher that involve encryption and decryption on FPGA Virtex II device with highly compact ...Missing: ASIC | Show results with:ASIC
  34. [34]
    [PDF] FPGA Implementation of RC6 Algorithm for IPSec protocol - CORE
    RC6 works on a block size of 128 bits and it is very similar to. RC5 in structure, using data-dependent rotations, modular addition and XOR operations; in fact, ...
  35. [35]
    [PDF] AES Cipher's Candidates: Design and FPGA Implementation
    Feb 28, 2025 · The proposed hardware design of the RC6 was implemented on a Xilinx XC40200XV-9-BG560 device (Salman & Alomari, 2023). The encryption rate ...
  36. [36]
    Confirmed: hacking tool leak came from “omnipotent” NSA-tied group
    Aug 16, 2016 · Confirmed: hacking tool leak came from “omnipotent” NSA-tied group ... implementation of the RC5 and RC6 encryption algorithms. Among other ...Missing: cipher integration
  37. [37]
    The Equation giveaway | Securelist
    Aug 16, 2016 · The first archive contains close to 300MBs of firewall exploits, tools, and scripts under cryptonyms like BANANAUSURPER, BLATSTING, and ...
  38. [38]
    Researchers Find "Strong Connection" Between NSA Hackers and ...
    Aug 17, 2016 · This code similarity makes us believe with a high degree of confidence that the tools from the ShadowBrokers leak are related to the malware ...Missing: cipher integration
  39. [39]
    Confirmed: Leaked Equation Group Hacking Tools Are Real
    Aug 17, 2016 · The Equation Group used the RC5 and RC6 encryption ... Over 300 tools from the Shadowbrokers leak have shared code with known Equation tools.
  40. [40]
    [PDF] EQUATION GROUP: QUESTIONS AND ANSWERS | Kaspersky
    Feb 16, 2015 · The Equation group uses the RC5 and RC6 encryption algorithms quite extensively throughout their creations. They also use simple XOR ...
  41. [41]
    Kaspersky's Analysis of Equation Group's RC6 is Wrong
    Aug 20, 2016 · What they found in both the ShadowBrokers dump and the earlier Equation Group malware was an RC6 implementation that was subtracting -Q32 rather ...
  42. [42]
    How the NSA (may have) put a backdoor in RSA's cryptography
    Jan 6, 2014 · This is the algorithm into which the NSA allegedly inserted a backdoor and then paid RSA to use. ... algorithm's author with the secret backdoor ...Missing: RC6 | Show results with:RC6
  43. [43]
    Newest 'nsa' Questions - Cryptography Stack Exchange
    The NSA appears to have chosen RC6 for securing the communication channels for its spyware[1]. I have found the choice curious as the cipher has become somewhat ...
  44. [44]
    Block encryption algorithm with data-dependent rotations
    A simple encryption and decryption device has been developed. The underlying algorithm is a fast block cipher that may be implemented efficiently in hardware ...
  45. [45]
    When do the patents on RC6 (U.S. Patent 5,724,428 and U.S. Patent ...
    Mar 6, 2016 · Pat. 5,835,600 is a DIVISION of this patent (not a continuation of it, as another responder indicated) and will expire on April 21, 2017.Missing: cipher | Show results with:cipher
  46. [46]
    Block encryption algorithm with data-dependent rotations
    2001 Enhancements and implementation of RC6/sup TM/block cipher for data security. WO1998036524A1 1998-08-20 System and method for constructing block ciphers.
  47. [47]
    Enhanced block ciphers with data-dependent rotations
    Filing date: 2001-06-08. Legal status: Abandoned. Application US09/094,649 events. A timeline of key events for this patent application, including priority ...Missing: history | Show results with:history
  48. [48]
    IPR Details - Ted Krovetz's Statement about IPR related to draft ...
    Apr 12, 2018 · This patent may be expiring 15 June 2018. Only those sections of the relevant entry form where the submitter provided information are ...
  49. [49]
    draft-krovetz-rc6-rc5-vectors-00 - IETF Datatracker
    Apr 11, 2018 · This means that both ciphers can support many security levels, key lengths, and block sizes. ... RC6 with various word sizes, numbers of rounds ...Missing: parameters | Show results with:parameters