Cifrados clasicos y modernos

Post on 31-Jul-2015

289 views 6 download

Transcript of Cifrados clasicos y modernos

Leonardo Mayorga v

Cifrados clásicos:PlayfairSolitario

Cifrados moderno:rc4

CIFRADO DE PLAYFAIREl cifrado de Playfair se basa en un algoritmo desarrollado por Charles Wheatstone en 1854, es un ejemplo de sustitución donde un par de letras de un texto sin codificar se convierten en otro par distinto

Cifrado de un texto

Reglas para cifrar 2 caracteres m1 m2:

1. Si m1 y m2 de la misma fila, coger c1 y c2 de su derecha (circularmente)

2. Si m1 y m2 de la misma columna, coger c1 y c2 de debajo (circularmente)

3. Si m1 y m2 de distintas filas y columnas, coger c1 y c2 de diagonal opuesta

4. Si m1 = m2, insertar carácter sin significado entre m1 y m2 para evitar su repetición, después aplicar reglas 1-3

Proceso de cifrado

Creación de la matriz de cifrado

En esta sustitución digrámica la clave viene dada por una matriz de cifrado de 5x5 caracteres (sin las letras J ni Ñ, en el caso de la j puede ser cualquier letra, solo tiene que se especificado de antemano que letra es excluida, se ase esto para poder ajustar la matriz) aunque puede ser de 6 x 6, con j y números incluidos . Para empezar, colocamos en la primera fila de la matriz la palabra clave sin letras repetidas.

Ejemplo:

Clave: NORIA

Matriz de cifrado resultante:

N O R I A

B C D E F

G H K L M

P Q S T U

V W X Y z

Si el número de letras es impar, añadir una sin significado al final del texto

Por lo tanto, si tenemos p.ej. este texto en claro: AT AQ UE CE RO HO RA SX (la X la ponemos al final porque al ser el texto de número de letras impar, colocamos allí una letra sin significado para rellenar y volver a la paridad). También podrían ponerse letras sin significado al final de cada palabra para evitar confusiones o hacer más claro el texto resultante.

Criptograma resultante: IU OU TF DF IR QC IN XR

CIFRADO "SOLITARIO"• Es un algoritmo de cifrado para ser usado por gente que no

puede tener acceso a ordenadores, fue desarrollado por Bruce Schneier (nacido el 15 de enero de 1963) es un criptógrafo, experto en seguridad informática, y escritor. Es el autor de diversos libros de seguridad informática y criptografía, y es el fundador y oficial jefe tecnológico de Counterpane Internet Security

• Solitario obtiene su seguridad de la aleatoriedad inherente a las cartas bien barajadas con 2.31*10^71 o 6.5531569919989807613739606270871e+96 posibles ordenamientos de la baraja. Manipulando la baraja, un comunicante puede crear una cadena de letras "aleatorias" que luego combina con su mensaje. Por supuesto Solitario puede ser simulado con un ordenador, pero está diseñado para ser utilizado a mano.

BARAJA DE CARTAS

• Solitario puede parecer "low-tech", pero se pretende que su seguridad sea "high-tech". Solitario fue diseñado para que fuera seguro incluso contra adversarios militares bien financiados, con los ordenadores más potentes y los criptoanalistas más inteligentes. Por supuesto, no existe ninguna garantía de que alguien encuentre un ataque contra Solitario, pero el algoritmo es ciertamente mejor que cualquier otro cifrado de lápiz y papel que haya visto nunca.

• No es rápido, no obstante. El cifrar o descifrar un mensaje razonablemente largo puede llevar una tarde.

Cifrar con Solitario

