Como Crear Un Túnel Inverso O Reverso De SSH

A veces que necesitamos conectarnos vía SSH a otra computadora nos encontramos con que esta computadora no cuenta con una dirección que podamos utilizar para conectarnos a ella, o bien se encuentra tras un muro de fuego que no permite el acceso. En estos casos, un túnel reverso de SSH nos permite trabajar alrededor de esta limitación.

Computadora Internet

En una conexión normal de SSH se conoce la dirección de la computadora de destino y se establece una conexión directa.
En una conexión normal de SSH se conecta directamente la computadora A con la computadora B.

Una conexión normal de SSH es sencilla. Tenemos el nombre de usuario y la dirección de la computadora a la que queremos conectarnos, ya sea una dirección de IP o un dominio, y se establece una conexión directa. El problema llega cuando no conocemos o no tenemos acceso a la dirección de la computadora destino (B) y nuestra computadora tampoco cuenta con una dirección accesible.

En estos casos, si contamos con una computadora con SSH habilitado y una dirección conocida, podemos utilizarla como un puente hacia la computadora que deseamos. Esta computadora simplemente actúa como mediadora entre ambas computadoras. La computadora a la que deseamos conectarnos (B) establece una dirección hacia la computadora mediadora (C) que nosotros utilizamos desde nuestra computadora (A).

En una conexión reversa de SSH se desconoce la dirección de la computadora B, por lo A utiliza una computadora con una dirección conocida C, para mediante esta alcanzar la computadora B.
En una conexión reversa de SSH se desconoce la dirección de la computadora B, por lo que A utiliza una computadora con una dirección conocida como mediadora.
  1. Se establece una conexión desde la computadora a la que queremos acceder (B) hacia la computadora con una dirección conocida (C) que actuará como mediadora. Utilizamos el parámetro -R para permitir el tunel reverso de SSH:ssh -R 61999:localhost:22 usuario_c@computador_c

    El primer número (61999) indica que puerto usaremos en “A” para conectarnos a “B” una vez que “A” se encuentre conectada a “C”. localhost es el nombre de dominio que utilizaremos para esto mismo, y el último número (22) indica en que puerto esta “B” escuchando SSH.

  2. Se establece una conexión normal desde nuestra computadora (A) a la computadora mediadora (C).ssh usuario_c@computador_c
  3. Una vez conectados a la computadora mediadora (C), establecemos una conexión a la computadora que deseamos (B) desde nuestra computadora principal (A), utilizando el puerto que usamos en el primer comando, el usuario de la computadora destino (B) y localhost:ssh -p 61999 usuario_b@localhost

Y listo, estamos conectados vía SSH desde la computadora “A” a la computadora “B”. Si la dirección de nuestra computadora “A” es conocida y accesible, podemos crear el túnel reverso de SSH directamente desde la computadora “B” hacia la computadora “A”.

Configuración De Archivo .htaccess

El archivo .htaccess nos permite cambiar algunas de las configuraciones de un servidor de una carpeta en particular, y así mismo de sus subdirectorios. La mayoría de los proveedores de hospedaje compartido nos permiten realizar cambios en el comportamiento del servidor únicamente de esta manera.

El archivo .htaccess es un simple archivo de texto (nota el punto al principio de el nombre del archivo ya que esto es importante). Podemos editar este archivo en nuestro editor de texto favorito, y entonces subirlo a nuestro servidor, colocándolo en la carpeta en la cual queremos alterar su comportamiento. Este archivo afecta a todas las subcarpetas.

Algunas de las cosas que podemos hacer con el archivo .htaccess son proteger una carpeta con contraseña, crear redireccionamientos, ajustar configuraciones de php, controlar el cache de los archivos, controlar como los archivos son tratados por el servidor basados en su extensión (podemos hacer que un archivo HTML sea pasado a través de el módulo de php en vez de solo servirlo), y en general alterar como los archivos se sirven a los visitantes.

Esta sección es casi seguro que será actualizada en el futuro con funcionalidad nueva, sin embargo, trataré de cubrir ahora los usos más comunes que tengo para este archivo.

Temas

 

Desactivando el listado de archivos en una carpeta sin un archivo index

Por default, cuando accedemos a una carpeta que no cuenta con un archivo index (ya sea .html, .htm, .php) en un sitio web, el servidor nos muestra un listado del contenido en la carpeta, el típico “Index of” seguido por todos los archivos y las subdirectorios en la carpeta a la que estamos accediendo. Esta configuración es particularmente peligrosa, ya que puede exponer la estructura interna de nuestro sitio web y/o proveer acceso a archivos e información que podríamos no querer que se mostrara públicamente pero que por alguna razón pusimos ahí.

Para deshabilitar esta configuración, podemos crear un archivo .htaccess en el directorio raíz de el sitio web y agregar la linea:

Options -Indexes


 

Crear una redirección y cambiar la respuesta sobre el estado de archivos no encontrados

Cuando pedimos un archivo de un servidor, y este archivo no es encontrado, por default el servidor regresa un código de estado 404, un estado que le indica al navegador (y a nosotros ya que el navegador nos presentará este código de error) que dicho archivo no está disponible. Pero este es solo un mensaje genérico, no nos indica nada sino el hecho de que justo en ese momento el archivo no está accesible. Sin embargo, a veces podemos indicarle al navegador por que el archivo no se encuentra actualmente ahí para que el navegador actúe de manera apropiada. Mis tres casos más utilizados son:

El archivo se movió permanentemente

El estado 301 le indica al navegador que el archivo ha sido movido permanentemente a un lugar diferente. Esta en una buena forma de implementar una redirección con .htaccess, ya que los navegadores con capacidad de edición de vínculos automáticamente actualizarán todas las referencias al archivo a la nueva dirección. Y esta respuesta puede ser agregada al cache, lo cual quiere decir que el navegador no continuará tratando de acceder a esta dirección, en su lugar intentará acceder a la nueva dirección del archivo. Solo agrega a tu archivo .htaccess la siguiente linea, indicando el archivo que fue movido, que puede ser cualquier tipo de archivo, y la nueva dirección de el archivo.

Redirect 301 /direccion/relativa/archivo.html http://www.dominio.tld/archivo.html

El archivo se movió temporalmente

El estado 307 le indica al navegador que el archivo fue movido, pero que este movimiento solo es temporal, el navegador seguirá la nueva dirección al igual que lo hace con el estado 301, pero no cambiará los vínculos al archivo, ni creará una entrada en el cache con esta nueva dirección (a menos que esto sea indicado por un control del cache o en una cabecera de expiración), el navegador continuará pidiendo la
dirección original cada vez.

