Algoritmos de cifrado y hash


--- Fecha: vie 11 abr 2025 20:22:29 CEST ---


El cifrado es un procedimiento que utiliza un algoritmo matemático con una clave que transforma un mensaje en otro incomprensible a toda persona que no tenga la clave secreta.

Las claves de cifrado y de descifrado pueden ser iguales (criptografía simétrica), diferentes (criptografía asimétrica) o ambas (Criptografía híbrida).

En criptografía solo es posible romper un algoritmo criptográfico de dos formas. Una es atacando el algoritmo y la otra es probando con un ataque de fuerza bruta, utilizando un ordenador, para probar todas las claves posibles.


El número de bits de cifrado se refiere al tamaño de clave de cifrado. La longitud de la clave determina el número de posibilidades. En el cifrado de 128 bits, multiplica 2 por sí mismo 128 veces (2^128), es decir, tiene más de (34 seguido de 36 ceros) combinaciones (34.000.000.000.000.000.000.000.000.000.000.000.000).

Usando una computadora que realiza mil millones de cálculos por segundo, le tomaría a un hacker más de 1 sextillón de años (10 seguidos de 21 ceros) para descomponer una clave cifrada de 128 bits.


El número de posibilidades para una clave en particular es dos a la potencia n, donde "n" es la longitud de la clave en bits. El cifrado con 2 bits tiene cuatro posibles resultados: 00, 01, 10 y 11, por lo tanto, matemáticamente existen 2^n posibles valores para una clave de n bits. Cada vez que añadimos un bit se dobla el número de posibles claves. Una clave de 6 bits tiene 2x2x2x2x2x2= 64 combinaciones.


Podemos pensar que cuantos más bits mejor, ¿por qué no utilizar siempre claves de 256, 350 o 1024 bits? La respuesta es que cuanto más larga sea la clave más se tarda en decodificar y sobre todo porque el objetivo de la criptografía es proteger información con claves lo más sencillas posibles, pero que sigan siendo seguras.



Cantidad de combinaciones posibles


Por un lado, si se usa una clave numérica (números del 0 al 9) tendríamos 10 posibilidades de 4 dígitos de longitud, que es la extensión por defecto de los teléfonos. Para 4 dígitos, las combinaciones posibles serían 10 mil (10 elevado a 4)


Por otro lado, si tomamos un alfabeto de 26 letras mayúsculas y 26 minúsculas, 10 números y 10 caracteres no convencionales daría 72 diferentes posibilidades para un único carácter.

Eso significa que las combinaciones para un PIN de bloqueo de 4 caracteres serían más de 26 millones de combinaciones en una clave de 4 caracteres contra 10 mil en una clave de 4 dígitos (72 elevado a 4):



Tiempo de procesamiento para atacar con fuerza bruta


Siempre que estemos tratando de ataques de fuerza bruta, debemos tomar en cuenta la cantidad de combinaciones que podemos armar con los símbolos del alfabeto que tenemos. Si el atacante realiza un ataque de fuerza bruta, contando con la capacidad de promedio actual de 4 mil millones de cálculos por segundo, tardaría muy poco en obtener una clave de 4 caracteres.


Bajo ese poder de cómputo, casi cualquier delincuente podría atacar una clave de 26 millones de combinaciones en menos de una centésima de segundo. Si bien el proceso cuesta 2.687 veces más que en la variante numérica, sigue siendo muy fácil para un atacante.


¿Qué longitud es segura?


Si tomamos como referencia una longitud de 10 caracteres con 72 símbolos diferentes para cada uno, la cantidad de combinaciones que se puede formar supera los 3 trillones (72 elevado a 10).


Si calculamos el tiempo que se necesita para atacarlo, tomando el procesamiento mencionado y 31.556.925 segundos, que es la duración de un año, obtendríamos 29,6 años, y dado el caracter exponencial, añadiendo solo un carácter más, (72 elevado a 11), nos vamos a 2135 años.