• Solitario es un cifrado "stream", en modo "output-feedback" (salida- retroalimentación). Algunas veces se les llama generadores de claves ("Key-Generator", KG en la jerga militar de EE.UU.). La idea básica es que Solitario genera una ristra de números, llamada "keystream" (ristra o secuencia de clave), entre 1 y 26. Para cifrar, se genera una ristra de longitud igual al texto original. Seguidamente se suman, módulo 26, letra a letra al texto original, para crear el texto cifrado. Para descifrar, se genera la misma ristra y se resta, módulo 26, del texto cifrado

• Por ejemplo, para "DO NOT USE PC":

• Divide el mensaje original en grupos de cinco letras (No hay nada mágico respecto a los grupos de cinco letras, es sólo tradición). Usa "X" para completar el último grupo. Así, si el mensaje es "DO NOT USE PC", el texto se transformará en:

• DONOT USEPC

• Usa Solitario para generar una ristra de letras (los detalles se dan más tarde). Supongamos que son:

• KDWUP ONOWT

• Convertimos el mensaje original de letras a números, A=1, B=2, etc:

• 4 15 14 15 20 21 19 5 16 3

• Convertimos la ristra de Solitario de forma similar: • 11 4 23 21 16 15 14 15 23 20

• Sumamos los números de mensaje original con los correspondientes de la ristra Solitario, módulo 26. Es decir, si suman más de 26, restamos 26 de resultado. Por ejemplo, 1+1=2, 26+1=27, y 27-26=1, así que 26+1=1.

• 15 19 11 10 10 10 7 20 13 23

• Convertimos los números de nuevo a letras: • OSKJJ JGTMW

Descifrar con Solitario

• La idea básica consiste en generar la misma ristra, y restarla del texto cifrado.

• Toma el mensaje cifrado y divídelo en grupos de cinco letras (ya debería estar en ese formato).

• OSKJJ JGTMW

• Usa Solitario para generar la ristra. Si el receptor usa la misma clave que el transmisor, la ristra será la misma.

• KDWUP ONOWT

• Convierte el mensaje cifrado a números: • 15 19 11 10 10 10 7 20 13 23

• Convierte la ristra de forma similar: • 11 4 23 21 16 15 14 15 23 20

• Resta a cada número del texto cifrado el número correspondiente de la ristra, módulo 26: for ejempo, 22-1=21, 1-22=5. Es fácil. Si el primer número es menor o igual que el segundo, sumamos 26 al primer número antes de restar. Así, 1-22 se convierte en 27-22=5.

• 4 15 14 15 20 21 19 5 16 3

• Convierte los números a letras:

• DONOT USEPC

• Como puedes ver, descifrar es igual que cifrar, salvo que al mensaje cifrado se le resta la ristra obtenida con Solitario.

Generar las letras de la secuencia de clave• Solitario genera la ristra utilizando una baraja de cartas.

Puedes pensar en una baraja de 54 cartas (no olvides los dos comodines) como una permutación de 54 elementos [El texto original en inglés se refiere, evidentemente, a una baraja de póker. N. del T.].

• Para utilizar Solitario, se necesita una baraja con las 52 cartas y los dos comodines. Llámalo a uno comodín A y al otro comodín B.

1. Encuentra el comodín A. Intercámbialo con la carta que tiene debajo. Si el comodín está al final de la baraja, ponlo debajo de la primera carta.

2. Encuentra el comodín B. Muévelo bajo la carta que está debajo de la que tiene debajo. Si el comodín está al final de la baraja, muévelo debajo de la segunda carta. Si el comodín es la penúltima carta, muévelo debajo de la primera carta. Básicamente asume que la baraja es un bucle,Si un comodín es la última carta, imagínatela como si fuera la primera carta, antes de empezar a contar.

3. Corta la baraja en tres, intercambiando las cartas antes del primer comodín con las cartas que están detrás del segundo comodín

• "Primer" y "segundo" comodín se refiere al comodín que está más arriba o más abajo respecto al extremo de la baraja. Ignora el hecho de que un comodín es "A" y otro es "B", en este paso.

• Recuerda que los comodines y las cartas entre ellos no se mueven.

