Post on 08-Jan-2016
description
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