Redirect 307 /direccion/relativa/archivo.html http://www.dominio.tld/archivo.html

El archivo está perdido

El estado 410 le indica al navegador que el archivo que se está solicitando ha sido removido permanentemente del servidor. A diferencia del estado 404, que solo indica que el archivo no está ahí, este código de estado indica que tampoco va a estar ahí de nuevo.

Redirect 410 /direccion/relativa/desde/htaccess/archivo.html


 

Creando páginas de error personalizadas

En vez de enviar de vuelta al navegador un código de estado, para que este pueda presentarnos su propia página de error, podemos crear páginas de error personalizadas, por ejemplo para los errores 401 (No autorizado) y 404 (No encontrado). Todo lo que necesitamos hacer es modificar nuestro archivo .htaccess, agregando las siguientes lineas:

ErrorDocument 401 /direccion/a/401.html
ErrorDocument 404 /direccion/a/404.html


 

Ajustando el tiempo de expiración del cache de diferentes tipos de archivos

Este ajuste le indicará al navegador por cuanto tiempo debe de mantener el cache de los archivos para que no le pida al servidor estos mismos archivos cada vez que son necesarios, a esto es a lo que me refería cuando hablaba de control del cache. Lo que sucede aquí es que el servidor enviará una cabecera de “Expires” acompañando los archivos que sirve.

Podemos definir el tiempo de expiración por default con la directiva ExpiresDefault seguido por una base y un tiempo, o podemos especificar el tiempo de expiración de tipos específicos de archivos con ExpiresByType, seguido de un tipo de archivo, una base y un tiempo.

La base puede ser access o modification, donde access comienza a contar el tiempo desde la última vez que el navegador pidió el archivo, y modification comienza a contar el tiempo desde la última vez que el archivo fue modificado. Si usas una expiración basada en el tiempo de modificación, la cabecera Expires no será agregada al contenido que no venga de un archivo en el disco, como en el caso de una imagen generada al momento, esto por supuesto es debido a que un archivo que no existe no puede tener una fecha de modificación.

Respecto al tiempo, usamos este en conjunto con la base, agregando un plus y un tiempo, este tiempo puedes ser dado en segundos (seconds), minutos (minutes), horas (hours), días (days), semanas (weeks), meses (months) o años (years), y puede ser expresado de manera singular si solo es una unidad, podemos especificarlo como “1 minute” o como “10 minutes”.

En este ejemplo voy a configurar un tiempo de expiración por default de un día para todos los archivos, utilizando la directiva ExpiresDefault, y después especificar tiempos de expiración diferentes para tipos de archivo comunes utilizando ExpiresByType.

<ifModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 day"
ExpiresByType image/png "access plus 30 days"
ExpiresByType image/jpeg "access plus 4 weeks"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType application/javascript "modification plus 2 weeks"
ExpiresByType text/css "modification plus 14 days"
</ifModule>


 

Comprimiendo los archivos antes de servirlos al navegador

Prácticamente todos los navegadores modernos tienen la habilidad de solicitar, aceptar y procesar la información recibida del servidor de manera comprimida, para así recudir el tiempo de carga de el sitio web cuando está siendo servido.

Para activar la compresión de archivos, en caso de que el servidor no esté configurado de esta manera por default, necesitamos agregar a nuestro archivo .htaccess la linea:

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/x-javascript application/rss+xml application/atom_xml text/javascript

No agregamos aquí imágenes ni otro tipo de contenido, por que nuestras imágenes y otros elementos ya deben de estar utilizando algún tipo de compresión. El servidor no comienza a servir todos los archivos de forma comprimida al hacer este cambio, solo lo hace cuando el navegador le dice que puede recibir información comprimida.


 

Protegiendo un directorio con contraseña

Para proteger los contenidos de una carpeta necesitamos crear una lista de nombres de usuario y contraseñas válidos, y agregar algunas lineas a nuestro archivo .htaccess . El nombre de usuario y la contraseña serán enviados como texto plano al servidor, así que esto es vulnerable a ataques de tipo hombre en el medio, a no ser que utilicemos SSL (altamente recomendado).

Comenzamos creando un archivo llamado .htpasswd, y cambiamos los permisos a 644.

touch .htpasswd
chmod 644 .htpasswd

Una vez hecho esto, necesitamos llenar el archivo con los nombres de usuario y las contraseñas (de preferencia y altamente recomendado que estén cifradas). Si estás utilizando Linux o algún otro sistema operativo basado en Unix y cuentas con el programa htpasswd esto es muy fácil de hacer, o aún mejor, si puedes acceder vía SSH a tu servidor puedes utilizar htpasswd para manejar los usuarios y las contraseñas en el mismo archivo. Si no, existes múltiples utilidades en linea que te permiten generar las contraseñas cifradas para utilizarlas en tu archivo .htpasswd (no confío en ninguna de ellas, pero son una persona paranoica). Aquí hay uno de esos sitios http://www.htaccesstools.com/htpasswd-generator/

Para generar la contraseña y guardarla junto con el nombre del usuario en el archivo, podemos utilizar:

htpasswd [archivo de contraseñas] [usuario]

por ejemplo:

htpasswd .htpasswd juan

Esto te pedirá la contraseña, y después la cifrará y la guardará en el archivo .htpasswd

Por default, si apache se encuentra instalado en cualquier sistema excepto Windows, Netware y TPF (Transaction Process Facility – Centro de procesamiento de transacciones, una computadora de IBM) utilizará la función crypt() para cifrar la contraseña. Utilizando este comando podemos crear cuantos usuarios queramos, así como cambiar las contraseña de usuarios ya existentes en el archivo.

Opcionalmente, podemos utilizar el parámetro -n para obtener los resultados del comando:

htpasswd -n juan

De nuevo, esto nos pedirá la contraseña, y nos regresará algo similar a esto:

juan:n94xSo6uSwhCY

Puedes abrir el archivo .htpasswd en tu editor de texto favorito y pegar la información, uno por linea si le darás acceso a múltiples usuarios.

Otras maneras de cifrar la contraseña pueden ser con MD5 utilizando el comando -m, esta es la configuración por default en Windows, Netware y TPF. O puedes usar SHA con el parámetro -s. Y el parámetro -d hace que htpasswd use la función crypt() pero esto ya es el comportamiento por default en la mayoría de los sistemas.

