Los algoritmos de clave simétrica [a] son algoritmos de criptografía que utilizan las mismas claves criptográficas tanto para el cifrado de texto simple como para el descifrado de texto cifrado . Las claves pueden ser idénticas, o puede haber una simple transformación para pasar de una clave a otra. [1] Las claves, en la práctica, representan un secreto compartido entre dos o más partes que se puede utilizar para mantener un vínculo de información privada. [2] El requisito de que ambas partes tengan acceso a la clave secreta es uno de los principales inconvenientes del cifrado de clave simétrica , en comparación con el cifrado de clave pública (también conocido como cifrado de clave asimétrica). [3] [4] Sin embargo, los algoritmos de cifrado de clave simétrica suelen ser mejores para el cifrado masivo. Con la excepción del bloc de un solo uso , tienen un tamaño de clave más pequeño, lo que significa menos espacio de almacenamiento y transmisión más rápida. Debido a esto, el cifrado de clave asimétrica se utiliza a menudo para intercambiar la clave secreta por el cifrado de clave simétrica. [5] [6] [7]
El cifrado de clave simétrica puede utilizar cifrados de flujo o cifrados de bloque . [8]
Los cifrados de flujo cifran los dígitos (normalmente bytes ) o las letras (en los cifrados de sustitución) de un mensaje de uno en uno. Un ejemplo es ChaCha20 . Los cifrados de sustitución son cifrados muy conocidos, pero se pueden descifrar fácilmente utilizando una tabla de frecuencias . [9]
Los cifrados por bloques toman una cantidad de bits y los cifran en una sola unidad, rellenando el texto sin formato para lograr un múltiplo del tamaño del bloque. El algoritmo Advanced Encryption Standard (AES), aprobado por el NIST en diciembre de 2001, utiliza bloques de 128 bits.
Algunos ejemplos de algoritmos de clave simétrica populares incluyen Twofish , Serpent , AES (Rijndael), Camellia , Salsa20 , ChaCha20 , Blowfish , CAST5 , Kuznyechik , RC4 , DES , 3DES , Skipjack , Safer y IDEA . [10]
Los cifrados simétricos se utilizan comúnmente para lograr otros primitivos criptográficos además del simple cifrado. [ cita requerida ]
El cifrado de un mensaje no garantiza que no se modifique mientras está cifrado. Por lo tanto, a menudo se añade un código de autenticación de mensajes a un texto cifrado para garantizar que el receptor notará los cambios en el texto cifrado. Los códigos de autenticación de mensajes se pueden construir a partir de un cifrado AEAD (por ejemplo, AES-GCM ).
Sin embargo, los cifrados simétricos no se pueden utilizar con fines de no repudio, excepto si se involucran partes adicionales. [11] Véase la norma ISO/IEC 13888-2.
Otra aplicación es la creación de funciones hash a partir de cifrados en bloque. Consulte la función de compresión unidireccional para obtener descripciones de varios de estos métodos.
Muchos cifrados de bloques modernos se basan en una construcción propuesta por Horst Feistel . La construcción de Feistel permite construir funciones invertibles a partir de otras funciones que no lo son. [ cita requerida ]
Históricamente, los cifrados simétricos han sido susceptibles a ataques de texto simple conocido , ataques de texto simple elegido , criptoanálisis diferencial y criptoanálisis lineal . La construcción cuidadosa de las funciones para cada ronda puede reducir en gran medida las posibilidades de un ataque exitoso. [ cita requerida ] También es posible aumentar la longitud de la clave o las rondas en el proceso de cifrado para protegerse mejor contra los ataques. Sin embargo, esto tiende a aumentar la potencia de procesamiento y disminuir la velocidad a la que se ejecuta el proceso debido a la cantidad de operaciones que el sistema necesita hacer. [12]
La mayoría de los algoritmos de clave simétrica modernos parecen ser resistentes a la amenaza de la criptografía post-cuántica . [13] Las computadoras cuánticas aumentarían exponencialmente la velocidad a la que se pueden decodificar estos cifrados; en particular, el algoritmo de Grover tomaría la raíz cuadrada del tiempo tradicionalmente requerido para un ataque de fuerza bruta , aunque estas vulnerabilidades se pueden compensar duplicando la longitud de la clave. [14] Por ejemplo, un cifrado AES de 128 bits no sería seguro contra un ataque de este tipo, ya que reduciría el tiempo necesario para probar todas las iteraciones posibles de más de 10 quintillones de años a unos seis meses. Por el contrario, un ordenador cuántico seguiría necesitando la misma cantidad de tiempo para decodificar un cifrado AES de 256 bits que un ordenador convencional para decodificar un cifrado AES de 128 bits. [15] Por esta razón, se cree que AES-256 es "resistente a la cuántica". [16] [17]
Los algoritmos de clave simétrica requieren que tanto el remitente como el destinatario de un mensaje tengan la misma clave secreta. Todos los primeros sistemas criptográficos requerían que el remitente o el destinatario recibieran de algún modo una copia de esa clave secreta a través de un canal físicamente seguro.
Casi todos los sistemas criptográficos modernos todavía utilizan algoritmos de clave simétrica internamente para cifrar la mayor parte de los mensajes, pero eliminan la necesidad de un canal físicamente seguro mediante el uso del intercambio de claves Diffie-Hellman o algún otro protocolo de clave pública para llegar a un acuerdo seguro sobre una nueva clave secreta para cada sesión/conversación (secreto de reenvío).
Cuando se utilizan con cifrados asimétricos para la transferencia de claves, casi siempre se utilizan generadores de claves pseudoaleatorios para generar las claves de sesión de cifrado simétrico. Sin embargo, la falta de aleatoriedad en esos generadores o en sus vectores de inicialización es desastrosa y ha provocado fallos criptoanalíticos en el pasado. Por lo tanto, es esencial que una implementación utilice una fuente de alta entropía para su inicialización. [18] [19] [20]
Un cifrado recíproco es un cifrado en el que, de la misma forma que se introduce el texto simple en el sistema de criptografía para obtener el texto cifrado , se podría introducir el texto cifrado en el mismo lugar del sistema para obtener el texto simple. A veces, a un cifrado recíproco también se lo denomina cifrado autorrecíproco . [21] [22]
Prácticamente todas las máquinas de cifrado mecánico implementan un cifrado recíproco, una involución matemática en cada letra tecleada. En lugar de diseñar dos tipos de máquinas, una para cifrar y otra para descifrar, todas las máquinas pueden ser idénticas y pueden configurarse (codificarse) de la misma manera. [23]
Algunos ejemplos de cifrados recíprocos incluyen:
La mayoría de todos los cifrados modernos se pueden clasificar como cifrados de flujo , la mayoría de los cuales utilizan un combinador de cifrado XOR recíproco , o cifrados de bloque , la mayoría de los cuales utilizan un cifrado Feistel o un esquema Lai-Massey con una transformación recíproca en cada ronda. [ cita requerida ]
{{cite journal}}
: Requiere citar revista |journal=
( ayuda )generadores de números aleatorios (RNG) son constantemente un eslabón débil en el uso seguro de la criptografía.