Si bien desde el punto de vista de algunos criptógrafos se considera que una clave segura debería ser aquella que necesite una vez (o más) el tiempo transcurrido desde la creación del universo (14 mil millones de años). Para tener una idea, con una clave de 15 caracteres y el computo tomado, se necesitarían 4 veces ese tiempo para quebrarla.



ALGORITMOS


Existen dos tipos de algoritmos: simétricos y asimétricos. Los primeros solo constan de una clave para cifrar y descifrar el contenido. La ventaja es su rapidez y sencillez y eso permite una fácil implementación a nivel hardware.

El cifrado asimétrico emplea dos llaves para ejercer las funciones de cifrado y descifrado de la información. La llave publica es utiliza para cifrar la información y llave privada para descifrar la información. La mayor ventaja de la criptografía asimétrica es que la distribución

de claves es más fácil y segura en un entorno inseguro ya que la clave que se distribuye es la pública, manteniéndose la privada para el uso exclusivo del propietario. La desventaja es que para un mismo nivel de seguridad que un sistema simétrico se necesitan miles de bits, por lo que la hace muy lenta y eso puede no ser apto en según que condiciones.


NOTA: Los actuales algoritmos simétricos utilizan el método de Logaritmo Discreto (exponencial modular), que se está quedando obsoleto debido al avance computacional. En su lugar, la criptografía de curva elíptica podría permitir claves de menor longitud para una seguridad equivalente, pero aun está en fase de desarrollo.


Cifrado simétrico.



   Longitud de clave: 52 bits.
   Tamaño de bloque: No


   Longitud de clave: 192 bits (eficaces 112 bits).
   Tamaño de bloque: No


   Longitud de clave: Variable entre 64 y 128 bits.
   Tamaño de bloque: No


   Longitud de clave: Cualquier múltiplo de 64 bits.
   Tamaño de bloque: No


   Longitud de clave: 128 bits.
   Tamaño de bloque: 64 bits.


   Longitud de clave: 256 bits.
   Tamaño de bloque: 64 bits.


   Longitud de clave: 128, 192 y 256 bits.
   Tamaño de bloque: 128 bits.

Además, AES tiene dos modos de cifrado, AES-GCM y AES-CTR.

GCM (Galois/Counter Mode) funciona igual que el modo CRT, pero con un código de autenticación de mensajes incluido. De esta manera, se logra que el modo de cifrado CRT sea resistente a ataques de «copiar y pegar» y cambios de bits.



   Longitud de clave: Variable múltiplo de 4 bytes: 128, 192 y 256 bits.
   Tamaño de bloque: Variable múltiplo de 4 bytes: 128, 192 y 256 bits.


   Longitud de clave: Variable, 128, 192 y 256 bits.
   Tamaño de bloque: 128 bits.


   Longitud de clave: Variable: de 32 a 448 bits.
   Tamaño de bloque: 64 bits.


   Longitud de clave: Variable, hasta 256 bits.
   Tamaño de bloque: 128 bits.

Cifrado asimétrico.



   Longitud de clave: Sin límite. El límite lo marca el protocolo usado.
   Tamaño de bloque: No


   Longitud de clave: Variable: 128, 256, 1024, 2048 y 4096 bits.
   Tamaño de bloque: No


   Longitud de clave: Entre 1024 y 3072 bits.
   Tamaño de bloque: No


Creado en 1976 que permite crear una clave secreta entre dos equipos informáticos que nunca han tenido contacto previo, a través de un canal inseguro, y mediante el envío de solo dos mensajes. El algoritmo crea una clave simétrica que cifrará la comunicación entre ambos equipos, por lo que la clave solo podrá ser conocida por los dos equipos que realizan la comunicación, y no podrá ser descubierta por un atacante o por un tercero que quiera conocer dicha comunicación. Su  principal vulnerabilidad es ante los ataques Man In the Middle. El algoritmo se basa en las propiedades de la exponenciación modular. Para garantizar la seguridad, se recomienda que el número primo de al menos 2048 bits. Los grupos Diffie-Hellman más comunes son:


 • Grupo DH 1 de 768 bits
 • Grupo DH 2 de 1024 bits
 • Grupo DH 5 de 1536 bits
 • Grupo DH 14 de 2048-bit
 • Grupo DH 15  de 3072-bit
 • Grupo DH 19  de 256-bit de curva elíptica
 • Grupo DH 20  de 384 bits de curva elíptica


