Descargar

Explicación del Cifrado en Bloques Simétrico DES (página 2)

Enviado por rafael_net


Partes: 1, 2

1.2. Generación de la subclave Ki

La clave Ki tiene un valor inicial de 64 bits, su longitud es fija.

Tabla de 56 bits

1

2

3

4

5

6

7

9

10

11

12

13

14

15

17

18

19

20

21

22

23

25

26

27

28

29

30

31

33

34

35

36

37

38

39

41

42

43

44

45

46

47

49

50

51

52

53

54

55

57

58

59

60

61

62

63

Tabla de 64 bits Inicial

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

Permutación PC1

57

49

41

33

25

17

9

1

58

50

42

34

26

18

10

2

59

51

43

35

27

19

11

3

60

52

44

36

63

55

47

39

31

23

15

7

62

54

46

38

30

22

14

6

61

53

45

37

29

21

13

5

28

20

12

4

La tabla de la Permutación PC1, se utiliza para realizar la permutación inicial en la generación de la subclave Ki , para cada vuelta. Una vez realizada la permutación, los 56 bits se dividen en dos sub-bloques Ci y Di de 28 bits. En estas condiciones, la clave esta definida por las ecuaciones:

Ci = LS (Ci-1) Di = LS(Di -1)

Ki = PC2 (Ci , Di)

Ejemplo Permutación PC1

Clave K: Santiago

Decimal

Carácter

Binario

97

a

01100001

103

g

01100111

105

i

01101001

110

n

01101110

111

o

01101111

83

S

01010011

116

t

01110100

S

01010011

a

01100001

n

01101110

t

01110100

i

01101001

a

01100001

g

01100111

o

01101111

Utilizando la Permutación PC1 obtenemos:

Tabla de 64 bits de Ki Inicial

0

1

0

1

0

0

1

1

0

1

1

0

0

0

0

1

0

1

1

0

1

1

1

0

0

1

1

1

0

1

0

0

0

1

1

0

1

0

0

1

0

1

1

0

0

0

0

1

0

1

1

0

0

1

1

1

0

1

1

0

1

1

1

1

Tabla de 56 bits

0

1

0

1

0

0

1

0

1

1

0

0

0

0

0

1

1

0

1

1

1

0

1

1

1

0

1

0

0

1

1

0

1

0

0

0

1

1

0

0

0

0

0

1

1

0

0

1

1

0

1

1

0

1

1

1

Permutación PC1

0

0

0

0

0

0

0

0

1

1

1

1

1

1

1

1

1

1

1

1

1

1

1

0

0

0

0

0

1

1

0

0

0

1

0

1

1

1

0

0

1

1

0

0

1

0

0

1

0

1

0

0

1

0

0

1

Sub-bloque C0 = 0000000 0111111 1111111 1100000

Sub-bloque D0 = 1100010 1110011 0010010 1001001

Sub-bloques iniciales

1.2.1. Desplazamiento LS(…)

El desplazamiento LS(…) se aplica a los sub-bloques de longitud fija de 7 bits (Ci y Di), donde LS(…) es un desplazamiento circular a la izquierda de 1 o 2 bits del entero binario que toma el argumento de acuerdo a la siguiente tabla:

Vuelta

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

No. Bits desplazados. Izda.

1

1

2

2

2

2

2

2

1

2

2

2

2

2

2

1

Con el propósito de comprender mejor el desplazamiento LS(…) se realizara el proceso.

Ejemplo Permutación LS(..)

Al tener los sub-bloques C0 y D0, el siguiente paso es el desplazamiento LS, se marcan los dos primeros bits, con el propósito de poder identificar el resultado del desplazamiento.

Sub-bloque C0 = 0000000 0111111 1111111 1100000

Sub-bloque D0 = 1100010 1110011 0010010 1001001

Al ser la primer vuelta, el desplazamiento es de un bit a la izquierda como se indica en la tabla, dando como resultado C1 y D1.

Sub-bloque C1 = 0000000 1111111 1111111 1000000

Sub-bloque D1 = 1000101 1100110 0100101 0010011

Sub-bloques después del desplazamiento LS(..)

1.2.2. Permutación PC2

La permutación PC2 se conoce como permutación de compresión, dada por las operaciones de concatenar y permutar Ci y Di, se va a comprimir de 56 bits a 48 bits para obtener la clave Ki, posteriormente será utilizada en la función (f(Ri-1, Ki))

El orden de concatenar Ci y Di, es utilizando primero los 28 bits de Ci y posteriormente los 28 bits de Di, la tabla PC2 es una tabla de 8 x 6, dando como resultado 8 bloques de 6 bits.

Tabla ( Ci, Di)

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

Tabla de 8 x 6 bits

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

Permutación PC2

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

Ejemplo Permutación PC2

