Mostrando entradas con la etiqueta Informática. Mostrar todas las entradas
Mostrando entradas con la etiqueta Informática. Mostrar todas las entradas

viernes, 14 de febrero de 2014

Bitcoins

Por Pepe "Puertas de acero" Pérez
Hace un tiempo hablé en este blog sobre la existencia de las criptodivisas, las cuales podían hacer competencia a medio-largo plazo a las monedas tradicionales. En esta entrada voy a describir un ejemplo concreto de criptomoneda, la primera y más famosa, que recibe el nombre bitcoin

Bitcoin fue inventada por Satoshi Nakamoto. Un halo de misterio rodea a su creador, ya que no se conoce ni su verdadera identidad (su apelativo es un pseudónimo) ni su nacionalidad. Además es un misterio si se trata de una persona o un grupo de personas, pero sea como fuere, su contribución al proyecto fue reduciéndose hacia mediados del pasado año 2010 hasta desaparecer por completo.

El apelativo bitcoin se refiere a la moneda y al protocolo distribuido que gestiona las transacciones entre las distintas partes. La idea tras el proceso de obtención de bitcoins es similar a la de la extracción de recursos naturales como el oro y la plata. Esta similaridad se basa en la resolución de un reto criptográfico, que sin entrar en detalle, involucra hallar la solución a un problema que sólo puede resolverse mediante fuerza bruta. Una vez resuelto es necesario que la red  peer to peer verifique que es correcta. Si es así, al ganador se le asigna un número de bitcoins, que dependerá de la tasa actual a la que se estan produciendo. Es muy importante mencionar que la extracción o minado es un proceso competitivo y no colaborativo. Cada uno de los mineros quiere resolver el problema, pero el primero que sea aceptado por la red será el que se lleve el botín, el resto habrá invertido tiempo y no habrá ganado nada. El ganador se lo lleva todo.

La red básicamente mantiene una estructura denominada cadena de bloques (blockchain), que contiene todo lo que ha sucedido durante la vida de la moneda. Este histórico contiene, tanto quienes fueron los mineros ganadores para cada una de las bitcoins, como las transaciones de usuario a usuario. La cadena está disponible para cualquier miembro de la red y por eso evita el problema del doble gasto del que hablabamos anteriormente. Es posible seguir el rastro de cada bitcoin desde su extracción hasta que llegó a su último dueño. Nótese que todos estos cambios han de propagarse por toda la red. Por eso las transacciones de bitcoins no son instantáneas, ya que una vez solicitadas hay que esperar a que los miembros de la red la validen. 

Para terminar el artículo voy a enumerar algunas de las ventajas y desventajas de esta divisa:

Ventajas
  • No es una moneda inflacionaria, puesto que el proceso para su minería impone un límite máximo de bitcoins que puede haber en el mercado. Cuando este límite se alcance, no será posible obtener nuevas y deberán conseguirse mediante comercio. No tendremos la misma situación que en la Alemania de entreguerras.
  • El libro de cuentas es público y requiere del consenso de una red descentralizada que implementa el protocolo bitcoin. De esta manera se evita el problema del doble gasto. Antes de recibir una suma de dinero es posible comprobar si el que está realizando el pago lo ha gastado con anterioridad.
  • Pese a que este libro de cuentas es público, sólo aparece de quién a quién pasó la moneda, con un identificador genérico que si bien sólo está vinculado a una persona, no indica quién es realmente, por lo que podemos decir que las transacciones son anónimas.
Desventajas
  • Es una moneda deflacionaria, la cual beneficia a las personas que invirtieron recursos en minería al principio. Nadie sabe a ciencia cierta lo que sucederá cuando no puedan generarse más bitcoins. Por este motivo cuenta como una ventaja y como una desventaja. 
  • Actualmente la tasa de cambio de las bitcoins es volátil, es decir, fluctúa muy rápidamente. Esto da pie a que sean los especuladores los que se estén lucrando.
  • Puede ser comprometida si alguien tiene el control sobre más del 50% de la red bitcoin. Si tú y tus amigos inyectáis monedas y sois suficientes como para poder verificarlas, nada os impide evitar el problema del doble gasto. Nótese que esto es dificil, pero no imposible.
  • Cada usuario, dispone de una "cartera" con bitcoins. Pese a que el rastro siga en la cadena de bloques, si el usuario pierde la cartera las divisas se quedarán huerfanas y nadie podrá recuperarlas. Esto no es un supuesto, hay gente que ha perdido un dineral porque su disco duro donde estaba la cartera se ha roto.
  • Si tienes ahorros en bitcoins no tienes ningún tipo de protección. Algo bueno tenían que tener los bancos, que están regulados por los gobiernos y dan algún tipo de protección.
Aún queda mucho camino por recorrer y seguramente las bitcoins acaben sólo sirviendo para que especuladores llenen sus bolsillos. De hecho nuevas criptomonedas han surgido y nuevas surgirán, quién sabe cuándo podremos dejar de depender de los gobiernos.

sábado, 18 de enero de 2014

Compren, vendan, han llegado las criptodivisas

Por Pepe "Puertas de acero" Pérez



Imaginad un mundo en el que los bancos no existen. Un mundo sin monedas controladas de manera centralizada, donde no hay lugar para el FMI o el BCE. Un lugar sin aquellas entidades que, convenientemente, hemos descubierto hace poco lo malvadas que son.

Qué pensaríais si os dijsese que cada día que pasa nos acercamos más a ese lugar. Las criptodivisas (criptocurrencies) pueden ser el camino. Una criptodivisa, como es posible adivinar a partir de su propio nombre, es un medio de intercambio digital que emplea la criptografía como base para implementar un sistema de intercambio monetario. Como medio de intercambio nos referimos a un elemento que actúa de intermediario para obtener bienes y servicios en lugar de emplear el trueque. Un gran ejemplo de medio de intercambio es, como todos habeis podido imaginar, el dinero. Las criptodivisas son, por asi decirlo, dinero digital.

La parte criptográfica de las criptodivisas es compleja, pero tiene un objetivo muy claro: establecer una red distribuida, descentralizada y segura para mantener la confianza hacia la propia moneda, porque al final el usuario de a pie lo que desea es que sus dolarines tengan un valor real y eso no se consigue si el sistema financiero no tiene confianza en la divisa. Pero claro, hablamos de dinero digital el cual tiene un problema que no suele darse en las monedas físicas, el doble gasto.

El problema del doble gasto se resume en que una persona pueda enviar una unica unidad (llamémosla moneda) a dos individuos distintos a la misma vez. Esto es difícil de realizar con divisas tradicionales por varios motivos. En primer lugar, es fácil dejar constancia de que se ha hecho la transacción (los bancos tienen un balance de cuentas) y segundo y más importante, la divisa abandona físicamente al emisor para pasar al receptor. Si obviamos el problema del falseo de divisa, las monedas tradicionales tienen bastante bien controlado el problema del doble gasto, es decir, es bastante complicado transmitir el mismo billete a dos personas simultáneamente.

Pero claro, una criptodivisa es digital y es fácil de replicar. Por ahora podemos entender que cada moneda es una secuencia de letras y números. Digamos que Pepito tiene una moneda, la cual es básicamente un texto como podría ser "XushR5yYKY". Pepito quiere irse de putas, pero para ello necesita pagar, por lo que envía ese texto. Como habeis podido intuir, no hay nada que impida a Pepito volver a usar esa moneda para volver a irse otro día (o esa misma noche) con otra señorita. Total, puede hacer todas las copias que quiera de la moneda y nunca más volver a pagar por sexo.

Os dejo con la intriga, pero la semana que viene veremos cómo se puede conseguir evitar este problema aplicado a un caso concreto. Hablaremos sobre las bitcoin y como, para desgracia de Pepito, evitan el problema del doble gasto.

Pepe "Puertas de Acero" Pérez

viernes, 27 de diciembre de 2013

El principio de ventaja acumulativa



El principio de ventaja acumulativa enuncia que una vez que un agente o individuo consigue una pequeña ventaja sobre el resto de la población ésta tenderá a acumularse a lo largo del tiempo, mejorando así la situación del agente según la métrica que define esta ventaja. Este principio se resume bien mediante expresiones como "los ricos cada vez se vuelven más ricos", "el éxito engendra éxito" o si tomamos un tono más bíblico, el denominado principio de Mateo:
(...) al que más tiene más se le dará, y al que menos tiene, se le quitará para dárselo al que más tiene.
Enunciado de manera formal por Robert K. Merton a finales de los años sesenta, surgió como un modelo que describía cómo los científicos que al comienzo de sus carreras obtenían más publicaciones, conseguían, ya con sus carreras más avanzadas, un mayor éxito respecto al de sus colegas.

El principio de ventaja acumulativa fundamenta la desigualdad en la vida diaria. Partamos de una situación inicial en la que todos los sujetos son iguales, digamos que nos encontramos en un aula de primer curso en un colegio. Por el motivo que sea, el maestro trata de manera diferente a ciertos alumnos, ya sea beneficiándolos o perjudicándolos. Pese a que no suceda en todos los casos, aquellos alumnos que cuentan con el favor del maestro conseguirán mejores notas que aquellos que no cuentan con esta ventaja. Estas notas pueden llevar a que otros docentes también les tengan estima, mejorando su condición. Desgraciadamente, la situación contraria también se da: aquellos a los que se les tiene "manía" muy pocas veces llegan a alcanzar a aquellos que cuentan con el favor del maestro. No estoy diciendo que ésta sea la única variable que afecte al rendimiento escolar, pero pequeñas diferencias al inicio, como pueden ser el entorno familiar o académico cuando se es niño, reducen las oportunidades de alcanzar las metas en comparación con otros individuos que han tenido un comienzo más favorable. Es por eso por lo que esta situación de éxito o fracaso se autoperpetúa, ya que las generaciones posteriores heredarán parte de esta ventaja o desventaja inicial, siendo muy dificil frenar el ciclo.

Esta situación no sólo afecta a los primeros años de vida, sino que se refuerza cada vez que empezamos una nueva etapa. Por ejemplo, la obtención de un mejor primer empleo lleva a que se obtenga un mejor segundo trabajo y así sucesivamente. Dos personas muy similares, por puro azar pueden conseguir trabajos iniciales ligeramente diferentes, lo cual puede puede conllevar a que con el paso de los años uno de las personas esté en una situación mucho mejor que la otra, ya no sólo por azar inicial sino porque la secuencia de empleos le ha llevado a desarrollarse como mejor profesional, autoperpetuando esta situación inicial favorable. En marketing también se da esta situación y recibe el nombre de ventaja del primer movimiento ( first-mover advantage ) la cual explica cómo en ciertos nichos de mercado sin ocupar el que obtiene la ventaja es aquel que efectúa el primer movimiento respecto. Es siempre el mismo proceso: una ventaja inicial conlleva una leve mejora respecto al resto, inicialmente en un sólo aspecto pero termina afectando por completo al agente. Si retomamos el ejemplo de la situación laboral, quién consiguió el primer mejor trabajo puede que sea un mejor profesional al cabo de los años (lo cual puede verse como una mejora en el desarrollo cognitivo), pero también tendrá más dinero (mejora económica) y, tal y como están las cosas ahora mismo, podrá disponer de una mejor cobertura sanitaria ( mejora en la salud ). 

Lo interesante es que la idea subyacente a este proceso es sencilla de simular por ordenador. Imaginemos una situación en la que tenemos una red de conexiones entre personas. Al comienzo la población es pequeña y todos se conocen entre sí, pero poco a poco introducimos nuevos individuos que se conectan a los ya presentes. La probabilidad de que un nuevo individuo se conecte a uno ya existente es proporcional al número de conexiones que ésta posee. Hemos dicho que inicialmente todos tienen las mismas conexiones, por lo que todos tienen la misma probabilidad de recibir un nuevo enlace. El video bajo estas líneas es la respuesta a esta situación: conforme pasa el tiempo los que inicialmente tuvieron la suerte de conseguir más enlaces se hacen cada vez más fuertes. Os recomiendo también que echéis un vistazo a este enlace en el que existe una versión interactiva del mismo proceso que se ve en el vídeo inferior.


Al final de lo que se dispone es de lo que se llama una distribución acorde a la ley de potencias. Lo que se traduce en términos comunes en que "hay muy pocos que tienen mucho y muchos que tienen poco". En la figura inferior se puede ver cual sería la distribución del número de enlaces (eje y) respecto al número de individuos (eje x) en una situación similar a la que veíamos en el video. Muy pocos (hacia la izquierda) poseen la mayor parte del area de la gráfica, mientras que existen muchos (hacia la derecha) que disponen de muy poco.

Ley de potencias / Wikipedia
Aunque parezca un problema de juguete, nunca ha de olvidarse que sólo basta una pequeña diferencia producida por el azar en el comienzo de cada etapa de la vida de una persona para que el desarrollo de ésta se vea cambiado por completo.


Pepe "Puertas de Acero" Pérez

sábado, 2 de noviembre de 2013

Técnicas bioinspiradas II : Colonias de hormigas



Esta semana aprovecho para comentaros otra de las técnicas inspiradas en un proceso natural, pero que es de utilidad en el mundo de la computación. En este caso se imita la manera que tienen de proceder las hormigas a la hora de encontrar el camino más corto entre la comida y su colmena. En todo esta entrada se empleará el término agente como sinónimo de hormiga, ya que éstas son unidades que actuan de manera independiente en el proceso de búsqueda de comida.

Hay dos ideas principales en simulación del funcionamiento de una colonia de hormigas en un ordenador. La primera es definir el comportamiento de una hormiga. Sus acciones se limitan a tres opciones: moverse, reconocer si hay comida donde está ella y dejar un rastro de feromonas por el camino que sigue. Inicialmente una hormiga deambula, es decir, se mueve sin oficio ni beneficio, esperando chocarse con algún trozo de comida en su paseo. Siempre que se desplaza, el agente deja un rastro, pero cuando encuentra comida, retorna a la colmena, pero incrementando la cantidad depositada en su viaje de vuelta. Estos marcadores químicos influencian el movimiento de otras hormigas, que dejaran de seguir rutas semialeatorias para tomar caminos similares a los de los rastros de feromonas. Esto conllevará a la larga que las rutas con más feromonas influencien tanto al resto de agentes hasta que todos sigan este camino. Para evitar que las rutas malas perduren, también se eliminan los caminos que no son visitados con mucha frecuencia, es decir, se emula el proceso de evaporación, el cual limita la influencia de aquellos trayectos que no llegaron a buen puerto.

De esta forma, al comienzo no hay apenas influencia química, por lo que las hormigas cubren una gran distancia (cuantas más hayan, más superficie cubrirán), pero una vez se encuentra la comida, el resto de hormigas, veran sus movimientos influenciados por la concentración de feromonas. Lo interesante es que no hay ni líderes que organicen la búsqueda ni comunicación directa entre los distintos agentes que conforman el sistema, sino que todo depende de las feromonas. El hecho de que no haya comunicación simplifica enormemente el proceso y lo hace mucho más eficiente. Se puede decir que estos productos químicos constituyen la memoria de la colonia, ya que indican que caminos tienen mayor probabilidad de llevar a las fuentes de comida.

El proceso de búsqueda puede verse con mayor claridad en el siguiente vídeo.


En el centro se encuentra la colmena de hormigas y en esquinas opuestas, las fuentes de comida. Para ponérselo más complicado a nuestros amados insectos, se han colocado obstáculos que fuerzan un proceso de búsqueda más complejo. Al comienzo sólo hay una hormiga, la cual deja rastros de feromonas tras de sí. El problema es que se ve inmersa en un bucle: toma una dirección aleatoria, pero al tiempo acaba siguiendo su propio rastro, permaneciendo siempre cerca de su lugar original. Podemos concluir que una hormiga por sí sola no es capaz de hacer absolutamente nada. Sin embargo, más adelante, la cosa cambia, otros agentes toman direcciones distintas y acaban llegando a la comida, reforzando en su trayecto de vuelta el rastro de feromonas. Esto conlleva a que nuevas hormigas tomen rutas parecidas abandonando su deambular.

Si hay varias rutas a un mismo foco de comida las más largas se acabarán evaporando, porque las hormigas reemplazan las feromonas a un mayor ritmo en aquellos caminos más cortos, ya que son capaces de recorrerlos más rápido. También es posible darse cuenta en este vídeo de como los rastros van evaporándose mientras que otros van ganando un mayor peso. Hacia el final del video se ve como el camino de la parte superior (que es completamente estúpido) pierde peso en favor de el de la derecha y el inferior.

Las aplicaciones de este tipo de técnicas son directas: es posible encontrar caminos en cualquier lugar de un mapa. No importa si se añaden obstáculos a posteriori, las hormigas siempre encuentran su camino.

Pepe "Puertas de acero" Pérez

sábado, 26 de octubre de 2013

Hackers: la buena gente de Internet

Esta imagen no guarda ninguna relación con el post,
pero llevo años queriendo ponerla. Disculpen.

La mera mención de la palabra hacker nos hace temblar y llevarnos las manos a nuestras preciadas tarjetas de crédito, a ponernos como locos a cambiar contraseñas y a cagarnos en la gente que se aprovecha de errores informáticos para sacar tajada. Sin embargo, bajo mi punto de vista, un hacker no es ni mucho menos un ser ávaro que se encarga de sustraer nuestros bienes el ciberespacio. 

El acto de hackear, consiste en mejorar las prestaciones de cualquier artilugio, ya sea una bicicleta, unas zapatillas de correr o un ordenador. Un hacker busca, por ejemplo que puedas instalar cualquier aplicación en tu iPhone, que ahorres combustible conduciendo, o que tu ordenador vaya más rápido. De ahí que esos pequeños truquillos reciban el nombre de hacks. Sin embargo, dentro de la comunidad del software libre, el recibir este apelativo es todo un honor. En este contexto, un hacker es un programador creativo y eficiente que comparte y enseña al resto del mundo lo que ha hecho. Un verdadera estrella de rock entre monitores, teclados y cables.

Sin embargo, socialmente se sigue percibiendo al hacker como al principio del artículo, como una persona malvada que se encarga de explotar errores para aprovecharse de ellos y obtener beneficio personal. Yo soy de los que opina que el término adecuado para los miembros de  este colectivo es cracker. Estos individuos se encargan de romper (crack) de alguna manera las restricciones de algún sistema informático. Como siempre, ambas clasificaciones no son excluyentes. Una misma persona puede ser un gran programador que desarrolle aplicaciones innovadoras, las comparta con el mundo y al mismo tiempo que use sus conocimientos para crackear algún sistema y sacar algún beneficio.

Para terminar, me gustaría comentar que también existen los denominados hackers de sombrero negro o blanco. Los primeros son esencialmente, crackers, pero los de sombrero blanco son personas que, al igual un cracker, encuentran errores en los programas, con la diferencia de que éstos no se aprovechan de los fallos descubiertos. En su lugar comunican lo que han encontrado con vistas a que nadie con una moral más dudosa pueda usarlos en su favor. Por esto no es extraño que hackers cambien el color de su sombrero de negro a blanco cuando son contratados para velar por la seguridad de grandes empresas.

Así que recordad, cuando penseís en un hacker debe veniros a la mente la imagen de McGyver antes que la de un individuo en calzoncillos que se dedica a robar tarjetas de crédito a incautos por Internet.

Pepe "Puertas de acero" Pérez

sábado, 19 de octubre de 2013

Técnicas bioinspiradas I : Algoritmos Genéticos



Esta entrada es la primera de una serie que pretende ilustrar cómo el funcionamiento de los sistemas biológicos ha influido en el desarrollo de técnicas en el mundo de la informática. Para empezar, he escogido aquella que más me llama la atención, los llamados algoritmos genéticos, que imitan el proceso de selección natural para resolver problemas de optimización. 

Pero, Puertas de Acero ¿qué demonios es un problema de optimización? En palabras llanas, optimizar es buscar la mejor manera de llevar a cabo una actividad. Cualquier actividad está, a no ser que ya se desempeñe de manera óptima, sujeta a ser optimizada. Poniendo un ejemplo concreto, un problema típico de optimización sería encontrar la ruta que pase por todas las ciudades de un país y retornase al lugar de origen, pero intentando minimizar la distancia recorrida. En este problema se dispone de una solución que es el orden en el que se recorrieron las ciudades y la calidad de ésta depende de la distancia recorrida, que es precisamente lo que se desea optimizar (en este caso minimizar).

Los algoritmos genéticos lo que proponen es una manera general de obtener una solución de gran calidad para un problema dado. Como hablar de manera abstracta de este tema puede ser algo lioso, veremos como un algoritmo genético es capaz de resolver un problema de juguete. La situación es la siguiente: imaginemos que deseamos realizar la compra en el supermercado y queremos llenar el carro con alimentos que posean la mayor cantidad de calorías, pero al menor precio. Para hacer más sencilla la explicación imaginemos que el carro que empleamos tiene una capacidad máxima de seis artículos. Como lo que deseamos optimizar es el precio (minimizar) y las calorias (maximizar) podemos también suponer que los artículos del supermercado disponen de esos dos atributos.

A continuación, puede verse una lista de seis artículos del supermercado. Cada uno de ellos posee un identificador numérico, un nombre, precio, calorías y "lo bueno" que es, lo cual viene dado el cociente o ratio entre las calorías y el precio. Precisamente lo que deseamos conseguir es un carro de la compra cuyos artículos maximicen la suma de este cociente para cada artículo.

Identificador Nombre Precio Calorías f
0 Pescado 7 500 71
1 Arroz 1 300 300
2 Pan 0.6 380 633
3 Patatas 1 500 500
4 Aceite 3 800 266
5 Pollo 5 665 133
6 Agua 2 0 0

Un algoritmo genético basa su comportamiento en la evolución de poblaciones. Una población es un conjunto de individuos que codifican una determinada solución. En nuestro caso, un individuo se compondría de un cromosoma con seis genes. Cada uno de los genes indica el artículo seleccionado de la lista de la compra. Por ejemplo, un carro de la compra que contuviese arroz, pan, patatas, aceite, pollo y agua se representaría de la siguiente manera:


El valor de idoneidad (F) de este individuo vendría dado por la suma de lo bueno que son cada uno de sus elementos, es decir, la suma de los f de cada uno de los artículos que lo componen. Reitero, F indica lo bueno que es el individuo y que f es lo bueno que es cada artículo.

Al comienzo del algoritmo, la primera generación de individuos está compuesta por N individuos creados de manera aleatoria. Cada uno de ellos, al igual que el ejemplo anterior dispone de un F, cuyo valor depende directamente de los artículos que contiene. Algunos contendrán artículos mejores y otros peores, pero la idea es que existe una manera objetiva de saber cómo de adaptados están a nuestros criterios.

Una vez se dispone de una población inicial, el algoritmo pasa por cuatro fases. En primer lugar se encuentra la fase de selección, en la que se escogen aquellos individuos que son mejores (en función de su F). Por lo general, aquellos que mejor adaptados se encuentren tendrán más posibilidades de ser seleccionados, pero siempre se deja la posibilidad de que algunos de los menos aptos tengan oportunidades de continuar.

Una vez concluida la selección de individuos se procede a su cruce. Esta fase puede realizarse de varias maneras, pero basta con decir que no todos los individuos tienen derecho a reproducirse (como la vida misma, oiga) y que los detalles no son en absoluto eróticos, sino que consiste en partir el cromosoma por la mitad e intercambiar las dos dos partes resultantes para producir dos individuos. Abajo puede verse como dos carros de la compra se cruzan para producir otros dos diferentes. La fase de cruce tiene como objetivo obtener una descendencia mejor que la de la generación actual, partiendo de la base de que los individuos seleccionados son ya buenos de por sí.

Se define un punto de corte y se intercambian las mitades.
Después, se llega a la fase de mutación, que consiste en cambiar algunos de los genes (en este caso son artículos de la compra) aleatoriamente por otros. Como en la naturaleza, las mutaciones pueden ser perjudiciales (el individuo ve su F disminuida), neutras (F no cambia) o beneficiosas, en el caso en el que la idoneidad incremente. Es preciso mencionar que la mutación, al igual que el cruce viene determinado por una probabilidad, la cual debido al carácter totalmente aleatorio de la operación, es mucho más baja que en el cruce. Abajo puede verse como el agua (código 6) se ve transformado en pescado (código 0), lo cual hace que su valor de F incremente, ya que como veíamos anteriormente en la tabla, el agua tenía un f de cero, mientras que el pescado, si bien es baja, no es nula.

Mejora producida por una mutación aleatoria.
Finalmente, si el número de individuos seleccionados es menor que los N iniciales, lo cual suele suceder a menudo, se introducen nuevos generados aleatoriamente.

Cada secuencia de selección, cruce, mutación y reemplazo constituye una generación de la población. Algunos individuos se adaptarán mejor, mientras que otros serán reemplazados por nuevos individuos aleatorios, que pasaran a pelear para ser seleccionados y poder pasar a la siguiente generación. Lo importante es que el funcionamiento es siempre el mismo, mientras se pueda calcular el valor F de cada individuo. La técnica funciona perfectamente imitando de una manera más simple, el mismo proceso evolutivo que nos ha llevado a donde estamos.

