En criptografía , RC6 ( Rivest cipher 6 ) es un cifrado de bloques de clave simétrica derivado de RC5 . Fue diseñado por Ron Rivest , Matt Robshaw , Ray Sidney y Yiqun Lisa Yin para cumplir con los requisitos de la competencia Advanced Encryption Standard (AES) . El algoritmo fue uno de los cinco finalistas, y también fue presentado a los proyectos NESSIE y CRYPTREC . Era un algoritmo propietario, patentado por RSA Security .
El RC6 propiamente dicho tiene un tamaño de bloque de 128 bits y admite tamaños de clave de 128, 192 y 256 bits hasta 2040 bits, pero, al igual que el RC5, se puede parametrizar para admitir una amplia variedad de longitudes de palabra, tamaños de clave y número de rondas. El RC6 es muy similar al RC5 en cuanto a su estructura, ya que utiliza rotaciones dependientes de los datos, adición modular y operaciones XOR ; de hecho, se podría considerar que el RC6 entrelaza dos procesos de cifrado RC5 paralelos, aunque el RC6 utiliza una operación de multiplicación adicional que no está presente en el RC5 para que la rotación dependa de cada bit de una palabra, y no solo de los bits menos significativos.
Tenga en cuenta que el algoritmo de expansión de claves es prácticamente idéntico al de RC5. La única diferencia es que, en el caso de RC6, se derivan más palabras de la clave proporcionada por el usuario.
// Cifrado/descifrado con RC6-w/r/b // // Entrada: Texto simple almacenado en cuatro registros de entrada de w-bit A, B, C y D // r es el número de rondas // Claves de ronda de w-bit S[0, ..., 2r + 3] // // Salida: Texto cifrado almacenado en A, B, C, D // // '''Procedimiento de cifrado:'''B = B + S [ 0 ] D = D + S [ 1 ] para i = 1 para r hacer { t = ( B * ( 2 B + 1 )) <<< lg w 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 ) } A = A + S [ 2 r + 2 ] C = C + S [ 2 r + 3 ] // '''Procedimiento de descifrado:'''C = C - S [ 2 r + 3 ] A = A - S [ 2 r + 2 ] para i = r hasta 1 hacer { ( A , B , C , D ) = ( D , A , B , C ) u = ( D * ( 2 D + 1 )) <<< lg w t = ( B * ( 2 B + 1 )) <<< lg w C = (( C - S [ 2 i + 1 ]) >>> t ) ^ u A = (( A - S [ 2 i ]) >>> u ) ^ t } D = D - S [ 1 ] B = B - S [ 0 ]
En agosto de 2016 se divulgó un código supuestamente utilizado por Equation Group o NSA para "implantes" de varios dispositivos de seguridad de red. [2] Las instrucciones que lo acompañaban revelaron que algunos de estos programas utilizan RC6 para la confidencialidad de las comunicaciones de red. [3]
Como RC6 no fue seleccionado para el AES , no se garantizó que RC6 esté libre de regalías. En enero de 2017 [actualizar], una página web en el sitio web oficial de los diseñadores de RC6, RSA Laboratories, afirma lo siguiente: [4]
El énfasis en la palabra "si" sugiere que RSA Security Inc. podría haber exigido el pago de licencias y regalías para cualquier producto que utilizara el algoritmo RC6. RC6 era un algoritmo de cifrado patentado ( patente estadounidense 5.724.428 y patente estadounidense 5.835.600 ); sin embargo, las patentes expiraron entre 2015 y 2017.