Algunos parámetros adicionales de htpasswd son -c que crea el archivo si este no existe, o lo reescribe y lo trunca si ya existía, dejando solo al nuevo usuario en el. El parámetro -D borrará un usuario de el archivo .htpasswd si este existe.

Y finalmente, en caso de que queramos utilizar este comando en conjunto con otros comandos, podemos utilizar el parámetro -b que nos permite especificar la contraseña en la linea de comandos. Por obvias razones, esta no es una forma segura de hacerlo, especialmente si los comandos están siendo registrados en un historial (podemos utilizar un espacio antes de el comando para prevenir que se guarde en nuestro historial, pero aún así, esta no es una manera recomendable de hacerlo).

htpasswd .htpasswd juan clavealeatoria

Una vez que terminamos de crear usuarios que podrán acceder al directorio y sus subdirectorios, necesitamos agregar las siguientes lineas a nuestro archivo .htaccess localizado en la carpeta que queremos proteger:

AuthName "Por favor identifíquese para poder acceder"
AuthType Basic
AuthUserFile /direccion/a/.htpasswd
Require valid-user

Donde AuthName es el texto que aparece en el cuadro de diálogo pidiéndonos el nombre de usuario y la contraseña. AuthType es el tipo de autenticación requerida, en este caso queremos un simple cuadro de diálogo pidiéndonos nuestro nombre de usuario y contraseña, así que utilizamos Basic. AuthUserFile es el archivo donde se encuentra guardada la lista de usuarios y contraseñas. Y finalmente Require valid-user hace que esta carpeta solo sea accesible a usuarios válidos, como se define en el archivo .htpasswd


 

Tratando los archivos HTML como archivos PHP

Para hacer que el servidor trate los archivos con extensión html (o con cualquier otra extensión) como archivos PHP, en decir, que no los sirva directamente al navegador sino que los pase por el modulo de PHP, necesitamos agregar lo siguiente a nuestro archivo .htaccess :

AddType application/x-httpd-php .htm .html

Actualización: PHP no siempre funciona como un módulo, algunas veces funciona como CGI (Common Gateway Interface, Interfaz de entrada común). Para alcanzar la misma cosa cuando PHP es usado como CGI usa el siguiente código:

AddHandler application/x-httpd-php .html .htm

En algunos servidores corriendo PHP como CGI el siguiente código también funcionaría:

AddHandler php5-cgi .html .htm


 

Cambiando configuraciones de PHP

Si no tenemos acceso al archivo php.ini, algunos proveedores de hospedaje nos permiten cambiar algunas configuraciones modificando el archivo .htaccess , por ejemplo, si estoy generando vistas previas de imágenes subidas como describía en algunas de mis publicaciones anteriores (vistas previas escaladas, vistas previas recortadas y escaladas), el límite por default de la memoria para PHP en algunos proveedores de hospedaje es tan baja como 2 MB, esto no es suficiente para procesar imágenes con los tamaños utilizados en estos días, así que cambio este limite a algo más grande, algo como 16 MB debe bastar para la mayoría de las imágenes. Pero esta no es la única configuración útil que podemos cambiar de el archivo de configuración php.ini, probablemente publicaré algo sobre esto después. El límite por default de la memoria para scripts de PHP se ha ido incrementando, el valor por default antes de PHP 5.2.0 era de 8 MB, tras PHP 5.2.0 fue incrementado a 16 MB, actualmente son 128 MB. Además, para no tener un límite en la memoria que pueden utilizar nuestros scripts, esto puede ser cambiado a -1 .

Para cambiar una configuración de PHP en nuestro archivo .htaccess , la opción AllowOverride Options (o AllowOverride all) debe de estar activada en el servidor. Si está activada, solo necesitamos agregar lo siguiente a nuestro archivo .htaccess:

php_value memory_limit 16M

Esto es, php_value, seguido de el nombre de la configuración, seguido de el nuevo valor.

Investigadores amplifican variaciones en video, haciendo lo invisible visible

Nuevo software amplifica cambios en cambios sucesivos de video que son demasiado sutiles para el ojo desnudo.

Larry Hardesty, MIT News Office. Original (en inglés).

En estos cuadros de video, un nuevo algoritmo amplifica el casi imperceptible cambio en el color de la piel causado por el bombeo de sangre.
En estos cuadros de video, un nuevo algoritmo amplifica el casi imperceptible cambio en el color de la piel causado por el bombeo de sangre.
Imagen: Michael Rubinstein

En la conferencia Siggraph de este verano – la conferencia principal de gráficos computacionales – investigadores del Laboratorio de Ciencia Computacional e Inteligencia Artificial (CSAIL – Computer Science and Artificial Intelligence Laboratory) del MIT (Massachusetts Institute of Technology – Instituto Tecnológico de Massachusetts), presentarán nuevo software que amplifica variaciones en cuadros sucesivos de video que son imperceptibles al ojo desnudo. Así que, por instancia, el software hace posible “ver” el pulso de alguien, ya que la piel se enrojece y palidece con el flujo sanguíneo, y puede exagerar pequeños movimientos, haciendo visibles las vibraciones de cuerdas de guitarra individuales o el respirar de un bebé en la unidad neonatal de cuidado intensivo.

El sistema es similar a un equalizador en un sistema de sonido estéreo, que amplifica algunas frecuencias y corta otras, excepto que la frecuencia pertinente es la frecuencia de cambios de color en una secuencia de cuadros de video, no la frecuencia de una señal de audio. El prototipo de el software permite al usuario especificar el rango de frecuencias de interés y el grado de amplificación. El software trabaja en tiempo real y muestra el video original y la versión alterada del video, con cambios magnificados.

Aunque la técnica se presta naturalmente a fenómenos que recurren a intérvalos regulares – como el latir de un corazón, el movimiento de una cuerda vibrante o el inflado de los pulmones – si el rango de frecuencias es lo suficientemente amplio, el sistema puede amplificar los cambios que ocurren solo una vez. Así que, por instancia, podría ser utilizado para comparar diferentes imágenes de la misma escena, permitiendo que el usuario fácilmente elija cambios que podrían pasar desapercibidos de otra manera. En un grupo de experimentos, el sistema pudo amplicar dramáticamente el movimiento de sombras en una escena de calle fotografiada solo dos veces, a un intérvalo de alrededor de 15 segundos.

Accidente feliz

Los investigadores del MIT – el estudiante graduado Michael Rubinstein, los recientes alumnos Hao-Yu Wu y Eugene Shih, y el profesor William Freeman, Fredo Durand y John Guttag – intentaban que el sistema amplificara cambios de color, pero en sus experimentos iniciales, encontraron que también amplificaba el movimiento. “Comenzamos amplificando el color, y notamos que con este buen efecto, también el movimiento fue amplificado”, dice Rubinstein. “Así que volvimos, encontramos exactamente que sucedía, lo estudiamos bien, y vimos como incorporar eso para hacer una mejor amplificación de movimiento”.

Usar el sistema para amplificar movimiento en lugar de color requiere un diferente tipo de filtrado, y funciona bien solo si los movimientos son relativamente pequeños. Pero por supuesto, esos son exactamente los movimientos cuya amplificación sería de interés.

Rubinstein puede visualizar que, entre otras aplicaciones, el sistema podría ser usado para “monitoreo sin contacto” de los signos vitales de pacientes de hospital. Aumentar un grupo de frecuencias permitiría medir las tasas de pulsaciones, por medio de pequeños cambios en la coloración de la piel; aumentando otro grupo de frecuencias permitiría monitorear la respiración. El acercamiento podría ser particularmente útil con bebés que nacen prematuramente o requieren atención médica temprana. “Sus cuerpos son tan frágiles, que quieres ponerles tan pocos sensores como sea posible”, dice Rubinstein.

Similarmente, dice Rubinstein, el sistema podría ser usado para aumentar el video de monitores de bebé, caseros, así que la respiración de bebés durmiendo sería claramente visible. Siendo un padre el mismo, Rubinstein dice que el y su esposa equiparon la cuna de su hija con sensores de presión comerciales con la intención de medir el movimiento y calmar a padres ansiosos de que sus hijos siguen respirando. “Esos son caros”, dice Rubinstein, “y algunas personas realmente se quejan de recibir falsos positivos con ellos. Así que realmente puedo ver como este tipo de técnica podrá funcionar mejor”.

En su artículo, los investigadores describen experimentos en los que comenzaron a investigar ambas aplicaciones. Pero desde que comenzaron a dar conferencias sobre el trabajo, dice Rubinstein, sus colegas han propuesto un rango de otros usos posibles, desde imágenes laparoscópicas de órganos internos, hasta sistemas de vigilancia de gran alcance que magnifiquen movimientos sutiles, a detectores de mentiras sin contacto basados en la tasa de pulsaciones.

“Es un resultado fantástico,” dice Maneesh Agrawala, un profesor asociado en el departamento de Ingeniería Eléctrica y Ciencia Computacional en la Universidad de California en Berkeley, y director del Laboratorio de Visualización del departamento. Agrawala apunta que Freeman y Durand fueron parte del equipo de investigadores del MIT que hicieron ruido en la conferencia Siggraph del 2005 con un artículo sobre la amplificación de movimientos en video. “Este acercamiento es más simple y te permite ver algunas cosas que no podías ver con el acercamiento anterior”, dice Agrawala. “La simplicidad del acercamiento lo vuelve en algo que tiene la posibilidad de aplicación en un gran número de lugares. Creo que veremos a mucha gente implementándolo por que es muy sencillo”.

Reimpreso con permiso de MIT News.

Fuente
http://web.mit.edu/ (en inglés)

Calidad de anotaciones de Antología de Genes deducidas computacionalmente

Genes
Imagen:
habasis.blogspot.com

Ontología de Genes (GO – Gene Ontology) se ha establecido como el estándar indiscutible para la anotación de función de las proteínas. La mayoría de las anotaciones se deducen vía electrónica, es decir, sin la supervisión de curador individual, pero que son ampliamente consideradas poco fiables. Al mismo tiempo, que dependen crucialmente de estas anotaciones automatizadas, como la mayoría de los genomas secuenciados recientemente no son organismos modelos. en este trabajo se presenta una metodología para evaluar de manera sistemática y cuantitativamente las anotaciones electrónicas. Mediante la explotación de los cambios en las sucesivas versiones de la base de datos de anotación de Ontología de Genes UniProt, (UniProt Gene Ontology Annotation) se evaluó la calidad de las anotaciones electrónicas en términos de especificidad, fiabilidad y cobertura.

En general, no solo encontramos que las anotaciones electrónicas han mejorado significativamente en los últimos años, sino también su fiabilidad ahora rivaliza con la de anotaciones inferidas por los curadores cuando se utilizan pruebas distintas de los experimentos de la literatura primaria. Este trabajo proporciona los medios para identificar el subgrupo de anotaciones electrónicas que pueden ser confiables – un resultado importante dado que más del 98% de todos los comentarios se deducen, sin curación directa.

También se informa de variaciones significativas entre los métodos de inferencia, los tipos de anotaciones, y los organismos. Así mismo proporciona una guía para los usuarios de Ontología Genética y sienta las bases para la mejora de métodos computacionales para la inferencia de la función GO.

Más información
http://www.ploscompbiol.org/ (en inglés)

La elusiva capacidad de las redes

Elusiva capacidad de networks
Imagen: Christine Daniloff

Calcular la capacidad total de una red de datos es un problema notoriamente difícil, pero los teóricos de la información están comenzando a hacer algo de progreso.

Larry Hardesty, MIT News Office. Original (en inglés).

En sus primeros años, la teoría de la información – que nació de un artículo histórico en 1948 por alumno del MIT (Massachusetts Institute of Technology – Instituto Tecnológico de Massachusetts) y futuro profesor Claude Shannon – estuvo dominado por investigación de códigos de corrección de errores: ¿Cómo codificas la información para garantizar su transmisión fiel, aún en presencia de influencias corruptoras que los ingenieros llaman “ruido”?

Recientemente, uno de los desarrollos más intrigantes en la teoría de la información ha sido una tipo diferente de codificación, llamado codificación de red, en el que la pregunta es cómo codificar información para maximizar la capacidad de una red como conjunto. Para los teóricos de la información, era natural preguntar cómo estos dos tipos de codificación podían ser combinados: Si quieres a la vez minimizar los errores y maximizar la capacidad, ¿Qué tipo de codificación aplicas dónde, y cuándo haces la decodificación?