Continuando con el ejemplo se mostrará el proceso utilizado en la permutación PC2, para obtener la clave Ki.

Concatenando Ci, Di

0000000 1111111 1111111 1000000 1000101 1100110 0100101 0010011

Los 56 bits de entrada en la permutación PC2

Para ver la tabla seleccione la opción "Descargar" del menú superior 

El resultado de haber realizado la permutación PC2 es la generación de la clave K1 siendo:

K1 = PC2 (C1, D1) =

111000 001011 011001 100110 110111 010010 110100 000110

Clave K1

Las operaciones LS(..) y PC2, se repiten 15 veces para así obtener las 15 subclaves de cifrado restantes. Los procesos de cifrado y generación de claves se representan esquemáticamente en la siguiente imagen.

1.3. Función f(Ri-1 , Ki)

Al tener la clave Ki y la expansión de (R0), el siguiente paso es la función f(Ri-1 , Ki), la cual consta de tres procesos (Suma OR exclusivo, ocho funciones no lineales, Permutación P), siendo las ocho funciones lineales la mayor virtud del algoritmo, se han propuesto modificaciones en varios procesos, pero cualquier modificación realizada, en las funciones lineales hace débil al algoritmo. A continuación se explican los procesos.

1.3.1. Suma OR exclusiva

Con la clave Ki y E(Ri-1), se procede a realizar la suma OR exclusiva, al realizar la operación se tiene un 50% de certeza que el siguiente bit sea 1, con lo cual aumenta la dificultad de poder descifrar el mensaje. La operación OR exclusiva se ejemplifica en la siguiente tabla:

A

B

A B

0

0

0

0

1

1

1

0

1

1

1

0

Se encuentra definido por la ecuación.

E(Ri-1) Ki

La clave Ki y Ri-1 se encuentra formado por 8 bloques de 6 bits cada, con lo cual es posible realizar la suma OR exclusiva como se muestra a continuación.

Ejemplo Suma OR exclusiva

Retomando los bits de la expansión del sub-bloque R0 y la subclave K1, se procede a realizar la suma OR exclusiva.

E(R0) = 000000 000001 011111 111101 011001 011001 010000 001000

K1 = 111000 001011 011001 100110 110111 010010 110100 000110

111000 001010 000110 011011 101110 001011 100100 001110

Resultado de la suma OR exclusiva E(R0) K1

1.3.2. Funciones no lineales

La cadena de bits obtenida de la suma OR exclusiva, se subdivide en 8 bloques de 6 bits, como se puede apreciar en el ejemplo anterior, siendo cada bloque (b6b5b4b3b2b1) la entrada a una de las funciones no lineales, conocidas como cajas, el resultado de la operación es un numero con valor entre 0 a 15, representado con cuatro bits, concatenados forman una cadena de 32 bits, la cual será la entrada para la permutación P. La posición de los bits dentro de cada caja se encuentra definida por la fila b6b1 y la columna b5b4b3b2 de la caja, el orden de los valores numéricos de las cajas se puede ver en la siguiente imagen.

Ejemplo función no lineal (cajas)

E(R0) K1 = 111000 001010 000110 011011 101110 001011 100100 001110

En la Caja S1 se utiliza el primer bloque 111000, en la Caja S2 se utiliza el segundo bloque y así sucesivamente.

Para ver la tabla seleccione la opción "Descargar" del menú superior

La salida del bloque 1 es: 3 (0011), el procedimiento se repite en las siguientes 7 cajas obteniendo como resultado:

E(R0) K1 = 0011 1011 1110 1010 1000 1100 1011 0001

3 11 14 10 8 12 11 1

Resultado de las funciones no lineales

1.3.3. Permutación P

El ultimo paso de la función f(Ri-1 , Ki), es una permutación P, cuyo resultado se sumara con la salida del sub-bloque Li, dando origen a la entrada del sub-bloque Ri

Para ver la tabla seleccione la opción "Descargar" del menú superior

 Ejemplo Permutación P

Retomando el ejemplo se realiza el ultimo paso de la f(Ri-1 , Ki), recordando que dicho proceso se repite 15 veces.

E(R0) K1 = 0011 1011 1110 1010 1000 1100 1011 0001

Resultado de las funciones no lineales

Para ver la tabla seleccione la opción "Descargar" del menú superior

1.4. Suma Li Ri

El registro de bits obtenido por la función f(Ri-1 , Ki), es sumado con un OR exclusivo con el registro de bits de L0, dando como resultado la entrada para el siguiente sub-bloque de Ri. El registro de bits realizado en la permutación inicial P1, que origino al sub-bloque R0, es la entrada para el siguiente sub-bloque Li, el proceso se repite 15 veces, siendo el ultimo proceso la permutación P1-1.

Ejemplo Suma Li f(Ri-1 , Ki)

f(Ri-1 , Ki) = 0101 0011 0100 1001 0100 1111 0100 1111

