DES (Estándar de Cifrado de Datos), descifrado de la clave secreta

download DES (Estándar de Cifrado de Datos), descifrado de la clave secreta

of 17

description

DES (Estándar de Cifrado de Datos), descifrado de la clave secreta

Transcript of DES (Estándar de Cifrado de Datos), descifrado de la clave secreta

DES (Estndar de Cifrado de Datos), descifrado de la clave secreta

El 15 de mayo de 1973, elNBS(National Bureau of Standars, en castellano: Agencia Nacional de Normalizacin) hoy en da denominadaNIST(National Institute of Standars and Technology, en castellano: Instituto Nacional de Normalizacin y Tecnologa), hizo un llamamiento en elFederal Register (el equivalente en Espaa del Boletn Oficial del Estado)para la creacin de un algoritmo de cifrado que cumpliera con los siguientes requisitos: ofrecer un alto nivel de seguridad relacionado con una pequea clave utilizada para cifrado y descifrado ser comprensible no depender de la confidencialidad del algoritmo ser adaptable y econmico ser eficaz y exportableA finales de 1974, IBM propuso "Lucifer", que gracias a la NSA (National Standard Agency, en castellano: Agencia Nacional de Seguridad) fue modificado el 23 de noviembre de 1976, convirtindose enDES(Data Encryption Standard, en castellano: Estndar de Cifrado de Datos). El DES fue aprobado por el NBS en 1978. El DES fue estandarizado por elANSI(American National Standard Institute, en castellano: Instituto Nacional Americano de Normalizacin) bajo el nombre deANSI X3.92, mas conocido comoDEA(Data Encrytion Algorithm, en castellano: Algoritmo de Cifrado de Datos).Principio de funcionamiento del DESSe trata de un sistema de cifrado simtrico por bloques de 64 bits, de los que8 bits(un byte) se utilizan como control de paridad (para la verificacin de la integridad de la clave). Cada uno de los bits de la clave de paridad (1 cada 8 bits) se utiliza para controlar uno de los bytes de la clave por paridad impar, es decir, que cada uno de los bits de paridad se ajusta para que tenga un nmero impar de "1" dentro del byte al que pertenece. Por lo tanto, la clave tiene una longitud "til" de 56 bits, es decir, realmente slo se utilizan 56 bits en el algoritmo.El algoritmo se encarga de realizar combinaciones, sustituciones y permutaciones entre el texto a cifrar y la clave, asegurndose al mismo tiempo de que las operaciones puedan realizarse en ambas direcciones (para el descifrado). La combinacin entre sustituciones y permutaciones se llamacifrado del producto.La clave es codificada en 64 bits y se compone de 16 bloques de 4 bits, generalmente anotadas dek1ak16. Dado que "solamente" 56 bits sirven para el cifrado, puede haber hasta 256(o 7.2*1016) claves diferentes!El algoritmo DESLas partes principales del algoritmo son las siguientes: fraccionamiento del texto en bloques de 64 bits (8 bytes), permutacin inicial de los bloques, particin de los bloques en dos partes: izquierda y derecha, denominadasIyDrespectivamente, fases de permutacin y de sustitucin repetidas 16 veces (denominadasrondas), reconexin de las partes izquierda y derecha, seguida de la permutacin inicial inversa.

Fraccionamiento del textoPermutacin inicialEn primer lugar, cada bit de un bloque est sujeto a una permutacin inicial, que puede representarse mediante la siguiente matriz de permutacin inicial (anotada como PI):IP585042342618102

605244362820124

625446383022146

645648403224168

57494133251791

595143352719113

615345372921135

635547393123157

Esta tabla de permutacin muestra, al leerla de izquierda a derecha y de arriba a abajo, que el 58obit de un bloque de 64 bits est en la primera posicin, el 50oest en la segunda posicin y as sucesivamente.Divisin en bloques de 32 bitsUna vez que la permutacin inicial se complet, el bloque de 64 bits se divide en dos bloques de 32 bits denominadosIyDrespectivamente (para izquierda y derecha, siendo la anotacin en anglo-sajn L y R por Left y Right). El estado inicial de estos dos bloques se denominaL0yR0:L0585042342618102

605244362820124

625446383022146

645648403224168

R057494133251791

595143352719113

615345372921135

635547393123157