Los algoritmos genéticos pueden emplearse para problemas de planificación de cualquier tipo (transportes, fábricas, etc), así como para el diseño de componentes electrónicos. Además pueden ser empleados para componer música. La idea principal es que la propia canción entera puede evaluarse según criterios de armonía, por lo que toda la maquinaria de selección, cruce, mutación y reemplazo es aplicable. Os dejo con este enlace en el que podéis escuchar algún temita.

Pepe "Puertas de acero" Pérez

viernes, 10 de mayo de 2013

Markov, el escritor




Esta semana he estado muy liado y no he podido escribir mi post. Así que como buen centrífico, he delegado la responsabilidad en mi ordenador. Juzguen ustedes la calidad.

Es uno de los Cien Mil de San Valentin. Cuando encontré esto eyaculé activamente durante varias horas. La voz del ogro junto a peines y demas miembros de sus clases exponía de una moratoria especial de Fran. Ponemos rumbo a la costa de quienes están compitiendo por un sacerdote y compositor aficionado de los árabes.  Huelga decir que una semana que viene. Si conocéis otros métodos de tortura, divertidas herramientas de las tradiciones occidentales. También promete hablar un poco de terminología  y alguna formulilla, que sin duda una de las películas candidatas, sus directores, sus guiones y sus fieles guerreros y nobles, Guillermo los recompenso con tierras y títulos que le proporciona su aliado el fuego valyrio. 
Los bizantinos lo usaron para defenderse en dos dimensiones, por lo que caen dos reales al suelo y los 400 millones, para cobrar la herencia que tenia todas las tropas inglesas, comandadas por Eduardo, el Principe Negro (hijo de Eduardo III) derrotaron a los mas esplendidos forasteros, el Olympia, que como y por supuesto de manera que la gestión de la Plamera, Rhynchophorus ferrugineus (Olivier,1790). Ya vimos en la que ha escrito todo esto escuchando canciones de sus preciosos árboles. Para ser sincero, hay mucho que desear y que muestra el enorme rechazo social que recibe un orinal como recompensa por haber acabado durante su juventud, en dicha guerra, con un puesto preferente en los telediarios, esas de las falanges griegas, la unidad de moda esta, mucho mas interesante, el metano, el cual se corresponde la película sobresalga. Si la humanidad  Pepe Puertas de acero Perez , asi que no sacar a la hora ser enterrado por las escaleras. 
Es por lo tanto, el Estado de Bienestar, ha mejorado desde entonces las prestaciones de la ciudad de Halloween, donde la deuda asociada a la Unión Soviética se dispone del resultado, es decir una vez se ha creado una web encargada de informar sobre los sistemas criptográficos actuales. Al final el proceso de fabricación y transporte. La tela de los planetas, pasando por las buenas virtudes que tiene un trabajo en Renault, el cual da una medida económica siempre tiendo a dividir su coste por el año en el cifrado y es difícil hablar de redes neuronales. Un hombre venido de la paradoja de los impuestos y de una petaca o bota (la mejor forma de matrimonio). El segundo bien esta superado en el juicio. Exacto: los acusados pueden mentir en el universo de proporciones bíblicas registrables. Entonces los normandos fueron avanzando posiciones, inclinando el campo de la nube es el siguiente. Lo que por ejemplo fuera un circulo se tratase, propone una serie de villancicos alternativos para evitar la expansión salvaje, construyendo el imperio mas grande que tu, vestida con pieles. 

FIN 


Bueno, ahora que sabemos que los bizantinos realizaron su defensa en dos dimensiones y que la ciudad de Halloween se ha visto mejorada por el estado del bienestar, tal vez os cuestioneís cómo demonios ha hecho esto el ordenador. Si recordáis  la semana pasada extraje gran parte del texto de todos los posts de Mente Enjambre. Entonces, me plantee si juntándolos todos podría aplicarse alguna técnica que fuera capaz de extraer algún tipo de patrón en el texto. La técnica escogida recibe el nombre de Cadenas de Markov. Su funcionamiento elemental es el siguiente. En primer lugar se separan las palabras por espacios, y para cada una de ellas se calcula cual es la probabilidad de que sea seguida por el resto. Por ejemplo, para la palabra Halloween se calcula con qué frecuencia va después de cualquiera del resto de palabras. Una vez construido este modelo estadístico, se parte de una palabra y aleatoriamente se va extrayendo la siguiente, siguiendo la distribución de probabilidad calculada previamente. Este proceso se repite hasta que el número de palabras sea el deseado.

Por este motivo el texto es estructuralmente válido, es decir, la sintaxis de las oraciones sigue cierto patrón, debido a que es frecuente que se den estructuras similares en los textos originales. Más allá de esta estructura aparente, el texto no tiene sentido. Si soy sincero, este es un truco muy viejo (hay multitud de ejemplos en Internet), pero tiene su utilidad práctica, ya que se puede aplicar para extraer patrones en los datos, no sólo de texto, sino en cualquier ámbito en el que exista una sucesión de símbolos.

Si el ordenador ha escrito esto es porque nosotros lo hemos hecho a lo largo del tiempo que llevamos publicando en este blog. Las paridas que he puesto más arriba son, en cierto modo, nuestras paridas.

Espero que os haya sacado una sonrisa.

Pepe "Puertas de Acero" Pérez


viernes, 3 de mayo de 2013

Surcando la web con arañas



Aunque el título del artículo, malintencionadamente, lleve a pensar que las líneas siguientes van a versar sobre adorables artrópodos, no es así. En este post voy a hablar sobre lo que es una araña web. Tranquilos, seré breve y después me extenderé sobre los resultados obtenidos tras programar una araña   que se ha arrastrado por todos los posts de Mente Enjambre.

Una araña web es un programa informático el cual se encarga de navegar a lo largo de internet, de manera sistemática y organizada. Vamos, lo que viene a ser un programa que es capaz de leer páginas web, extraer información de las mismas y continuar su camino hacia otras páginas web. La utilidad de los arácnidos de la red es vital, por ejemplo, para que Google sea capaz de poblar los resultados de búsqueda. ¿Cómo os creeís que consigue saber qué palabras hay en una web? Pues mediante una cantidad enorme de arañas que se deslizan a través de los hiperenlaces.

Para ilustrar qué posibles usos puede tener un programa de estas características, he programado una araña para que explore todas las páginas de Mente Enjambre. En primer lugar se consiguen todos los enlaces a todos los posts, posteriormente se extrae el texto del mismo y quién es su autor. Ahora disponemos de todo el texto que hemos escrito mis compañeros y yo, pero ¿qué hacer con él?. Vamos a analizar la frecuencia con las que ciertas palabras aparecen en esta maravillosa bitácora.

Abajo podemos ver cuáles son las palabras cuya longitud es superior a dos caracteres que se repiten con mayor frecuencia. Cada una de las barras muestra en la parte superior la frecuencia media con la que aparece la palabra concreta en todos los posts. La araña ha recuperado 130 posts y concluye que, de media la palabra "que" se emplea casi 44 veces por artículo. Está claro que la redacción de Mente Enjambre apuesta por las oraciones suboordinadas relativas, pero dejando a un lado este hecho semigracioso, el resto de términos son demasiado genéricos como para describir cualquier tendencia a la hora de escribir. Para solucionar esto se eliminan aquellas palabras que tienen menos de siete caracteres. De esta manera nos cargamos la mayoría de las preposiciones, determinantes y conjunciones.






















Ahora, en la parte superior derecha, las palabras ya son lo suficientemente largas y pueden aportarnos algo más de información. Puede verse que este ranking lo encabezan dos palabras bastante curiosas: película e historia. Seamos sinceros, si analizamos el texto de manera general, se repiten un montón estos dos términos. Habría que esperar a sistema para que vuelva aparecer un término no tan genérico. Tengamos en cuenta que, como promedio, aparecen estas dos palabras en cada artículo. Pero claro, puede ser que uno de nosotros emplee esos términos con mayor frecuencia y esté desviando las medias. Por ello, a partir de ahora calcularemos la media con la que se emplea cada palabra en función del número de entradas escritas por cada uno de los cuatro autores que escribimos aquí. En concreto, Conde Chócula había escrito en el momento en el que la araña recogió los datos 44 posts, Monsieur Le Tupe 31 y Almaciguero Mayor 32. En mi caso, la araña sólo fue capaz de recuperar 23, básicamente porque algunos de los posts eran tan infumables que no pudo ni ser capaz de entender ni una palabra.