L0 = 1111 1111 0001 1000 1101 0111 1110 1010

1010 1100 0101 0001 1001 1000 1010 0101

Resultado de la suma OR exclusiva L0 f(R0 , K1)

Obteniendo los registros de 32 bits para el siguiente sub-bloque Li y Ri como se muestra a continuación:

L1 = 0000 0000 1111 1110 1100 1100 1000 0100

R1 = 1010 1100 0101 0001 1001 1000 1010 0101

Donde se verifican las ecuaciones:

L1 = R0

00000000111111101100110010000100 = 00000000111111101100110010000100

R1 = L0 f(R0 , K1)

10101100010101011001100010100101 =

1111111100011000110101111110101001010011010011010100111101001111

1.5. Permutación P1-1

La permutación inversa se define por la siguiente tabla, siendo la salida, el cifrado del mensaje.

Para ver la tabla seleccione la opción "Descargar" del menú superior

Ejemplo Permutación P1-1

Si tomamos los valores que tenemos de L1 y R1, suponiendo los valores de L16 y R16, podemos realizar el procedimiento, como muestra del resultado final, cabe mencionar si el mensaje es mayor de 64 bits, se utilizan los bloques necesarios para dividir el mensaje original, si un bloque formado por un mensaje, no tiene la longitud de 64 bits, se rellena utilizando 0.

L16 = 10101100 01010001 10011000 10100101

R16 = 00000000 11111110 11001100 10000100

Concatenando L16 , R16

10101100 01010001 10011000 10100101 00000000 11111110 11001100 10000100

Para ver la tabla seleccione la opción "Descargar" del menú superior

