Por @Alvy — 17 de Marzo de 2007

¿Puede Windows saber si está «soñando» sobre un emulador en vez de sobre un PC real?

Apasionante cien por cien: ¿Sueñan los androides con ovejas eléctricas? es un resumen en castellano de Enrique Dans sobre el no menos interesante Can Operating Systems tell if they're running in a Virtual Machine? donde se habla de las restricciones legales de Windows Vista acerca de ejecutarse sobre «máquinas virtuales» (imagino que incluyendo nuestro adorado Parallels para Mac OS X) y las limitaciones reales técnicas y teóricas que hay respecto a todo esto, así como hackeos en ambas áreas. En realidad la parte legal y aburrida de las licencias de Microsoft carece bastante de interés; lo verdaderamente interesante es la cuestión de fondo:

¿Puede un sistema operativo reconocer que está corriendo en una máquina virtual? (…) ¿Y si programásemos los entornos virtuales del futuro para “engañar” a los sistemas operativos facilitando respuestas engañosas? Eso daría lugar a un auténtico juego del ratón y el gato, en el que los sistemas operativos intentarían buscar métodos más fiables para detectar la virtualización, mientras las máquinas virtuales buscarían más y mejores maneras de ocultar su naturaleza.

Uno de los aspectos claves del asunto tiene que ver con que una emulación de «algo» suele necesitar más tiempo de cálculo que el propio «algo». Esta limitación puede suplirse con hardware mejor o más rápido hasta cierto punto y es una de las líneas con las que hoy en día resulta fácil por no decir obvio distinguir algo emulado de algo real. En cambio, teóricamente, esto podría resultar irrelevante si se considera disponer de recursos hardware ilimitados, o considerando cómo ve las cosas «desde dentro» un sistema emulado que no tiene forma de comprobar la hora «real» fuera del propio sistema. Hay una referencia también al Problema de detención de Turing. Este problema es irresoluble o «indecidible», y el de la detección de la emulación también podría serlo por su similitud (aunque el planteamiento es precisamente el opuesto).

El artículo y los comentarios del artículo original hablan también del lado oscuro de todo esto: nuevas generaciones de virus informáticos capaces de engullir literalmente un sistema operativo convencional al completo en una máquina virtual, para hacer algunas «cosas malas» mientras ni el sistema operativo (¡ni el usuario!) saben que están corriendo sobre una simulación que es la que tiene el control «real» del ordenador.

El tema seguro que está lejos de tener una respuesta contundente y definitiva. IANACSE, pero me inclino personalmente por el «no»: una máquina no puede saber si está corriendo sobre una simulación, ni cuál es la realidad última, si dicha simulación es suficientemente fiel y avanzada. Tal y como aprendimos en Blade Runner, algunos androides no sabían que eran androides (y los fans sabrán que esto tiene un doble sentido especial). De ese mismo modo, algunos sistemas operativos no saben actualmente que están corriendo sobre máquinas virtuales. ¿Qué nos dice que nosotros mismos, meros autómatas programados a ciegas no podamos saber con certeza si estamos viviendo en un universo real o en una simulación, en un lugar parecido al autoverso de Ciudad Permutación o a las simulaciones de… Matrix?

§

Actualización: Jorge nos escribió un correo muy amable para recordarnos la existencia de Nivel 13, otra película de ciencia ficción que trata el tema de la emulación / simulación / mundos virtuales, donde un poco al estilo Matrix (aunque con algunas diferencias) se simula un mundo en el que no hay forma de saber si es el verdadero MundoReal™ o no; los niveles y metaniveles del asunto son parte de la interesante trama. Otra: eXistenZ, de David Cronenberg, que tal y como nos recuerda Masterfill, narra la historia de una programadora de videojuegos en plan «realidad virtual» con una interfaz directa al cerebro, que simulan la vida real. A medida que avanza la película el espectador se da cuenta de que no sabe distinguir bien lo que es real de lo que es la simulación.

Este tema también se utiliza de forma recurrente en la «Sala de Hologramas» u «Holosección» del Enterprise en Star Trek: La Nueva Generación, y en especial en el episodio Ship in a Bottle. En muchas de esas historias los tripulantes de la nave tienen bastante complicado distinguir simulación de realidad, dado lo avanzado del simulador de la sala de hologramas. En otro episodio se dan cuenta de lo que sucede gracias a que el Teniente Data se vuelve más «lento» e «impreciso» al hacer sus cálculos, debido a que están «corriendo» en varias simulaciones, unas dentro de otras.

§

Más: David nos pasó un enlace a la píldora roja (red pill) de Joanna Rutkowska que es uno de los mencionados en el artículo original: un código para detectar «en apenas una instrucción» si un programa está corriendo bajo una máquina virtual (VMM). Allí se habla también de la píldora azul, que es un concepto de software «controvertido» de la misma autora que se podría utilizar como allí se explicaba para engullir en una máquina virtual el sistema operativo completo, con fines potencialmente maliciosos. Aunque la autora declaró que su píldora azul podría ser «100% indetectable» y que el sistema operativo no podría saber si está corriendo sobre una máquina virtual controlada por el Hypervisor de la píldora azul, no está claro cuál es la respuesta definitiva; también hay quien opina que no supone ningún tipo de amenaza real, así que parece que cuando menos es el típico tema controvertido. Ambos nombres están tomados de las píldoras que Morfeo ofrece a Neo en The Matrix.

Actualización (19 de marzo de 2007): El Argumento de la Simulación: ¿Eres un Sim? en el blog La Singularidad Desnuda explora esta y otras cuestiones interesantes sobre las simulaciones y emulaciones de personas «virtuales» o «reales» (¡todo depende de cómo se mire!) en máquinas y mundos virtuales. Mientras que algunos argumentan que la probabilidad de que el universo en el que vivimos sea una simulación es prácticamente del cien por cien, la navaja de Occam dice lo contrario: que cuando «real» y «simulado» son teórica y prácticamente indistinguibles lo más sencillo es probablemente lo correcto, así que probablemente vivimos en un universo normal y corriente, pata negra. Más: Pedro Jorge en La simulación del mundo recuerda su interesante anotación Universos Paralelos con ideas relacionadas. Y una segunda parte: El Argumento de la Simulación (II): ¿Y qué si somos Sims?

{Foto (CC) Daisuke Sakaguchi @ Flickr}

Compartir en Flipboard Publicar / Tuitear