Nuestro querido Almaciguero, como es evidente, siempre suele hablar sobre cómo ciertos personajes se comportan en alguna película o durante algún período de la Historia. Curiosamente, sobre todo si lo comparamos con Monsieur Le Tupe, la frecuencia con la que usa sus palabras más frecuentes (valga la redundancia) es mucho mayor. Hecho que puede verse en que, de media, dice unas cuatro veces la palabra película y la palabra historia. Nada fuera del otro mundo, porque precisamente su sección lleva como título "Cine e Historia". Nuesto Tupé favorito, por el contrario usa un vocabulario más variado, pero también tiene derecho a hablar sobre los políticos y sus leyes. Nótese como tiene un especial apego a la palabra cualquier.

En el diagrama de barras de la parte superior derecha puede verse cómo nuestro Editor usa con mayor frecuencia canción y su plural, canciones. Curiosamente, la frecuencia media con la que emplea estas palabras es menor que la unidad, por lo que podemos afirmar que es el que emplea un vocabulario más variado. Esto tiene una explicación parcial, ya que todas las viñetas se publican bajo su nombre, forzándole a emplear términos que se salgan fuera de su sección habitual, la de música. Finalmente, servidor, sufre de los mismos problemas que el responsable de la sección de Historia y cine: mi vocabulario es reducido. Personalmente, no sabía la obsesión que tenia con la palabra ejemplo, ni que durante los posts de criptografía hubiese empleado tanto el término cifrado. He captado el mensaje , está claro que tengo un problema [redoble de tambor].

A falta de un análisis en mayor profundidad, aquí acaba el artículo. Parece ser que todos tenemos nuestras palabras favoritas. La semana que viene construiremos un post completamente artificial a partir de todas las palabras que la araña ha conseguido.

Pepe "Puertas de acero" Pérez

viernes, 5 de abril de 2013

La nube



Hace un par de semanas, un profesor nos preguntó que cuál era la mayor revolución que había sucedido en el hardware para empresas. Unos nos encogimos de hombros y otros dieron elaboradas respuestas. Da igual, la respuesta (como siempre) era mucho más simple. La revolución del hardware empresarial es simplemente dejar de tener hardware.

El hardware (y el software que se ejecuta sobre él) pasa a ser un servicio, no un producto. Dejas de comprar cincuenta servidores, para alquilarlos. Se pierde el acceso físico a las máquinas, pero al mismo tiempo del mantenimiento se encargan otros. Ya no es necesario instalar sistemas de copia de seguridad, ni sistemas de alimentación ininterrumpida en caso de fallo eléctrico, tu proveedor en la nube se encarga de todo esto. Aún así, puede haber clientes que no estén interesados en alquilar servidores directamente, sino que desean un servicio menos general. Por eso surgen los tres niveles de servicio que un proveedor en la nube puede proporcionar a su cliente según sus necesidades.
  • Infraestructura como servicio. Lo que el proveedor ofrece es la posibilidad de disponer de ordenadores con características concretas a un precio determinado. Lo interesante de este enfoque es que es elástico. Imaginemos que se necesita renderizar una película. En algunos escenarios puede ser más rentable alquilar la infraestructura que comprar todos los ordenadores para sólo usarlos una vez. Básicamente cuando se habla de "la nube" se está hablando de la posibilidad de alquilar ordenadores.
  • Plataforma como servicio. El proveedor ofrece una interfaz sobre la cual es posible programar aplicaciones. Lo interesante es que estas aplicaciones consumen recursos bajo demanda, es decir, están preparadas para, si se da el caso de una afluencia enorme de clientes, obtener más potencia de cómputo de manera que el diseñador de la aplicación no tenga que tenerlo en cuenta.
  • Aplicación como servicio. Es la más visible por el usuario común. Básicamente es desplegar una aplicación en Internet. El usuario pierde el control sobre la instalación y actualización, pero pasa a estar disponible en todo momento y lugar.
Lo interesante de estos tres niveles es que cada uno de ellos reposa sobre el anterior. Por ejemplo, GMail podría verse como una aplicación como servicio, que reposa sobre la plataforma Google Apps, la cual obtiene de manera elástica más o menos recursos de los datacenters de Google. Como siempre, en función de las necesidades del usuario se optará por contratar un servicio u otro.

El desplazamiento del control a la nube es curioso, pero no es la primera vez que sucede algo similar. En los años cincuenta y sesenta, las grandes empresas trabajaban de esta manera. Era habitual que tu ordenador fuera un terminal tonto, es decir, prácticamente una pantalla, teclado y la capacidad de conectarse a un mainframe (ordenador grande y potente) donde residía realmente la información y el poder de cómputo.

No voy a decir que esto de la nube es el futuro. Es el presente. Podemos solicitar máquinas "virtuales" cuando y durante el tiempo que queramos, es posible programar de tal manera que elásticamente consuman recursos o simplemente usar aplicaciones en un entorno remoto, sin preocuparnos de que éstas tengan que actualizarse. Eso no impide que todavía haya mucho por hacer. Por ejemplo, ¿no sería conveniente que el acceso a todas las nubes fuera igual?. Con esto quiero decir, si por ejemplo Amazon dice de subir los precios, no digo de quebrar, sería interesante poder cambiar de proveedor con el menor esfuerzo posible. De ahí el interés actual en estándares e interoperabilidad, es decir, desarrollar mecanismos que permitan transferir todo lo desarrollado, de un proveedor a otro, sin esfuerzo.

También hemos visto cómo se pierde el control sobre los datos. Esto puede ser aceptable, pero no debe conllevar la pérdida de privacidad. Por ejemplo, en el caso de las aplicaciones de correo electrónico ¿están realmente leyendo nuestros correos? ¿cómo sé si alguien ha descubierto mis planes de dominación mundial que estaban guardados en un fichero txt en Dropbox? Además, imaginemos el siguiente escenario empresarial. Dos empresas competidoras han contratado los servicios de un mismo proveedor, que ha ubicado sus máquinas en un mismo datacenter. Para abaratar costes, algunos de sus datos se encuentran en los mismos servidores. Es importante garantizar que es imposible que una empresa acceda a los servidores de otra ¿cómo demonios convences a las empresas de que lo estas cumpliendo?. Y otro tema importante, de cara a la legislación ¿donde están realmente los servidores?

Estad atentos. Los próximos años van a ser interesantes.

Pepe "Puertas de acero" Pérez

viernes, 8 de marzo de 2013

¿Por qué no tenemos aún Terminators?


Sí señores, es el Chuache, Terminator. Vivimos en una época en la que las comunicaciones son instantáneas, todo el mundo va pegado a sus teléfonos, hemos envíado sondas a los confines más remotos del Sistema Solar y España es gobernada por Mariano Rajoy. Cosas que hace años eran impensables, ahora son de lo más cotidianas pero... ¿por qué no luchan los Terminators nuestras guerras? ¿por qué no existen los robots de Asimov? ¿por qué todo androide es más tonto que una piedra?

No tenemos ni idea de cómo funciona el cerebro a un nivel de detalle suficiente como para poder construir algo que actúe de manera inteligente. Esto es debido a que el sistema nervioso es responsabilidad de las neuronas. El sistema nervioso basa su funcionamiento en función de cómo establezcan enlaces las neuronas entre sí, lo cual es uno de los hechos que condiciona todo lo que somos. Lo importante es que a través de estas conexiones discurren los impulsos eléctricos que se convierten en puñetazos, risas, malabares y elaboradas jugadas al Backgammon.

Las neuronas forman entonces una especie de red. Como si de un plano de metro se tratase, existen caminos mejores y peores para llevar la "información", lo cual desencadena a que ciertos grupos de neuronas que se encuentran juntas realicen una determinada función. Por ejemplo, en la siguiente figura pueden verse algunas áreas del cerebro, junto con las funciones que llevan a cabo:


Existen zonas como el lóbulo occipital, que se encarga de la visión (en realidad también hay otras zonas involucradas), o el lóbulo frontal, que se encarga de todas aquellas conductas que denominamos como "humanas". Aunque parezca que hay más o menos un "mapa" del cerebro, existen funciones, como la memoria a largo plazo, que no se encuentran localizadas sino que encuentran dispersas a lo largo de varias zonas. En cualquier caso, el problema es que las neuronas son meros procesadores de impulsos eléctricos. Es decir, una neurona recibe una pequeña corriente y la transforma en otra distinta. Este proceso se repite muchas veces hasta que alcanza su destino y produce un efecto que podemos percibir (un pensamiento, un movimiento, etc). El problema es que se desconoce cómo se produce este cambio en los impulsos eléctricos con el suficiente detalle como para poder replicarlo fuera de nuestro propio cerebro.

