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 a todos
Anilandro
http://sites.google.com/site/anilandro/
Interesante, aunque un poco ingenuo
AgustínB6 Agosto 2011 - 1:41pm
Después de cierta ausencia, me pongo a revisar los retos y encuentro este bastante interesante.
Sólo tengo el comentario. Me ha parecido un poco ingenuo pensar que un programa Visual Basic funcione en cualquier Windows 98 y superior.
Hace ya mucho tiempo desde el Visual Basic 6.0 se quedó sin soporte.
http://es.wikipedia.org/wiki/Visual_Basic
Sin embargo, no quiere decir que no sea perfectamente funcional. Pero como cualquier otro lenguaje, hay que tener muy en cuenta las librerías de las que depende.
Quizás, para que no te vuelva a suceder, yo te aconsejaría que usaras http://www.dependencywalker.com/
Y no presupongas que todas las librerías que usan estén instaladas por defecto en cualquier SO de Microsoft.
Otro consejo, aunque se de la buena fe de infosniper, nunca proporciones una URL que no sea de Microsoft para bajarse este tipo de controles.
La Web de Microsoft sigue manteniendo información sobre Visual Basic 6.
Yo te aconsejaría poner esta http://support.microsoft.com/kb/957924/es
Y sí ya sé, esto tiene cosas de más, pero si distribuyes algo con otro control pues ya lo tendrían instalado.
Si no queréis instalar todo (que ya registraría los controles sin ningún paso adicional) y descargáis el fichero (yo por ejemplo lo hice con el fichero en inglés VB60SP6-KB957924-v2-x86-ENU.msi) lo podéis abrir, sin tener que instalarlo, con el 7zip (por ejemplo) y entonces os vais a por el fichero richtx32.ocx y sólo extraéis este.
Qué nos falta ahora, pues que tenemos que tener registrado el control (es lo mismo que si fuera una dll).
Para hacer esto es tan simple como utilizar la utilidad regsvr32 (que esto sí que creo que viene con todos los OS de Microsoft).
Aquí sí que entonces entra ahora un tema de seguridad, no se si en Vista (que yo ya me lo he "saltado") pero en Windows 7 tienes que ejecutarlo con privilegios de administrador para poder actualizar en el registro.
Se abre una ventana de comando como administrador, se va a donde hayas extraído el ocx (podrías dejarlo en c:\windows o c:\windows\system32 algo que este en el PATH de ejecución) y ejecutas > regsvr32 richtx32.ocx y esperas a aceptar la ventana que te diga que tu DLL ha sido correctamente registrada.
Ahora con la dependencia ya correctamente registrada, ya puedes ejecutar sin problemas tu PMC-V2.01.exe desde la ubicación que quieras.
Dudo mucho lo de que infosniper no tuvo que registarla en XP. Yo en Windows 7 he realizado lo pasos que comento y funciona.
Ah! y otra cosa más, quizas en algunos sistemas con Microsoft Office instalado no les de problemas ya que como el VBA (Visual Basic for Application) con el que se programan las macros de excel hace uso de alguno de esos controles igual lo tenían instalados.
Si al finalizar el reto te animas a publicar el código, quizás podamos traducirlo a un lenguaje más utilizado actualmente (aunque a mí ya me gusta VB) y añadirle lo del KeyScrambler, si se tercia.
Si es que LlamameX no se ha lanzado a programar ya su versión en javascript, claro ;-) y entonces digo yo que el KeyScrmbler ya funcionará sin problemas.
Pues tienes razón
infosniper6 Agosto 2011 - 4:36pm
>"Otro consejo, aunque se de la buena fe de infosniper, nunca proporciones una URL que no sea de Microsoft para bajarse este tipo de controles."
Pues tienes razón, y mira que me lo planteé. Pero en este caso tiré por la vía rápida y sencilla, bajé una versión algo más antigua del OCX (igual de funcional) que la que propones y me fié de Virus Total. Pero he de decirte que aunque Virus Total no sea la panacea en detección de malware, con la cantidad de programas que instalamos-probamos existe la posibilidad igualmente de que nos la metan doblada en cualquier momento. Incluso hasta es posible que tengamos algo malicioso en nuestro sistema desde hace tiempo y no nos hayamos enterado pese a escanearlo una y otra vez con los antivirus. Hoy en día nada es seguro, aunque provenga de Microsoft.
>"Dudo mucho lo de que infosniper no tuvo que registarla en XP."
Pues te lo juro, aunque sea pecado. Mira, acabo de bajarme la versión del OCX que recomiendas (evidentemente tiene un hash distinto de la que decía yo), he eliminado del sistema la anterior (que no estaba registrada) y el programa PMC me ha funcionado igualmente. Ahora bien, mi sistema operativo va como va (es un XP SP2 que se traga las updates para SP3 sin tener instalado el SP3, va sobre FAT32 y tiene instalado un puñao de cosas raras) y a saber si las modificaciones que tiene hechas son las culpables del estropicio.
Por cierto, ahí va el link para la versión Spanish:
http://www.microsoft.com/downloads/es-es/confirmation.aspx?familyid=cb82...
Y muchas gracias por tu comentario.
infosniper
http://sites.google.com/site/infosniper/
Fichero de instalación para el PMC
Anilandro15 Septiembre 2011 - 8:50am
He hecho una compilación de instalación del PMC utilizando la versión Inno Setup 5.3.7, el archivo que da es de 383 KB, y se ha instalado perfectamente en un Windows 7 que no tenía previamente el RICHTX32.OCX. en el directorio System32.
La he subido a: http://dl.dropbox.com/u/5592203/Progs/PMC-Setup-07.exe
Si alguno de vosotros tiene un momento podría repetir la prueba en Vista y Windows 7, naturalmente, si ya tiene registrado el RICHTX32.OCX, deberá antes "desregistrarlo", para poder comprobar si la instalación se efectúa correctamente.
Un saludo a todos
Me gustan dos conceptos
LlamameX27 Julio 2011 - 9:34am
Me gusta mucho la idea del rebote como generador de caos, puesto que una mínima modificación en el primer ángulo puede causar variaciones enormes tras una serie de N rebotes. La pega que le veo es la que comentas: si no trabajas en coma flotante (con todo lo que eso implica) los ángulos van a acabar todos siendo pares, aunque habría que ver si eso es realmente un problema grave o se puede obviar usando más dígitos enteros para los ángulos y compensar la pérdida de los impares.
Me gusta también el tema de la ventana de tiempo. Es un concepto muy interesante y aunque no es invulnerable añade un buen nivel de complejidad al atacante sin sobrecargar al receptor, quien sólo debe introducir la clave dentro de la misma. Yo le estuve dando vueltas a temas de caducidad de las claves y a mensajes autodestruibles y tengo algunas ideas al respecto aunque todas ellas se han de basar en un servicio externo al mensaje para que el atacante no pueda reproducir infinitas veces las condiciones de decodificación.
La pega más gorda que le veo por lo que nos dejas ver es el tema de la inflación (de la seguridad del algoritmo poca opinión te puedo dar sin más datos). Entiendo que es en aras de la revertibilidad del algoritmo. Dices que le has dado muchas vueltas y que es la mejor solución que has encontrado. Si no te parece mal me lo apunto en la lista de engendros a fabricar a ver si sale algo.
se ve bastante bien!!
crony_mk26 Julio 2011 - 10:28pm
soy iniciado en la criptografia pero la forma en que mencionas opera el PMC esta genial, ya lo eh probado y como mencionas la misma letra tiene cifrado diferente... a mi no me ha dado error alguno al descargarlo y ejecutarlo... al intentar usar un decompilador puedo decir que en alguna parte del codigo al intentar descompilar se cierra el programa, especificamente con el programa VBD Pro agradezco el que puedas compartirlo, muy util para todos...
y como todo, es responsabilidad del autor, distribuirlo de la forma que mejor considere, por el momento felicidades amigo por tu trabajo, saludos a tod@s!!
¡Anda que tú!
AgustínB6 Agosto 2011 - 4:46pm
Cómo te va a dar error en el control ocx, si por lo que parece debes tener instalado Visual Basic o Visual Studio con todas las herramientas de desarrollo, inclido del depurador y por lo tanto tienes los controles ya instalados y registrados.
¡Muy bonito y ético!, ante la oscuridad -> lanzarse a depurar el código, ¡cómo si estuviéramos crackeando un videojuego!.
¡Anda que yo!
AgustínB6 Agosto 2011 - 9:05pm
Es que leo o escribo sobre algo y ya me puede a curiosidad.
Entonces sale el lado opuesto (no sé si Yin o Yang).
Esto viene a cuento porque pensando en que hace poco, en uno de los cursos de seguridad, vimos dos herramientas interesantes. Una es el Java Decompiler, que ya conocía yo con anterioridad al curso; y la otra el Flash Decompiler (que no conocía y que me resulto gracioso ver cómo decompilando el código puedes obtener acceso a web con páginas de login en flash).
Entonces me dije, habrá un Visual Basic Decompiler?
Pues sí, lo hay y es de otro francés como los del Java Decompiler que también son franceses.
Simplemente con la versión free ya se obtiene sin problemas el Form1.frm con todos los controles del formlario y las propiedades de los mismos y el código en ensamblador de todas las funciones y procedimientos.
Viendo que la función de cifrado está en
Por tan sólo 49€ (si es que no lo consigues por otros conductos y quieres ser totalmente legal) tienes la versión Profesional que incluye
Decompiler features:
Partially Native Code decompiling *
Recovers the Runtime Calls *
Support more than 15000 API declarations *
Que muy probablemente, sacará ya prácticamente todo el código fuente.
Me ha gustado la frase del autor del decompilador:
Lo siento Anilandro si te rompo todos los esquemas.
Ha sido nada más por curiosidad y con la intención de comentar que a veces pensamos que entregamos una caja negra impenetrable, pero en ocasiones no lo es tanto.
La mejor opción que creo tendrías sería utilizar código C quitadas todas la opciones de depuración y demás que podrían ayudar a los decompiladores de C. Pero finalmente se tendría igual el código ensamblador que se podría depurar y como creo es un código tan pequeño, no tienes muchas opciones de que no te lo copien igualmente.
Si esto lo hago a título individual y como curiosidad, qué no podrán hacer otras compañías de las que dices que no autorizas su uso. Me parece que la única opción sería registrándolo.
Si te parece muy mal, lo edito y quito todo este comentario o que lo haga admin si lo encuentra inoportuno.
Duda existencial de no pequeña magnitud
tokamak25 Julio 2011 - 12:11am
Hola, tengo una duda gorda:
Si lo he entendido bien, refiriendome al ejemplo, este es un cifrado en el cual, -resumiendo mucho- se toma una letra del texto en claro y se substituye por otra letra, tras una serie de operaciones matemáticas, de cierta complejidad, pero siempre con la misma característica: la misma letra será substituida por otra letra diferente, pero siempre la misma, en el texto cifrado: en efecto, tal cual se explica en el ejemplo, la H de HOLA, se transforma en O, y cualquier H en el texto dará siempre O con esa clave, al igual que O dará siempre V, L dará siempre S, etc.
¿Es así, o lo he entendido mal? ¿una letra se substituirá siempre por la misma letra en el texto cifrado -o mismo par de caracteres en el programa-? porque si es así, este cifrado sería extremadamente vulnerable al ataque por análisis de frecuencias...
El cifrado PMC es polialfabético
Anilandro25 Julio 2011 - 6:26pm
No, no, eso sería un cifrado monoalfabético, como dices muy fácil de romper por análisis de frecuencias. Mi sistema actúa como polialfabético, que en cada carácter la equivalencia es diferente.
Por ejemplo, la palabra "aaaaaaaaaa", cifrada con la clave "abracadabra", se convierte en "soyjubrdomljvcumndpfkg".
Un saludo
Ah bueno
tokamak25 Julio 2011 - 10:17pm
Hola otra vez, es que según viene en el ejemplo no se deduce que sea polialfabético. ¿Qué tal si pones un ejemplo con una palabra corta que tenga letras repetidas? es que no acabo de ver como funciona..
¿Cual es tu sistema operativo?
Anilandro27 Julio 2011 - 12:34am
Celebro que te funcione Tokamak ¿que sistema operativo estás usando?
Un saludo
Confianza vs. Desconfianza
infosniper24 Julio 2011 - 12:39pm
Más arriba Agustín hacía este comentario:
No voy a rebatir lo que dice porque estoy completamente de acuerdo con él (ademas si digo lo contrario me escupirá en los ojos, que lo sé yo), pero sí voy a hacer unas puntualizaciones para que ayuden a ver que de lo que estamos hablando al final acabará reduciéndose a una simple cuestión de confianza.
La transmisión de un mensaje confidencial se basa como mínimo en la existencia de un emisor y un receptor, es decir, dos personas. Una de ellas (Wing) tiene unos conocimientos matemáticos extraordinarios y la otra (Chun) acepta que la primera cree un programa de cifrado para que los mensajes que se transmitan entre ambos no sean leídos por terceros. En este punto nos encontramos con dos premisas:
- Wing tiene absoluta confianza en su programa de cifrado
- Chun tiene absoluta confianza en Wing
Pero resulta que esa confianza no significa realmente que el programa de cifrado sea invulnerable. Si hay algo que ha ocurrido constantemente en la historia de la informática es que una cosa que en un momento dado era considerada como segura acaba demostrándose al final que no lo era tanto. Wing tiene unos conocimientos matemáticos extraordinarios pero...
- ¿es el único en el mundo que los tiene?
- y si en estos mismísimos momentos Wing es el único en el mundo, ¿no puede aparecer en escena en los próximos años un (o más) nuevo crack de las matemáticas que le supere?
Wing sigue confiando en su programa y decide ofrecerlo al análisis de la comunidad. Publica su código, lo hace libre, y espera los comentarios y críticas de los entendidos. Todo son alabanzas y felicitaciones. Pero ¿Wing puede estar absolutamente seguro de que su programa de cifrado es irrompible/inatacable?. Pues NO porque el hecho de recibir solamente alabanzas no implica necesariamente que no exista alguien que haya averiguado cómo atacarlo y decida callárselo, o que ese método se descubra en un futuro próximo.
Pero de momento, Wing está convencido de que su programa sigue siendo de absoluta confianza, Chun seguirá confiando en Wing, y el resto de usuarios que decidan emplear el programa lo harán también por esa misma confianza que, aparentemente, se ofrece.
En resumen, que el código del cifrado sea en parte oscuro o completamente público no lo veo tan relevante porque al final acabaremos empleándolo, o no, por la confianza que nos genere su autor.
- ¡Pero es que es arriesgado basar la seguridad de un mensaje confidencial en un único cifrado del que encima se desconoce su código!.
- Pues yo desconfío más de los cifrados masificados. Y si provienen de la órbita anglosajona ya no digamos. Además, si con un cifrado crees que no tienes suficiente pues con el texto resultante emplea otro distinto. O los que te apetezca. Lo importante es que ahora tenemos una nueva herramienta y la libertad de usarla como queramos.
infosniper
http://sites.google.com/site/infosniper/
Pues sí
Agustín24 Julio 2011 - 9:49pm
Básicamente estamos de acuerdo. Por ejemplo, no me apetece nada usar la aplicación AES de Microsoft, por las razones que todos conocéis. Claro que en el router utilizo WPA2. No sé, no sé....
Por cierto
ElCojo25 Julio 2011 - 4:14pm
Hablando del wifi, el sabado -por comprobarlo- hice un test de velocidad de mi ADSL para ver si me han aumentado a 10mb y me salieron en el mejor caso 4.5mb (en el PC uso cable rj45) y luego probe desactivando el wifi (que necesito para otros PCs) e inmediatamente subio a 7mb valor logico para mi instalacion. Ese es el coste de tiene el procesar la señal wifi con el mismo router. Estoy pensado poner un access point independiente, aunque igualmente lo apagaria al no usarlo.
ElCojo
Desactiva el Wi-Fi del router, hazme caso,
infosniper25 Julio 2011 - 4:05pm
y enchúfale un cable de red. No sólo es más seguro sino que encima tus amarillentas neuronas agradecerán la neutralización del bombardeo electromagnético... a menos que seas un gourmet de las palomitas, claro (http://www.youtube.com/results?search_query=phone+%26+popcorn).
infosniper
http://sites.google.com/site/infosniper/
Ya
Agustín26 Julio 2011 - 12:16am
Ya lo he hecho. Cable tó tieso del ordeñador al parato ese que llaman modem-no-sé-qué. Pero ahora hay varios vecinos que no me saludan, je, je.
Pequeña duda
metalpain23 Julio 2011 - 8:44pm
Hola,
me estoy iniciando en esto de la criptografía y me ha surgido una pequeña duda. No entiendo por que afirmas que este algoritmo es seguro. Si he entendido bien el proceso (igual no lo he hecho, y en tal caso disculpas), a final el algoritmo lo que hace es substituir una letra por otra, por lo es realmente un tipo de cifrado monoalfabético, facilmente criptoanalizable. ¿Se me escapa algo? ¿O la seguridad está en los detalles que no has publicado (por ejemplo, el hecho de que se doble el número de letras)?
Saludos y gracias
Vreixo
En realidad es polialfabético
Anilandro24 Julio 2011 - 1:43pm
Bueno, en efecto sustituye una letra por otra, pero no en modo monoalfabético, sino polialfabético, porque el valor final de un carácter cifrado depende además en cierto modo del valor de la letra anterior, por decirlo de alguna manera, los caracteres están "encadenados" unos a otros. Además, el hecho que tanto la tabla de equivalencias como el número de ciclos internos condicionen el resultado equivale a una secuencia pseudoaleatoria generada a partir de la clave, pero no utilizando ninguna otra secuencia conocida, como por ejemplo las "rnd" de Visual Basic o del C.
La solución de utilizar dos caracteres finales para cada uno inicial se debe principalmente a la necesidad de reflejar valores de 0 a 255, valores resultantes del cifrado PMC, lo cual no podría hacer con un sólo carácter, ya que muchos de los valores finales serían ASCII no imprimibles. Esta situación es la misma que si utilizáramos un cifrado mediante la función XOR.
A la vez, este sistema, al aceptar valores de 8 bits por carácter, me permitirá en el futuro cifrar ficheros abiertos en modo binario, con lo cual ya no se limitará a cifrar textos y podré hacerlo con imágenes o cualquier otro tipo de fichero.
Un saludo
La web de Anilandro
admin22 Julio 2011 - 10:33pm
Como Anilandro ha evitado hacerlo, me ha tocado a mí añadir al artículo su firma con un enlace a su web, que considero que bien merece nuestras visitas:
http://sites.google.com/site/anilandro/
Sigo trabajando en ello
Anilandro22 Julio 2011 - 8:32pm
Hola amigos. Gracias por los comentarios, a los que intentaré contestar en lo posible.
Vaya por delante que mi intención sería publicar todo el código, puesto que no creo en la "seguridad por oscuridad" y en este caso tampoco creo que conocerlo merme la seguridad del cifrado. Pero a falta de conocer un procedimiento de registro que impida su copia, ya he tenido en el pasado algunos disgustos en este aspecto.
La dependencia del fichero .ocx tiene que ver precisamente en haber utilizado un objeto tipo RichTextBox como ventana de entrada y salida de textos, y al parecer los Windows con DLL's de versiones de VB anteriores al 6.0 es posible que no lo tengan. Hubiera podido mantener el TextBox normal, pero entonces los caracteres están limitados a 65.000, lo cual puede ser poco para ciertos casos
Tal vez podría integrar dicho .ocx en el propio archivo ejecutable, pero como es algo que nunca he intentado anteriormente, ignoro si podré conseguirlo o deberé crear algún tipo de ejecutable de instalación, cosa en la que también soy neófito.
De todas formas, el error por la falta del "richtx32.ocx" ¿os ha pasado a todos?. Yo no lo he notado ni en el ordenador de casa ni el el viejo portátil que utilizo en las vacaciones, pero es que los dos tienen instalado el Visual Studio, que ya incluye el fichero de marras.
Sobre la interacción o integración del PMC con otros programas, como el citado KeyScrambler, la verdad es que no sabría como hacerlo. Mis conocimientos de programación en VB son de nivel bastante superficial y no sabría como pasar variables de uno a otro. Éste es el problema que tiene la programación, que en mi caso me dedico a ella de higos a brevas, y en el intervalo se me olvida lo poco que aprendo en cada ejercicio.
Ahora estoy trabajando en una modificación del fichero de salida que puede trocearse en filas de determinada longitud, porque he observado que al no contener espacios, al copiar el texto cifrado en páginas web, foros o programas de correo, o crea ventanas muy grandes en horizontal o sólo puedes ver una parte.
Un saludo
Pero que muy interesante
infosniper22 Julio 2011 - 7:29pm
Desde mi punto de vista el hecho de que exista una parte "oscura" en el cifrado no le desvirtúa en absoluto. Si alguien desconfía de la seguridad que ofrece PMC siempre podrá volver a cifrar el texto de salida con otro programa. Por lo tanto desde aquí le mando mi felicitación a Anilandro.
Ahora voy a hacer un par de comentarios respecto al funcionamiento de Pinball Machine Cryptography.
1) Al ejecutarlo me ha aparecido un mensaje de error:
"Component 'RICHTX32.OCX' or one of its dependencies not correctly registered: a file is missing or invalid"
El problema lo he subsanado descargando ese archivo .OCX desde http://www.ocxdump.com/download-ocx-files_new.php/ocxfiles/R/Richtx32.oc.... Por si acaso lo he analizado en Virus Total (http://www.virustotal.com/index.html) y ninguno de los motores antivirus lo ha detectado como malware. Puede copiarse en C:\Windows\System32 o en la misma carpeta donde se encuentre "PMC-V2.01.exe", y no hará falta registrarlo en el sistema con la instrucción "regsvr32 c:\Windows\system32\richtx32.ocx" (o la correspondiente a la ruta de la carpeta del programa; por lo menos a mí me ha funcionado así en XP).
2) Como soy un fan del programa KeyScrambler (http://www.qfxsoftware.com/ks-windows/how-it-works.htm) veo que lo que se teclea dentro de la ventana de PMC bien pudiera ser capturado por un keylogger (o algún malware que ejerciera esa misma función) con lo cual toda la confidencialidad del mensaje se iría a paseo. La pregunta es la siguiente: ¿Podría PMC modificarse para aprovechar las funcionalidades de KeyScrambler (http://www.qfxsoftware.com/ks-windows/which-keyscrambler.htm) empleando la función de SELECCIONAR un archivo de texto con el mensaje a cifrar y SELECCIONAR otro archivo de texto con la contraseña?.
infosniper
http://sites.google.com/site/infosniper/
Elegante
ElCojo22 Julio 2011 - 2:53pm
Yo soy casi nuevo en esto, pero me parece una solucion elegante. No me atrevo a decir innovadora porque no podemos saber si alguien tuvo la idea antes que tu, y tampoco ha publicado los algoritmos, de manera que cabe la posibilidad que haya algún molinillo como el tuyo rodando por ahi.
A mi lo que me esta dando mal sabor de boca hace tiempo (y es una reflexión que me hago a mi mismo) es que tanta gente como nosotros que tenemos una inquietud por este tema y nos estrujamos el limon, a fin de cuentas hacemos casi lo mismo pero de diferentes formas, me explico, al final usamos la clave como un rotor, y cuando se nos acaban los bytes de esta, inventamos algo para poder seguir usando el mismo algoritmo, . Yo me incluyo pues me vi en esta situacion en el pasado. Es solo una reflexion que queria compartir.
ElCojo
A mi juicio le falta una cosa
Voyager22 Julio 2011 - 10:09am
A mi juicio le falta una cosa para ser más seguro. Ser transparente. Es decir, que publiques el código fuente para encontrar posibles debilidades en él. Si publicando el código se pone en entredicho la seguridad del algoritmo, ya no es tan seguro...
Es sólo una opinión más, no te ofendas...
Muy interesante
Agustín22 Julio 2011 - 12:04am
Ante todo quiero decirte que sigo siempre con interés tus aportaciones, y que tu web me parece magnífica.
Por lo que respecta a la fuerza de la clave, el valor 104^40 = 4.8 *10^80 no es tan grande como puede parecer. De hecho sí que puede ponérsele un nombre. Al menos, su hermano mayor, 10^100, sí que lo tiene, y es "GÚGOL"
http://es.wikipedia.org/wiki/G%C3%BAgol.
Durante algún tiempo el gúgol fue considerado como un número frontera, como un tope cósmico, por ser mayor que el número de átomos del Universo, por poner un ejemplo. Pero desde el punto de vista computacional ya no puede ser considerado un gigante, a causa de la potencia de los superordenadores y al uso de grupos de GPU's y del cálculo distribuído. Hasta tal punto es así que algunos consideran que los algoritmos de cifrado no deben ser "demasiado" eficientes, para que el tiempo de cálculo, multiplicado por el número de combinaciones de la clave, haga inviables los ataques por fuerza bruta.
Por lo demás, tu algoritmo es original y seguramente muy seguro. Deberías buscar alguna forma de proteger tu autoría, por ejemplo publicándolo convenientemente, con una licencia adecuada, que yo de eso no entiendo, de forma que se pudiera conocer en su totalidad el intríngulis del método. A falta de esta información no creo que la comunidad criptográfica -en este caso, nosotros- pueda adoptar tu programa como método fiable para el cifrado de ficheros, por más que pueda resistir los ataques combinados de Tokamak, TheNexus, Mellon, Sqrmatrix y LlamameX, entre otros. Podría ocurrir que justamente en lo poquito que ocultas estuviera la debilidad principal del sistema. Es una cuestión de principios. Es como si nos pidieras que aceptáramos un nuevo teorema sobre los números primos, diciéndonos que tienes la demostración, pero que no la publicas para que no te la birlen.
Con esto no trato de convencerte de que reveles tu secreto, por supuesto.
Un saludo.
No es el primero
periquillo22 Julio 2011 - 10:02am
Agustin, esto ya lo hizo antes Fermat con su teorema
Al leer tu comentario he recordado la famosa "nota al margen" que escribió Fermat y que ha estimulado a los matematicos por más de 300 años.
Eso si que fué un reto!!
En efecto
Agustín23 Julio 2011 - 12:03am
Yo también estaba pensando en el UTF cuando lo escribí; pero la reflexión sigue siendo válida: Como no apareció la misteriosa demostración de Fermat, hubo que esperar a Wiles para aceptar el teorema. De otro modo hubiera seguido siendo una conjetura.
En el asunto que nos ocupa hay que decir, y así contesto en parte a infosniper, que la oscuridad puede ser válida para obtener seguridad en ciertos entornos reducidos. Pero yo sólo me fiaría de mi oscuridad, no de la de otro.