Como en la genial novela de Philip K. Dick, esa es la interesantísima pregunta que se hace Jon Galloway: ¿puede un sistema operativo reconocer que está corriendo en una máquina virtual? La pregunta no resulta en absoluto banal: en un mundo en el que prácticamente cualquier máquina puede emular a cualquier otra, las ventajas competitivas derivadas de la dependencia entre máquina y sistema operativo pueden empezar a volverse como mínimo difusas. Si Microsoft, por ejemplo, cimienta parte de su ventaja en la utilización del canal de distribución de los fabricantes de PCs nuevos, pero de repente su sistema puede ser instalado en ordenadores Apple corriendo plataformas como Boot Camp o Parallels, el incentivo para los Dell o HP se diluye, y el atractivo de las máquinas Apple, salvado el escollo de la presunta incompatibilidad, se incrementa. Al revés, obviamente, podría ocurrir lo mismo, y quizás incluso de manera más virulenta: ¿para qué gastarse el dinero extra que cuestan algunas máquinas Apple, si su sistema operativo puede ser ejecutado en una plataforma virtual sobre un PC mucho más barato?
Así, nos encontramos con que el EULA de Windows Vista en sus versión Home prohíbe específicamente su ejecución en máquinas virtuales, mientras que la versión Ultimate afirma que en caso de ser ejecutada en este tipo de máquinas, restringirá el acceso a aplicaciones que utilicen DRM. Pero la pregunta que se hace Jon, con todo fundamento, es la siguiente: ¿se trata de restricciones hechas a nivel de EULA, es decir, verborrea jurídica sin fundamento alguno ni posibilidad de control o, por el contrario, son capaces los sistemas operativos de saber en qué tipo de máquina se están ejecutando y si ésta es de tipo virtual? Según su información, el sistema operativo puede, efectivamente, identificar si está corriendo en una máquina virtual mediante dos procedimientos: direct hardware fingerprinting o inferred hardware fingerprinting. En el primer caso, se pide al sistema operativo que intente detectar hardware que siempre está presente en una máquina virtual. Por ejemplo, la placa madre en máquinas virtuales Microsoft siempre es de marca “Microsoft Corporation”. En el segundo caso, se hacen llamadas directas a nivel de máquina a la CPU, llamadas que permiten revelar si esa CPU es real o está virtualizada, como llamadas que no están soportadas por CPUs virtuales o, por contra, que sólo tendrían sentido en máquinas virtuales, como llamadas al sistema operativo hospedador para optimizar sus recursos.
Por supuesto, esto son posibilidades actuales, pero… ¿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. Verdaderamente impresionante.






18.03.2007 a las 23:46 Permalink
¿Sueñan los androides con ovejas eléctricas?…
Como en la genial novela de Philip K. Dick, esa es la interesantísima pregunta que se hace Jon Galloway: ¿puede un sistema operativo reconocer que está corriendo en una máquina virtual? La pregunta no resulta en absoluto banal: en un mundo en el qu…
19.03.2007 a las 20:22 Permalink
[...] por Carlos on 19/03/07 A raíz de un reciente artículo de Enrique Dans en el que plantea la cuestión de si un sistema operativo puede reconocer si está funcionando [...]
19.03.2007 a las 23:52 Permalink
[...] Leer resumen de Enrique Dans� [...]