Lo que hace la pregunta particularmente difícil de responder es que nadie sabe cómo calcular la capacidad de datos de una red como un todo – o incluso si puede ser calculada. No obstante, en la primera mitad de un artículo de dos partes, que fue publicado recientemente en Transacciones de Teoría de la Información del IEEE, Muriel Médard del MIT, Michelle Effros del Instituto de Tecnología de California y el fallecido Ralf Koetter de la Universidad de Tecnología en Munich muientras que en una red cableada, la codificación de red y la codificación de corrección de errores pueden ser manejadas separadamente, sin reducción en la capacidad de la red. En la próxima segunda mitad del artículo, los mismos investigadores demuestran algunos límites en las capacidades de las redes inalámbricas, que podría ayudar a guiar investigación futura tanto en la industria como en la academia.

Una red de datos típica consiste de un arreglo de nodos – que podrían ser ruteadores en el Internet, estaciones base inalámbricas e incluso unidades de procesamiento en un solo chip – cada uno de los cuales puede comunicarse directamente con un algunos de sus vecinos. Cuando un paquete de datos llega a un nodo, el nodo inspecciona su información de direccionamiento y decide por cual de los varios caminos enviarlo.

Confusión calculada

Con la codificación de redes, por otro lado, un nodo revuelve los paquetes que recibe y envía los paquetes híbridos por caminos múltiples; en cada nodo subsecuente ellos son revueltos de nuevo en diferentes formas. Contraintuitivamente, esto puede incrementar significativamente la capacidad de la red entera: Paquetes híbridos llegan a su destino por caminos múltiples. Si uno de estos caminos está congestionado, o si uno o más de sus vínculos falla completamente, los paquetes que llegan por los otros caminos probablemente contendrán suficiente información para que el recipiente pueda armar el mensaje original.

Pero cada vínculo entre los nodos podría ser ruidoso, así que la información en los paquetes también necesita ser codificada para corregir errores. “Supón que soy un nodo en una red, y veo una comunicación entrando, y está corrupta por ruido”, dice Médard, una profesora de ingeniería eléctrica y ciencia computacional”. Podría tratar de remover el ruido, pero al hacer eso, estoy en efecto tomando una decisión justo ahora que quizá habría sido mejor tomada por alguien que podría tener más observaciones de la misma fuente.

Por otro lado, dice Médard, si un nodo simplemente reenvia los datos que recibe sin realizar ninguna correción de errores, podría terminar despilfarrando ancho de banda. Si el nodo toma toda la señal y no reduce su representación, entonces podría estar usando mucha energía para transitar ruido”, dice ella. “La pregunta es, ¿cuánto del ruido remuevo, y cuánto dejo?”.

En su primer artículo, Médard y sus colegas analizan el caso en el que el ruido en un vínculo dado no está relacionado a las señales viajando sobre otros vínculos, como sucede con la mayoría de las redes cableadas. En ese caso, mostraron los investigadores, los problemas de corrección de error y la codificación de red pueden ser separados sin limitar la capacidad de la red entera.

Vecinos ruidosos

En el segundo artículo, los investigadores abordan un caso en el que el ruido en un vínculo dado está relacionado a las señales en los otros vínculos, como es el caso de la mayoría de las redes inalámbricas, ya que las transmisiones de estaciones base vecinas pueden interferir una con la otra. Esto complica las cosas enormemente: En efecto, Médard apunta, los teóricos de la información aún no saben como cuantificar la capacidad de una simple red inalámbrica de tres nodos, en la que dos nodos se envían mensajes uno al otro por medio de un tercer nodo.

No obstante, Médard y sus colegas muestran ahora cómo calcular los límites superior e inferior en la capacidad de una red inalámbrica dada. Mientras que la brecha entre los límites puede ser muy grande en la práctica, conocer los límites todavía podría ayudar a los operadores de redes a evaluar los beneficios de investigación futura sobre codificación de red. Si la tasa de transferencia observada en una red en el mundo real está por debajo del límite inferior, el operador conoce la mínima mejora que el código ideal proveería; si la tasa de transferencia observada está por encima del límite inferior y por debajo del límite superior, entonces el operador conoce la máxima mejora que el código ideal podría proveer. Incluso si la máxima mejora solo traería un pequeño ahorro en los gastos operacionales, el operador podría decidir que investigación adicional en codificación mejorada no vale el dinero.

“El teorema de separación que ellos probaron es de interés fundamental”, dice Raymond Yeung, un profesor de ingeniería de información y co-director del Instituto de Codificación de Red en la Universidad China de Hong Kong. “Mientras que el resultado en sí mismo no es sorprendente, es algo inesperado que pudieron probar el resultado en un ajuste tan general”.

Yeung advierte, sin embargo, que mientras que los investigadores han “descompuesto un problema muy difícil en dos”, uno de esos problemas “sigue siendo muy difícil. … El límite en términos de la solución a otro problema que es difícil de resolver”, dice. “No está claro que tan ajustado es este límite; eso necesita investigación adicional”.

Reimpreso con permiso de MIT News.

Fuente
http://web.mit.edu/ (en inglés)

Frustrando a los atacantes más inteligentes

Frustrando ataques

Hackers astutos pueden robar los secretos de una computadora midiendo el tiempo que tardan las transacciones de almacenamiento de datos o midiendo su consumo de energía. Nueva investigación muestra como detenerlos.

Larry Hardesty, MIT News Office. Original (en inglés).

En los últimos 10 años, investigadores de criptografía han demostrado que aún la computadora aparentemente más segura es espantosamente vulnerable a un ataque. El tiempo que le toma a una computadora guardar datos en memoria, fluctuaciones en su consumo de energía e incluso ruidos que emite pueden traicionar y dar la información para un asaltante astuto.

Ataques que usan dichas fuentes indirectas de información son llamados ataques de canal alterno, y el alza en popularidad de la computación en la nube los hace una amenaza aún mayor. Un atacante tendría que estar muy motivado para instalar un dispositivo en tu pared para medir el consumo de energía de tu computadora. Pero comparativamente es más fácil cargar un poco de código en un servidor en la nube para escuchar otras aplicaciones que está ejecutando.

Afortunadamente, mientras que ellos han estado investigando ataques de canal alterno, los criptógrafos también han estado investigando maneras de detenerlos. Shafi Goldwasser, la profesora de Ingeniería Eléctrica y Ciencia Computacional en el MIT (Massachusetts Institute of Technology – Instituto Tecnológico de Massachusetts), y su antiguo estudiande Guy Rothblum, quien es ahora un investigador en Microsoft Research, recientemente publicaron un largo reporte en el sitio web de Electronic Colloquium on Computational Complexity (Coloquio Electrónico sobre Complejidad Computacional), describiendo un acercamiento general para mitigar ataques de canal alterno. En el Simposio sobre la Teoría de la Computación (STOC – Symposium on Theory of Computing) de la Asociación para la Maquinaria Computacional en mayo, Goldwasser y sus colegas presentarán un artículo demostrando como la técnica que ella desarrolló con Rothblum puede ser adaptada para proteger información procesada en servidores web.

Adicionalmente a prevenir ataques en información privada, dice Goldwasser, la técnica también podría proteger dispositivos que usan algoritmos propietarios para que no se pueda usar la ingeniería inversa por piratas o competidores en el mercado – una aplicación que ella, Rothblum y otros describieron en la conferencia AsiaCrypt del año pasado.

Hoy en día, cuando una computadora personal está en uso, usualmente está ejecutando programas múltiples – dice, un procesador de palabras, un navegador, un visor de archivos PDF, quizá un programa de correos u hojas de cálculo. Todos los programas están almacenando datos en la memoria, pero el sistema operativo de la laptop no permite que ningún programa vea los datos almacenados por otro. Los sistemas operativos funcionando en servidores en la nube no son diferentes, pero un programa malicioso podría lanzar un ataque de canal alterno simplemente enviando sus propios datos a la memoria una y otra vez. Por el tiempo que toma el almacenamiento y la recuperación de datos, podría inferir lo que otros programas están haciendo con precisión sorprendente.

La técnica de Goldwasser y Rothblum oscurece los detalles computacionales de un programa, ya sea que esté ejecutándose en una laptop o un servidor. Su sistema convierte un cálculo dado en una secuencia de módulos computacionales más pequeños. Los datos alimentados al primer módulo son cifrados, y en ningún punto durante la ejecución del módulo son descifrados. La salida todavía cifrada del primer módulo es alimentada al segundo módulo, que la cifra en una manera diferente, y así sucesivamente.

Las formas de cifrado y los módulos están diseñados para que la salida del módulo final sea exactamente la salida de la computación original. Pero las operaciones realizadas por los módulos individuales son enteramente diferentes. Un atacante de canal alterno podría extraer información sobre como los datos en cualquier módulo dado son cifrados, pero eso no le permitirá deducir cual es la secuencia de módulos completa. “El adversario puede tomar mediciones de cada módulo”, dice Goldwasser, “pero no podrán aprender nada más de lo que podrían de una caja negra.”

El reporte por Goldwasser y Rothblum describe un tipo de compilador, un programa que toma código escrito en una forma inteligible a los humanos y lo convierte en un set de instrucciones de bajo nivel inteligibles a una computadora. Ahí, los módulos computacionales son una abstracción: La instrucción que inaugura un nuevo módulo no se ve diferente de la instrucción que concluyó el último. Pero en el artículo de STOC, los módulos son ejecutados en diferentes servidores en una red.

De acuerdo a Nigel Smart, un profesor de criptología en el departamento de ciencia computacional en la Universidad de Bristol en Inglaterra, el peligro de los ataques de canal alterno “ha sido conocido desde finales de los 90”.

“Se hizo mucha ingeniería para tratar de prevenir que esto fuera un problema”, dice Smart, “una enorme cantidad de trabajo de ingeniería. Eso es mucho dinero en la industria”. Mucho de ese trabajo, sin embargo, se ha basado en prueba y error, dice Smart. El estudio de Goldwasser y Rothblum, por otro lado, “es un estudio con muchas más bases, analizando preguntas básicas y profundas sobre que es posible”.

Además, dice Smart, trabajo previo en ataques de canal alterno tendían a enfocarse en la amenaza impuesta a dispositivos móviles, como celulares y tarjetas inteligentes. “Me parece que lo más probable que ocurra en el futuro es lo que se habla sobre servidores”, dice Smart. “No se de nadie fuera del MIT que esté estudiando eso”.

Smart advierte, sin embargo, que el trabajo de GoldWasser y sus colegas es improbable que se convierta en aplicaciones prácticas en el futuro cercano. “En seguridad, y especialmente en criptografía, toma un largo tiempo pasar de una idea académica a algo que realmente sea utilizado en el mundo real”, dice Smart. “Están estudiando lo que podría ser posible en un tiempo de 10 o 20 años”.

Reimpreso con permiso de MIT News.

Fuente
http://web.mit.edu/ (en inglés)

Incentivos algorítmicos

Algoritmos incentivos
Imagen: Howard Pyle

Un nuevo giro en trabajo pionero hecho por criptógrafos del MIT (Massachusetts Institute of Technology – Instituto Tecnológico de Massachusetts) hace casi 30 años podría llevar a mejores maneras de estructurar contratos.

Larry Hardesty, MIT News Office. Original (en inglés).

En 1993, los investigadores criptógrafos del MIT Shafi Goldwasser y Silvio Micali compartieron el primer premio Gödel para la ciencia computacional teórica por su trabajo en pruebas interactivas – un tipo de juego matemático en el que un jugador intenta extraer información confiable de un interlocutor no confiable.

En su innovador artículo de 1985 sobre el tema, Goldwasser, Micali y el doctor Charles Rackoff de la Universidad de Toronto propusieron un tipo particular de prueba interactiva, llamada prueba de cero-conocimiento, en la que un jugador puede establecer que él o ella conoce alguna información secreta sin llegar a revelarla. Hoy en día, pruebas de cero-conocimiento son utilizadas para asegurar transacciones entre instituciones financieras y varias compañías nuevas han sido fundadas para comercializarlas.

En el Simposio sobre Teoría Computacional de la Asociación de Maquinaria Computacional en Mayo, Micali, el profesor de Ingeniería en el MIT, y el estudiante graduado Pablo Azar presentarán un nuevo tipo de juego matemático al que están llamando una prueba racional; varía las pruebas interactivas dándoles un componente económico. Cómo las pruebas interactivas, las pruebas racionales pueden tener implicaciones para la criptografía pero también podrían sugerir nuevas maneras de estructurar incentivos en contratos.

“Mientras que estre trabajo es sobre asimetría de información”, añade Micali. “En la ciencia computacional, pensamos que información valiosa es el resultado de un largo cálculo, un cálculo que no puedo hacer yo mismo”. Pero los economistas, dice Micali, modelan el conocimiento como una distribución de probabilidad que precisamente describe un estado de la naturaleza. “Era claro para mi que ambas cosas tenían que converger”, dijo.

Una prueba interactiva clásica involucra dos jugadores, a veces nombrados Arturo y Merlín. Arturo tiene un problema complejo que necesita resolver, pero sus recursos computacionales son limitados; Merlín, por otro lado, tiene recursos computacionales pero no es confiable. Una prueba interactiva es un procedimiento por medio del cual Arturo le hace a Merlín una serie de preguntas. Al final, aunque Arturo no puede resolver el problema por sí mismo, puede decir si la solución que Merlín le ha dado es válida.

En una prueba racional, Merlín sigue siendo no confiable, pero es un actor racional en el sentido económico: Cuando es enfrentado con una decisión, siempre elegirá la opción que maximice su recompensa. “En la prueba interactiva clásica, si haces trampa, eres atrapado”, Azar explica. “En este modelo, si haces trampa, obtienes menos dinero”.

Conexión de complejidad

Investigación en pruebas interactivas y pruebas racionales cae bajo la categoría de la teoría de complejidad computacional, que clasifica problemas computacionales de acuerdo a qué tan difíciles son de resolver. Las dos clases de complejidad mejor conocidas son P y NP. A grandes rasgos, P es un grupo de problemas relativamente fáciles, mientras que NP contiene algunos problemas que, hasta donde se sabe, son muy, muy difíciles.

Problemas en NP incluyen la factorización de grandes números, la selección de una ruta óptima para un vendedor que viaja, y los llamados problemas de satisfacibilidad, en los que uno debe encontrar condiciones que satisfagan conjuntos de restricciones lógicas. Por ejemplo, es posible idear una lista de asistencia para una fiesta que satisfaga la expresión lógica (Alicia O Bob Y Carol) Y (David Y Ernie Y NO Alice)? (Si: Bob, Carol, David y Ernie van a la fiesta, pero Alice no). De hecho, la gran mayoría de los problemas difíciles en NP pueden ser replanteados como problemas de satisfacibilidad.

Para tener un sentido de como funcionan las pruebas racionales, considera la pregunta de cuántas soluciones tiene un problema de satisfacibilidad – problemas aún más difíciles que encontrar una sola solución. Supón que el problema de satisfacibilidad es una versión más complicada del problema de la lista de la fiesta, uno que involucra 20 invitados. Con 20 invitados, hay 1,048,576 posibilidades para la composición final de la fiesta. ¿Cuántas de esas satisfacen la expresión lógica? Arturo no tiene suficiente tiempo para probarlas todas.

¿Pero que sucede si Arturo en su lugar subasta un boleto en una lotería? Incluso escribirá una lista perfectamente aleatoria de asistentes a la fiesta – Alice si, Bob no, Carol si y así sucesivamente – y si satisface la expresión, le dará a quien tenga el boleto $1,048,576. ¿Cuánto ofrecerá Merlín por el boleto?

Supon que Merlín sabe que hay exactamente 300 soluciones para el problema de satisfacibilidad. Las posibilidades de que la lista de la fiesta de Arthur sea uno de ellas son 300 en 1,048,576. De acuerdo al análisis econométrico estándar, una posibilidad de 300 en 1,048,576 vale exactamente $300. Así que si Merlín es racional, apostará $300 por el boleto. De esa información, Arturo puede deducir el número de soluciones.

Knockout a la primera ronda

Los detalles son más complicados que eso, y por supuesto, con muy pocas excepciones, nadie en el mundo real quiere poner un millón de dólares para aprender la respuesta a un problema matemático. Pero el resultado del artículo de los investigadores es que con pruebas racionales, pueden establecer en una ronda – “¿Qué ofreces?” – lo que podría requerir millones de rondas usando pruebas interactivas clásicas. “La interacción, en la práctica, es costosa”, dice Azar. “Es costoso enviar mensajes por una red. Reduciendo la interacción de un millón de rondas a una provee ganancias significativas en tiempo”.

“Pienso que es otro caso donde pensamos que entendemos que es una prueba, y hay un giro, y obtenemos algún resultado inesperado”, dice Moni Naor, la presidenta en el Departamento de Ciencia Computacional y Matemáticas Aplicadas en el Instituto Israelí de Ciencia Weizmann. “Lo hemos visto en el pasado con pruebas interactivas, que resultaron ser muy poderosas, mucho más poderosas de lo que normalmente piensas que lo son pruebas que escribes y verificas”. Con pruebas racionales, dice Naor, “tenemos otro giro, si asignas alguna racionalidad teórica al demostrador, entonces la prueba es otra cosa en la que no pensamos en el pasado”.

Naor advierte que el trabajo está “solo en el comienzo”, y que es difícil decir cuando dará resultados prácticos, y lo que podrían ser. Pero “claramente, vale la pena estudiar”, dijo. “En general, la combinación de la investigación en complejidad, criptografía y teoría de juego es prometedora”.

Micali está de acuerdo. “Pienso que esta es una buena base para futuras exploraciones”, dijo. “Justo ahora, la hemos desarrollado para problemas que son muy, muy difíciles. ¿Pero que hay de los problemas que son muy, muy simples?”. Sistemas de prueba racional que describen interacciones simples podrían tener una aplicación en crowsourcing, una técnica mediante la cual tareas computacionales que son fáciles para los humanos pero difíciles para las computadoras son distribuidas por Internet a ejércitos de voluntarios que reciben pequeñas recompensas financieras por cada tarea que completan. Micali imagina que podrían incluso ser usadas para sistemas biológicos, en los que organismos individuales – o células iguales – pueden ser pensados como productores y consumidores.

Reimpreso con permiso de MIT News.

Fuente
http://web.mit.edu/ (en inglés)

Una de cada 5 Macs está infectada con malware para Windows

Apple

Solamente una de cada 36 Macs está infectada con malware que está específicamente diseñado para ellas, pero la mayoría contiene troyanos o virus que están diseñados para atacar Windows.

El estudio analizó 100,000 Macs en un periodo de siete días, y encontró que el malware más común que afectaba el sistema operativo era el Flashback Trojan, que en cierto punto infectó más de 600,000 sistemas en el mundo.

Más información
http://www.techweekeurope.co.uk/ (en inglés)

Mini-Internet dentro de chips

Mini-Internet en chip
Imagen: Christine Daniloff

Las técnicas de enrutamiento en las que se basa el Internet podrían incrementar la eficiencia de chips de múltiples núcleos mientras que reducen sus requerimientos de consumo de energía.

Larry Hardesty, MIT News Office. Original (en inglés).

Los chips de computadora han dejado de volverse más rápidos. Para seguir aumentando el poder computacional de los chips a la misma tasa a la que nos hemos acostumbrado, los fabricantes de chips están dándoles “nucleos”, o unidades de procesamiento, adicionales en su lugar.

Hoy, un chip típico puede tener seis u ocho núcleos, todos comunicados uno con el otro sobre un solo grupo de cables, llamado un bus (o canal). Con un bus, sin embargo, solo un par de núcleos puede hablar a la vez, lo que sería una seria limitación en chips con cientos o incluso miles de núcleos, lo que muchos ingenieros eléctricos predicen como el futuro de la computación.

Li-Shiuan Peh, una profesora asociada de Ingeniería Eléctrica y Ciencia Computacional en el MIT, quiere que los núcleos se comuniquen de la misma manera que computadoras conectadas a Internet lo hacen: agrupando la información que transmiten en “paquetes”. Cada núcleo tendría su propio ruteador, que podría enviar un paquete por varios caminos, dependiendo de la condición de la red entera.

En la conferencia Design Automation en junio, Peh y sus colegas presentarán una revista académica que ella describe como “resumiendo 10 años de investigación” en dichas “redes en un chip”. No solo los investigadores establecen los límites teóricos en la eficiencia de redes de comunicación en chips basadas en paquetes, sino que también presentan medidas realizadas en un chip de prueba en el que se acercaron a alcanzar varios de esos límites.

La última parada para los buses

En principio, chips con múltiples núcleos son más rápidos que chips de un solo núcleo por que pueden dividir tareas computacionales y ejecutar varias de ellas a la vez. Núcleos trabajando en la misma tarea ocasionalmente necesitarán compartir datos, pero hasta recientemente, el conteo de núcleos en chips comerciales ha sido lo suficientemente bajo que un solo bus ha sido capaz de manejar la carga de comunicaciones extras. Sin embargo, eso ya está cambiando: “Los buses han alcanzado un límite”, dice Peh. “Tipicamente escalan a alrededor de ocho núcleos”. Los chips de 10 núcleos encontrados en los servidores de alto rendimiento frecuentemente agregan un segundo bus, pero ese acercamiento no funcionará para chips con cientos de núcleos.

Uno de los problemas es que, dice Peh, “los buses requieren mucha energía, por que están tratando de manejar largos cables a ocho o 10 núcleos a la vez”. En el tipo de red que Peh está proponiendo, por otro lado, cada núcleo se comunica solo con los cuatro núcleos adyacentes a él. “Aquí, estás manejando segmentos de cables más cortos, así que eso te permite usar un voltaje más bajo”, ella explica.

En una red-en-un-chip, sin embargo, un paquete de datos viajando de un núcleo al otro tiene que detenerse en cada ruteador en el medio. Además, si dos paquetes llegan al ruteador al mismo tiempo, uno de ellos debe ser almacenado en memoria mientras que el ruteador maneja el otro. Muchos ingenieros, dice Peh, se preocupan de que estos requerimientos extras introducirán los suficientes retrasos y complejidad computacional para contrarrestar los beneficios de la conmutación de paquetes. “El problema más grande, pienso, es que en la industria justo ahora, la gente no sabe como construir estas redes, porque han sido buses por décadas”, dice Peh.

Pensando a futuro

Peh y sus colegas han desarrollado dos técnicas para hacer frente a estas preocupaciones. Una es algo que ellos llaman “evitado virtual”. En Internet, cuando un paquete llega a un ruteador, el ruteador inspecciona su información de direccionamiento antes de decidir por que camino enviarlo. Con un evitado virtual, sin embargo, cada router envía una señal previa al siguiente, para que pueda preajustar el cambio, aumentando el paquete sin ninguna computación adicional. En su grupo de chips de prueba, dice Peh, el evitado virtual permitió un acercamiento muy cerrado a la máxima tasa de transmisión predecida por análisis teórico.

La otra técnica es algo llamado señalización de baja oscilación. Los datos digitales consisten de unos y ceros, que son transmitidos por canales de comunicaciones como voltajes altos y bajos. Sunghyun Par, un estudiante de doctorado aconsejado por Peh y Anantha Chandrakasan, profesor de Ingeniería Eléctrica, desarrolló un circuito que reduce la oscilación entre los voltajes altos y bajos de un voltio a 300 milivoltios. Con su combinación de evitado virtual y señalización de baja oscilación, el chip de prueba de los investigadores consumió 38 por ciento menos energía que chips de ruteo de prueba anteriores. Los investigadores tienen más trabajo por hacer, dice Peh, antes de que el consumo de energía de sus chips de prueba se acerquen tanto a su límite teórico como lo hace la tasa de transmisión de datos. Pero, ella agrega, “si lo comparamos contra un bus, tenemos ahorros de órdenes de magnitud”.

Luca Carloni, un profesor asociado de Ciencia Computacional en la Universidad de Columbia quien también investiga redes en chips, dice “el jurado siempre está afuera” en el futuro del diseño de chips, pero que “las ventajas de redes de intercambio de paquetes en chips se ven atractivas”. Él enfatiza que esas ventajas incluyen no solo la eficiencia operacional de los mismos chips, sino también “un nivel de regularidad y productividad al momento de diseñarlos que es muy importante”. Y dentro del campo, añade, “las contribuciones de Li-Shiuan son fundamentales”.

Reimpreso con permiso de MIT News.

Fuente
http://web.mit.edu/ (en inglés)

Windows Vista entra en “Soporte Extendido”

Logotipo de Windows
© Microsoft

El martes 10 de abril, el período de “Soporte Principal” de Microsoft para Windows Vista terminará y entrará en un nuevo período conocido como “Soporte Extendido”.

Lo que esto significa es que el soporte disponible sin costo terminará, y ya no habrá más Service Pack creados para Windows Vista, además que futuras versiones de Internet Explorer (como Internet Explorer 10) no estarán disponibles para Vista. Adicionalmente, no habrá más arreglos que no sean para seguridad disponibles sin un Acuerdo Extendido de Soporte (EHSA – Extended Hotfix Support Agreement).

Esto durará 5 años antes de que el soporte para Vista termine completamente en el 2017.

Más información
Ciclo de Soporte de Windows Vista (en inglés)