Entonces, incapaces de percibir el funcionamiento real del cerebro, para intentar comprender su funcionamiento nos inventamos los símbolos. Un símbolo es una representación abstracta de lo que nuestro cerebro percibe y emplea para que actuemos. Por ejemplo, cuando nuestros ojos ven una manzana, el símbolo de la manzana se empareja con el hecho de que tengamos hambre (si la tuviéramos)  y desencadena otro símbolo, la ubicación de la comida en el árbol. A su vez esto conlleva a que nos desplacemos, cojamos la manzana y finalmente nos de por comerla.

De esta manera abstraemos los frenéticos disparos de las neuronas en símbolos que sí podemos comprender. Para el caso de un sistema estímulo (manzana) - respuesta (comer), una aproximación de este tipo funciona bastante bien, e incluso para ciertas tareas que pueden parecer humanas, como puede ser jugar al ajedrez o a la gran mayoría de los juegos de mesa. En general, cualquier tarea que pueda describirse de manera no ambigua y precisa. Un Terminator, suponiendo que se  moviera acordemente, sería muy fácil hacer que recogiese manzanas de los árboles, pero ¿sería capaz de reconocer la manzana que debe recoger? Es poco probable, ya que existen ciertas tareas como el reconocimiento de objetos, caras o aprender a andar, que son muy difíciles de caracterizar mediante símbolos. ¿Podríais dar una descripción por pasos para reconocer una simple manzana entre cualquier otro objeto? En el caso del reconocimiento de los objetos, el conocimiento se encuentra fuertemente escondido entre las conexiones neuronales. Es por lo que cuando los estímulos visuales llegan a nuestro lóbulo occipital, no se sabe cómo, pero las neuronas adecuadas se disparan y tenemos consciencia de que lo que vemos es una manzana.

Como probablemente os esperabáis, no tenemos Terminators porque no conocemos nuestro cerebro. Pero la semilla de los Terminators se encuentra en todas aquellas máquinas que, automáticamente, realizan tareas que sí pueden ser representadas mediante símbolos claros y definidos. Quién sabe lo que pasará si algún día conseguimos comprender cómo las neuronas establecen sus conexiones...

Pepe "Puertas de acero" Pérez

viernes, 1 de marzo de 2013

Criptografía: la ciencia de los secretos (Parte II)

[Esta entrada es la continuación de aquella que posteé este lunes y que podéís ver aquí. Mientras que el pasado lunes hablábamos sobre cuales eran las técnicas tradicionales, esta semana toca explicar cuáles son los principios y el funcionamiento de los sistemas criptográficos actuales]


Al final el proceso de cifrado se traduce en operaciones sobre flujos de bits.


En esta entrada trabajaremos sobre un ejemplo concreto. Seguiremos el desarrollo de un escenario en el que hay tres interlocutores, cuyos nombres son Alice, Bob y Charlie. Los nombres han sido escogidos a propósito porque son los mismos que toman en los ejemplos que aparecen en libros de seguridad informática. En este caso, para no parecer un libro de texto, he preferido dotar de contexto a la situación relatada. De todas maneras, los problemas criptográficos que sufren los protagonistas son los mismos que aparecen en los textos sobre criptografía aplicada. 

Nota: este fragmento sólo pretende ser un ejemplo. No tiene como intención promover prejuicios hacia los colectivos a los que pertenece cada uno de los protagonistas. Considero que el hecho de que cada uno de los personajes disponga de un trasfondo es algo que resulta más interesante que narrar una serie de interacciones entre interlocutores.

Alice es la mujer de Charlie, un narcotraficante alojado en Miami. La vida de Alice no tiene sentido. Se ve asfixiada por su destrozado matrimonio, en el que el papel que ella interpreta es prácticamente nulo. Su marido, con suerte, la ignora, pero hay muchas noches en las que cuando vuelve a casa le insulta e incluso agrede físicamente. 

Cansada de una vida de soledad, se escabulle algunas noches fuera de casa. En uno de esos largos períodos nocturnos, conoce a Bob, un apuesto exbroker que ha decidido tomarse un respiro y se ha ido a vivir, durante un tiempo, a la costa oeste. Alice ve en Bob todo lo que Charlie pudo ser y no quiso: es amable, sabio y lo más importante, la trata como es debido. Tras una serie de encuentros inocentes, Alice y Bob intiman y el pecado se consuma. Pasado un tiempo y consciente de que las salidas nocturnas de su mujer se suceden más frecuentemente, Charlie, que es narcotraficante, pero no tonto, comienza a sospechar.

En cuanto se entera de que algo raro está pasando, Charlie le prohíbe a su mujer salir de casa. Ahora el único medio de contacto que ésta tiene con Bob es a través de Internet (no retorzamos más el asunto, todos sabemos que si Charlie fuera real esta historia acabaría aquí). De nuevo, Charlie no es idiota y tiene acceso a toda la información que sale del ordenador de su mujer, por lo que en principio, todo mensaje que intercambien Bob y Alice se podrá leer. 

El objetivo de Charlie es saber donde vive Bob y matarlo (no es un tipo complejo). Lo que Alice y Bob desean es seguir comunicándose para idear un plan que la libere de las garras del malvado Charlie. Para conseguir su objetivo, Charlie desea hacerse pasar por su mujer para forzar a quedar con Bob, momento en el que aparecerá con sus matones para terminar la historia. ¿Cómo pueden Alice y Bob comunicarse de tal manera que Charlie sea incapaz de arruinar sus planes?

Diagrama amoroso-criptográfico en el que aparecen todos los interlocutores del problema / Elaboración propia
Este ejemplo ilustra los principios de los sistemas criptográficos modernos que deben cumplirse para garantizar la seguridad en las comunicaciones:
  1. Confidencialidad. Esta propiedad garantiza que sólo el emisor y receptor del mensaje son capaces de comprender su contenido. En este caso, tanto Alice como Bob quieren que sus mensajes sean confidenciales, es decir, que Charlie sea incapaz de entender lo que se están diciendo.
  2. Autenticación y no repudio. Por autenticación se entiende que ambos interlocutores deben tener la garantía de que son aquellas personas o entidades que dicen ser. El no repudio se refiere a que el emisor, una vez enviado el mensaje, no puede negar ser el autor del mismo. En este caso la autenticación garantiza que sólo Bob puede envíar mensajes que indiquen que el remitente es Bob, así como sólo Alice puede enviar mensajes en los que indica que es ella. Ninguna de las dos partes puede rechazar que ha sido autor del mensaje.
  3. Integridad. El contenido del mensaje no puede ser modificado por un tercer individuo (un intruso) sin que los interlocutores se den cuenta. Es decir, si Charlie cambia el contenido de los mensajes, el receptor (Alice o Bob) se darían cuenta.
Lo que resta de la entrada será dedicado a ver cómo dos de los paradigmas de cifrado pueden contribuir a establecer comunicaciones seguras. Por desgracia, dejaremos a un lado cómo se verifica la integridad de un mensaje. Esta faceta de la criptografía es muy importante, pero si nos restringimos al problema visto en el ejemplo, no juega un papel tan importante como el resto de propiedades.

Criptografía simétrica

Un algoritmo es de cifrado simétrico cuando la clave empleada para el cifrado y descifrado es la misma. Las dos técnicas que veíamos en la entrada anterior empleaban la misma clave tanto para convertir el texto plano en texto cifrado, como para el proceso inverso. Recordemos que mientras que el valor de k en el cifrado César constituía una clave muy sencilla, si había una clave hecha y derecha en el cifrado Vignère. Como vimos en la entrada anterior, en torno a estos mecanismos de cifrado surgieron técnicas que permitían conocer el mensaje cifrado sin tener la necesidad de conocer la clave. Esto es un suceso recurrente en la criptografía. Aparece una técnica nueva, pasa el tiempo y queda obsoleta. 


Este tipo de algoritmos se encuentran muy avanzados, tanto en lo rápido que el proceso de (des)cifrado se lleva a cabo, como en lo difícil que resulta recuperar el mensaje original si se desconoce la clave. El esquema general que siguen comienza con la división del mensaje en fragmentos de igual tamaño. Sobre estos fragmentos efectúan el cifrado, el cual consiste en aplicar una serie de operaciones que son muy sencillas de aplicar si se sabe la clave, pero que si se desconociese resultaría un trabajo enorme. Estas operaciones se basan en el concepto de función dificilmente invertible, es decir una función matemática que es fácil de aplicar en un sentido pero difícil de aplicar en el otro. Por ejemplo, la exponenciación al cuadrado es sencilla de aplicar, todos sabemos calcular rápidamente el cuadrado de cualquier número. Sin embargo, ¿a que no es tan sencillo calcular la raíz cuadrada de un número?

