Criptografía y Funciones Hash: Tipos, Mecanismos (SHA-2, SHA-3, RIPEMD-160) y Aplicaciones

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 4,23 KB

Funciones Hash

A) Funciones Hash sin Clave (Unkeyed): MDCs y MICs

Las funciones hash sin clave se conocen como MDCs (Modification Detection Codes) o MICs (Message Integrity Codes). Proveen un resumen o imagen del mensaje para verificar su integridad.

1. Basados en Cifradores de Bloques

SHA (Secure Hash Algorithm)
SHA-2

SHA-2 es una familia de dos funciones hash similares, con diferentes tamaños de bloque, conocidas como SHA-256 y SHA-512. Se diferencian en el tamaño de la palabra:

  • SHA-256: Utiliza palabras de 32 bits.
  • SHA-512: Utiliza palabras de 64 bits.

También existen versiones truncadas de cada estándar (diseñadas por la NSA): SHA-224, SHA-384, SHA-512/224 y SHA-512/256.

Uso y Componentes de SHA-2

Aplicaciones comunes: TLS, SSL, PGP, SSH, S/MIME, IPsec e incluso en Bitcoin.

Funciones internas: Cb(e,f,g), Ma(a,b,c), Σ0(a), Σ1(e).

SHA-3 (Keccak)

SHA-3 es una función hash anteriormente llamada Keccak, elegida en 2012 después de una competencia pública entre diseñadores que no son de la NSA. Es compatible con las mismas longitudes de hash que SHA-2, pero su estructura interna difiere significativamente del resto de la familia SHA.

Mecanismo de SHA-3
  • Fase de Absorción: Los bloques de mensajes se combinan mediante XOR en un subconjunto del estado, que luego se transforma utilizando una función de permutación f.
  • Fase de Compresión: Los bloques de salida se leen desde el mismo subconjunto del estado, alternados con la función de transformación de estado f.
RIPEMD-160

La función de compresión de RIPEMD-160 consiste en dos flujos paralelos. Las dos secuencias están diseñadas de manera más diferenciada que las de RIPEMD original. En cada secuencia, el bloque de mensajes expandido se utiliza para actualizar las variables de estado. Después de los cálculos, los resultados de ambos flujos se combinan con la entrada de encadenamiento.

La función de compresión se compone de un subbloque variable por el que el bloque de mensaje se pasa 16 veces. Hay 5 variaciones diferentes para un total de 80 rondas.

2. Generadores de Números Pseudoaleatorios (PRNG)

PRNG (Pseudo Random Number Generator)

Algoritmo que utiliza fórmulas matemáticas para producir secuencias de números aleatorios. Estos números son deterministas y eficientes.

Algoritmos Generadores Comunes:
  1. Algoritmo Generador Lineal Congruente.
  2. Algoritmo Generador Blum Blum Shub.
Características del PRNG:
  • Eficiente: Puede producir muchos números en poco tiempo.
  • Determinista: El determinismo es útil si se necesita reproducir la misma secuencia de números en una etapa posterior.
  • Periódico: La secuencia eventualmente se repetirá.
Aplicaciones Criptográficas:

Muchos aspectos de la criptografía requieren números aleatorios, por ejemplo:

  • Generación de claves.
  • Nonces.
  • Sales en ciertos esquemas de firmas, incluyendo ECDSA y RSASSA-PSS.
  • Libretas de un solo uso.

3. Funciones de Control de Redundancia Cíclica (CRC)

CRC (Cyclic Redundancy Check)

Las funciones CRC se implementan ampliamente en las comunicaciones digitales y el almacenamiento para detectar daños accidentales en los datos.

Consideraciones sobre su uso como Hash

La implementación de CRC para propósitos de hash es a menudo subóptima debido a sus orígenes en los módulos de verificación de errores de bits. Las funciones CRC se diseñaron originalmente para verificar errores de bits en las transmisiones de datos de longitud variable y no para calcular un hash de datos de longitud fija.

Mecanismo y Aplicación

El CRC en sí mismo es esencialmente una división polinomial gigante que puede implementarse eficazmente en software y hardware en tiempo O(n). CRC se utiliza, por ejemplo, en Ethernet.

Entradas relacionadas: