Tabla de Contenidos

Block Ciphers

Es un cifrado determinístico, utilizando un algoritmo de encriptado y otro de desencriptado. El algoritmo recibe una entrada que es una instancia de cierto número de bits y la salida tiene exactamente el mismo tamaño, pero cifrado, en resumidas cuentas: el input y el output del algoritmo deben ser del mismo tamaño.

Computacionalmente indistinguible

El cifrado de bloques no tiene memoria. Un cifrado de bloque se puede tomar como una caja negra que toma un valor y lo encripta o lo desencripta. Este sistema es seguro si la función de encriptado es computacionalmente indistinguible de cualquier otra operación computacional.

El adversario tiene que determinar si el challenger está utilizando un algoritmo matemático o si está usando una funcionalidad cualquiera para encriptar un texto. El adversario tiene que intuir si la salida está encriptada o si es solo ruido. Si el adversario no es capaz de adivinar si una salida está encriptada o no, entonces, nuestro sistema es seguro.

Implicaciones

Permutaciones aleatorias

Cuando el challenger elige una permutación aleatoria, la toma de un espacio enorme. En la práctica las permitaciones aleatorias pueden ser implementadas fácilmente en Lazy Mode.

Block ciphers para encriptado directo

Supongamos que tenemos un block cipher seguro. Queremos encriptar una cadena de bits muy larga, dividimos dicha cadena en bloques del mismo tamaño que el block cipher, de forma que vamos cifrando la cadena en secuencias de bloques (n0, n1,….nn). Cada bloque es encriptado con la misma clave secreta. Usar block cipher de esta manera es un proceso sin memoria ya que a pesar de que se usa la misma clave, cada bloque cifrado es diferente. Esto es conocido como Electronic CodeBook mode (ECB). En resumidas cuentas consiste en dividir una cadena en bloques e irlos encriptando uno a uno. A pesar de su seguridad, no es semánticamente seguro ya que un atacante puede distinguir unos mensajes de otros.

Data Encryption Standard (DES) & Advanced Encryption Standard (AES)

DES es un block cipher que usa claves y bloques con un input de 64 bits y una salida de 64 bits y una clave de cifrado de 56 bits. Lo malo es que en la actualidad ya no es lo suficientemente seguro, siendo retirado en 2021. Existe una variante de DES llamada 3DES que utiliza una clave de 168 Bits. AES utiliza claves de 128 o 256 bits, mucho más grandes que las de DES. Si bien no hay pruebas científicas de que las encriptaciones anidadas sean más seguras, pero en el sector informático parecer ser que si es más seguro, aunque no hay pruebas contundentes de esto.

AES tiene un bloque de input y 10 rondas diferentes que realizan cada una una clave y transforma cada una la entrada que reciben. Este es un cifrado iterado y destaca por su velocidad en hardware. Generalmente el AES se aplica en hardware y no en software. El input se organiza como un array en una matriz.

Rondas

En cada ronda se realizan las siguientes operaciones:

  1. La primera operación en cada ronda es la de mover filas varias posiciones.
  2. El segundo paso en cada ronda es la de mezclar las columnas mediente el uso de multiplicaciones matriciales con una operación aritmética específica
  3. La tercera operación divide la clave en múltiples piezas y aplica la clave para cifrarlas.

Seguridad de DES y AES

Ataques a block ciphers

Funciones pseudo-aleatorias (PRFs)

Similar a un block cipher, también funciona de forma determinística, pero también permite que la salida sea de un tamaño diferente que el de la entrada. cuando se hace una función como esta se está definiendo una función matemática: $F: K x X -> Y$

Todos los block cipher son funciones pseudoaleatorias, pero las funciones pseudoaleatorias son block ciphers.

Los block cipher son seguros cuando no pueden ser distinguidas de una función cualquiera.

Block Ciphers y PRFs