Criptoanálisis es el estudio de métodos para obtener el significado de información cifrada sin acceso a la clave secreta, evaluando la seguridad de sistemas criptográficos.

¿Qué es Criptoanálisis?

El criptoanálisis es la ciencia de romper códigos y cifrados, analizando vulnerabilidades en algoritmos criptográficos para mejorar su seguridad o comprometer sistemas.

Tipos de Ataques

Por Información Disponible

  • Ciphertext Only: Solo texto cifrado
  • Known Plaintext: Texto plano conocido
  • Chosen Plaintext: Texto plano elegido
  • Chosen Ciphertext: Texto cifrado elegido

Por Objetivo

  • Key Recovery: Recuperación de clave
  • Plaintext Recovery: Recuperación de texto plano
  • Distinguishing: Distinguir cifrado de aleatorio
  • Forgery: Falsificación de firmas

Por Método

  • Brute Force: Fuerza bruta
  • Dictionary Attack: Ataque de diccionario
  • Frequency Analysis: Análisis de frecuencias
  • Differential Cryptanalysis: Criptoanálisis diferencial

Ataques Clásicos

Fuerza Bruta

  • Descripción: Probar todas las claves posibles
  • Complejidad: O(2^n) donde n es la longitud de clave
  • Contramedidas: Claves largas, rate limiting
  • Ejemplo: Ataque a DES (2^56 claves)

Análisis de Frecuencias

  • Descripción: Analizar patrones en texto cifrado
  • Aplicación: Cifrados de sustitución simple
  • Método: Comparar frecuencias de letras
  • Contramedidas: Cifrados complejos, padding

Ataque de Diccionario

  • Descripción: Probar palabras comunes como claves
  • Aplicación: Contraseñas débiles
  • Método: Lista de palabras predefinidas
  • Contramedidas: Contraseñas complejas, salt

Ataques Modernos

Criptoanálisis Diferencial

  • Descripción: Analizar diferencias en pares de texto plano
  • Aplicación: Cifrados de bloque (DES, AES)
  • Método: Buscar patrones en diferencias
  • Complejidad: Menor que fuerza bruta

Criptoanálisis Lineal

  • Descripción: Buscar relaciones lineales entre bits
  • Aplicación: Cifrados de bloque
  • Método: Aproximaciones lineales
  • Complejidad: Ataque conocido-plaintext

Ataques de Canal Lateral

  • Timing Attacks: Ataques de tiempo
  • Power Analysis: Análisis de consumo
  • Electromagnetic: Análisis electromagnético
  • Acoustic: Análisis acústico

Ataques Específicos

Ataques a RSA

  • Factorización: Factorizar módulo n
  • Timing Attack: Medir tiempo de operaciones
  • Power Analysis: Analizar consumo energético
  • Fault Injection: Inyección de fallos

Ataques a AES

  • Differential Cryptanalysis: Criptoanálisis diferencial
  • Linear Cryptanalysis: Criptoanálisis lineal
  • Biclique Attack: Ataque biclique
  • Related-Key Attack: Ataque de claves relacionadas

Ataques a ECC

  • Discrete Logarithm: Problema del logaritmo discreto
  • Side-Channel: Ataques de canal lateral
  • Fault Injection: Inyección de fallos
  • Invalid Curve: Curvas inválidas

Herramientas de Criptoanálisis

Software General

  • Cryptool: Herramienta educativa
  • OpenSSL: Librería criptográfica
  • GnuPG: Implementación OpenPGP
  • John the Ripper: Cracker de contraseñas

Herramientas Especializadas

  • Hashcat: Cracker de hashes
  • Aircrack-ng: Cracker de WiFi
  • Wireshark: Análisis de tráfico
  • Metasploit: Framework de explotación

Herramientas de Investigación

  • SageMath: Software matemático
  • Magma: Sistema de álgebra computacional
  • PARI/GP: Sistema de álgebra computacional
  • GAP: Sistema de álgebra computacional

Implementación de Ataques

Ataque de Fuerza Bruta

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
import itertools
import hashlib

def brute_force_attack(target_hash, charset, max_length):
    """Ataque de fuerza bruta a hash"""
    for length in range(1, max_length + 1):
        for attempt in itertools.product(charset, repeat=length):
            password = ''.join(attempt)
            if hashlib.sha256(password.encode()).hexdigest() == target_hash:
                return password
    return None

# Ejemplo de uso
target = "5d41402abc4b2a76b9719d911017c592"  # MD5 de "hello"
charset = "abcdefghijklmnopqrstuvwxyz"
result = brute_force_attack(target, charset, 5)
print(f"Password found: {result}")

Análisis de Frecuencias

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from collections import Counter
import string

