0Pricing
Cryptology Academy · Lección

ECB frente a CBC: patrones y vectores de inicialización

Demuestre el ataque del pingüino de ECB y por qué se necesita CBC con un IV aleatorio.

ECB frente a CBC: patrones y vectores de inicialización es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cryptology Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cryptology Academy incluye 4 lecciones en total.

Bienvenida

ECB y CBC son dos modos de cifrado por bloques. ECB es famoso por su inseguridad debido a la filtración de patrones. CBC con un IV aleatorio es mucho más seguro. Estudiemos ambos en profundidad.

Modo ECB: Electronic Codebook

ECB cifra cada bloque de forma independiente: Ci = AES(K, Pi). El mismo bloque de texto en claro produce siempre el mismo bloque de texto cifrado. Los bloques de un mismo mensaje o de mensajes distintos son idénticos si el contenido coincide.

El pingüino de ECB

El «pingüino de ECB» es una demostración clásica: cifre un PNG de Tux, el pingüino de Linux, con AES-ECB. El resultado todavía se parece al pingüino: las mismas áreas de color se cifran siguiendo los mismos patrones.

Vulnerabilidad de ECB: repetición de bloques

En el modo ECB, un atacante puede reorganizar los bloques de texto cifrado sin conocer la clave: - Los bloques son independientes - Reordenar los bloques → reordenar el texto en claro descifrado - Duplicar los bloques → duplicar el contenido - Eliminar los bloques → eliminar contenido

Modo CBC: Cipher Block Chaining

CBC aplica XOR a cada bloque de texto en claro con el texto cifrado anterior antes de cifrarlo: C0 = AES(K, P0 XOR IV) Ci = AES(K, Pi XOR C(i-1)) El mismo texto en claro en posiciones distintas produce un texto cifrado diferente.

Vector de inicialización (IV)

El IV es el «C(-1)» del primer bloque. Debe ser: - Aleatorio y único para cada mensaje - No secreto (se transmite junto con el texto cifrado) - Nunca reutilizado con la misma clave Un IV predecible rompe la seguridad de CBC.

Descifrado CBC

Pi = AES_Dec(K, Ci) XOR C(i-1) P0 = AES_Dec(K, C0) XOR IV Nota: para descifrar el bloque i solo se necesitan Ci y C(i-1). Los bloques se pueden descifrar en paralelo, a diferencia del cifrado.

Ataque de inversión de bits en CBC

Invertir el bit i del bloque Ci provoca: (1) un Pi ilegible, (2) una inversión predecible del bit i de P(i+1). Sin autenticación, un atacante puede modificar bits concretos del texto en claro sabiendo dónde se encuentran.

Ataque BEAST contra TLS 1.0 (2011)

BEAST aprovechó el uso de CBC con IV predecibles en TLS 1.0. El último bloque de un registro se utilizaba como IV para el siguiente. Rizzo y Duong demostraron el ataque, lo que impulsó la actualización de los navegadores a TLS 1.1 o posterior.

Por qué CBC requiere autenticación

El cifrado CBC sin un MAC permite ataques de inversión de bits y ataques de oráculo de padding. Combine siempre CBC con HMAC (Encrypt-then-MAC) o cambie a AES-GCM (AEAD integrado).

CBC en Python

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes import os iv = os.urandom(16) key = os.urandom(32) cipher = Cipher(algorithms.AES(key), modes.CBC(iv)) enc = cipher.encryptor() ciphertext = enc.update(padded_plaintext) + enc.finalize()

Comprobación rápida

¿Por qué el modo ECB filtra información sobre la estructura del texto en claro?

Resumen

ECB es peligroso; CBC es mejor, pero necesita autenticación. A continuación estudiaremos el modo CTR, que convierte AES en un cifrado de flujo.

Preguntas frecuentes

¿La lección «ECB frente a CBC: patrones y vectores de inicialización» es gratis?

Sí — el texto completo de «ECB frente a CBC: patrones y vectores de inicialización» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cryptology Academy, actualiza a CoddyKit PRO. El curso de Cryptology Academy incluye 4 lecciones en total.

¿Qué aprenderé en «ECB frente a CBC: patrones y vectores de inicialización»?

Demuestre el ataque del pingüino de ECB y por qué se necesita CBC con un IV aleatorio. Practicas Cryptology Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Cryptology Academy?

No se requiere experiencia previa. Cryptology Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «ECB frente a CBC: patrones y vectores de inicialización»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Cryptology Academy?

Sí. Cada lección de Cryptology Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Fundamentos de los cifradores de bloque y padding
  2. ECB frente a CBC: patrones y vectores de inicialización
  3. Modo CTR y comportamiento de los cifradores de flujo
  4. GCM y cifrado autenticado
← Volver a Cryptology Academy