Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Características y uso
• Encripción en bloques
• Encripción en flujo
BE BE BE BE
BD BD BD BD
Pseudocógio ECB
main ( )
{
fdin = open(texto_claro, “r”);
fdout = creat(texto_encriptado, “w”);
while (not eof (fdin)) {
read(fdin, buffer, sizeof(buffer));
res = bloque_encripcion(buffer);
write(fdout, res, sizeof(buffer));
}
close(fdin);
close(fdout);
}
Características ECB
“FIVE”
FIVE “_by_
by ” “FIVE”
FIVE END.
BE BE BE BE
B0 B1 B2 B3 B4 B5
Bloque a modificar: B5
B0 B1 B2 B3 B4 B5
TC TC TC TC
VI
BE BC
BE BC
BE BC
BE
TC TC TC TC
VI
BD BC
BD BC
BD BC
BD
Pseudocógio CBC
main ( )
{
res = vector_inicializacion;
vector inicializacion;
fdin = open(texto_claro, “r”);
fdout = creat(texto_encriptado, “w”);
while (not eof (fdin)) {
read(fdin, buffer, sizeof(buffer));
buffer = buffer xor res;
q _encripcion(buffer);
res = bloque p ( );
write(fdout, res, sizeof(buffer));
}
close(fdin);
close(fdout);
}
Lámina 16 Roberto Gómez C.
VI
BE BC
BE BC
BE BC
BE
Similar plaintext
blocks produce
similar ciphertext
blocks (not good!)
Ci = E ( K , Pi ⊕ Ci − 1) para i = 1,2,..., k
Contador para VI
• Usar VI = 1 para el primer mensaje, VI = 2 para el
segundo mensaje, etc.
• No es buena idea
– mensajes en vida real empiezan de forma parecida
• Si los primeros bloques del mensaje tienen diferencias
simples
– el contador “anulará” las diferencias del XOR y generará
bloques del criptograma parecidos
• Ejemplo
– valores 0 y 1 difieren en un bit
– si bloque inicial de los dos primeros mensajes difieren en un
bit, los bloques de los criptogramas también serán idénticos
• Permite atacante obtener conclusiones
Lámina 22 Roberto Gómez C.
VI aleatorio
VI aleatorio
• Dos desventajas
– algoritmo encripción debe tener acceso a una fuente
de aleatoriedad
– el criptograma es un bloque más grande que el texto
plano, para mensajes cortos esto resulta en una
expansión significante del mensaje que no es
deseable.
nonce
P1 P2 P3 P4
VI nonce
cripto-
BE BE BC
BE BC
BE BC
BE grama
a enviar
C1 C2 C3 Cn
VI
Envío del
Generación Encripción del mensaje mensaje
del Vector de
Inicialización
Lámina 28 Roberto Gómez C.
Padding
Ejemplos padding
5 5 5 5 5
número de
4 4 4 4 bytes
añadidos
8 8 8 8 8 8 8 8
Ejemplo padding
0 0 0 0 5
número de
0 0 0 4 bytes
añadidos
0 0 0 0 0 0 0 8
Bytes añadidos
¿Y después de decriptar?
Texto
plano
Bloque
encripción
llave
texto encriptado
Lámina 36 Roberto Gómez C.
#include <stdio.h>
#include <string.h> if (argc > 3) {
if ((fdinput = fopen(argv[2], "rb")) != NULL) {
int main (int argc, char *argv[]) if ((fdout = fopen(argv[3], "wb")) != NULL) {
{ while (( ct = fread(ip, 1, 8, fdinput)) != 0) {
FILE *fdinput, *fdout; cp1 = argv[1];
int ct; cp2 = ip;
char ip[8]; while (*cp1 && cp1 < argv[1]+8)
*cp2++ ^= *cp1++;
char *cp1, *cp2; fwrite(ip, 1, ct, fdout);
}
fclose(fdout);
}
fclose(fdinput);
}
}
return(0);
}
Izquierdo Derecho
Función
rara
Repitiendo
Izquierdo Derecho
rara
rara
rara
rara
Pseudocódigo de Feistel
DataIn = Left,
Left Right
• Transformación inicial
• Una
U ffunción
ió criptográficamente
i áfi débil iiterada
d r
veces
• Transformación final
• Algoritmo de expansión de llave
Transformación inicial
Iteraciones intermedias
Transformación final
Expansión de la llave
Características de DES
Normas y descripciones
• Como FIPS(Fed
FIPS(Fed. Info.
Info Processing Stands.)
Stands )
– Publicadas por el NTIS (Nat. Tech. Infor. Service)
– FIPS 46-1, FIPS PUB 74, FIPS PUB 81,
– FIPS PUB 113
• Las normas ISO
– ISO 8372 (equivalente a ANSI X3.92-1981)
– ISO 9797, ISO 9798 e ISO 10118
Texto
64 bits
plano
Bloque
Encripción
llave
56 bits
texto encriptado
Lámina 52 64 bits Roberto Gómez C.
Operación de DES
K1
Iteración 1 Sel Permutación 2 Rotación Izq
K2
Iteración 2 Sel Permutación 2 Rotación Izq
K16
Iteración 16 Sel Permutación 2 Rotación Izq
swap 32 bits
Permutación inicial
inversa
...
Lámina 55 Texto cifrado 64 bits Roberto Gómez C.
Permutación inicial
La permutación
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
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7
La última permutación
I
Izquierdo
i d D
Derecho
h función
rara ?
rara
substituciones
6/4 bits, en
base a cajas S
permutación
de 32 bits
Caja S
32
Permutación (P)
32
+
Li Ri Ci Di
Lámina 61 Roberto Gómez C.
S1 S2 S3 S4 S5 S6 S7 S8
P
Permutación
1 2 3 4 5 6 7 8
32 bits iniciales 9 10 11 12 13 14 15 16
de entrada: 17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
Se expanden a 48 bits
Izquierda 32 1 2 3 4 5 4 5 6 7 8 9
Centro izda. 8 9 10 11 12 13 12 13 14 15 16 17
Centro dcha. 16 17 18 19 20 21 20 21 22 23 24 25
Derecha 24 25 26 27 28 29 28 29 30 31 32 1
tabla de expansión bits originales bits originales
Lámina 63 Roberto Gómez C.
Bloque
expandido Llave de
resultado iteración
del paso 1
Detalle de la caja S
dos primeros bits son usados para
definir las transformaciones y
después se eliminan
e0 e1 e3 e4 e5 e2
CAJA S
s1 s2 s3 s4
Lámina 66 Roberto Gómez C.
Ejemplos cajas S
S0
Bit Bits 2, 3, 4, and 5 form:
1 6 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
1 0 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
1 1 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
S1
Bit Bits 8, 9, 10, and 11 form:
7 12 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
0 1 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
1 0 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
1 1 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
entrada de 4 bits
decodificador de 4 a 16
P
e
r
m
u
t
a
c
i
ó
n
codificador de 16 a 4
salida de 4 bits
Lámina 68 Roberto Gómez C.
La última permutación
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
valores iniciales
16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10
2 8 24 14 32 27 3 9 19 13 30 6 22 11 4 25
tabla de permutación
Expansión de llaves
No. vuelta 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
No. bits 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
Lámina 71 Roberto Gómez C.
14 17 11 24 1 5 3 28 15 6 21 10
23 19 12 4 26 8 16 7 27 20 13 2
41 52 31 37 47 55 30 40 51 45 33 48
44 49 39 56 34 53 46 42 50 36 29 32
Lámina 72 Roberto Gómez C.
El proceso de decriptado
Encripción/decripción en DES
Entrada Salida
-1
(texto plano) (texto plano) Permutación inicial inversa (IP )
Permutación inicial (IP)
d
L0 K1 R0 Rd16 = L0 L 16 = R0
+ f
R1 K2 L1 Ld16 = R0 Rd 16 = L0
f +
d
f + Rd15 = L1 L 15 = R1
L2 R2 K1
+ f
L14 K15 R14 Ld14 = R2 Rd14 = L2
K2
+ f
R15 K16 L15
d
L = R14
2 Rd2 = L14
f +
d
f + Rd1 = L15 L 1 = R15
L16 R16 K15
+ f
d
R16 L16 Ld0 = R16 R 0 = L16
-1
Permutación inicial inversa (IP ) Salida K16
Entrada
(texto cifrado) Permutación inicial (IP)
Lámina 74 (texto cifrado) Roberto Gómez C.
Un ejemplo de funcionamiento
Mini DES
¿Qué es MiniDES?
rara ?
crosswire
+ llave Ki
+
+ Caja S
Lámina 78
I(i) D(i) Roberto Gómez C.
D3 D4
D3 D1 D4 D2
D4 D2
I D Roberto Gómez C.
Lámina 81
Ejemplo (caracteristicas)
Propiedades DES
Propiedades DES
• Llaves débiles
– existen cuatro llaves débiles y 28 llaves semidébiles
– cuando se elige una llave al azar, es preciso asegurarse de
que no se ha producido una de estas llaves
El efecto avalancha
• Llave débil
– son
so aque
aquellas
as llaves
aves K que generan
ge e a unu conjunto
co ju to de dieciséis
d ec sé s
subllaves Ki iguales entre si que verifican:
• EK(EK(M)) = M
– es decir encriptando un mensaje dos veces con la misma
llave se obtiene el mensaje original
– el procedimiento de encripción, con esta llave, es una
involución
– DES cuenta con 4 llaves débiles
• Llave semidébiles
– aquellas llaves K que generan dos posibles valores para las
16 subllaves Ki, repitiéndose ocho veces cada posible valor.
• Llaves semidébiles
– existen 12 llaves semidebiles
– vienen en pares K1, K2 tal que:
EK1(EK2(M))=M
Llaves débiles
Llaves semidébiles
Llave Llave después aplicar Pi
01FE01FE01FE01FE AAAAAAAA AAAAAAAA
FE01FE01FE01FE01 55555555 55555555
1FE01FE00EF10EF1 AAAAAAAA 55555555
E01FE01FF01EF01E 55555555 AAAAAAAA
01E001E001F101F1 AAAAAAAA 00000000
E001E001F101F101 55555555 00000000
1FFE1FFE0EFE0EFE AAAAAAAA FFFFFFFF
FE1FFE1FFE0EFE0E 55555555 FFFFFFFF
011F011F010E010E 00000000 AAAAAAAA
1F011F010E010E01 00000000 55555555
E0FEE0FEF1FEF1FE FFFFFFFF AAAAAAAA
FEE0FEE0FEF1FEF1 FFFFFFFF 55555555
Lámina 90 Roberto Gómez C.
Críticas a DES
DES Challenge I y II
Detalles de la máquina
Imagenes de la máquina
27 tarjetas
Doble DES
Encriptado
K1 K2
P X C
E E
Decriptado K2 K1
X
C D D P
¿Es suficiente?
• Meet-in-the-middle attack
• Doble DES:
C = E(k2,E(k1,P))
P = D(k1,D(k2,C))
• Re-escribiendo la ecuación
C = E(k2,E(k1,P)) M = E(k1,P)
P = D(k1,D(k2,C)) M = D(k2,C)
Triple DES
Encriptado
K1 K2 K1
A B
P E D E C
Decriptado
K1 K2 K1
B A P
C D E D
E: encripción D: decripción
Lámina 103 Roberto Gómez C.
Criptosistema IDEA
características
Criptosistema IDEA
Características IDEA
Operaciones básicas
Es primo y se
XOR asegura el inverso
multiplicativo
Suma módulo 216 (mod 65.536)
Operación cifrado
Operaciones inversas
MA
al comienzo y al final
del algoritmo. Esto
permite usar el mismo
algoritmo para cifrar
que para descifrar.
Bloque principal
Expansión llave
Expansión de la llave
K1 K2 K3 K4 K5 K6 K7 K8
26
Con los
Los 64 primeros
últimos 128 bits se
bits de ggeneran 8
la fase 7 subllaves
no se de 16 bits
usan. cada una.
23 86
64 bits de últimas llaves
• Encripción
– se generaron 52 llaves (K1 … K52)
– se usan cuatro de ellas en iteraciones pares y dos en impares
• Decripción
– ya que se trabaja hacia atras, la primera llaves deben ser las
inversas de las ultimas llaves usadas para encriptar
– las ultimas fueron: K49 K50 K51 y K52
– primeras
i para decriptar
d i deben
d b ser lasl inversas
i de
d K49 a K52
– la primera llave decripción será la inversa multiplicativa de
K49 mod 216+1
– las llaves de decripción K2 y K3 son los inversos aditivos de
K50 y K51
Lámina 117 Roberto Gómez C.
Módulo IDEA
Las operaciones
se hacen ahora
hacia arriba
Ultimas 6 llaves
de descifrado
Pruebas
CAST-256
Crypton
CAST-256
CAST 256 Rijndael Deal
Crypton Safer+ DFC
Deal Serpent E2
DFC Twofish Frog Mars
E2 GEM HPC
RC6
Frog RAINBOW LOK197
Rijndael
HPC Simple Magenta
Serpent
LOK197 TMD Mars
Twofish
Magenta Vobach Technology RC6
Mars WICKER’98 Rijndael
RC6
Safer+
Serpent
Twofish
Lámina 124 Roberto Gómez C.
Características
Aspectos de diseño
• Simplicidad
Si li id d de
d diseño
di ñ
• DES:
– la iteración de tranformación esta basada en Feistel (en cada
iteración se aplica Feistel)
– el mismo algoritmo sirve para encriptar como para decriptar,
invirtiendo el orden de las subllaves que se obtienen a partir
de la llave de encripción
• AES
– la iteración de transformación esta compuesta por capas
– capas formadas por funciones reversibles
– para descifrar basta con aplicar las funciones inversas de
cada capa, en el orden contrario
Características Capas
Tipos de capas
Funcionamiento Rijndael
S S S S S S S S S S S S S S S S
Shift Row
Mezclado Columnas
a0,0
0 0 a0,1
0 1 a0,2
0 2 a0,3
0 3 a0,4
0 4 a0,5
05 k0,0
0 0 k0,1
0 1 k0,2
0 2 k0,3
03
a1,0 a1,1 a1,2 a1,3 a1,4 a1,5 k1,0 k1,1 k1,2 k1,3
a2,0 a2,1 a2,2 a2,3 a2,4 a2,5 k2,0 k2,1 k2,2 k2,3
a3,0 a3,1 a3,3 a3,3 a3,4 a3,5 k3,0 k3,1 k3,2 k3,3
Número de iteraciones
La iteración de transformación
Round(State, RoundKey)
{
ByteSub(State);
ShiftRow(State);
MixColumn(State);
AddRoundKey(State,RoundKey);
}
La iteración final
FinalRound(State, RoundKey)
{
ByteSub(state);
ShiftRow(state);
AddRoundKey(state,RoundKey);
}
La función ByteSub(State)
Round(State,LLaveSerie)
Round(State LLaveSerie)
{
ByteSub(State);
ShiftRow(State);
MixColumn(State);
AddR
AddRoundKey(State,RounKey);
dK (S R K )
}
La transformación ByteSub
ByteSub(State)
La caja S de substitución
Ejemplo susbtitución
EA 04 65 85 87 F2 4D 97
83 45 5D 96 EC 6E 4C 90
5C 33 98 B0 4A C3 46 E7
F0 2D AD C5 8C D8 95 A6
La inversa de la caja S
y0 10001111 x0 1
y1 11000111 x1 1
y2 11100011 x2 0
y3 = 1 1 1 1 0 0 0 1 x3 + 0
y4 11111000 x4 0
y5 01111100 x5 1
y6 00111110 x6 1
y7 00011111 x7 1
Lámina 143 Roberto Gómez C.
a0,0 a0,1 a0,2 a0,3 a0,4 a0,5 b0,0 b0,1 b0,2 b0,3 b0,4 b0,5
a1,0 a1,1 a1,2 aa1,3 a1,4 a1,5 b1,0 b1,1 b1,2 bb1,3 b1,4 b1,5
i,j i,j
a2,0 a2,1 a2,2 a2,3 a2,4 a2,5 b2,0 b2,1 b2,2 b2,3 b2,4 b2,5
a3,0 a3,1 a3,3 a3,3 a3,4 a3,5 b3,0 b3,1 b3,3 b3,3 b3,4 b3,5
Inversa de ByteStub
La función ShiftRow(State)
Round(State,LLaveSerie)
Round(State LLaveSerie)
{
ByteSub(State);
ShiftRow(State);
MixColumn(State);
AddR
AddRoundKey(State,RoundKey);
dK (S R dK )
}
La transformación ShiftRow
ShiftRow(State)
Ejemplo de desplazamiento
Si Nb = 6, se tiene lo siguiente:
E0,0 E0,1 E0,2 E0,3 E0,4 E0,5
E1,0 E1,1 E1,2 E1,3 E1,4 E1,5
Desplazar 1 posición a la derecha
La inversa de ShiftRow
La función MixColumn(State)
Round(State,LLaveSerie)
Round(State LLaveSerie)
{
ByteSub(State);
ShiftRow(State);
MixColumn(State);
AddR
AddRoundKey(State,RoundKey);
dK (S R dK )
}
La transformación MixColumn
MixColumn(State)
• toma módulo:
01x4 + 01
Equivalente de la transformación
b0 = 02 03 01 01 a0
b1 = 01 02 03 01 a1
b2 = 01 01 02 03 a2
b3 = 03 01 01 02 a3
b
a0,0 a0,1 aa0,0,j a0,3 a0,4 a0,5 b0,0 b0,1 a0,0,j b0,3 b0,4 b0,5
a1,j ⊗C(x) b1,j
a1,0 a1,1 a0,0 a1,3 a1,4 a1,5 b1,0 b1,1 a0,0 b1,3 b1,4 b1,5
a3,0 a3,1 a0,0 a3,3 a3,4 a3,5 b3,0 b3,1 a0,0 b3,3 b3,4 b3,5
a3,j b3,j
Inversa de MixColumn
Función
AddRoundKey(State,RoundKey)
Round(State,LLaveSerie)
Round(State LLaveSerie)
{
ByteSub(State);
ShiftRow(State);
MixColumn(State);
AddR
AddRoundKey(State,RoundKey);
dK (S R dK )
}
La adición de llave
AddRoundKey(State,RKey)
a0,0 a0,1 a0,2 a0,3 a0,4 a0,5 k0,0 k0,1 k0,2 k0,3 k0,4 k0,5
a1,0
1 0 a1,1
1 1 a1,2
1 2 a1,3
1 3 a1,4
1 4 a1,5 k1,0
1 0 k1,1
1 1 k1,2
1 2 k1,3
1 3 k1,4
1 4 k1,5
⊗
15 15
a2,0 a2,1 a2,2 a2,3 a2,4 a2,5 k2,0 k2,1 k2,2 k2,3 k2,4 k2,5
a3,0 a3,1 a3,3 a3,3 a3,4 a3,5 k3,0 k3,1 k3,2 k3,3 k3,4 k3,5
Calendarización de la llave
Principio de base
Expansión de la llave
W[Nb*(Nr+1)]
Algoritmo para Nk ≤ 6
El algoritmo de encripción
Otra opción
Rijndael(State,ExpandedKey)
{
AddRoundKey(State,RoundKey);
for (i
(i=0,
0, ii<Nk,
Nk, i++)
i )
Round(State, ExpandedKey + Nb*i);
FinalRound(State, ExpandedKey + Nb*Nr);
}
Resumiendo
Ventajas de implementación
Ventajas de diseño
Ventajas de longitud
Limitaciones
Desempeño.
Motorola 68HC08
• Twofish • CAST
• Blowfish • SAFER
• IDEA • 3-WAY
• RC2, RC4 y RC5 • FEAL
• NewDES • REDOC
• LOKI
• Feal
• MADRYGA
• SKIPJACK
• Lucifer
• MMB
• Khufu and Khafre
• GOST • CA-1.1
• CRAB 342
Lámina 176 Roberto Gómez C.
Vector Inic.
P1 P2 P3
C1 C2 C3
Lámina 180 Roberto Gómez C.
Vector Inic.
P1 P2 P3
C1 C2 C3
Lámina 181 Roberto Gómez C.
• Distribución de llaves
– usuarios tienen que seleccionar llave
en secreto antes de empezar a
comunicarse
• Manejo de llaves
– red de n usuarios, cada pareja debe
tener su llave secreta particular, i.e.
n(n-1)/2
( ) llaves
• Sin firma digital
– no hay posibilidad , en general, de
firmar digitalmente los mensajes
Características y uso