4. Mira la última carta. Conviértela a un número de 1 a 53 (usa el orden normal: tréboles, diamantes, corazones y picas. Cuenta el valor obtenido empezando en la carta superior. Corta tras esa carta, dejando la última carta de la baraja a final. Si la baraja es:

• Una baraja con un comodín como última carta queda igual tras este paso. No hay cambios.

• Asegúrate de no invertir el orden cuando cuentes las cartas.

5. Mira la primera carta. Conviértela en un número de 1 a 53, de la misma manera que en el paso 4. Cuenta esas cartas (la primera carta es la uno). Escribe la carta tras la que hayas terminado en un papel; no la quites de la baraja. Si la carta es un comodín, no la apuntes, y vuelve al paso 1. Este paso no modifica el estado de la baraja.

6. Convierte la carta del paso anterior en un número. Del As de tréboles al Rey de tréboles se cuentan del 1 a 13. Del As de diamantes al Rey de diamantes se cuentan como 14-26. Del As de corazones al Rey de corazones se cuentan como 1 a 13. Por último, del As de picas al Rey de picas se cuentan como 14 a 26. Necesitamos ir de 1 a 26, no de 1 a 52, para poder convertir a letras.

Introducir una clave en la baraja• Antes de empezar a generar la ristra, es necesario

"introducir" una clave en la baraja. Ésta es, probablemente, la parte más importante de toda la operación, y en la que se basa toda la seguridad del sistema. Solitario es sólo tan seguro como lo sea su clave. Es decir, la forma más fácil de romper Solitario es imaginarse qué clave se está utilizando. Si no tienes una buena clave, el resto no importa. He aquí algunas sugerencias para realizar el intercambio de claves:

1. Utiliza dos mazos barajados de la misma manera. Las claves aleatorias son las mejores. Uno de los comunicantes puede barajar un mazo de forma aleatoria, y luego copiar la distribución de las cartas en el otro mazo (para así obtener dos mazos iguales). Uno de los mazos es empleado por el emisor, y el otro por el receptor. La mayoría de la gente no son buenos barajando, así que baraja el mazo al menos seis veces. Ambas partes deben tener otra baraja adicional ordenada de la misma forma, porque si se comete algún error nunca se podrá descifrar el mensaje. Recuerda también que la clave corre peligro mientras exista.

2. Usa un orden de Bridge. La descripción de una mano de bridge en un periódico o en un libro de bridge constituye una clave de aproximadamente 95 bits. Ponte de acuerdo con el otro comunicante en la forma de convertir el diagrama en un orden concreto para tu baraja. Luego ponte de acuerdo sobre la forma de meter los dos comodines en el mazo.

• Puedes intentar acordar alguna convención sobre qué columna de bridge utilizar; por ejemplo "usar la columna en el periódico local de tu ciudad natal correspondiente al día que se cifre el mensaje", o algo por el estilo. O una lista de palabras clave en el web del New York Times, y usar la columna de bridge del día del artículo que aparezca cuando buscas esas palabras clave. Si se encuentran las palabras clave, o son interceptadas, parecerán una "frase de paso

3. Usa una "frase de paso" para ordenar la baraja. Este método utiliza el algoritmo Solitario para crear un ordenamiento inicial del mazo. Ambos, el emisor y el receptor, comparten una frase de paso (por ejemplo, "CLAVE SECRETA"). Empezar con el mazo en un orden fijo; de la carta más baja a la más alta, con los palos en el orden visto previamente, y con los dos comodines al final, primero el A y luego el B. Ahora utilizamos Solitario, tal cual, pero al llegar al paso 5 contamos según el número que corresponda a la primera letra de la frase de paso. En otras palabras, volvemos a realizar el paso 4, pero usando el número que corresponda a la primera letra de la palabra de paso, en vez de usar el número correspondiente a la última carta de la baraja. Recuerda poner las cartas de arriba justo debajo de la última carta de la baraja, como antes.

• Repetimos los cinco pasos de Solitario tantas veces como letras tenga la palabra de paso. Es decir, la segunda vez utilizaremos la segunda letra, la tercera vez la tercera letra, etc.

• Recuerda, no obstante, que sólo hay unos 1.4 bits de aleatoriedad por cada letra, en el inglés estándar [el castellano es similar. N. del T.]. Necesitarás frase de paso de al menos 64 caracteres para hacerlo seguro. Yo recomendaría emplear al menos 80 letras, sólo por si las moscas. Lo siento; no puedes tener buena seguridad con claves más cortas.

CIFRADO RC4• El algoritmo de criptografía RC4 fue diseñado por Ron Rivest

de la RSA Security en el año 1987; su nombre completo es Rivest Cipher 4, teniendo el acrónimo RC un significado alternativo al de Ron's Code utilizado para los algoritmos de cifrado RC2, RC5 y RC6.

• RC4 es el sistema de cifrado de flujo Stream cipher más utilizado RC4 fue excluido enseguida de los estándares de alta seguridad por los criptógrafos y algunos modos de usar el algoritmo de criptografía RC4 lo han llevado a ser un sistema de criptografía muy inseguro, No está recomendado su uso en los nuevos sistemas, sin embargo, algunos sistemas basados en RC4 son lo suficientemente seguros para un uso común.

• Inicialmente el algoritmo era un secreto registrado, pero en septiembre de 1994 una descripción del algoritmo fue posteada anónimamente en una lista de correo de Cypherpunks. Enseguida pasó al grupo de correo sci.crypt y de ahí fue publicado en numerosos sitios de Internet. Debido al conocimiento del algoritmo, éste dejó de ser un secreto registrado. Sin embargo RC4 aún es una marca registrada. Actualmente la implementación no oficial de RC4 es legal, pero no puede ser utilizada con el nombre de RC4. Por este motivo, y con el fin de evitar problemas legales a raíz de la marca registrada, a menudo podemos verlo nombrado como ARCFOUR, ARC4 o Alleged-RC4. RSA Security nunca ha liberado el algoritmo de su RC4.

Descripción del algoritmo

• consiste en 2 algoritmos:

1-Key Scheduling Algorithm (KSA)

2-Pseudo-Random Generation Algorithm (PRGA).

• Ambos usan 8-by-8 S-box, funciones para generar números aleatorios de 256 bits, mod y técnicas para el manejo y conversión de caracteres, pero básicamente son solo un array de 256 números en el cual ambos son únicos en cuanto a rango y su valor va desde 0 hasta 255. Todos los números de 0 a 255 existen dentro del array, pero están solo mezclados de diferentes maneras, el KSA se encarga de realizar la primera mezcla en el S-Box, basado en el valor de la semilla dada dentro de él, y esta "semilla" puede ser de 256 bits de largo.

KSA• Primero, el S-box array es llenado con valores secuenciales

desde 0-255. Este array será llamado simplemente S. Entonces, el otro array de 256-bits es llenado con el valor de la "semilla", repitiendo como sea necesario hasta que todo el array es llenado. Este array será llamado K, entonces el array S es mezclado usando el siguiente pseudocódigo.

j=0;

for i = 0 to 255

{

j = (j+S[i] + K[i]) mod 256;

intercambia S[i] and S[j];

}

PRGAUna vez que eso es hecho, la S-box es intercambiada basándose en el valor de la "semilla". Esa es la "Key" programada para el algoritmo.

Ahora cuando el keystream data es necesitado, el Pseudo-Random Generation Algorithm (PRGA) es usado. Este algoritmo tiene 2 contadores, el i y la j, en el cual ambos son inicializados en 0 para comenzar. Después de eso, cada bit de keystream data es usado en el siguiente Pseudo-Code:

i = (i + 1) mod 256;

j = (j + S[i]) mod 256;

intercambia S[i] and S[j];

t = (S[i] + S[j] mod 256;

Exponer valor de S[t];

El valor expuesto del byte de S[t] es el primer byte del keystream. Este algoritmo es repetido para conseguir bytes adicionales de keystream. RC4 es simplemente suficiente, que puede ser fácilmente memorizado e implementado en el aire, y puede llegar a ser un poco "más" seguro si es usado apropiadamente.

Esta operación a veces se llama módulo de 2 suma (o resta, que es idéntico). Con esta lógica, una cadena de texto se pueden cifrar mediante la aplicación del operador XOR bit a bit a cada personaje con una determinada clave. Para descifrar la salida, más que volver a aplicar la función XOR con la clave se eliminará el sistema de cifrado.

ejemplo

• Inicialización:• 1. Si = i, i=0,1,...,255• 2. Rellenar el array Ki i=0,1,...,255 con la semilla de

clave secreta,• 3. semilla=2,5• 4. f=0• 5. Desde i = 0 hasta 255 hacer:• f = (f + Si + Ki) mod 256• Intercambiar Si y Sf

Estado inicial de arreglo “S”• S=[0,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,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255]

Introducir la semilla al arreglo “K”2 5 2 5 2 5 2 5 2 5 2 5 2 5 2

5 2 5 2 5 2 5 2 5 2 5 2 5 2 5

2 5 2 5 2 5 2 5 2 5 2 5 2 5 2

5 2 5 2 5 2 5 2 5 2 5 2 5 2 5

2 5 2 5 2 5 2 5 2 5 2 5 2 5 2

5 2 5 2 5 2 5 2 5 2 5 2 5 2 5

2 5 2 5 2 5 2 5 2 5 2 5 2 5 2

5 2 5 2 5 2 5 2 5 2 5 2 5 2 5

2 5 2 5 2 5 2 5 2 5 2 5 2 5 2

5 2 5 2 5 2 5 2 5 2 5 2 5 2 5

2 5 2 5 2 5 2 5 2 5 2 5 2 5 2

5 2 5 2 5 2 5 2 5 2 5 2 5 2 5

2 5 2 5 2 5 2 5 2 5 2 5 2 5 2

5 2 5 2 5 2 5 2 5 2 5 2 5 2 5

2 5 2 5 2 5 2 5 2 5 2 5 2 5 2

5 2 5 2 5 2 5 2 5 2 5 2 5 2 5

2 5 2 5 2 5 2 5 2 5 2 5 2 5 2

Primera interacción [0]

• I=0 <= 255• F=0• S[i] = S [0] = 0• K[i] = K [0] = 2• f = (f + Si + Ki) mod 256 = (0+0+2) mod 256 = 2• Antes de Intercambiar Si y Sf • S [i] = S [0] = 0• S [f] = S [2] = 2• Después de intercambiar Si y Sf• S [i] = S [0] = 2• S [f] = S [2] = 0

Primera interacción [0]• S=[2,1,0,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,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255]

Segunda interacción [1]

• I=1 <= 255• F=2• S [i] = S [1] =1• K [i] = k [1] =5• f = (f + Si + Ki) mod 256 = (2+1+5) mod 256 = 8• Antes de Intercambiar Si y Sf • S [i] = S [1] = 1• S [f] = S [8] = 8 • Después de intercambiar Si y Sf• S [i] = S [1] = 8• S [f] = S [8] = 1

Segunda interacción [1]• S=[2,8,0,3,4,5,6,7,1,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,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255]

Tercera interacción [2]

• I=2 <= 255• F=8• S [i] = S [2] = 0• K [i] = K [2] = 2• f = (f + Si + Ki) mod 256 = (8+0+2) mod 256 = 10• Antes de Intercambiar Si y Sf • S [i] = S [2] = 0• S [f] = S [10] = 10• Después de intercambiar Si y Sf• S [i] = S [2] = 10• S [f] = S [10] = 0

Tercera interacción [2]• S=[2,1,10,3,4,5,6,7,8,9,0,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,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255]

Cuarta interacción [3]

• I=3 <= 255• F=10• S [i] = S [3] = 3• K [i] = K [3] = 5• f = (f + Si + Ki) mod 256 = (10+3+5) mod 256 = 18• Antes de Intercambiar Si y Sf • S [i] = S [3] = 3• S [f] = S [18] = 18• Después de intercambiar Si y Sf• S [i] = S [3] = 18• S [f] = S [18] = 3

Cuarta interacción [3]• S=[2,1,10,18,4,5,6,7,8,9,0,11,12,13,14,15,16,17,3,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,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255]

Quinta interacción [4]

• I=4 <= 255• F=18• S [i] = S [4] = 4• K [i] = K [4] = 2• f = (f + Si + Ki) mod 256 = (18+4+2) mod 256 = 24• Antes de Intercambiar Si y Sf • S [i] = S [4] = 4• S [f] = S [24] = 24• Después de intercambiar Si y Sf• S [i] = S [4] = 24• S [f] = S [24] = 4

Quinta interacción [4]• S=[2,1,10,18,24,5,6,7,8,9,0,11,12,13,14,15,16,17,3,19,20,21,22,23,4,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,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255]

Sexta interacción [5]

• I=5 <= 255• F=24• S [i] = S [5] = 5• K [i] = K [5] = 5• f = (f + Si + Ki) mod 256 = (24+5+5) mod 256 = 34• Antes de Intercambiar Si y Sf • S [i] = S [5] = 5• S [f] = S [34] = 34• Después de intercambiar Si y Sf• S [i] = S [5] = 34• S [f] = S [34] = 5

Sexta interacción [5]• S=[2,1,10,18,24,34,6,7,8,9,0,11,12,13,14,15,16,17,3,19,20,21,22,23,4,2

5,26,27,28,29,30,31,32,33,5,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,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255]

Séptima interacción [6]

• I=6 <= 255• F=34• S [i] = S [6] = 6• K [i] = K [6] = 2• f = (f + Si + Ki) mod 256 = (34+6+2) mod 256 = 42• Antes de Intercambiar Si y Sf • S [i] = S [6] = 6• S [f] = S [42] = 42• Después de intercambiar Si y Sf• S [i] = S [6] = 42• S [f] = S [42] = 6

Séptima interacción [6]• S=[2,1,10,18,24,34,42,7,8,9,0,11,12,13,14,15,16,17,3,19,20,21,22,23,4,

25,26,27,28,29,30,31,32,33,5,35,36,37,38,39,40,41,6,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255]

Interacción final

• Al final S nos quedara así:• S= [2, 133, 10, 77, 204, 34, 187, 54, 51, 71, 73,

98, 147,..., 178, 250, 59, 74, 153, 91]

Generación de secuencia cifrante:

• I, F=0• Cada byte St de la secuencia cifrante se calcula

mediante:1. i = (i + 1) mod 256;

f = (f + Si) mod 256;2. Intercambiar Si y Sf3. t = (Si + Sf) mod 256

Generación de secuencia cifrante y Cifrado:

• Byte 1 de secuencia cifrante: Salida= S[88]= 144: 10010000

• Byte 1 de texto original: Entrada: M[1]=1: 00000001• Byte 1 de texto cifrado, Salida= C[1]= 145: 10010001• • Byte 2 de secuencia cifrante: Salida= S[182]= 14:

00001110• Byte 2 de texto original: Entrada: M[2]=32: 00100000• Byte 2 de texto cifrado, Salida= C[2]= 46: 00101110

• La presente salida trabajo con números enteros y decimales para simplificar la operación aunque perfectamente se puede trabajar con hexadecimales octales e incluso con caracteres en assqui, depende de cómo decida programarse