def frequency_analysis(ciphertext):
    """Análisis de frecuencias en texto cifrado"""
    # Contar frecuencias
    freq = Counter(ciphertext.lower())
    
    # Frecuencias del inglés
    english_freq = {
        'e': 12.7, 't': 9.1, 'a': 8.2, 'o': 7.5, 'i': 7.0,
        'n': 6.7, 's': 6.3, 'h': 6.1, 'r': 6.0, 'd': 4.3,
        'l': 4.0, 'c': 2.8, 'u': 2.8, 'm': 2.4, 'w': 2.4,
        'f': 2.2, 'g': 2.0, 'y': 2.0, 'p': 1.9, 'b': 1.3,
        'v': 1.0, 'k': 0.8, 'j': 0.15, 'x': 0.15, 'q': 0.10,
        'z': 0.07
    }
    
    # Calcular correlación
    correlation = 0
    for char in string.ascii_lowercase:
        if char in freq and char in english_freq:
            correlation += freq[char] * english_freq[char]
    
    return correlation

# Ejemplo de uso
ciphertext = "hello world"
correlation = frequency_analysis(ciphertext)
print(f"Correlation: {correlation}")

Ataque de Timing

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import time
import statistics

def timing_attack(secret, guess):
    """Ataque de timing simple"""
    start_time = time.time()
    
    # Simular comparación que toma más tiempo con más coincidencias
    for i in range(min(len(secret), len(guess))):
        if secret[i] != guess[i]:
            break
        time.sleep(0.001)  # Simular delay
    
    end_time = time.time()
    return end_time - start_time

def find_secret(secret, charset, length):
    """Encontrar secreto usando timing attack"""
    result = ""
    
    for pos in range(length):
        times = {}
        
        for char in charset:
            guess = result + char + "0" * (length - pos - 1)
            times[char] = timing_attack(secret, guess)
        
        # El carácter con mayor tiempo es probablemente correcto
        best_char = max(times, key=times.get)
        result += best_char
    
    return result

Contramedidas

Diseño de Algoritmos

  • Avalanche Effect: Pequeño cambio = gran cambio
  • Non-linearity: Operaciones no lineales
  • Confusion: Confusión en el diseño
  • Diffusion: Difusión de información

Implementación Segura

  • Constant Time: Tiempo constante
  • Random Padding: Padding aleatorio
  • Key Derivation: Derivación de claves
  • Secure Random: Números aleatorios seguros

Protección contra Ataques

  • Rate Limiting: Limitación de velocidad
  • Lockout: Bloqueo después de intentos
  • Monitoring: Monitoreo de ataques
  • Intrusion Detection: Detección de intrusiones

Aplicaciones Legítimas

Evaluación de Seguridad

  • Penetration Testing: Pruebas de penetración
  • Vulnerability Assessment: Evaluación de vulnerabilidades
  • Red Team Exercises: Ejercicios de red team
  • Security Audits: Auditorías de seguridad

Investigación Académica

  • Algorithm Analysis: Análisis de algoritmos
  • Security Research: Investigación de seguridad
  • Cryptographic Protocols: Protocolos criptográficos
  • New Attack Methods: Nuevos métodos de ataque

Desarrollo de Defensas

  • Security Hardening: Endurecimiento de seguridad
  • Attack Mitigation: Mitigación de ataques
  • Security Training: Entrenamiento en seguridad
  • Best Practices: Mejores prácticas

Aspectos Legales y Éticos

Consideraciones Legales

  • Authorization: Autorización para pruebas
  • Scope: Alcance de las pruebas
  • Documentation: Documentación de hallazgos
  • Responsible Disclosure: Divulgación responsable

Ética Profesional

  • White Hat: Hacking ético
  • Responsible Disclosure: Divulgación responsable
  • Privacy Protection: Protección de privacidad
  • Harm Prevention: Prevención de daños

Conceptos Relacionados

  • AES - Algoritmo objetivo de criptoanálisis
  • RSA - Algoritmo objetivo de criptoanálisis
  • ECC - Algoritmo objetivo de criptoanálisis
  • Funciones Hash - Algoritmos objetivo de criptoanálisis
  • HSM - Dispositivo que protege contra criptoanálisis
  • CISO - Rol que supervisa criptoanálisis
  • Ciberseguridad General - Disciplina que incluye criptoanálisis
  • Brechas de seguridad - Resultado de criptoanálisis exitoso
  • Vectores de ataque - Criptoanálisis como vector
  • Incident Response - Proceso que incluye criptoanálisis
  • SIEM - Sistema que detecta criptoanálisis
  • SOAR - Automatización que responde a criptoanálisis
  • EDR - Herramienta que protege contra criptoanálisis
  • Firewall - Dispositivo que puede detectar criptoanálisis
  • VPN - Conexión que puede ser objetivo de criptoanálisis
  • Dashboards - Visualización de métricas de criptoanálisis
  • Registros - Logs de intentos de criptoanálisis

Referencias