Criptografia basica para la "Resistencia"
Criptografia
En Estados Unidos, la criptografia es considerada un arma de guerra y se prohíbe su programación sin supervisor de la NSA y se imponen políticas de no exportación de código a países como Irak, Iran, Libia y Cuba, entre otros. este es uno de los motivos para la migración del proyecto OpenBSD a Canada, donde si los dejan trabajar en paz.
Pues bien, entrare en detalles de un sistema criptografico creado por -El Maestro- Bruce Schneier que se basa en el siguiente hecho:
"El número de formas distintas en que puede mezclarse una baraja francesa (póker) de 52 cartas es exactamente 52 × 51 × 50 × … 3 × 2 × 1, también llamado factorial de 52. Eso son más de 8 × 1067 formas distintas. Es un número inmensamente grande, de casi 70 dígitos. Tan enorme es que, si se mezclan bien las cartas, no hay razón probabilística para suponer que un mazo tenga las cartas en el mismo orden que ningún otro mazo de cartas que se haya mezclado nunca antes en toda la historia de la humanidad."
Pasando de ser una mera curiosidad matematica, el potencial de uso es grandioso. El algoritmo que Schneier Creo se llama Solitaire (solitario) y bueno Solitaire es un cifrado "stream", en modo "output-feedback" siendo, claro ,un metodo de Cifrado simetrico. Empecemos en como cifrar mensajes tenemos uno chiquito "DO NOT USE PC" desde aqui tomo la explicacion Textual del maestro Schneier (¿por que?, sencillo nadie lo puede explicar mejor, ni yo).
- 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 Solitaire 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 Solitaire 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 Solitaire, 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
Si eres realmente bueno, puedes aprender a sumar letras en tu cabeza, y simplemente sumar las letras del paso (1) y (2). Sólo hace falta un poco de práctica. Es fácil recordar que A+A=B; recordar que T+Q=K es más difícil.
Descifrando con Solitaire
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 Solitaire 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 restra la ristra obtenida con Solitaire.
Generando la ristra (keystream)
Esto es el corazón de Solitaire. Las descripciones del cifrado y descifrado dadas más arriba funcionan para cualquier cifrado "ristra" (stream) en modo "output-feedback". Es la manera en que funciona RC4. También es la manera en que funciona DES en modo OFB. Esta sección es específica a Solitaire, y explica cómo Solitaire genera la ristra.
Solitaire 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 {JCEA: El texto original en inglés se refiere, evidentemente, a una baraja de póker}. Hay 54!, sobre 2.31*10^71 posibles ordenamientos de la baraja. Mejor aún, hay 52 cartas en una baraja (sin los comodines), y 26 letras en el alfabeto. Este tipo de coincidencia es demasiado buena para dejarla pasar.
Para utilizar Solitaire, se necesita una baraja con las 52 cartas y los dos comodines. Los comodines deben ser diferentes. (Esto es habitual. La baraja que estoy usando mientras escribo tiene estrellas en sus comodines: uno tiene una estrella pequeña, y el otro tiene una estrella grande). Llámalo a uno comodín A y al otro comodín B. Generalmente hay algún elemento gráfico en los comodines que es igual, pero de diferente tamaño. Llama "B" al comodín que lo tiene más "grande". Es más fácil si puedes escribir una gran "A" y una gran "B" en los comodines, pero recuerda que tendrás que explicárselo a la policía secreta si alguna vez te cogen.
Para inicializar la baraja, cógela con la mano, cara arriba. Luego ponlas en su configuración inicial, que será su clave (hablaré de la clave más tarde, porque es un tema diferente a generar la ristra en sí). Ahora estás preparado para producir una ristra.
He aquí cómo generar un carácter. Esto es Solitaire:
- 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.
- 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, ¿te haces la idea?.
Es importante realizar los dos pasos anteriores en orden. Es tentador volverse perezoso y simplemente mover los dos comodines cuando los encuentras. Eso también funciona, a menos que estén muy cerca el uno del otro.
Así que si la baraja está en esta situación antes del paso 1:
A 7 2 B 9 4 1
al final del paso 2 debería ser
7 A 2 9 4 B 1
Y si la bajara fuese:
3 A B 8 9 6
Al final del paso 2 debería ser:
3 A 8 B 9 6
Si tienes alguna duda, recuerda mover el comodín A antes que el B. Y ten cuidado cuando los comodines se encuentren al final de la baraja. Si un comodín es la última carta, imagínatela como si fuera la primera carta, antes de empezar a contar.
- 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. Si la baraja fuera: 2 4 6 B 5 8 7 1 A 3 9
entonces tras el corte la baraja sería:
3 9 B 5 8 7 1 A 2 4 6
"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. Esto es fácil de hacer con las manos. Si no hay cartas en una de las secciones (porque los comodines están juntos, o porque uno está arriba y otro debajo de la baraja), simplemente considera esa sección como vacía y muévela de todos modos. Si la baraja es:
B 5 8 7 1 A 3 9
Tras el corte el intercambio, será:
3 9 B 5 8 7 1 A
Una baraja
B 5 8 7 1 A
no sufrirá ningún cambio tras este paso.
- Mira la última carta. Conviértela a un número de 1 a 53 (usa el orden normal: tréboles, diamantes, corazones y picas. Si la carta es un trébol, toma su número tal cual. Si es de diamantes, suma 13 a su valor. Si es de corazones, súmale 26. Si es de picas, súmale 39. Ambos comodines suman 53). Cuenta el valor valor obtenido empezando en la carta superior (normamente yo cuento de 1 a 13 una y otra vez, si es preciso; es más fácil que contar hasta un número alto de forma secuencial). Corta tras esa carta, dejando la última carta de la baraja a final. Si la baraja es: 7 ... cartas ... 4 5 ... cartas ... 8 9
y la novena carta es el 4, el corte sería:
5 ... cartas ... 8 7 ... cartas ... 4 9
La razón de dejar la última carta en su lugar es para hacer el último paso reversible. Esto es importante a la hora de analizar su seguridad de forma matemática.
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. La forma correcta de contar es pasar las cartas de una mano a la otra. No hagas montones sobre la mesa.
- 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.
- 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.
Así es como Solitaire cifra un carácter. Se usan estos pasos para generar una ristra tan larga como sea necesario; simplemente se repiten los pasos tantas veces como sea preciso, sin barajar el mazo. Y, recuerda, necesitarás una ristra tan larga como el mensaje original.
Sé que cada país tiene barajas diferentes. En general, no importa cómo se ordenen las cartas o cómo se conviertan las cartas a números. Lo que importa es que el remitente y el receptor se pongan de acuerdo en las reglas. Si no eres consistente, no te podrás comunicar.
Fijando 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. Solitaire es sólo tan seguro como lo sea su clave. Es decir, la forma más fácil de romper Solitaire 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:
- 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; la policía secreta podría encontrar la baraja y simplemente copiar su orden.
- 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. Una posibilidad obvia es poner el comodín A tras la primera carta que se mencione en el texto, y el comodín B tras la segunda carta mencionada en el texto.
Sé prevenido, no obstante; la policía secreta puede encontrar tu columna de bridge y copiarla. 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 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". Y elige tus propias convenciones a la hora de convertir las columnas de bridge en un ordenamiento para la baraja. Recuerda que la policía secreta también lee los libros de Neal Stephenson.
- Usa una "frase de paso" para ordenar la baraja. Este método utiliza el algoritmo Solitaire 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 Solitaire, 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 Solitaire 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.
Paso opcional (no utilizado con los ejemplos que siguen): Usa los dos últimos caracteres para situar los comodines. Si la penúltima letra es una G (es decir, 7), ponemos el comodín A tras la séptima carta. Si la última letra es una T (es decir, 20), ponemos el comodín B tras la carta número 20.
Recuerda, no obstante, que sólo hay unos 1.4 bits de aleatoriedad por cada letra, en el inglés estándar {JCEA: el castellano es similar}. 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.
Notas de Operación
- La primera regla de cualquier sistema de cifrado en modo "output-feedback" es que NUNCA debes emplear la misma clave para cifrar dos mensajes diferentes. Repite: NUNCA UTILICES LA MISMA CLAVE PARA CIFRAR DOS MENSAJES DIFERENTES. El hacerlo rompe irremediablemente la seguridad del sistema. La razón es simple: Si tienes dos textos cifrados, Ak y B+k, y estas uno del otro, obtienes (A+K)-(B+K)=A-B. Es decir, la resta de dos textos sin cifrar, sin ninguna clave, y eso es muy fácil de romper. Confía en mí en ese aspecto: tú puedes no saber recuperar los mensajes A y B a partir de A-B, pero un criptoanalista profesional sí puede. Esto tiene una importancia vital: nunca utilices la misma clave para cifrar dos mensajes diferentes.
- Usa mensajes cortos. Este algoritmo está diseñado para ser empleado con mensajes muy cortos: un par de miles de caracteres como mucho. Usa abreviaturas, jerga, etc. Si tienes que cifrar una novela de 100.000 palabras, utiliza un ordenador.
- Como todos los cifrados "output-feedback", este sistema tiene la desagradable característica de que nunca se recupera de un error. Si estás cifrando un mensaje y cometes un error en una de las operaciones, todas las letras siguientes serán también erróneas. No podrás descifrar el mensaje, aunque tengas la clave correcta. Y nunca lo sabrás. Así que si estás cifrando un mensaje, revisa todos los pasos del cifrado dos veces para estar seguro de que no cometes un error. Si estás descifrando un mensaje, asegúrate de que éste tiene sentido a medida que lo vas abriendo. Si estás empleado como clave una baraja ordenada de forma aleatoria, haz una copia de ella, por la misma razón.
- Solitaire es reversible. Es decir, que si dejas el mazo por ahí cuando has cifrado un mensaje, la policía secreta puede encontrarlo y rehacer el algoritmo hacia atrás, usando la baraja. Este proceso puede recuperar toda la ristra y descifrar un mensaje. Es importante que barajes el mazo completamente, seis veces, cuando termines de cifrar un mensaje.
- Para mayor seguridad, intenta hacer todos los pasos a mano y dentro de tu cabeza. Si la policía secreta irrumpe en tu habitación, simplemente baraja el mazo. No lo tires al aire; te sorprendería saber hasta qué punto las cartas mantienen su orden. Recuerda barajar la copia del mazo, si tienes una.
- Sé cuidadoso con las notas que tomas, si tienes que escribir algo. Contienen información sensible.
Quemar las notas es, probablemente, la forma más segura de deshacerse de ellas. Pero piensa en el tipo de papel. El papel sin cola, el papel de arroz utilizado en los cigarrillos, parece ideal. Un colega hizo algunas pruebas con papel "Club Cabaret Width", y ardían completamente.
No es tan difícil escribir sobre papel de fumar como podría pensarse. Usar un lápiz del número 2 con una punta fina pero roma funciona bien. El lápiz número 3 es aún mejor, pero es algo un poco raro para llevarlo por ahí. Los bolígrafos tienen varios problemas. Su punta dura puede dejar marcas en la superficie bajo el papel. Además, la tinta puede filtrarse y manchar la superficie inferior.
El papel de fumar está fabricado para quemarse completamente de forma limpia. El papel "Club" arde mejor cuando se quema al aire libre. Es decir, se enciende y se deja caer desde la altura del pecho. Este tipo de papel tiene la ventaja adicional de que ocupan muy poco volumen y se puede comer fácilmente si es preciso.
También son extremadamente finos. Esos papeles, cuadrados de unas tres pulgadas {JCEA: 7.5 centímetros}, pueden doblarse seis veces en un cuadrado de un centímetro de lado y de un milímetro de grosor. Una de esas hojas acomoda fácilmente 80 caracteres en 8 filas de bloques de 5 letras cada uno. Para alguien cuidadoso parece bastante factible el escribir hasta 120 caracteres.
- Solitaire puede implementarse en un ordenador. A menudo sólo uno de los extremos de la comunicación emplea una baraja; el otro extremo es lo bastante seguro como para emplear un ordenador. Usa el ordenador cuando puedas: es más rápido, y un ordenador no comete errores.
- La mayoría de los juegos de cartas no incluyen comodines, así que llevar encima una baraja con comodines puede resultar sospechoso. Prepárate alguna historia.
- La seguridad de Solitaire no depende del secretismo alrededor del algoritmo. Asumo que la policía secreta sabe que lo estás empleando.
Permalink: http://www.mononeurona.org/users/entry/vendaval/1133
Comentblogs:









