miércoles, 5 de junio de 2013

Proyecto Tor, Navega Anónimamente por la Red y Explora la Deep Web


The Onion Router, en su forma abreviada Tor, es un proyecto cuyo objetivo principal es el desarrollo de una red de comunicaciones distribuida de baja latencia y superpuesta sobre internet en la que el encaminamiento de los mensajes intercambiados entre los usuarios no revela su identidad, es decir, su dirección IP (anonimato a nivel de red) y que, además, mantiene la integridad y el secreto de la información que viaja por ella. Por este motivo se dice que esta tecnología pertenece a la llamada darknet o red oscura.

Para la consecución de estos objetivos se ha desarrollado un software libre específico. Tor propone el uso de encaminamiento de cebolla de forma que los mensajes viajen desde el origen al destino a través de una serie de routers especiales llamados 'routers de cebolla' (en inglés onion routers). El sistema está diseñado con la flexibilidad necesaria para que pueda implementar mejoras, se despliegue en el mundo real y pueda resistir diferentes tipos de ataque. Sin embargo, tiene puntos débiles y no puede considerarse un sistema infalible.

No es una red entre iguales (peer-to-peer) ya que por un lado están los usuarios de la red y por otro lado los encaminadores del tráfico y algunos de los cuales hacen una función de servicio de directorio.

La red funciona a partir de un conjunto de organizaciones e individuos que donan su ancho de banda y poder de procesamiento.





Historia

Creado en 2003 por Roger Dingledine, Nick Mathewson y Paul Syverson surgió como la evolución del proyecto Onion Routing del Laboratorio de Investigación Naval de los Estados Unidos (por eso se dice que es la segunda generación de onion routing). Inicialmente financiado por el Laboratorio de Investigación Naval de los Estados Unidos. A finales de 2004 pasó a ser patrocinado por la Electronic Frontier Foundation, la organización de defensa de libertades civiles en el mundo digital, hasta noviembre de 2005. Actualmente el proyecto Tor está en manos del 'Tor project' una organización sin ánimo de lucro orientada a la investigación y la educación, radicada en Massachusetts y que ha sido financiada por distintas organizaciones. Actualmente el proyecto está formado por un equipo6 liderado por Roger Dingledine.

En marzo de 2011 el proyecto Tor fue galardonado por la Free Software Foundation como Proyecto de beneficio social por 'Usando software libre, permitir que más de 36 millones de personas a lo largo del mundo tengan una experiencia de libertad de acceso y de expresión en Internet manteniendo su privacidad y anonimato'.
Aplicación y limitaciones

El objetivo principal de Tor (no logrado al 100%) es conseguir que internet pueda usarse de forma que el encaminamiento de los mensajes proteja la identidad de los usuarios. Es decir, persigue que no se pueda rastrear la información que envía un usuario para llegar hasta él (su dirección IP). El uso más habitual de Tor es aprovechar sus características para lograr cierto grado de privacidad en la navegación web en internet. Sin estar especialmente diseñado para ello, pronto se descubrió que Tor también hace más difícil la labor de programas que intentan censurar y/o monitorizar el acceso a cierto tipo de contenidos. Todo esto ha provocado que Tor sea muy usado en entornos en los que los comunicantes están especialmente motivados en proteger su identidad y el contenido de sus comunicaciones (Ej. conflictos políticos, restricciones en la difusión y acceso a ciertos tipos de contenido, comunicación de información confidencial etc.)

Observar que el enrutado anónimo no asegura el que la entidad origen sea desconocida para la entidad destino. Esto es debido a que los protocolos de nivel superior pueden transmitir información sobre la identidad. Por ejemplo un servicio web puede usar cookies o simplemente pedir que nos identifiquemos. Cuando queremos un anonimato a nivel de aplicación es bueno configurar el cliente adecuadamente y protegernos usando proxys que modifican los contenidos en este sentido. Por ejemplo para conseguir más privacidad cuando navegamos por la web es recomendable configurar el navegador adecuadamente (Ej. deshabilitando cookies, no permitiendo plugins Java, Flash o ActiveX, o deshabilitando el historial) y redirigir el tráfico hacia un proxy web intermedio (Ej. privoxy o polipo) que nos filtre contenido que puede ser aprovechado para violar nuestra privacidad (Ej cookies o cabeceras HTTP que puedan ser usadas para identificar).

La red Tor cifra la información a su entrada y la descifra a la salida de dicha red (encaminamiento de cebolla). Por tanto el propietario de un router de salida puede ver toda la información cuando es descifrada antes de llegar a Internet, por lo que aunque no pueda conocer el emisor sí que puede acceder a la información. Esta debilidad ha sido aprovechado por algunos atacantes. Por ejemplo Dan Egerstad, un sueco experto en seguridad informática, creó un servidor en la red Tor y controlando toda la información que salía por él hacia Internet, pudo conseguir contraseñas de importantes empresas, embajadas de todo el mundo y otras instituciones. Para paliar esta debilidad y asegurarnos de que nadie accede a la información que se está enviando, es recomendable usar un protocolo que provea cifrado al protocolo de aplicación como SSL). Por ejemplo para tráficos HTTP es recomendable usarlo sobre SSL (HTTPS).

Como hemos comentado Tor es usado principalmente para ocultar la identidad de los usuarios que utilizan servicios habituales de internet. Sin embargo también proporciona características que permiten la comunicación interactiva de entidades que quieren ocultar su identidad (mediante los llamados puntos de encuentro) y proveer servicios ocultando la identidad de la entidad que provee dicho servicio (mediante los llamados servicios ocultos).
Interfaz de entrada

Tor sólo permite anonimizar tráfico TCP. Las aplicaciones acceden a la red TOR a través del interfaz SOCKS lo cual significa que toda aplicación con soporte SOCKS puede usar TOR para realizar comunicaciones anónimas sin necesidad de modificaciones adicionales. El cliente Tor recibe tráfico SOCKS desde nuestras aplicaciones y luego, de forma transparente, se encarga de comunicarse con los routers de la red Tor para enviar las peticiones y posteriormente devolvernos los resultados.

SOCKS es un protocolo que facilita el enrutamiento de paquetes que se envían entre un cliente y un servidor a través de un servidor proxy. Según la pila de protocolos OSI está en el nivel 5 (sesión). Según la pila de protocolos IP está en la capa de aplicación. En los primeros intentos de usar encaminamiento de cebolla se requería un proxy de aplicación para cada protocolo de aplicación soportado. Esto conllevaba mucho trabajo y provocaba que algunos proxys no fueran escritos nunca y por tanto algunas aplicaciones nunca fueron soportadas. Tor usa SOCKS para,de un plumazo, soportar la mayoría de programas basados en TCP sin hacer ninguna modificación.

Observar que cuando navegamos por internet hacemos dos tipos de peticiones:


* Peticiones DNS para que el servidor de DNS que nos diga la dirección IP de una URL.
* Peticiones HTTP a las direcciones IP del servidor web que aloja la información.

Si no pasamos por Tor las búsquedas con DNS que hacen los navegadores, pueden ser un problema de privacidad ya que si las peticiones se mandan directamente a través de la red regular un atacante podría deducir qué sitios se están visitando a través de Tor ya que antes de navegar por ellos se pregunta por DNS que IP tienen. Por tanto es necesario redirigir el tráfico de DNS por la red Tor.

Algunas aplicaciones convierten directamente el tráfico del protocolo la capa de aplicación en tráfico SOCKS. Por ejemplo Firefox permite convertir tanto el tráfico DNS como el HTTP a SOCKS y enviarselo al cliente Tor. Otras aplicaciones necesitan redirigir el tráfico del protocolo de la capa de aplicación hacia un proxy que realice la conversión al protocolo SOCKS. Por ejemplo si tuvieramos un navegador que no permitiera el tráfico HTTP y DNS vía SOCKS podría usar privoxy para realizar esta tarea (y podríamos aprovechar para filtrar las peticiones HTTP). Si tenemos una aplicación genérica que no soporta SOCKS y queremos que su tráfico TCP se convierta a formato SOCKS para luego pasarlo al cliente Tor es necesario utilizar una aplicación adicional. En linux podríamos usar el comando torify (de ahí viene el término torificar). En Windows podríamos usar Freecap (software libre), SocksCap o Torcap.


Breve tutorial de manejo por la Deep Web (Nota: es responsabilidad del usuario la navegación segura en la red).


Espero que les Sirva!

Saludos!

lunes, 25 de marzo de 2013

Arduino Multiplataforma



Arduino es una plataforma de hardware de código abierto, basada en una sencilla placa con entradas y salidas, analógicas y digitales, en un entorno de desarrollo que está basado en el lenguaje de programación Processing. Es un dispositivo que conecta el mundo físico con el mundo virtual, o el mundo analógico con el digital.

Sus creadores son el zaragozano David Cuartielles, ingeniero electrónico y docente de la Universidad de Mälmo, Suecia y Massimo Banzi, italiano, diseñador y desarrollador Web. El proyecto fue concebido en Italia en el año 2005.

Arduino se puede utilizar para desarrollar objetos interactivos autónomos o puede ser conectado a software del ordenador (por ejemplo: Macromedia Flash, Processing, Max/MSP, Pure Data). Las placas se pueden montar a mano o adquirirse. El entorno de desarrollo integrado libre se pueden descargar gratuitamente.


Las plataformas Arduino están basadas en los microcontroladores Atmega168, Atmega328, Atmega1280, ATmega8 y otros similares, chips sencillos y de bajo coste que permite el desarrollo de múltiples diseños.

Al ser open-hardware, tanto su diseño como su distribución es libre. Es decir, puede utilizarse libremente para el desarrollo de cualquier tipo de proyecto sin haber adquirido ninguna licencia.

Consta de 14 entradas digitales configurables entrada i/o salidas que operan a 5 voltios. Cada pin puede proporcionar o recibir como máximo 40 mA. Los pines 3, 5, 6, 8, 10 y 11 pueden proporcionar una salida PWM (Pulse Width Modulation). Si se conecta cualquier cosa a los pines 0 y 1, eso interferirá con la comunicación USB. Tiene 6 entradas analógicas que proporcionan una resolución de 10 bits. Por defecto miden de 0 voltios (masa) hasta 5 voltios, aunque es posible cambiar el nivel más alto, utilizando el pin Aref y algún código de bajo nivel.

Requisitos para Utilizar Arduino:

* Plataforma Arduino.
* Conocimientos de Programación.

Descarga la versión más reciente acá:

Linux:

Se puede buscar en el centro de Software o abrir una terminal y teclear: " 'comando de S.O.' apt-get install arduino"

O lo descargamos directo y después compilamos:


Mac OS:


Windows:


Espero que les Sirva!

Saludos!