21/06/2018, 04:50:35 pm *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias: Homenaje a NUMERARIUS
 
 
Páginas: [1]   Ir Abajo
  Imprimir  
Autor Tema: PMC - Pinball Machine Cryptography (criptografía personal para textos)  (Leído 6181 veces)
0 Usuarios y 1 Visitante están viendo este tema.
anilandro
Nuevo
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 8


Ver Perfil WWW
« : 21/07/2011, 12:29:36 pm »



El PMC o Pinball Machine Cryptography es mi más reciente programa de cifrado. Su utilidad se centra en el cifrado seguro de textos de hasta 2 millones de caracteres, para ser guardados en el disco duro o ser enviados a través de email.

El PMC es de fácil uso y todas las opciones son accesibles desde la única ventana. El programa está contenido en un sólo fichero de 60 KB que no precisa instalación, pudiendo ser copiado en cualquier lugar del disco duro, en el propio escritorio del ordenador o incluso en un pendrive externo que lo convierte en portable. A la vez, mi deseo es que este programa sea utilizado libremente para uso particular, pero no permito ningún uso comercial ni que forme parte de recopilaciones con otros programas o su inclusión en webs de descargas sin mi autorización expresa.

El PMC trabaja en entornos Windows a partir de la versión 98, y sus requerimientos de memoria son tan bajos que puede funcionar perfectamente hasta con un viejo Pentiun de 100 Mhz, aunque, naturalmente, los procesos de cifrado/descifrado se realizarán bastante más lentamente que en un ordenador actual.

Ventana interface del PMC Pinball Machine Cryptography


El programa puede bajarse de forma gratuita desde los siguientes enlaces:

PMC-V2.01.rar   ( fichero de 17 KB en formato comprimido .rar, por si algún gestor de descargas se niega a descargar el .exe )
http://dl.dropbox.com/u/5592203/Progs/PMC-V2.01.rar

PMC-V2.01.exe  ( fichero ejecutable .exe de 60 KB )
http://dl.dropbox.com/u/5592203/Progs/PMC-V2.01.exe

En cuanto a los fundamentos del PMC, y a diferencia de otros complejos programas de cifrado basados en proceso de bits, como el DES o el AES, parte de una sencilla idea de encadenamiento de procesos que se me ocurrió hace un par de meses al contemplar en un bar como una adolescente con "piercings" hasta en las uñas manejaba con pasión no exenta de furia destructora una "Máquina del Millón" y ver como la bola metálica bajaba siguiendo caminos impredecibles al ir chocando y rebotando con los elementos interiores. De ahí viene precisamente el nombre de "Pinball Machine" puesto que en el entorno anglosajón tales máquinas recreativas se conocen de esta manera.

Pero a la vez, como no me resigno a que el PMC sea un programa más de los cientos semejantes que circulan por la red, le he incorporado algunas características que me rondaban desde hace tiempo en la cabeza y que considero originales, a la vez que aumentan tanto la versatilidad como la seguridad de uso.

Por otra parte, entiendo que para los amantes de la criptografía tal explicación debe resultar tremendamente parca, pero de momento prefiero dejar de lado los detalles y centrarme en explicar el uso del PMC, reservando para el final una descripción más pormenorizada de las interioridades del sistema.


La interface del PMC y su manejo

El "Cuadro de texto"
Bien. Una vez copiado el PMC en nuestro ordenador o en un elemento de memoria externo como un CD un DVD o u Pendrive, bastará un doble "click" sobre su icono para que se abra la ventana de operación. Observaremos como casi toda ella está ocupada por un cuadro de texto, en donde escribiremos nuestros mensajes en claro o los copiaremos de otras fuentes, como procesadores de texto o incluso de páginas web, y donde también aparecerán los respectivos mensajes cifrados.
Este cuadro de texto es de entrada y salida, es decir, tanto servirá para pasar de un texto claro a uno cifrado, como del cifrado al original.

Para realizar la primera prueba entraremos los que nos venga en gana, por ejemplo la socorrida frase que utilizo para estos menesteres "Cuando Carmencita llegó a casa de sus tíos, no se esperaba una acogida tan fría de parte de su primo Luis", que teclearemos directamente en el cuadro.

El "Recuadro de contraseña"
En la línea situada inmediatamente debajo del cuadro de texto podemos vemos dos botones y un recuadro de color rojo que muestra el mensaje "Enter password", en donde entraremos la contraseña, que será de al menos 10 caracteres alfanuméricos, momento en el cual el color del recuadro pasará a verde, indicando que ya podemos proceder al cifrado o descifrado del texto del cuadro superior.

En este recuadro entraremos la contraseña de prueba "abracadabra"

Como norma general, debemos ser conscientes que la contraseña suele ser el elemento de seguridad más descuidado por los usuarios de un sistema de cifrado. Si como contraseña utilizamos nuestro nombre "pacoperezgarcia", nuestro número de teléfono, o el año, mes y día en que nacimos, no nos quejemos si alguien cercano o que pueda averiguar datos personales la descubre antes del décimo intento. E incluso con contraseñas más extrañas e impersonales existen los procedimientos llamados de "diccionario" y de "fuerza bruta", que utilizados por expertos y basados en la rapidísima velocidad de cálculo de los ordenadores actuales, son capaces de probar miles de palabras o combinaciones de letras por segundo, y pese al gran número de posibilidades iniciales, superar en cuestión de horas o a veces de minutos la barrera que nosotros creíamos infranqueable.

Una contraseña debería ser por lo tanto "segura" (precaución que después de tanto hablar no hemos adoptado con "abracadabra"), y para ello debería tener una longitud mínima adecuada y no contener ningún nombre común o geográfico, pero sí incluir a la vez mayúsculas, minúsculas, números y caracteres alfanuméricos. A este respecto, el Pinball Machine Cryptography admite todos los caracteres imprimibles desde el teclado de nuestro ordenador, e incluso frases enteras conteniendo espacios, desde una longitud mínima de 10 caracteres a un máximo de 40. Es evidente por lo tanto que una contraseña más larga otorgará una mayor seguridad, aunque en este caso la velocidad de proceso, especialmente con textos muy largos, también se verá sensiblemente afectada.


Los Botones de operación

"Crypt" (Cifrar)
Bien, ya hemos introducido el mensaje que queremos ocultar a vistas no autorizadas y también la contraseña que permitirá el proceso, ahora, sin más dilación, pulsaremos el botón rojo rotulado como "Crypt" (Cifrar), situado precisamente a la izquierda de la contraseña, y casi al instante veremos como el mensaje original ha sido sustituido por el siguiente:

"ofkkqaoomhogoglfnpvkubllqcookfyiyntmugqhqntpkmyothppnmsbxpxpsozcuiujtpufqmtowhqkoftpzesdpnojonqonoohyfobvkrlrozjqkyfz
nlctencofzanbzpsovltllaxiuakfpiojtetmvhpbpbqolfxkogqjndomwmmelkufqaqkmgndvizckawlykscmkyhnasluj"

El resultado es un galimatías imposible de asociar con la frase inicial, porque de esto se trata el cifrado de un texto. Dicho galimatías sería el que guardaríamos de miradas indiscretas en nuestro ordenador o enviaríamos a través de e-mail a un destinatario que por descontado ha de conocer las contraseña que hemos utilizado.

Un detalle que salta a primera vista es que en el texto resultante son todo minúsculas y hay más caracteres que en el original, más o menos el doble. Esto es normal y no tiene que preocuparnos porque es una consecuencia del proceso de cifrado. Naturalmente, el resultado también es un texto, y por lo tanto es tan cifrable como el mensaje en claro original, de tal forma, que si queremos cifrarlo dos veces, con la misma contraseña o con otra distinta, sólo tenemos que repetir el proceso anterior.

"Decrypt" (Descifrar)
Supongamos que ahora somos el destinatario del mensaje. Seleccionaríamos el texto cifrado recibido por email y con el habitual procedimiento de Windows "Copiar" lo cargamos en el portapapeles. A la vez vamos a nuestro programa PMC y pulsamos la tecla "Paste" (Pegar), con lo que el texto aparecerá en el recuadro superior. Introducimos la contraseña en su lugar correspondiente y pulsamos el botón verde "Decrypt" (Descifrar), situado debajo de anterior de cifrado, obrando el milagro de recuperar en un instante la frase de Carmencita y las frías sensaciones con su primo Luis.

"Copy" y "Paste" (Copiar y Pegar)
Tras describir los botones que nos permiten efectuar las operaciones básicas de cifrar y descifrar, y a igual que antes hemos utilizado "Paste", el botón "Copy" (Copiar) copiará en este caso la totalidad del texto superior, sea cual fuere, en el portapapeles de Windows, para ser pegado o utilizado en cualquier otro programa de proceso de textos, tal como el Word, el Wordpad o incluso el Block de Notas.

"Recover" y "Clear" (Recuperar y Borrar)
Hay dos botones más, el denominado "Recover" (Recuperar), que nos recupera el texto anterior a la última operación, y el habitual "Clear" (Borrar), que nos limpia la ventana para poder introducir un nuevo texto.


Funcionalidades adicionales del PMC

Hasta aquí las funcionalidades que podemos encontrar en muchos de los programas de cifrado ya existentes, pero ya he dicho que el PMC dispone de otras añadidas que no son tan comunes:

"Sleep" y "Wake up" (Dormir y Despertarse)
La más "inocente" aunque no carente de utilidad es sin duda la tecla "Sleep" (Dormir), que ya existía aunque con otro nombre en uno de mis programas de cifrado anteriores que denominé Polyandros. Esta función permite ausentarnos de nuestro ordenador dejando el PMC encendido, en la seguridad que mientras estemos fuera nadie va a poder leer los mensajes escritos en su ventana o manipular los controles de operación. Al pulsar "Sleep" todos los cuadros de texto se quedan en blanco e inhabilitados para la escritura, de igual forma los botones tampoco son operativos, excepto el propio "Sleep", que ahora muestra un color amarillo más resaltado y ha cambiado su texto por "Wake up" (Despertarse).

Naturalmente, este "despertar" tampoco ocurrirá de manera automática al pulsar "Wake up", sino que en este caso el recuadro de contraseña nos mostrará el mensaje "Enter security password and click again", lo cual significa que deberemos entrar la "contraseña de seguridad" y pulsar de nuevo el botón. Y bien, hasta ahora nosotros conocemos una sola contraseña a la que no le hemos puesto ningún calificativo, entonces ¿cual es la contraseña de seguridad?. Pues sencillamente los seis primeros caracteres de la que hemos utilizado anteriormente. En nuestro caso "abracadabra" tiene 11 caracteres, con lo que la de "seguridad" será "abraca".
Una vez introducida, pulsaremos de nuevo "Wake up" y el PMC recuperará su estado funcional, con todos los datos que tuviera introducidos.

"Clipboard" (Portapapeles)
Otra de las funcionalidades permite operar con textos almacenados por otros programas en el portapapeles de Windows, y cifrarlos y descifrarlos sin ni siquiera cargarlos en el recuadro del PMC. Esto también estaba incluido en el Polyandros, aunque de forma menos evidente a través de botones ocultos en un menú secundario. En el PMC, bastará con marcar la casilla de verificación denominada "Clipboard" (Portapapeles), y todas las operaciones de las teclas se efectuarán a partir de entonces en este espacio de Windows.

"Time window" (Ventana de Tiempo)
Y la tercera función añadida al PMC, en este caso totalmente nueva, es la "Time window", o "Ventana de tiempo", que permite cifrar un mensaje para que sea leído en una fecha o tiempo posterior y por espacio de una hora, de manera que aún disponiendo de la contraseña, que junto con el texto cifrado podría ser sustraída, resultaría imposible recuperar un mensaje del que se desconoce cual era la "ventana temporal".

El "Time window" se activa marcando la casilla de verificación correspondiente. En este momento ya podemos introducir o cambiar en el valor de los recuadros "Year" (Año), "Mon." (Mes), "Day" (Día) y "Hour" (Hora), la ventana de una hora autorizada. Por ejemplo, introduciendo 2011, 07, 15, 11 permitiría leer el mensaje el dia 15 del mes de Julio del 2011, entre las 11 y las 12 horas, siempre en horario local.
Como es normal, el descifrado de un mensaje que contenga una "Ventana de tiempo" a de realizarse marcando también dicha casilla de verificación, y sin alterar los valores de fecha y hora que el programa toma de las variables internas del ordenador en lapsos de 1 minuto.

"Lng / Proc " (Longitud y Proceso)
Y por último, en la esquina inferior derecha podemos ver el indicador "Lng / Proc" que nos informa en todo momento de la longitud en caracteres del mensaje contenido en el cuadro superior, y durante el cifrado y el descifrado nos indicará el estado del proceso en tanto %.


Y para los fanáticos de la criptografía...

Con esta somera descripción espero que cualquier persona con conocimientos básicos de informática pueda manejar el PMC y utilizarlo en sus comunicaciones cifradas, pero como he adelantado al principio de esta página, también me gustaría hablar un poco de las sus interioridades y excitar con ello la curiosidad de los más criptoadictos.

Sobre la profundidad de esta descripción diré que nunca he creído en la "seguridad por oscuridad", es decir, que la fortaleza de un programa o procedimiento de cifrado dependa principalmente de que no se conozca como funciona interiormente. Porque si bien esto puede ser efectivo ante usuarios normales, raramente aguantará un análisis de ingeniería inversa de hackers experimentados, y mucho menos si estos pertenecen a agencias de seguridad de ámplios recursos. Pero aún sabiendo esto, existe otro factor, y es que ante el descontrol legal que existe en Internet, el trabajo de varios meses realizado en este programa pueda ser aprovechado para fines comerciales por algún listo sin escrúpulos con sólo cambiarle cuatro cosillas de la interface. Por este motivo no voy a hacer público el listado ni algunos de los detalles internos, que reconozco pertenecen a esa criticada "oscuridad", que si bien pienso que no representa la espina dorsal de la seguridad del PMC, sí constituye la primera barrera a la que deberá enfrentarse quien pretenda romper el cifrado.

Aparte de esto, lo que sí puedo asegurar, es que a falta de debilidades conocidas (que en sistemas de cifrado siempre pueden dar sorpresas), el código del PMC no contiene "puertas traseras" que permitan romper una clave de 40 caracteres con menos esfuerzo que el necesario para explorar su ingente número de posibilidades, que teniendo en cuenta los 104 caracteres imprimibles más habituales, viene a ser de 48... seguido de 79 ceros... !!!
En relación a esta cifra, que por su magnitud no sabría como llamar, un sencillo cálculo nos indica que si dispusieramos de un ordenador capaz de realizar un ataque de "fuerza bruta", es decir, ir explorando todas las posibilidades, a una cadencia de 1 millón de pruebas por segundo, necesitaría un tiempo muy superior a la antigüedad del propio universo para acabar la tarea.

Bien, precisadas estas cuestiones, entro en materia.

El PMC es un sistema de cifrado de clave secreta y simétrica, es decir, que la clave, contraseña o password ha de estar en conocimiento de emisor y del receptor del mensaje, y que la misma clave sirve para cifrar y para descifrar. Este sistema, a diferencia de otros anteriores de mi misma autoría, como el Aleatix o el Polyandros, no utiliza generadores de números pseudoaleatorios, los cuales siempre he considerado un punto débil por la mediocre fiabilidad de sus rutinas. Por otra parte, antes he contado la anécdota de la quinceañera de los piercings y la "Máquina del Millón" como origen de la idea, pero para explicar el funcionamiento de este cifrado prefiero utilizar una analogía distinta. Imaginaos por ejemplo una mesa de billar algo especial, que en vez de cuatro lados tenga veintiseis (una por cada letra del alfabeto "abcdefghijklmnopqrstuvwxyz", y que tales lados estén formando un polígono. Si lanzamos una bola con cierto ángulo contra uno de los lados, por ejemplo el de la letra "m", la bola rebotará y se dirigirá a otro lado distinto, por ejemplo la "h", que también alcanzará con un ángulo diferente. Entonces, si consideramos que el tapete no tiene rozamiento ni se pierde ímpetu en los rebotes, dicha bola seguiría cruzando la mesa en trayectorias que en un principio no hubiéramos podido predecir. Mientras tanto contaremos los rebotes y detendremos por ejemplo el proceso en el que hace 50, y anotaremos el último lado en que ha rebotado, que imaginemos será la letra "v", apuntando también el ángulo de salida que acompaña a este movimiento.

"Mesa de Billar" de 26 lados regulares

 
En estas circunstancias, la "m" inicial (con su ángulo de entrada) se habrá transformado en la "v" final (con su ángulo de salida). Naturalmente, si el ángulo inicial hubiera sido ligeramente distinto, al cabo de 50 rebotes también lo sería con casi total probabilidad el lado-letra de salida y su ángulo asociado.
Como muchos ya habrán adivinado, el proceso es complejo pero totalmente reversible, ya que si disparamos una bola hacia el lado-letra de salida y con un ángulo contrario también al de salida, tras 50 rebotes la bola nos vendrá de la "m" inicial y con un ángulo también contrario al que tenía en la entrada.

En ese caso, la clave de "cifrado" que ha convertido la "m" en la "v" sería el ángulo de entrada de la bola dirigiéndose hacía el primer punto de rebote, pero puesto que ya vemos claro el concepto básico, compliquémoslo un poco más. Imaginemos ahora que los 28 lados de nuestro extraño billar no son perpenticulares respecto a hipotéticas líneas trazadas desde su punto medio al centro geométrico de la mesa, sino que todos ellos están más o menos inclinados respecto a dichas líneas dependiendo de los caracteres que forman una palabra clave. Entonces ya podemos prescindir de variar el ángulo de entrada, porque las diferencias las van a establecer las especiales "relaciones de rebote" entre los distintos lados y sus ángulos de inclinación.

"Mesa de Billar" de 26 lados con ángulo variable de rebote


Para ello, a partir de la observación, deduje la ley de "rebote", teniendo en cuenta un ángulo de referencia cero, común a superficies y movimientos.

AS = (AL x 2) - AE      Siendo: AS el ángulo de salida, AL el ángulo de la superficie de rebote y AE el ángulo de entrada

En una primera aproximación al programa PMC, que como el anterior Polyandros he realizado en Visual Basic 6.0, intenté plantear el proceso para que siguiese de forma casi "gráfica" el esquema del billar y los rebotes, pero resultaba complejo, lento y poco versátil frente a cambios. Además, las leyes del rebote en un billar, tal como ocurre con el reflejo óptico en un espejo tienen algunas particularidades, como el hecho que si en algún momento el ángulo de incidencia es par, con independencia de la "inclinación de siguiente lado de la mesa" el de salida también lo será, y por tanto todos los "rebotes" posteriores serán también pares, descartando los números impares como posible salida y despreciando un 50% de las posibilidades.

Por este motivo, los "rebotes" de acuerdo a la fórmula fueron sustituidos por simples "sumas" de números contenidos en una matriz unidimensional de 256 casillas, una por cada posible carácter ASCII que pudiera cifrar. El propio índice de 0 - 255 es la referencia inicial que representa al carácter de entrada y salida, y el valor de la equivalencia es establecido mediante los valores también ASCII de la contraseña que se utilice.

Las "sumas" que convierten un carácter en otro forman de esta manera una tabla "lineal" que convertimos en circular "uniendo los extremos" con expresiones de Basic como las siguientes:

if x > 255 then x = x - 256
if x < 0 then x = x + 256

De manera que un valor 275 será en realidad 275 - 256 = 19, o un -66 será -66 + 256 = 190

Para explicar como ocurren las "sumas", reduzcamos momentaneamente nuestra tabla de 256 valores a sólo 26. La clave que utilizaremos seguirá siendo "abracadabra"

carácter A B C D E F G H I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
valor    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

clave    a  b  r  a  c  a  d  a  b  r  a  a  b  r  a  c  a  d  a  b  r  a  a  b  r  a
suma     1  2 18  1  3  1  4  1  2 18  1  1  2 18  1  3  1  4  1  2 18  1  1  2 18  1

Si resuminos quitando los caracteres y dejando sólo las dos filas de números, tendremos la siguiente tabla:

valor   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
suma    1  2 18  1  3  1  4  1  2 18  1  1  2 18  1  3  1  4  1  2 18  1  1  2 18  1

Ahora, si con dicha tabla queremos cifrar la palabra "HOLA" en 5 ciclos de suma, tomaremos primero la H, cuyo valor en la primera línea es 8, ahora miramos cual es el valor de la "suma" correspondiente en la 2ª línea, que es 1...

- La primera suma será 8 + 1 = 9, vamos al 9 y miramos su "suma", que es igual a 2
- La segunda suma será 9 + 2 = 11 vamos al 11 y miramos su "suma", que es igual a 1
- La tercera suma será 11 + 1 = 12 vamos al 12 y miramos su "suma", que es igual a 1
- La cuarta suma será 12 + 1 = 13 vamos al 13 y miramos su "suma", que es igual a 2
- La quinta suma será 13 + 2 = 15

Por lo tanto, la letra "H" (valor 8) se habrá convertido en "O" (valor 15)
Siguiendo el mismo proceso, las siguientes letras de la palabra "HOLA", que son a "O", la "L" y la "A", se transformarán en:

O (valor 15) se transforma en V (valor 22)
L (valor 12) se transforma en S (valor 19)
A (valor 1) se transforma en H (valor 8)

Con lo que nuestra palabra "HOLA", cifrada con la clave "abracadabra" y 5 ciclos de "suma", se transforma en "OVSH".

Ésta es la idea básica del PMC... pero hay un problema del que sin duda cualquier lector con habilidades matemáticas se habrá dado cuenta... que el proceso numérico, tal como lo explico arriba, no es reversible, ya que conocer el resultado de una suma, ni aún disponiendo de la tabla de equivalencias, nos suministra información alguna sobre el valor de los sumandos intermedios ni sobre cual podría ser el primero de ellos, que corresponde precisamente al carácter en claro que debemos hallar en el descifrado.
En efecto, si tomamos por ejemplo el valor de la "O" (15), no hay manera posible de saber si en 5 "sumas" ha venido del "H" (8) o de algún otro valor, porque a buen seguro existe más de un camino ascendente que dará el mismo resultado. Y si eso ocurre en 5 ciclos, imaginaos las posibilidades que puede haber en 2.000.

Reconozco que este problema me trajo de cabeza durante casi un mes, en que realicé más de un centenar de cambios en el algoritmo del encadenamiento del proceso de sumas. Algunos iban bien pero necesitaban la introducción de caracteres adicionales de control o iban dejando rastros que podrían comprometer la fortaleza del cifrado, hasta que conseguí dar con un procedimiento relativamente simple, totalmente reversible y que estimo seguro... cuya descripción pormenorizada de momento voy a guardarme... pero como no quiero cerrar todas las puertas a la curiosidad, diré para aquellos aficionados a los retos que la respuesta tiene que ver con la forma de cierta constelación utilizada para identificar la estrella la Polar, situada para más señas en las antípodas horarias de la Osa Mayor.

Retomando detalles más concretos, añadiré que en la versión final del PMC la clave no sólo afecta a los valores de la tabla de sumas, sino también al número de los "ciclos" de dicha suma, que con una clave de 10 caracteres pueden estar comprendidos entre 200 y 400, pero con una clave de 40 caracteres alcanza la friolera de entre 4 y 8 mil.

Otro detalle que tal vez haya intrigado a más de uno es como funciona el "Time window", o ventana de tiempo. Pero en realidad es bastante sencillo. Si se activa dicha opción, los datos de fecha y hora que nosotros elegimos como inicio de la ventana modifican la contraseña elegida, de manera que internamente el programa está en realidad utilizando una contraseña distinta a la que hemos especificado en el recuadro.
En este caso, el receptor del mensaje sólo ha de activar la opción de "ventana" en la fecha y hora correcta, porque en el descifrado el programa tomará los datos de fecha y hora del reloj del sistema operativo, y con ellos modificará internamente la contraseña a igual que se hizo en el cifrado. Naturalmente, si nosotros hemos codificado el mensaje para que sea leído el 15 de agosto del 2011, a las 10 de la mañana, en el descifrado, sólo a esta hora y hasta que se cumplan las 11, la contraseña interna será igual a la que se cifró, y por tanto el programa recuperará sin problemas el texto original.

Se puede argumentar que el receptor puede cambiar el calendario y el reloj de Windows para buscar una "falsa ventana" en fecha y hora distintos, y es cierto, pero indudablemente, si quien lo intenta no es el receptor legal del mensaje, el tener que ir explorando mes a mes, día a día y hora a hora, añade un notable grado de dificultad al hecho que probablemente tampoco conoce la contraseña.

Y por último, estoy seguro que los iniciados en el tema habrán hecho algo más que darse cuenta que el cifrado PMC aumenta el número de caracteres. De hecho, la palabra "HOLA" queda convertida en "ogmevdzhmi", que es exactamente el doble más dos, relación que se mantiene para cualquier longitud. La razón concreta de ello es la necesidad de permitir el cifrado de estos 104 caracteres imprimibles más algunos caracteres de control que afectan al formato del mensaje original, como los retornos de puntero y los saltos de línea. Algunos entendidos verán en ello una cierta referencia la sistema clásico Polybios y otros la manera de reflejar valores en forma hexadecimal... y ninguno de ellos andará errado del todo, pero advierto a quienes les gustan los retos que también en este caso las similitudes son engañosas.

En todo caso, espero vuestros comentarios sobre el programa y deseo que os sea útil para guardar vuestros textos privados en el ordenador o enviarlos de forma segura a quien deba leerlos.

Un saludo
En línea

"La vida solo es energía que ha aprendido a defenderse", Anilandro
argentinator
Consultar la FIRMAPEDIA __________________________________________________________________________________________________________________
Administrador
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 7.180

Vean mis posts activos en mi página personal


Ver Perfil WWW
« Respuesta #1 : 21/07/2011, 02:08:16 pm »

Nunca bajo archivos ejecutables porque soy muy supersticioso.

Siempre pienso que .EXE = "contiene un virus"

Así que no lo voy a bajar.

Pero además, para hacer un análisis crítico del algoritmo que usaste, se necesita el código fuente.

Más todavía, la parte de criptografía tiene que estar aislada en el código del resto, para que se entienda.
Se puede muy bien plantear un algoritmo de cifrado sin necesidad de ponerle una interface gráfica.

Aunque ya has puesto el programa para que la gente lo pueda usar... y así claro que se necesita que el programa ya esté funcionando.

Hay demasiados elementos ocultos en tu algoritmo de cifrado,
y así no se puede hacer una crítica.

Métodos que se me ocurren para descifrar:

* Por ingeniería inversa, un centenar de Nerds bien puede arribar a la conclusión de que el programa necesita una "fecha y hora".
* Entonces es equivalente a tener que descifrar una contraseña, que al final tiene un número de 8 dígitos.
* Poniendo varios procesadores a trabajar en forma independiente, y "espiando" los "if" en el código ensamblador del programa, se puede ir detectando, caracter a caracter, cuál es el password+fecha esperado.
* Sabiendo dónde están los "if", no sé por qué los hackers dan tantas vueltas para descifrar una contraseña. A lo mejor el "assembler" es más complicado de lo que imagino, o a lo mejor los "hackers" no saben assembler.

Si al final el cifrado es "análogo" a una tabla que transforma unos caracteres en otros,
hay maneras heurísticas de ir descubriendo de qué caracteres se trata,
sabiendo por ejemplo la probabilidad de que un par de caracteres estén juntos en idioma español.

¿Por qué entonces, no usar los exitosos métodos de cifrado por clave pública?

------------------------------------------------------------

Nota: No sé assembler, así que no puedo emplear el método que propuse para descifrar tu clave.

En línea

anilandro
Nuevo
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 8


Ver Perfil WWW
« Respuesta #2 : 21/07/2011, 03:21:02 pm »

Bueno, tienes razón en la generalidad de tus comentarios, pero en este caso no se puede olvidar el contexto y que el resultado responde a una determinada intencionalidad.

Los .exe pueden contener virus (éste no los contiene), pero también otros muchos formatos de archivos y scripts que aprovechan los agujeros de seguridad de los navegadores o incluso de programas procesadores y lectores de texto. Así que para salir de dudas, pasarlo por un par de antivirus, tener copias de seguridad de lo importante y no preocuparnos por fantasmas, que si así fuera no nos conectaríamos a Internet y sólo utilizaríamos programas hechos por nosotros mismos.

Tampoco pido un análisis crítico del código, porque en este caso lo habría hecho público, y lo que no quiero es precisamente lo que ya me ha ocurrido un par de veces en otros temas de programación, que después de publicarlo, otros cambian cuatro cosas, ponen su nombre y hasta acaban vendiendo el resultado, cuando tú lo has dado gratis simplemente para compartir actividades y ayudar a los demás.

No me preocupa la ingeniería inversa más allá de que den con el código que no quiero que me copien. Ya la doy por hecha, pero también hay que darse cuenta que copiar es mucho más fácil que destripar el assembler, y teniendo en cuenta que no voy a guardar el dossier de quien mató a Kennedy, sospecho que tampoco serán legión los que se van a poner en ello como si les fuera la vida.

Vigilar los "if" te aseguro que no va a servir para nada, simplemente porque no se utilizan de forma determinante en el proceso de cifrado/descifrado. El sistema es una tabla de sustitución establecida por la contraseña, naturalmente, pero los punteros saltan en su interior de un lugar a otro 300, 3012 o 7846 veces para cada carácter, y cada nuevo proceso es afectado por el anterior, así como cada nuevo carácter arrastra modificaciones que sólo puedes deshacer en sentido contrario y sin cambiar ni uno sólo de los centenares de miles de pasos que se han dado. Equivocas uno y en vez del texto de Carmencita, obtienes un galimatías de interrogantes y saltos de línea que no te dicen ni de lejos donde te has equivocado. En realidad actúa como un multicifrado en serie que dudo deje muchas marcas estadísticas o coincidencias idiomáticas que puedan utilizarse.

Lo de la ventana de tiempo, está claro que es una pijadita que sólo puede poner en apuros a un criptoanalista aficionado, ya que en realidad, como digo en el texto, cambia la contraseña interna. Si por cualquier método la encuentras (y además has roto el assembler para saber como afectan las fechas a la contraseña original), no vas a tener problema en romper el cifrado. Pero bueno, espero que el primero que se meta en ello no trabaje en Network Associates.

En resumen, reconozco que sólo soy un aficionado a la criptografía, pero he leído suficientes cosas sobre ella para saber que en esta materia no existen las seguridades absolutas, hasta las murallas que parecían más seguras han acabado cayendo, así que su fuerza no es si aguantarán o no, sino cuanto tiempo lo harán frente a los esfuerzos que existan en su contra. Estos programas son para mí más un divertimento que otra cosa, y como podrás ver si visitas mi web, mi interés en el cifrado se centra más en los métodos clásicos que en otra cosa, por tanto prefiero incluso reinventar el Vigenère que repetir lo que otros han hecho con curvas elípticas o en la factorización de números primos. Tal vez algún día me meta con sistemas de clave pública, pero de momento, estoy lejos de acometerlo.

Un saludo
En línea

"La vida solo es energía que ha aprendido a defenderse", Anilandro
argentinator
Consultar la FIRMAPEDIA __________________________________________________________________________________________________________________
Administrador
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
Argentina Argentina

Mensajes: 7.180

Vean mis posts activos en mi página personal


Ver Perfil WWW
« Respuesta #3 : 21/07/2011, 04:30:02 pm »

En resumen, reconozco que sólo soy un aficionado a la criptografía,

Bueno, yo sólo sé programar y encima estoy pasado de moda.

Pero hay cosas que las cuestiono desde el sentido común... o el olfato.

Como sea, no le veo mucho sentido poner un programa de encriptado en un foro de matemática, y que luego no se pueda saber cuál es el algoritmo, para poder hacer una crítica.

¿Sólo tengo que confiar en tu programa, y usarlo?

Para proteger código, se puede acudir a la oficina de Propiedad Intelecual, que por una pequeña suma de dinero te mantiene protegido por 3 años, así nadie puede venderlo.
Si alguno lo vende con su nombre, juicio.

Incluso, si hay leves modificaciones, eso se nota, y quisiera creer que estás protegido también en ese caso.


Saludos
En línea

anilandro
Nuevo
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 8


Ver Perfil WWW
« Respuesta #4 : 22/07/2011, 06:09:42 am »

Tal vez me decida a registrarlo, aunque la única vez que hice algo así con un circuito electrónico, hace casi treinta años, me gasté un verdadero pastón y me lo copiaron igualmente desde la sección alemana de una multinacional francesa que fabricaba y sigue fabricando cohetes, y cuando hallé a quien pedir explicaciones me dieron el nombre de su carísimo bufete de abogados de Berna para que les enviara los míos y pudiera comenzar el interminable litigio que por descontado ellos sabían que yo no podría aguantar... en fin, que antes de comenzar ya me ganaron por goleada.

Así que a mis 57 años y ganándome la vida con otras cosas, sobre el modestísimo Pinball Machine Cryptography, si alguien lo quiere usar para esconder su listado telefónico o pasarse mensajitos con la amiga de Australia, pues adelante, y si no, siempre puede utilizar las últimas versiones del PGP, de las cuales el propio Zimmermann, padre de la criatura, dice que él no se fiaría. O sea, que no veo la diferencia, pero claro, si con sólo mentar a los virus ya se causan tantas pesadillas, mejor ni probamos ninguno de los dos.

Opino que un buen reto para un programador, y más en un apartado de Criptografia, puede consistir en romper el cifrado de un mensaje hecho con algo que comparado con los sistemas actuales no puede ser mucho más que una chapuza que escribe los mensajes al revés. Y para quien sólo se defina como matemático otro reto incluso más atractivo podría ser incluso averiguar como pueden revertirse varios miles de sumas y encontrar el primer factor de la lista partiendo del último... Así que, sinceramente, tampoco veo en ningún punto la falta de adecuación como tema de foro. pero bueno, yo no soy moderador (con una vez ya tuve suficiente). Así que resumiendo, mi mensaje es totalmente desinteresado, doy gratis el programa fruto de varios meses de trabajo y explico incluso más de lo que me parece prudente a tenor de las circunstancias, es todo cuanto puedo hacer.

Un saludo 

En línea

"La vida solo es energía que ha aprendido a defenderse", Anilandro
Phicar
Pleno*
*****

Karma: +1/-0
Desconectado Desconectado

Sexo: Masculino
Colombia Colombia

Mensajes: 514



Ver Perfil WWW
« Respuesta #5 : 22/07/2011, 12:47:19 pm »

El .exe no tiene ninguna sentencia magnosa(a entender virus)...lo baje, y tio ya te he dicho que el VB no es para esto y ademas no me permite analizar a cabalidad el algoritmo aparte de que tiene dependencias de sistema para poder correrse. He estado inversandolo para poder auditarlo bien, pero ese lenguaje me hace las cosas mas feas xDDDD, por lo demas no es buena idea que el algoritmo escriba las cosas en mas caracteres de los que uno metio y tambien parece interesante lo de el billar :sonrisa:.

Vamos a ver que sale :sonrisa:.

y si deberias poner el code seguro que nadie te va a copiar nada, y si lo hacen no sera en este tipo de foro.
En línea

redinfocol.org
anilandro
Nuevo
*

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
España España

Mensajes: 8


Ver Perfil WWW
« Respuesta #6 : 23/07/2011, 09:30:03 am »

No, si ya sé que no hay ningún virus en mis ficheros, y también entiendo las reticencias a cargar sin más un EXE, pero si sólo cargáramos en nuestros ordenadores aquello cuyo código podemos analizar, probablemente la informatica no habría ido mucho más allá del Altair y los mainframe IBM de los 60.

En cuanto al Visual Basic no tiene ningún problema, excepto para los que por principio se niegan a utilizar Windows... pero resulta que el PMC está hecho precisamente para Windows. El problema con el archivo RICHTX32.OCR es que utilicé un objeto denominado RichTextBox como ventana de entrada y salida de textos hasta 2 millones de caracteres de longitud, ya que el control más habitual TextBox solo permite 65.000. Pero la cosa surge porque algunos ordenadores y versiones de Windows no contienen el archivo .ocx que permite interpretar el objeto citado, y por tanto el programa se detiene por error.

Si éste es su caso, puede descargar el archivo desde la siguiente dirección:

http://dl.dropbox.com/u/5592203/Progs/RICHTX32.OCX

...y guardarlo en la misma carpeta  sitio donde tenga el programa PMC

En una versión futura intentaré incluirlo en el EXE o en un programa de instalación.

Aparte de ello, he notado también que algunos programas de proceso de texto, ventanas de foros y de correo electrónico no manejan bien textos largos que no contengan espacios, como el caso del texto cifrado con el PMC. Por este motivo, he actualizado el programa a la versión V2.02, que tiene la posibilidad de limitar el máximo número de caracteres en las líneas del texto cifrado.



La nueva versión, a igual que las instrucciones pertinentes, puede descargarse desde la página que he actualizado, en la misma dirección que la anterior:

https://sites.google.com/site/anilandro/06130-pmc-01

Por lo demás, el hecho que el texto cifrado utilice 2 caracteres para cada uno original, ni es malo ni es bueno, es simplemente una característica necesaria para disponer de 8 bits de resolución... que además me permitirá en el futuro utilizar el mismo motor de cifrado para tratar ficheros binarios.

Un saludo
En línea

"La vida solo es energía que ha aprendido a defenderse", Anilandro
Joaquin_mx
Pleno*
*****

Karma: +0/-0
Desconectado Desconectado

Sexo: Masculino
México México

Mensajes: 326



Ver Perfil
« Respuesta #7 : 25/01/2012, 03:57:00 am »

Siempre me parecen muy buenos tus aportes Aplauso, yo aun estoy peleandome con el "contador geiger"... gracias por compartir.

saludos.
En línea

C'est avec la logique que nous prouvons et avec l'intuition que nous trouvons." Jules Henri Poincaré
Páginas: [1]   Ir Arriba
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.1 | SMF © 2006, Simple Machines LLC XHTML 1.0 válido! CSS válido!