Es interesante observar queL0contiene todos los bits que se encuentran en posicin par en el mensaje inicial, mientas queR0contiene los bits en posicin impar.RondasLos bloquesLnyRnestn sujetos a un conjunto de transformaciones iterativas denominadasrondas, que se muestran en este esquema y que detallamos a continuacin:

Funcin de expansinLos 32 bits del bloqueR0se expanden a 48 bits gracias a una tabla (matriz) llamadatabla de expansin(que se anota comoE), en la que los 48 bits se mezclan y 16 de ellos se duplican:E3212345

456789

8910111213

121314151617

161718192021

202122232425

242526272829

28293031321

As, el ltimo bit deR0(es decir, el 7obit del bloque de origen) se convierte en el primero, el primero en el segundo, etc.Adems, los bits 1,4,5,8,9,12,13,16,17,20,21,24,25,28 y 29 deR0(respectivamente los bits 57, 33, 25, l, 59, 35, 27, 3, 6l, 37, 29, 5, 63, 39, 31 y 7 del bloque de origen) son duplicados y diseminados en la matriz.OR exclusiva con la claveLa tabla resultante de 48 bits se denominaD'0oE[D0]. El algoritmo DES aplica despusOR exclusivasentre la primera claveK1yE[D0]. El resultado de esteOR exclusivoes una tabla de 48 bits que, por comodidad, llamaremosD0(no es laD0inicial!).Funcin de sustitucinDespus,D0se divide en 8 bloques de 6 bits, denominadoD0i. Cada uno de estos bloques se procesa a travs defunciones de seleccin(a veces llamadascajas de sustitucinofunciones de compresin), denominadas generalmenteSi.Los primeros y ltimos bits de cadaD0ideterminan (en valor binario) la lnea de la funcin de seleccin; los otros bits (2, 3, 4 y 5 respectivamente) determinan la columna. Como la seleccin de la lnea se basa en dos bits, existen 4 posibilidades (0,1,2,3). Como la seleccin de la columna se basa en 4 bits, existen 16 posibilidades (0 a 15). Gracias a esta informacin, la funcin de seleccin "selecciona" un valor cifrado de 4 bits.Esta es la primera funcin de sustitucin, representada en una tabla de 4 por 16:S10123456789101112131415

01441312151183106125907

10157414213110612119538

24114813621115129731050

31512824917511314100613

SeaR01igual a101110. El primer y ltimo bit dan10, es decir, 2 en valor binario. Los bits 2,3,4 y 5 dan0111, o 7 en valor binario. Por lo tanto, el resultado de la funcin de seleccin es el valor ubicado en la lnea n 2, de la columna n 7. Es el valor11o111en binario.Cada uno de los 8 bloques de 6 bits pasa a travs de la funcin de seleccin correspondiente, dando un resultado de 8 valores con 4 bits cada uno. A continuacin estn las otras funciones de seleccin:S20123456789101112131415

01518146113497213120510

13134715281412011069115

20147111041315812693215

31381013154211671205149

S30123456789101112131415

01009146315511312711428

11370934610285141211151

21364981530111212510147

31101306987415143115212

S40123456789101112131415

07131430691012851112415

11381156150347212110149

21069012117131513145284

33150610113894511127214

S50123456789101112131415

02124171011685315130149

11411212471315015103986

24211110137815912563014

31181271142136150910453

S60123456789101112131415

01211015926801334147511

11015427129561131401138

29141552812370410113116

34321295151011141760813

S70123456789101112131415

04112141508133129751061

11301174911014351221586

21411131237141015680592

36111381410795015142312

S80123456789101112131415

01328461511110931450127

11151381037412561101492

17114191214206101315358

12114741081315129035611

Por lo tanto, cada bloque de 6 bits se sustituye por un bloque de 4 bits. Estos bits se combinan para formar un bloque de 32 bits.PermutacinFinalmente, el bloque de 32 bits se somete a una permutacinP. A continuacin, mostramos la tabla:P167202129122817

11523265183110

282414322739

19133062211425

OR exclusivoEl conjunto de estos resultados salidos dePestn sujetos a unOR exclusivoconI0inicial (como se muestra en el primer esquema) para devolver D1, en tanto que laD0inicial devuelveI1.IteracinEl conjunto de los pasos anteriores (rondas) se reitera 16 veces.Permutacin inicial inversaAl final de las iteraciones, los dos bloquesL16yR16se vuelven a conectar y se someten a una permutacin inicial inversa:IP-1408481656246432

397471555236331

386461454226230

375451353216129

364441252206028

353431151195927

342421050185826

33141949175725

El resultado que surge es un texto cifrado de 64 bits.Generacin de clavesDado que el algoritmo DES mencionado anteriormente es pblico, toda la seguridad se basa en la complejidad de las claves de cifrado.El algoritmo que sigue a continuacin muestra cmo obtener a partir una clave de 64 bits (compuesta por cualquier de los 64 caracteres alfanumricos), 8 claves diferentes de 48 bits, cada una de ellas utilizadas en el algoritmo DES:

En primera instancia, se eliminan los bits de paridad de la clave para obtener una clave que posea una longitud de 56 bits.El primer paso es una permutacin denominadaPC-1, cuya tabla se presentar a continuacin:PC-157494133251791585042342618

10259514335271911360524436

635547393123157625446383022

1466153453729211352820124

Esta matriz puede escribirse en forma de dos matrizLiyRi(para la izquierda y la derecha respectivamente), cada una ellas de 28 bits:Li5749413325179

1585042342618

1025951433527

1911360524436

Ri63554739312315

7625446383022

1466153453729

211352820124

El resultado de esta primera permutacin se denominaI0yD0.Luego, estos dos bloques se rotan hacia la izquierda, de manera que los bits que estaban en la segunda posicin pasan a la primera, aquellos que estaban en tercera posicin pasan a la segunda, etc.Los bits que estaban en la primera posicin se mueven hacia la ltima posicin.Los dos bloques de 28 bits se agrupan en un bloque de 56 bits. Este pasa por una permutacin, denominadaPC-2, dando como resultado un bloque de 48 bits que representa la claveKi.pc-214171124153281562110

23191242681672720132

415231374755304051453348

444939563453464250362932

Realizando iteraciones del algoritmo es posible obtener las 16 clavesK1aK16utilizadas en un algoritmo DES.LS124681012141517192123252728

TDES (en castellano: Triple Estndar de Cifrado de Datos), una alternativa para DESEn 1990, Eli Biham y Adi Shamir desarrollaron el criptoanlisis diferencial, que buscaba pares de textos planos y pares de textos cifrados. Este mtodo funciona con un mximo de 15 rondas, mientras que en el algoritmo presentado anteriormente admite 16 rondas.Por otro lado, aunque una clave de 56 bits ofrece una enorme cantidad de posibilidades, muchos procesadores pueden calcular ms de 106claves por segundo. Con lo que, cuando se utilizan al mismo tiempo una gran cantidad de mquinas, es posible que un gran organismo (un Estado, por ejemplo) encuentre la clave correcta...Una solucin a corto plazo requiere que se encadenen tres cifrados DES mediante dos claves de 56 bits (esto equivale a una clave de 112 bits). Este proceso se llamaTriple DES, denominadoTDES(algunas veces3DESo3-DES).

ElTDESpermite aumentar de manera significativa la seguridad del DES, pero posee la desventaja de requerir ms recursos para el cifrado y descifrado.Por lo general, se reconocen diversos tipos de cifrado triple DES: DES-EEE3: Cifrado triple DES con 3 claves diferentes, DES-EDE3: una clave diferente para cada una de las operaciones de triple DES (cifrado, descifrado, cifrado), DES-EEE2 y DES-EDE2: una clave diferente para la segunda operacin (descifrado).En 1997, elNISTlanz una nueva convocatoria para que desarrollar elAES(Advanced Encryption Standard, en castellano: Estndar de Cifrado Avanzado), un algoritmo de cifrado cuyo objetivo era reemplazar alDES.El sistema de cifradoDESse actualizaba cada 5 aos. En el ao 2000, durante su ltima revisin y despus de un proceso de evaluacin que dur 3 aos, elNISTseleccion como nuevo estndar un algoritmo diseado conjuntamente por dos candidatos belgas, el Sr.Vincent Rijmeny el Sr.Joan Daemen. El nuevo algoritmo, llamado por sus inventoresRIJNDAELreemplazar, de ahora en adelante, al DES.

1