Uno de los primeros  algoritmos de cifrado simétrico modernos fue DES. Se encuentra en desuso (ya no se considera seguro), pero sí se sigue empleando 3DES, que consiste en la aplicación sobre un mismo texto del algoritmo DES, pero 3 veces, empleando para ello 3 claves diferentes. En la actualidad el algoritmo más empleado es AES, el cual se considera un estándar de facto en lo que se refiere al cifrado simétrico de mensajes.

Retomemos el problema del ejemplo anterior. Si Alice y Bob desean emplear AES para cifrar los mensajes que intercambian, ambos necesitarán emplear una clave para cifrar el contenido de sus mensajes. El problema es que Charlie siempre está fisgoneando todo lo que Alice envía. Si Alice le envía a Bob la clave que ambos deben emplear, Charlie la conseguirá y será capaz de emplearla para descifrar el contenido de futuros mensajes, por lo que podrá saber todo lo que su mujer está diciendo a su amante (y viceversa).

¿Existe alguna manera de transmitir un mensaje a través de un medio no seguro, de tal manera que ese mensaje solo pueda ser descifrado por el receptor? La respuesta es afirmativa y parte del hecho de que tal vez sea interesante emplear claves distintas para el cifrado y descifrado. La solución consiste en emplear sistemas criptográficos de clave pública.

Criptografía de clave pública

Los sistemas de este tipo asumen que cada una de las entidades dispone de dos claves, una pública y otra privada. Lo interesante de este esquema es que la clave pública es conocida por todos, mientras que la clave privada sólo la conoce su dueño.

Estas claves se generan de tal manera que si Alice cifra un mensaje con la clave pública de Bob, sólo este último puede descifrar el mensaje. Para ello descifrará el mensaje recibido con su clave privada. El proceso en el otro sentido también es posible, Bob puede cifrar con la clave pública de Alice un mensaje, de tal manera que ella, con su clave privada, es la única capaz de descifrarla. Ahora sí se cumple la propiedad de confidencialidad, ya que es posible obtener el mensaje original cifrado en primer lugar con la clave pública y descifrando posteriormente con la clave privada. Alice y Bob pueden comunicarse sin que Charlie sepa lo que se están diciendo. 

Este enfoque aporta confidencialidad al proceso de comunicación, pero no garantiza la autenticación, es decir, no asegura a Bob que el mensaje recibido por parte de Alice proviene de ella. El motivo es sencillo, cualquiera (en especial, Charlie) es capaz de cifrar con la clave pública de Bob, por lo que no hay garantía de que la autora del mensaje cifrado sea Bob. El malvado Charlie puede enviarle un mensaje cifrado a Bob, haciéndose pasar por su mujer, de tal manera que éste se confíe y sea lanzado al mar metido en un saco.

El proceso mediante el cual se introduce esta información que garantiza la identidad del emisor es conocido como firma digital.  Para conseguir autenticación es necesario que Alice emplee su clave privada y cifre con ella el mensaje (si, es al revés que cuando se quería obtener confidencialidad). Una vez Bob recibe el mensaje, éste lo descifra empleando la clave pública de Alice para obtener el mensaje original. Lo interesante de este enfoque es que sólo Alice pudo cifrar ese mensaje, (también puede decirse firmar, porque cualquiera puede descifrarlo, al contrario que en el caso anterior) ya que sólo es posible descifrar un mensaje cifrado con la clave pública de un individuo, sí este lo ha cifrado previamente con su clave privada. Es importante también mencionar que ambos enfoques no son excluyentes. Es decir, puede cifrarse primero el mensaje con la clave pública del destinatario y después firmarlo con la clave privada. De esta manera se consigue confidencialidad y autenticación. Alice sabrá que sólo Bob ha podido enviarle el mensaje y además, sólo ella puede leer su contenido.

El hecho más importante es que las claves (pública y privada) se han generado de tal manera que sea imposible muy complicado recuperar la privada a partir de la pública. Debido a que el proceso de generación de claves se merece una entrada por sí solo, basta con decir que son creadas a partir de dos números primos enormes. Conseguir la clave privada a partir de la pública requeriría ser capaz de descomponer un número enorme (de miles de cifras) en sus factores primos. Hecho que a día de hoy, incluso con granjas de ordenadores trabajando, es una tarea enormemente costosa.


OrigenDestinoObjetivoAcción del emisor Acción del receptor
AliceBobConfidencialidadCifrar con la clave pública de Bob.Descifrar con la clave privada de Bob.
BobAliceConfidencialidadCifrar con la clave pública de Alice.Descifrar con la clave privada de Alice.
AliceBobAutenticaciónCifrar con la clave privada de AliceDescifrar con la clave pública de Alice
BobAliceAutenticaciónCifrar con la clave privada de Bob.Descifrar con la clave pública de Bob.
Resumen de las acciones a tomar por el receptor y emisor. Nótese que se pueden combinar ambos objetivos simplemente aplicando ambas acciones.

Hasta ahora todo han sido ventajas. La criptografía de clave pública nos aporta casi todo lo que Alice y Bob necesitan para comunicarse sin que Charlie se entere. Entonces, ¿qué sentido tiene criptografía simétrica? La respuesta es clara: es cuestión de eficiencia. Las operaciones de cifrado y descifrado, cuando se emplea un sistema asimétrico, son extremadamente lentas. Se estima que algoritmos de cifrado simétrico como  DES o AES pueden ser varios órdenes de magnitud más rápidos que sus homólogos asimétricos.

Por este motivo, a la hora de comunicarnos nosotros a través de Internet no se emplean estos sistemas durante todo el proceso, sino que se combinan ambos paradigmas. Para ello, en una primera etapa se establece una clave de sesión, la cual se empleará para cifrar y descifrar empleando un algoritmo simétrico. Esta clave es cifrada con la clave pública del destinatario, el cual la recibe y lleva a cabo el descifrado con su propia clave privada. Ahora ambas partes conocen esta clave de sesión, la cual será empleada para cifrar el resto de mensajes, esta vez mediante algoritmos simétricos.

Parece ser que al final Bob y Alice con tanta "tontería" de clave pública y privada terminarán fugándose juntos. Mientras, el pobre Charlie, paseará solo por las playas de Miami, preguntándose qué arruinó su matrimonio.

Pepe "Puertas de Acero" Pérez

lunes, 25 de febrero de 2013

Criptografía: la ciencia de los secretos (Parte I)

[Esta es la primera parte de dos entregas relacionadas con la criptografía. Esta entrada tiene como objetivo  explicar cuáles son algunas de las técnicas tradicionales, así como dar una visión general de la labor de la criptografía. El viernes habrá otra publicación que tratará sobre el comportamiento de los sistemas criptográficos modernos, es decir, aquellos que empleamos a diario desde nuestros ordenadores]

La escítala, una de las primeras técnicas de cifrado de la Historia /  Eivind Lindbråten


Desde que el ser humano comenzó a comunicarse ha existido el deseo de que la información intercambiada se enmascarase de tal manera que posibles fisgones no pudieran comprender su significado. Algunos de nosotros hemos utilizado códigos a lo largo de nuestra vida, si bien de manera informal. Es hora de que veamos cómo se ha llevado a cabo la práctica de enviar secretos, desde un punto de vista más metódico.

La criptografía puede considerarse la rama de la ciencia que se encarga de realizar transformaciones sobre el lenguaje de los mensajes, de tal manera que lectores no autorizados sean incapaces de comprender su contenido. Un sistema criptográfico es la entidad encargada de aplicar una serie de transformaciones sobre un mensaje en claro (plaintext), para producir un criptograma o mensaje cifrado (cyphertext). Las transformaciones que se aplican son matemáticas, por lo que es imprescindible tener claro que cada letra puede representarse mediante un número distinto, sobre el cual pueden aplicarse operaciones, como la suma o la resta, para luego volver a la representación en forma de caracteres. Por ejemplo, a la letra A se corresponde con el número cero, la B con el uno y así sucesivamente. La potencia de esta asociación entre números y letras radica en las ventajas que aporta un marco formal.

La naturaleza de los sistemas criptográficos ha ido evolucionado con el paso del tiempo. En el siglo V a.C ya existían técnicas como la escítala o el cifrado Atsbah que permitían la codificación de mensajes. En general, estos procedimientos basaban su funcionamiento en la sustitución de cada una de las letras del abecedario por otra distinta, siguiendo una regla fija. A partir del conocimiento de los pasos seguidos para el cifrado, era posible recuperar el mensaje original. Debido a que estas técnicas emplean un único alfabeto alternativo para codificar el mensaje se denominan técnicas de sustitución monoalfabética, de entre las cuales destacamos el cifrado César.

El cifrado César sustituye cada letra del mensaje original por aquella letra que se encuentra a k unidades de la letra original, por lo que la regla empleada no es fija (como sucedía con el cifrado Atsbah), sino que dispone de una variable: el desplazamiento k a llevar a cabo. Por ejemplo, si k=3 la sustitución que se aplica a cada una de las partes del mensaje puede verse reflejada en la figura que se encuentra bajo estas líneas. 

Sustitución monoalfabética con desplazamiento k=3 / Cepheus

Para este caso concreto, A pasa a ser  B, C se transforma en E y así sucesivamente. Las últimas letras (X, Y y Z) se convierten en las tres primeras respectivamente (A, B y C). Una ventaja muy importante de este procedimiento de cifrado es que el mero conocimiento de la regla empleada para cifrar es inútil por sí sólo, porque también es necesario conocer el valor de k con el que se había cifrado el mensaje original. De manera muy sencilla, ese valor de k constituye un secreto compartido, una clave, que solo los interlocutores designados deben conocer. A continuación puede verse un ejemplo de texto original y su correspondiente texto cifrado.
Texto original: Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. 
Texto cifrado: Oruhp lsvxp groru vlw dphw, frqvhfwhwxhu dglslvflqj holw, vhg gldp qrqxppb qlek hxlvprg wlqflgxqw xw odruhhw groruh pdjqd doltxdp hudw yroxwsdw.
Como puede apreciarse, el resultado es completamente ininteligible, motivo por el cual las legiones romanas empleaban este esquema de cifrado para ocultar el contenido de sus mensajes. Su utilidad en dicho contexto histórico fue el que instigó los rumores de su uso por parte de Julio César, del cual toma su nombre.

Esta técnica se encuentra en desuso desde principios del año 1000 d. C. El motivo es que aplicar un desplazamiento a cada una de las letras, a primera vista produce resultados ininteligibles, pero deja intactos los patrones presentes en el texto original. Esto es debido a que las letras empleadas para comunicarse en un cierto idioma siguen una determinada distribución de frecuencias, es decir, puede saberse la proporción aproximada con la que aparece una determinada letra en un idioma concreto. Para comprender mejor lo que se quiere decir con distribución de frecuencias, puede verse a continuación un ejemplo de histograma de frecuencias para el idioma español.

Histograma de frecuencias para el español / WIKIPEDIA
El histograma situado a la izquierda se ha calculado a partir de varios textos en español y, para cada letra, indica el porcentaje de veces que aparece. Si lleváramos a cabo un cifrado César la única diferencia entre el histograma calculado a partir del mensaje sin cifrar y el obtenido a partir del cifrado, sería un desplazamiento en la distribución de frecuencias. Por ejemplo, el pico que se observa en la A pasaría a encontrarse k letras después, por lo que si construimos este histograma a partir de textos cifrados, el problema de encontrar la k empleada se transforma en encontrar el desplazamiento de los picos. En general, a la primera puede que el desplazamiento adivinado sea incorrecto, pero es posible encontrarlo con relativa facilidad, simplemente intentando averiguar a dónde han ido a parar los picos correspondientes a las letras más frecuentes. El problema se simplifica si se emplean ordenadores, ya que ni siquiera necesita calcularse un histograma porque la máquina es lo suficientemente potente como para descifrar el texto con todos los valores posibles de k y comprobar con cual de ellos se obtiene un texto con sentido.

Esta técnica para averiguar la clave empleada en cifrados como el anterior recibió el nombre de análisis de frecuencias. Los cifrados de sustitución monoalfabéticos quedaron inservibles, pero persistía la necesidad de comunicarse de manera secreta, por lo que aparecieron nuevas técnicas. Si en este tipo de cifrados sólo se empleaba un alfabeto, es decir, para cada mensaje sólo se disponía de un alfabeto alternativo, que era el mismo que el original pero desplazado k unidades, el paso siguiente era usar más alfabetos. Es decir, que a una misma letra no le correspondiese siempre la misma cifrada, sino que hubiera alguna alternativa.

Si se emplean varios alfabetos, el histograma de frecuencias no guarda ningún parecido porque cada una de las letras sigue un cifrado independiente al resto. Por este motivo, este tipo de cifrados reciben el apelativo de polialfabéticos ya que emplean varios alfabetos. La más sencilla de estas técnicas recibe el nombre de cifrado Vignère y fue planteado en 1553. La idea principal de esta técnica es utilizar para cada letra del mensaje original un cifrado César distinto. Debido a que cada letra se codifica de manera independiente necesitamos un elemento adicional, la clave, que es mucho más compleja que la k empleada en el cifrado César.

Veamos un ejemplo. Necesitamos dos elementos para cifrar, el primero de todos es el mensaje a transmitir. En este caso escogemos una palabra de actualidad, SOBRESPARATODOS. Para poder cifrarla necesitamos una clave,  la cual escogemos que tome el valor de AMIGOS. Aquí surge el primer problema, la clave debe ser igual de larga que el mensaje a cifrar, por lo que es necesario expandirla. Este proceso de expansión consiste en rellenar el final de clave con el principio de la misma, hasta que la longitud sea idéntica a la del mensaje. La clave extendida sería entonces AMIGOSAMIGOSAMI

Una vez establecidos estos parámetros de entrada, el cifrado Vignère recorre el mensaje original y la clave al mismo tiempo. De tal manera que en cada paso de cifrado se dispone de una letra del mensaje original y otra letra de la clave. Para cifrar la letra del mensaje se calcula la posición que ocupa en el alfabeto el carácter de la clave. Esa posición es el valor k que emplea para cifrar (mediante cifrado César) la letra correspondiente del mensaje.

Proceso de cifrado Vignère para las tres primeras letras del mensaje SOBRESPARATODOS, empleando para ello la clave AMIGOS / Elaboración propia.
En la figura anterior puede verse como a la S (primer carácter del mensaje) le corresponde el ordinal 18 y a la A (primera letra de la clave) el número 0. La suma de ambos resulta en el ordinal 18 (esto es, hemos aplicado un cifrado César sobre la letra del mensaje), el cual se corresponde con la letra S. El proceso se repite para la segunda posición de la clave y el mensaje. La letra O se corresponde con el ordinal 14 y la M con el ordinal 12 que sumados producen el número 26. Debido a que hay exactamente 26 letras (desde 0 hasta la 25) la letra 26 es equivalente a la letra cero (el resto de dividir 26 entre 26 es cero, es como si la suma diera la vuelta, volviendo a empezar a partir del 26), por lo que se obtiene la A como resultado. La figura anterior concluye con el resultado de cifrar la tercera letra, la B, con la tercera letra de la clave, la I. En este caso la suma resulta en 9, lo cual equivale a la letra J. El proceso se repite para cada una de las letras del mensaje. Los elementos involucrados en el proceso pueden verse a continuación:


texto: SOBRESPARATODOS
clave: AMIGOS
cifrado: SAJXSSBIXOTALUG

Debido a que este tipo de cifrado intenta usar una letra distinta para cifrar cada parte del mensaje, su fortaleza su mantuvo hasta 1863, cuando Friedrich Kasiski determinó que algunos patrones típicos del texto en claro seguían apareciendo en el texto cifrado. Esto se debe a que la clave suele ser, en la mayoría de los casos, más corta que el mensaje. Este hecho fuerza a que la clave tenga que extenderse, repitiéndose fragmentos a lo largo de la misma. Entonces es cuando, por azar, es posible encontrarse letras iguales del texto en claro por fragmentos iguales (repetidos) de la clave. De esta manera algunos patrones pueden aparecer en el texto cifrado y es posible reconstruir la clave que se empleó.

Estas técnicas no son complejas, pero dominaron gran parte de la historia de la criptografía. Este viernes veremos cómo hemos pasado de estos esquemas de cifrado tan básicos a disponer de comunicaciones seguras en Internet. 

Pepe "Puertas de Acero" Perez

Comparte este post