Skip to content

Algoritmos simétricos

Toni edited this page May 27, 2020 · 10 revisions

En esquemas de clave simétrica, las claves de cifrado y descifrado son las mismas. Las partes comunicantes deben tener la misma clave para lograr una comunicación segura. Un ejemplo de una clave simétrica es la máquina Enigma del ejército alemán. Había configuraciones clave para cada día. Cuando los Aliados descubrieron cómo funcionaba la máquina, pudieron descifrar la información codificada dentro de los mensajes tan pronto como pudieron descubrir la clave de cifrado para las transmisiones de un día determinado.

En cryptoKit se implementan algunos algoritmos de clave simétrica

  • DES (Data Encryption Standard)

DES es un algoritmo de cifrado por bloques, donde se toma un texto en claro de longitud fija de bits y se transforma mediante una serie de operaciones en otro texto cifrado de la misma longitud. El tamaño del bloque de DES es de 64 bits, y la longitud de clave también es de 64 bits, aunque en realidad solo son 56 bits los que pertenecen a la clave ya que los otros 8 bits son de comprobación de paridad, y se descartan. Actualmente este algoritmo está completamente roto, y no se recomienda su uso.

  • AES (Advanced Encryption Standard)

Este algoritmo es el más conocido entre los usuarios de routers, ya que WPA opera con AES como método de cifrado. Este cifrado puede implementar tanto en sistemas hardware como en software. El sistema criptográfico AES opera con bloques de tamaño fijo de 128 bits y claves de longitudes variable, hay AES de 128bits, de 192 bits y de 256 bits.

A diferencia de la mayoría de cifradores de bloques, AES tiene una descripción matemática muy ordenada. Recordemos que AES es usado en los cifrados wireless de los routers de los hogares como método de cifrado (no clave) ya que en los routers podemos usar una clave estática o una dinámica mediante un servidor Radius. AES también es usado por OpenSSL y por supuesto en OpenVPN (ya que usa las librerías OpenSSL) e IPSec.

  • BLOWFISH(Advanced Encryption Standard)

Blowfish usa bloques de 64 bits y claves que van desde los 32 bits hasta 448 bits. Es un codificador de 16 rondas Feistel.

Modos de cifrado de los algoritmos simétricos

La forma en que se gestionan los bloques de mensaje, se denomina «modo de cifrado». En cryptoKit se usan:

  • ECB (electronic codebook): Es el método más simple de modo de cifrado, en el cual el mensaje es dividido en bloques, cada uno de los cuales es cifrado de manera separada. La desventaja de este método es que bloques idénticos de mensaje sin cifrar producirán idénticos textos cifrados.
  • CBC (Cipher-block chaining): a cada bloque de texto plano se le aplica la operación XOR con el bloque cifrado anterior antes de ser cifrado. De esta forma, cada bloque de texto cifrado depende de todo el texto en claro procesado hasta este punto. Como no se dispone de un texto cifrado con el que combinar el primer bloque, se usa un vector de inicialización IV (número aleatorio que puede ser públicamente conocido). La desventaja es que el cifrado es de forma secuencial y por tanto no puede ser paralelizado.
  • GCM (Galois/Counter Mode): un esquema AEAD basado en nonce que combina el cifrado en modo CTR y una función hash universal basada en GF (2128).

Fuentes

https://es.wikipedia.org/wiki/Cifrado_(criptograf%C3%ADa) https://www.redeszone.net/2010/11/04/criptografia-algoritmos-de-cifrado-de-clave-simetrica/ https://es.wikipedia.org/wiki/Modos_de_operaci%C3%B3n_de_una_unidad_de_cifrado_por_bloques https://www.it-swarm.dev/es/encryption/como-elegir-un-modo-de-cifrado-aes-cbc-ecb-ctr-ocb-cfb/967447583/ https://es.wikipedia.org/wiki/Blowfish