Algoritmo de clave simétrica
Algoritmos de clave simétrica son algoritmos para criptografía que utilizan las mismas claves criptográficas tanto para el cifrado de texto sin formato como para el descifrado de texto cifrado. Las claves pueden ser idénticas o puede haber una simple transformación entre las dos claves. Las claves, en la práctica, representan un secreto compartido entre dos o más partes que pueden utilizarse para mantener un vínculo de información privada. 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). Sin embargo, los algoritmos de cifrado de clave simétrica suelen ser mejores para el cifrado masivo. Tienen un tamaño de clave más pequeño, lo que significa menos espacio de almacenamiento y una transmisión más rápida. Debido a esto, el cifrado de clave asimétrica se usa a menudo para intercambiar la clave secreta por el cifrado de clave simétrica.
Tipos
El cifrado de clave simétrica puede utilizar cifrados de flujo o cifrados de bloque.
- Cifras de corriente encriptan los dígitos (típicamente bytes), o letras (en cifras de sustitución) de un mensaje uno a la vez. Un ejemplo es ChaCha20.
- Los cifrados de sustitución son ciféricos bien conocidos, pero se pueden descifrar fácilmente utilizando una tabla de frecuencias.
- Cifras de bloques toman un número de bits y los encriptan en una sola unidad, acolchando el texto para lograr un múltiplo del tamaño de bloque. El algoritmo Advanced Encryption Standard (AES), aprobado por NIST en diciembre de 2001, utiliza bloques de 128 bits.
Implementaciones
Los ejemplos de algoritmos de clave simétrica populares incluyen Twofish, Serpent, AES (Rijndael), Camellia, Salsa20, ChaCha20, Blowfish, CAST5, Kuznyechik, RC4, DES, 3DES, Skipjack, Safer e IDEA.
Utilizar como primitivo criptográfico
Los cifrados simétricos se usan comúnmente para lograr otras primitivas criptográficas además del cifrado.
Encriptar un mensaje no garantiza que permanecerá sin cambios mientras esté encriptado. Por lo tanto, a menudo se agrega un código de autenticación de mensaje 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 usar con fines de no repudio, excepto cuando se involucran partes adicionales. Consulte la norma ISO/IEC 13888-2.
Otra aplicación es crear funciones hash a partir de cifrados de bloque. Consulte la función de compresión unidireccional para obtener descripciones de varios de estos métodos.
Construcción de cifrados simétricos
Muchos cifrados de bloques modernos se basan en una construcción propuesta por Horst Feistel. La construcción de Feistel hace posible construir funciones invertibles a partir de otras funciones que no son invertibles.
Seguridad de cifrados simétricos
Históricamente, los cifrados simétricos han sido susceptibles a ataques de texto sin formato conocido, ataques de texto sin formato 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. También es posible aumentar la longitud de la clave o las rondas en el proceso de encriptación para una mejor protección contra ataques. Esto, sin embargo, 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 debe realizar el sistema.
La mayoría de los algoritmos de clave simétrica modernos parecen ser resistentes a la amenaza de la criptografía poscuántica. 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 requerido tradicionalmente para un ataque de fuerza bruta, aunque estas vulnerabilidades pueden compensarse duplicando la longitud de la clave. 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, a una computadora cuántica le llevaría la misma cantidad de tiempo decodificar un cifrado AES de 256 bits que a una computadora convencional decodificar un cifrado AES de 128 bits. Por esta razón, se cree que AES-256 es "resistente cuántica".
Gestión de claves
Establecimiento clave
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 recibiera de alguna manera 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 intercambio de claves Diffie-Hellman o algún otro protocolo de clave pública para llegar de forma segura. al acuerdo sobre una clave secreta nueva y fresca para cada sesión/conversación (secreto directo).
Generación de claves
Cuando se usan con cifrados asimétricos para la transferencia de claves, los generadores de claves pseudoaleatorias casi siempre se usan 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 llevado a rupturas criptoanalíticas en el pasado. Por lo tanto, es fundamental que una implementación utilice una fuente de alta entropía para su inicialización.
Cifrado recíproco
Un cifrado recíproco es un cifrado en el que, al igual que se ingresa el texto sin formato en el sistema criptográfico para obtener el texto cifrado, se podría ingresar el texto cifrado en el mismo lugar del sistema para obtener el texto sin formato. Un cifrado recíproco también se denomina a veces cifrado autorrecíproco.
Prácticamente todas las máquinas de cifrado mecánicas implementan un cifrado recíproco, una involución matemática en cada letra escrita. 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 configurarse (con clave) de la misma manera.
Los ejemplos de cifrados recíprocos incluyen:
- Atbash
- Cifra de Beaufort
- Máquina enigma
- Marie Antoinette y Axel von Fersen se comunican con un cifrado autorecíproco.
- el ciférico polialfabético de Porta es autorecíproco.
- Cifra púrpura
- RC4
- ROT13
- Cifra XOR
- Vatsyayana cipher
La mayoría de los cifrados modernos se pueden clasificar como cifrados de flujo, la mayoría de los cuales usan un combinador de cifrado XOR recíproco, o cifrados de bloque, la mayoría de los cuales usan un cifrado Feistel o un esquema Lai-Massey con una transformación recíproca en cada ronda
Contenido relacionado
Tetera de utah
Blohm+Voss
Oberón (lenguaje de programación)