El cifrado del mensaje es: ◄(spacio){l4a8o

00010001 00100000 01101011 01101100 00110100 01100001 00111000 01101111

Decimal

Carácter

Binario

17

00010001

32

(space)

00100000

123

{

01111011

108

l

01101100

52

4

00110100

97

a

01100001

56

8

00111000

111

o

01101111

1.6. Descifrado

El algoritmo se utiliza para obtener el mensaje original, con un sentido inverso al inicial, esto es, empezando con la entrada del mensaje cifrado de 64 bits, aplicando la permutación P1, dividir el mensaje en dos sub-bloques L16 y R16, teniendo la subclaves calculadas previamente, se realiza el procedimiento descrito anteriormente la f(Ri-1 , Ki), realizando las 16 vueltas hasta obtener el mensaje en claro.

Ejemplo Permutación P1 Descifrado

Mensaje a Descifrar = ◄(spacio){l4a8o

Para ver la tabla seleccione la opción "Descargar" del menú superior 

L16 = 10101100 01010001 10011000 10100101

R16 = 00000000 11111110 11001100 10000100

Ejemplo Permutación E Descifrado

Al tener la secuencia de R16 de 32 bits, es necesario aplicar la permutación E, la cual se muestra a continuación.

R16 = 00000000 11111110 11001100 10000100

Para ver la tabla seleccione la opción "Descargar" del menú superior

E(R16) = 000000 000001 011111 111101 011001 011001 010000 001000

Ejemplo Suma OR exclusiva Descifrado

La suma OR exclusiva se realiza utilizando la ultima clave generada (K16), en nuestro ejemplo utilizaremos la clave K1, como la clave K16.

E(R16) = 000000 000001 011111 111101 011001 011001 010000 001000

K16 = 111000 001011 011001 100110 110111 010010 110100 000110

111000 001010 000110 011011 101110 001011 100100 001110

Resultado de la suma OR exclusiva E(R16) K16

Ejemplo función no lineal (cajas) Descifrado

E(R0) K1 = 111000 001010 000110 011011 101110 001011 100100 001110

Como resultados de las operaciones no lineales (cajas) tenemos los siguientes:

E(R0) K1 = 0011 1011 1110 1010 1000 1100 1011 0001

3 11 14 10 8 12 11 1

Resultado de las funciones no lineales

Ejemplo Permutación P Descifrado

Retomando el ejemplo se realiza el ultimo paso de la f(Ri-1 , Ki), recordando que dicho proceso se repite 15 veces mas.

E(R0) K1 = 0011 1011 1110 1010 1000 1100 1011 0001

Para ver la tabla seleccione la opción "Descargar" del menú superior

Ejemplo Suma Li f(Ri-1 , Ki) Descifrado

f(Ri-1 , Ki) = 0101 0011 0100 1001 0100 1111 0100 1111

L16 = 1010 1100 0101 0001 1001 1000 1010 0101

1111 1111 0001 1000 1101 0111 1110 1010

Resultado de la suma OR exclusiva L0 f(Ri-1 , Ki)

Obteniendo los registros de 32 bits para el siguiente sub-bloque Li y Ri como se muestra a continuación:

L15 = 0000 0000 1111 1110 1100 1100 1000 0100

R15 = 1111 1111 0001 1000 1101 0111 1110 1010

Donde se verifican las ecuaciones:

L15 = R16

00000000111111101100110010000100 = 00000000111111101100110010000100

R1 = L16 f(R16 , K16)

11111111000110001101011111101010 =

1010110001010001100110001010010101010011010010010100111101001111

Ejemplo Permutación P1-1 Descifrado

Si tomamos los valores que tenemos de L1 y R1, suponiendo los valores de L16 y R16, podemos realizar el procedimiento, como muestra del resultado final, cabe mencionar si el mensaje es mayor de 64 bits, se utilizan los bloques necesarios para dividir el mensaje original, si un bloque formado por un mensaje y este no tiene la longitud de 64 bits, se rellena utilizando 0.

L1 = 1111 1111 0001 1000 1101 0111 1110 1010

R1 = 0000 0000 1111 1110 1100 1100 1000 0100

Concatenando L1 y R1, da como resultado:

11111111 00011000 11010111 11101010 00000000 11111110 11001100 10000100

 Para ver la tabla seleccione la opción "Descargar" del menú superior

 En la siguiente sección se definirán, los ataques activos y pasivos, se mencionarán los ataques al algoritmo DES.

2.Ataques a la seguridad criptográfica

La seguridad criptográfica sufre, dos tipos de ataques pasivosIII y activosIV, la finalidad de realizar un ataque pasivo, es obtener información y evitar ser detectado, a diferencia de los ataques activos, cuya finalidad es captar la información, modificarla, obtener claves, entre otras actividades no legales.

Los ataques activos se dividen en Ataques a los Operadores Criptográficos y Ataques a los protocolos, a continuación se mencionan algunos ataques a los operadores criptográficos.

  • Ataque a partir del cifrado: El atacante tiene acceso al texto cifrado y de ahí trata de encontrar la clave secreta.
  • Ataque a partir del texto en claro: El atacante tiene acceso al texto en claro y al cifrado con los cuales intenta obtener la clave secreta.
  • Ataque a partir del texto en claro elegido: El atacante puede elegir un texto en claro y su cifrado.
  • Ataque a partir de texto en claro condicionado: El atacante puede elegir un texto en claro condicionado a los cifrados previamente obtenidos.

Ataques a los protocolos.

  • Ataque con clave conocida: El atacante obtiene algunas claves utilizadas en cifrados previos para determinar nuevas claves.
  • Reutilización del protocolo: El atacante, ataca utilizando una comunicación captada previamente, insertándola en la comunicación.
  • Suplantación de Identidad: El atacante toma la identidad de un usuario registrado en la red de comunicaciones.

Otros ataques.

  • Ataque de fuerza bruta: El ataque por fuerza bruta consiste en un ejercicio de combinación, donde se van cifrando todas las posibles contraseñas y comparándolas con las existentes en el registro, buscando también coincidencias. Este método, por definición, siempre consigue su meta, si bien el problema que tienen es de recursos y tiempo.

2.1 Ataques al Algoritmo DES

Criptoanálisis Diferencial

El criptoanálisis diferencial fue introducido por E. Biham y A. Shamir, es un ataque en texto claro escogido y esta basado en comparaciones del OR exclusivo de dos textos en claro escogidos con el OR exclusivo de sus correspondientes cifrados. Este método de análisis permite romper el DES utilizando en teoría alrededor de 247 parejas de textos en claro seleccionados, siendo aproximadamente 236 las útiles para el criptoanálisis, con un tiempo de calculo equivalente a unos 237 cifrados. El problema básico de este ataque es obtener los cifrados de los textos en claro, ya que para obtenerlos es necesario engañar a la entidad que realiza el cifrado o violar la seguridad física del lugar donde se realiza el cifrado, lo cual en la practica es casi imposible.

Criptoanálisis Lineal

El criptoanálisis lineal fue introducido por M. Matsui, se basa en un ataque en texto en claro escogido y consiste en la obtención de ecuaciones lineales que representen la probabilidad existente entre algunos bits del mensaje en claro y otros del cifrado DES del mismo mensaje. La ecuación utilizada es la siguiente:

F(P[i1,…ip] , C[j1,…jp]) = k[k1, k2,…kk]

Donde F(…) es una función lineal y [i1,…ip] ,[j1,…jp]) ,[k1, k2,…kk] son bits que ocupan posiciones fijas respectivamente en P, C y K.

3. Bibliografía

http://csrc.nist.gov/cryptval/des.htm

http://cereal.rutgers.edu/~xylu/519_hw4.html

http://www.infoworld.com/article/04/07/29/HNdesinadequate_1.html

Criptografía Digital Fundamentos y Aplicaciones

José Pastor Franco, Miguel Ángel Sarasa López

2da, Edición

Rafael Martinez

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente