Mas allá
Citas
"Gödel está más allá de los matemáticos de primera fila mundial; Gödel es una clase de matemático en sí mismo."
Permalink: http://mononeurona.org/entries/view/vendaval/2356
Xilinx ISE y EDK 8.2i sp2 en ArchLinux
Software
ISE y EDK son herramientas para el desarrollo de sistemas digitales sobre FPGA's y CPLD's de la empresa Xilinx. Trabajo con una tarjeta de desarrollo del programa universitario "Virtex-II Pro XC2VP30 FPGA" (XUPV2P para los cuates). La universidad nos provee de la versión 8.2i de este software que es un poco antigua (la ultima versión es la 12) y tiene ciertos trucos que son necesarios para su correcto funcionamiento. Las herramientas básicas de desarrollo se instalan así en ArchLinux:
$ sudo pacman -Sy base-devel libstdc++5 libusb
$ sudo ln -s /usr/bin/gmake /usr/bin/make
$ sudo ln -s /usr/lib/libdb4.8.so /usr/lib/libdb4.1.so
De AUR bajamos la tarball de fxload y compilamos e instalamos:
$wget http://aur.archlinux.org/packages/fxload/fxload.tar.gz
$tar -xvzf fxload.tar.gz && cd fxload
$makepkg -r
$sudo pacman -U fxload-2008_10_13-1-i686.pkg.tar.xz
Lo siguiente es introducir los CDs respectivos o montar las imagenes:
Xilinx ISE: Tiene en su raíz un script "setup", al ejecutarlo nos pedirá clave de activación, elegir las utilidades a instalar y una ruta de instalación.
El software a instalar dependen de las tarjetas que se utilicen, en mi caso en particular es el siguiente:
- Virtex2/Virtex2P/Spartan3/Spartan3E
- Design Environment Tools
- Standalone Programming tools
La ruta de instalación por default es el $HOME del usuario, esto esta bien si es una instalación particular, si deseas compartir este software con distintos usuarios lo ideal seria en /opt donde se instalan los programas que no cumplen con POSIX.
Terminada la instalación deberemos agregar los "service packs" cargando primero las variables de entorno
$ source ~/Xilinx/settings.sh
$ webupdate
Xilinx EDK: Tiene en su raíz un script "setup", al ejecutarlo nos pedirá clave de activación y una ruta de instalación. Terminada la instalación solo hay que actualizar, para esto hay actualizar las variables de ambiente:
$ source ~/Xilinx/settings.sh
$ source ~/EDK/settings.sh
$ ~/EDK/bin/lin/webupdate
Las variables de ambiente se utilizan siempre que se utilizan las aplicaciones, es conveniente agregarlas al .bashrc o en mi caso .zshrc.
Firmware: Para poder acceder a la tarjeta es necesario cargar su firmware, esto puede hacerse automáticamente con udev, pero todavia no me sale así que lo hago a mano con el siguiente alias:
alias loadf=' echo "bus --> ";read bus
echo "device -- >";read device
sudo /sbin/fxload -v -t fx2 -I ~/firmware/xusbdfwu.hex -D /dev/bus/usb/$bus/$device '
Los datos los consigues con lsusb, la ultima versión del firmware para la XUPV2P esta disponible en ftp://ftp.xilinx.com/pub/utilities/fpga/xusbdfwu-1025.zip.
Cable Drivers: Para depurar las cpus de la tarjeta vía JTAG (Joint Test Action Group) o programarla es necesario tener la libsudb-driver. Esta hay que descargarla y compilarla usando la trinidad "./configure && make && sudo make install". Despues solo metes esto a tu .bashrc $export LD_PRELOAD=/path/to/libusb-driver.so
Solo hay tres programas que necesitan tener precargada esta biblioteca xmd, impact y chipscope. En caso de tener problemas con la conección se puede recurrir al suguiente metodo:
$cd ~/Xilinx/bin/lin/
$mv _impact _impact.bin
$touch _impact $chmod +x _impact $echo "#!/bin/sh \ LD_PRELOAD=libusb-driver.so $0.bin $*"
Lo mismo para XMD que esta en ~/EDK/bin/lin/ .
Permalink: http://mononeurona.org/entries/view/vendaval/2339
Principio de Kerckhoff
Criptografia
En criptografía, el principio de Kerckhoff (parte de una serie de leyes enunciadas por Kerckhoff para el cifrado militar) reza:
La fuerza de un criptosistema depende SOLO de la llave y , en particular, la seguridad no depende de mantener el algoritmo de cifrado en secreto.
Este es un principio rector de la ciencia criptografica, aunque a primera vista podría parecer contradictorio (¿No es mas difícil romper el cifrado si no conozco como fue realizado?), sin embargo, Kerckhoff hace un retrato del mundo real, ningún algoritmo de cifrado permanece en secreto por siempre, y dependiendo de cuan extendido sea su uso mayor sera los daños colaterales de su salida a la luz.
Decimos que entre mayor sea la cantidad de ojos (y ataques) sobre un algoritmo y su implementación, estos se desechan o prueban su robustez cada vez que se sujetan a escrutinio, algo que nunca pasa con los algoritmos que se mantienen cerrados, entonces, la llamada "seguridad por obscuridad" es propiamente una falla de seguridad.
Actualmente las pruebas a un algoritmo cifrado deben asumir que el atacante conoce como funciona y que incluso es capaz de conocer/insertar/manipular partes del texto que va a ser cifrado con el fin de recuperar la llave o llaves usadas en el cifrado (Es por esto que siempre deben ser renovadas y tener caducidad).
Este principio es tambien extendido al Software libre, donde las vulnerabilidades pueden ser corregidas bajo un escrutinio que es posible para cualquiera que desea hacerlo.
Existen muchos casos preocupantes de violaciones al principio de Kerckhoff , ejemplos son los cifrados ORIX y A5/1, ORIX y A5/1 fueron diseñados por TIA (Telecommunications Industry Association) que dicho sea de paso es la gran fuente de estándares en comunicaciones, ORIX fue usado como el primer cifrado en tecnologías de comunicación celular GSM, A5/1 es su sucesor ambos son cifrados de flujo (Prefiero el termino original del ingles stream, que suele ser mas ilustrativo) diseñados para ser implementados en hardware, trabajan con operaciones lógicas lineales y registros. Desde hace tiempo existen ataques prácticos a los dos cifrados, logrados a partir de ingeniería inversa a los dispositivos celulares.
Existen algunas claras pseudo-violaciones al principio de Kerckhoff, usualmente tienen que ver con las agencias de seguridad de distintos países que mantienen los cifrados de uso particular en secreto, sin embargo, también tienen a su servicio a los mejores criptoanalistas que sus gobiernos pueden pagar. Un ejemplo claro es la celebre NSA (National Security Agency) de Estados Unidos.
Bruce (The Master) Schneier dijo:
"Kerckhoffs' principle applies beyond codes and ciphers to security systems in general: every secret creates a potential failure point. Secrecy, in other words, is a prime cause of brittleness—and therefore something likely to make a system prone to catastrophic collapse. Conversely, openness provides ductility."
El texto original de Kerckhoff se encuentra en la siguiente liga http://petitcolas.net/fabien/kerckhoffs/
Permalink: http://mononeurona.org/entries/view/vendaval/2305
Análisis probabilístico en criptoanalisís clásico
Criptografia
El campo del criptoanalisís, dentro de la criptología tiene que ver con romper mensajes cifrados, es decir obtener de manera total o parcial el contenido de un mensaje sin el consentimiento de las partes que lo transmiten.
Se puede decir que los algoritmos de cifrado clasicos (desde el principio de los tiempos hasta poco despues de la segunda guerra mundial) se pueden identificar por realizarse con dos técnicas o una combinación de ellas:
Transposición: Básicamente se revuelven los elementos del texto original, de tal manera que no puedan entenderse, pero que si puedan ser reordenados usando el método adecuado.
Ejemplos de cifrado por el método de transposición son: la transposición por columnas, Scytala, doble transposición, etc.
Substitución: Se substituyen las partes del mensaje (tokens o bits) por otros.
Ejemplos de cifrado por substitución son: Cesar, Affine, Vigènere, Nomenclador, etc.
Estos son principios todavía usados en los modernos cifrados por bloques y proveen una cantidad enorme de material para mostrar los procedimientos clásicos de análisis estadístico sobre cifrados de distintos tipos. Desde los tiempos en que el hombre envío los primeros mensajes cifrados, otros hombres trataron de descifrarlos, rápidamente los métodos de los bandos tendieron a la matemática, que es justamente la tendencia moderna en este campo. Las primeras aproximaciones al problema de reconstituir un mensaje en texto claro a partir de su contraparte cifrada vienen del amplio conocimiento del subconjunto particular del lenguaje en que fue escrito, por ejemplo el clásico análisis de frecuencias de cada letra del alfabeto, dupla o tercia. Es importante notar que no todos los símbolos presentes en la sintaxis de cada idioma eran usados durante el cifrado, por ejemplo y aunque parezca extraño, las maquinas Sigaba (EU) y Enigma (Alemania), usadas durante la segunda guerra mundial, no tenían teclas para los números arábigos.
La siguiente lista simple de las frecuencias de cada letra dentro del idioma ingles es el resultado del análisis de mas de 7834 textos distintos. Elegí la tabla del ingles para hacer un pequeño ejemplo mas adelante.
- A(8.399%) N(6.778%)
- B(1.442%) O (7.493%)
- C(2.527%) P (1.991%)
- D(4.800%) Q (0.077%)
- E(12.15%) R (6.063%)
- F(2.132%) S (6.319%)
- G(2.323%) T (8.999%)
- H(6.025%) U(2.783%)
- I (6.485%) V (0.996%)
- J(0.102%) W(2.464%)
- K(0.689%) X (0.204%)
- L(4.008%) Y (2.157%)
- M(2.566%) Z(0.025%)
Estas frecuencias pueden considerarse una propiedad del idioma ingles y en teoría esta presente en todo texto escrito en dicho idioma. Esta tabla de frecuencias puede ser usada directamente en cifrados de substitución simple o monoalfabetica como el cifrado cesar o camposanto que veremos mas adelante. Sin embargo, en cifrados polialfabeticos estas frecuencias son ocultadas por el algoritmo de cifrado y es necesario usar otros métodos que pueden o no incluir el uso de la lista anterior.
William F. Friedman (1891-1969) desarrollo la técnica llamada Indice de coincidencia, dado un texto cifrado C, el indice de coincidencia I es definido como la probabilidad de que dos letras seleccionadas de manera aleatoria en C representen la misma letra en el mensaje de texto claro M.
Tenemos n0, n1, n2, n3, ... , n25 es el conteo para cada letra (Frecuencia Absoluta) en el alfabeto A, B, C, D ...., Z. en C.

Disculpen en arreglo de ecuaciones para algo tan bobo, el código LaTeX lo pegue al final. (La Mono no me dejo subir el archivo)
El indice de coincidencia es usado principalmente sobre textos cifrados con algoritmos que usan varios alfabetos. Las primeras ecuaciones son definiciones. la cuarta es resultado de aplicar la primera a la tercera, el resto es solo álgebra hasta llegar a la octava, que es la representación clásica del indice de coincidencia, es bueno saber de donde viene todo.
Cifrado Camposanto
Este cifrado es monoalfabetico, se llama así por que se encontró en una tumba, se presume es un código Mason del siglo XVII, planeaba usar el cifrado cesar para hacer una pequeña demostración del uso del análisis de frecuencias, sin embargo, yo no conocia camposanto y ha sido divertido buscar la respuesta, el texto original es este:

(Lo vi en este articulo de kriptopolis http://www.kriptopolis.org/criptografia-clasica-v , parte de una serie muy recomendable)
Se sabe que el texto esta en ingles y que el cifrado tiene una relación con el juego del gato (#), bastaría saber que es un texto en ingles, entrando en materia debemos suponer una de tres cosas:
- Que cada símbolo representa una letra
- Que cada símbolo representa una silaba
- Que cada símbolo representa una palabra completa
Observando los símbolos notamos que las variaciones son pocas y carecen de la complejidad para representar palabras completas, excluir las silabas es mas difícil y es donde notamos que al menos 3 símbolos se repiten varias veces reduciendo las posibles palabras que repitan silabas con tanta frecuencia, si bien no podemos descartar la representación silábica podemos decir que es menos probable.
Ahora, ¿Como puede representar cada símbolo una de 26 letras?, un buen punto de inicio es formular una primera hipótesis sobre la identidad del símbolo que mas se repite (el cuadrado con el punto en medio), diremos que es la letra E. Esto no es tan arbitrario, pues según el análisis de frecuencias es la letra mas probable. Se podría especular sobre el valor de los siguientes símbolos frecuentes, pero esta vez es mejor teorizar sobre como se representan las letras bajo la hipótesis de el cuadrado con el punto en medio es la E.
Observemos que el símbolo de en medio pueden ser 1, 2 o 0 puntos y que las lineas pueden conformar un cuadrado o al menos un angulo (dos ángulos con un lado en común también es posible), sin embargo las lineas nunca aparecen solas, esta configuración en particular permite ordenar 27 símbolos que cumplen con las características mencionadas anteriormente (nueve combinaciones de lineas por tres de puntos). Sobre las lineas pueden apuntar usando las aristas o los espacios. El símbolo para la letra E me sugiere que funciona con los espacios.
Ordenando las letras del alfabeto ingles dentro de una matriz de 3x3, De izquierda a derecha, arriba hacia abajo, los símbolos aun no adquieren sentido, sin embargo, se entienden palabras con un pequeño corrimiento de una posición en los símbolos con con dos puntos y ninguno. se concluye que una casilla representa al mismo tiempo dos letras y esta tiene que ser la ultima posición en la matriz señalada con un punto, se arregla agregando j e i para ese símbolo para quedar así (después de todo se parecen =)):
| A *,K **,T _ | B *,L **,U _ | C *,M **,V _ |
|---|---|---|
| D *,N **,W _ | E *,O **,X _ | F *,P **,Y _ |
| G *,Q **,Z _ | H *,R ** | I-J *,S ** |
Notación: * representa un punto, ** dos puntos, _ vacio.
Usando esta matriz el mensaje se traduce como:
"REMEMBER DEATH"
Este quiza no sea el mejor ejemplo del uso de métodos estadísticos en el criptoanalisis, dado que el texto es muy pequeño y hay que tomar ciertas decisiones un poco arbitrarias en vez de usar resultados matemáticos, pero ha sido un muy divertido reto para su servidor, por cierto, dado que la muestra es pequeña, no es posible usar el indice de coincidencia (ademas solo suele usarce en cifrados polialfabeticos).
LaTeX ic.tex
\documentclass[12pt]{minimal}\usepackage[spanish]{babel}\date{}\begin{document}\begin{eqnarray}{a \choose b} = \frac{a!}{b! (a - b)!} \\ n = n_0 + n_1 + n_2 + ... + n_{25} \\ I = \frac {{n_0 \choose 2} + {n_1 \choose 2} + {n_2 \choose 2} +... + { n_{25} \choose 2}}{{n \choose 2}} \\ I = \frac { {\frac {n_0!}{2!{(n_0 - 2)!}}} + {\frac {n_1!} {2! (n_1 - 2)!}} + ... + {\frac {n_{25}!}{2! (n_{25} - 2)! }}}{\frac {n!}{2! (n -2)!}} \\ I = \frac {(\frac {1}{2!})( {\frac {n_0!}{{(n_0 - 2)!}}} + {\frac {n_1!} {(n_1 - 2)!}} + ... + {\frac {n_{25}!}{(n_{25} - 2)! }}) }{(\frac{1}{2!}) (\frac {n!}{(n -2)!})} \\ I = \frac {{\frac {n_0!}{{(n_0 - 2)!}}} + {\frac {n_1!} {(n_1 - 2)!}} + ... + {\frac {n_{25}!}{(n_{25} - 2)! }}}{\frac {n!}{(n -2)!}} \\ I = \frac { (n_0(n_0 - 1)) + (n_1(n_1 - 1)) + ... + (n_{25}(n_{25} - 1))}{n(n - 1)} \\ I = (\frac {1}{n(n-1)}) \sum_{i=0}^{25} {n_i(n_i -1)} \end{eqnarray}\end{document}
Permalink: http://mononeurona.org/entries/view/vendaval/2296
Ahora con sentimiento compadre...
Ocio
Permalink: http://mononeurona.org/entries/view/vendaval/2279
El hombre que
Citas
"El hombre que animado de paz y justicia, ponga atrabajar a los mexicanos ése sera su salvador."
José Vasconcelos
Permalink: http://mononeurona.org/entries/view/vendaval/2266
My current desktop
Ocio
ArchLinux + Fluxbox + Conky
Es muy divertido cuando presto mi pc, ver como le pican al fondo de pantalla.
La terminal:
tilda + tmux + zsh.
Permalink: http://mononeurona.org/entries/view/vendaval/2263
Esperando revisión
Ciencia y Tecnologia

Me di cuenta que no existía y como es mi primera vez en la wikipedia, solicite revisión:
http://es.wikipedia.org/wiki/Wikipedia:Asistente_para_la_creación_de_artículos/Solicitudes/Karamelo
Falta mejorarlo, claro sin incumplir las reglas de la wikipedia.
Permalink: http://mononeurona.org/entries/view/vendaval/2262
Función Zeta de Riemann
Matematica Pura y dura
Definición:

Siempre me ha atraido la relación entre la Hipotesis de Riemann y los números primos, con la esperanza de que alguien compruebe la hipótesis antes de que yo o todos pasemos a mejor vida, se podría diseñar un algoritmo que usase dicha relacion para aproximar las distribuciones de números primos lo suficientemente grandes para ser aplicados a la criptografia asimétrica y por que no al criptoanalisis.
Fuente: http://dlmf.nist.gov/25.2
Permalink: http://mononeurona.org/entries/view/vendaval/2260
Juego de Villanos
General
Juego de villanos Mario Benedetti
La muerte se puso una cara de monstruo
una cara de monstruo horrible
esperó y esperó detrás de la esquina
salió al fin de la sombra como un trozo de sombra
y el niño huyó más rápido que su propio alarido.
Entonces la muerte se puso otra cara
una vieja cara de mendigo
esperó y esperó enfrente de la iglesia
extendiendo la mano y gimiendo su pena
y el niño no supo qué hacer con su piedad.
Entonces la muerte se puso otra cara
una cara de mujer hermosa
esperó y esperó con los brazos abiertos
tan maternal tan fiel tan persuasiva
que el niño quedó inmóvil de susto o de ternura.
Entonces la muerte sacó su última cara
una cara de juguete inocente
esperó y esperó tranquila en la bohardilla
tan quieta tan trivial tan seductora
que el niño le dio cuerda con una sola mano.
Entonces la muerte se animó despacito
más traidora que nunca y le cortó las venas
y le pinchó los ojos y le quitó el aliento
y era lo único que podía esperarse
porque con la muerte no se juega.
Permalink: http://mononeurona.org/entries/view/vendaval/2259