Mientras que DH se basa en la exponenciación modular con números primos grandes, ECDH aprovecha la elegancia matemática de las curvas elípticas para lograr una seguridad similar con tamaños de clave más pequeños y un cálculo más rápido.



CRIPTOGRAFÍA POST-CUÁNTICA


Son algoritmos híbridos diseñados por IBM en 2023 para soportar ataques basados en la computación cuántica.



La principal diferencia radica en cómo se generan los valores públicos ⍴ y la semilla secreta σ. En el nuevo enfoque, estos valores se obtienen con un separador de dominios. Este separador usa un parámetro 𝐾. Este parámetro es específico para cada variante de ML-KEM. Este parámetro actúa como un identificador único en el proceso. Ahora, los valores ⍴ y σ se generan mediante la función hash 𝐺, invocando 𝐺(𝑟𝑎𝑛𝑑𝑜𝑚_𝑠𝑒𝑒𝑑∣∣𝐾) en lugar del método anterior 𝐺(𝑟𝑎𝑛𝑑𝑜𝑚_𝑠𝑒𝑒𝑑), asegurando la integración de 𝐾 en la generación.



Se ha introducido la variante HashSLH-DSA en la especificación, manteniendo la función de generación de claves, pero añadiendo nuevas funciones de firma y verificación: hash_slh_sign (Algoritmo 23) y hash_slh_verify (Algoritmo 25). No se mencionan diferencias en los identificadores de objetos (OID) entre SLH-DSA y HashSLH-DSA. Además, se incorpora un parámetro adicional, la cadena de contexto, que se antepone al mensaje y su longitud antes de firmarlo.



Incorpora una variante de hash-then-sign llamada HashML-DSA. Aunque la generación de claves permanece sin cambios, se han añadido nuevas funciones de firma y verificación: HashML-DSA.Sign (Algoritmo 4) y HashML-DSA.Verify (Algoritmo 5). Además, se recomienda utilizar identificadores de objetos (OIDs) distintos para diferenciar ML-DSA de HashML-DSA.

Se añadió un nuevo parámetro llamado "cadena de contexto" a las funciones de firma y verificación. Este parámetro se coloca antes del mensaje. Además, se indica su longitud antes de firmarlo. En la verificación de firmas, la función HintBitUnpack (Algoritmo 21, antes Algoritmo 15 en el IPD) ahora incluye una verificación para detectar indicaciones malformadas, reintroducida para prevenir desbordamientos de búfer.

Se modifican las reglas para generar el desafío del verificador, usando el hash completo en lugar de solo los primeros 256 bits para la función SampleInBall.



HASHES


Un hash o función de resumen son algoritmos que crean una salida alfanumérica a partir de un dato (texto, contraseña o archivo). A partir de los datos de la entrada crea una cadena que solo puede volverse a crear con esos mismos datos.


Se utilizan para asegurarse de que los datos originales no han sido modificados en una transmisión, hacer ilegible una contraseña o firmar digitalmente un documento.




   Longitud de clave: 128 bits.


   Longitud de clave: 192 bits.


   Longitud de clave: 256 bits.


  • SHA0- Longitud de clave: 128 bits.
  • SHA1- Longitud de clave: 160 bits.
  • SHA2- Longitud de clave: Variable, 224, 256, 384 y 512 bits.


   Longitud de clave: 1024 bits, solo eficaces 512 bits.


   Longitud de clave: 512 bits.


   Longitud de clave: 128, 256 y 320 bits.






Consideraciones finales




Tag: #cifrado #algortimo



◄ Listado principal

◄◄ Inicio



/gemlog/