Bitlocker (IV): Algoritmos de autentificación para el cifrado de Disco

Cuando se determina la necesidad de implementar un mecanismo para establecer un cifrado, así como el mecanismo para su descifrado tiene que cumplir ciertas normas y criterios para no hacerlo inviable:


         No debe repercutir de forma muy negativa en el rendimiento general en procesos de escritura y lectura.


         Debe ser transparente para los mecanismos de funcionalidad de las aplicaciones con las que trabajamos.


         Debe ser lo suficientemente robusto para evitar ataques mediante ataques de permutación o por manipulación de datos y obtención de resultados en texto plano.


 


A la hora de determinar un sistema de implementación para el cifrado de la unidad de disco para bitlocker, Microsoft tuvo en cuenta determinados factores y evaluó la posibilidad de implementar algunos de estos sistemas de implementación de cifrado. Uno de los elementos que se tuvieron en cuenta es que Bitlocker no debería consistir solamente en un elemento de cifrado, sino que debería garantizar mediante un sistema de autenticación de datos, el evitar que una manipulación de los datos cifrados pudieran introducir una modificación a ciegas, en el código del S.O., provocando una debilidad en el mecanismo de arranque con Bitlocker o para conseguir una escalada de privilegios en el sistema. Además debería evitar el permitir la predicción de la función de cifrado mediante la manipulación de datos cifrados y la obtención de datos en texto plano.


 


Autenticación MAC.


 


El mecanismo natural de implementación de cifrado para evitar estos mecanismos de ataque, es la utilización de MAC (Message Autenthication Code) a cada bloque de datos del disco. El problema que plantea el uso de este mecanismo es que necesitaríamos establecer una reserva de sectores para almacenar el MAC, con lo cual tendríamos un uso limitado en la capacidad de almacenamiento de hasta un posible 50% de almacenamiento. Además bajo las condiciones actuales de implementación de este mecanismo en sistema de altos procesamiento de datos con accesos de lectura y escritura, podremos encontrarnos con problemas de rendimiento o la corrupción de sectores. Si no queremos escribir en sectores x, sin dañar x+1 x-1 en procesos de caída del sistema no controlados o por pérdida de energía, tendremos que tener en cuenta que en el caso de escribir en un sector x el sistema deberá leer el sector, desencriptarlo, encriptarlo y nuevamente escribir todos los sectores que correspondan al bloque. Si falla el sistema cuando se  escriben sectores, en el nuevo bloque pero quedan pendientes otros, entonces todo el bloque puede quedar corrompido.


 


Autentificación de “Poor-man”


 


Este es otro de los posibles mecanismos para la implementación de seguridad que permite generar bloques cifrados con un tamaño entre 512-8192 bytes, de tal forma que una leve modificación en uno de los caracteres del bloque modifica de forma aleatoria todo el bloque. Con objeto de evitar el mecanismo de secuenciación moviendo datos cifrados de un sector a otro sector, se generan cambios del algoritmo para cada sector.


De este forma aunque el potencial atacante tuviera acceso a los datos tanto cifrados como en texto plano, la variedad del mecanismo de secuenciación y los cambios en el algoritmo evitan los mecanismos de predicción del sistema de cifrado.


 


En el siguiente post evaluaremos diferentes mecanismos de cifrado y el mecanismo empleado para Bitlocker: AES-CBC + difusor.


 


 


Referencias Externas


 


——————————————————-


MAC authentication 


 


Cifrado bloques de disco

SuperFetch (IV de IV): ReadyBoost y ReadyDrive

Como todos sabemos, la desventaja de usar el disco duro como memoria virtual es la significativa reducción en las tasa de transferencia con respecto a la memoria RAM, sobretodo si estamos hablando de acceso aleatorio a la información como suele ser el caso cuando hablamos de información de memoria, de esta manera en disco duros modernos tenemos tasas de trasferencia E/S de 80MB/s. en acceso secuencial al disco duro y 1MB/s en el caso de acceso aleatorio (por el movimiento de los cabezales en búsqueda de información), existe no obstante una solución intermedia entre el disco duro y la memoria RAM que nos ofrece una tasa de trasferencia de unos 10MB/s en acceso aleatorio a información.: La memoria Flash.

 

ReadyBoost es un nuevo sistema incluido en Windows Vista que consigue mejorar el rendimiento del equipo haciendo uso de la mayor tasa de transferencia en búsquedas aleatorias y menor latencia de la memoria flash con respecto al disco duro, de este modo podemos usar dispositivos como llaves USB, memorias SD o Compact Flash para guardar información de caché del disco duro.

 

 Popup emergente al conectar la memoria FLASH al equipo

 

Para poder hacer uso de ReadyBoost nuestra memoria flash debe disponer de al menos 235 MB de espacio libre y ser de rápido acceso (es decir, con una tasa de transferencia adecuada como para ser útil como caché). Como podréis ver en las imágenes añadidas, activar ReadyBoost en una memoria USB es tan sencillo como entrar en sus propiedades e indicar que cantidad de memoria deseamos utilizar para esta funcionalidad, esto quiere decir que no tenemos por qué usar todo el espacio de la memoria flash para almacenar información de caché sino que podemos indicar una cantidad determinada de memoria y continuar usando el resto del espacio para nuestros ficheros, aun que no obstante Microsoft recomienda usar una cantidad de memoria 3 veces superior a la RAM para disfrutar de todas las ventajas de esta tecnología. Otra característica de ReadyBoost es el uso de un algoritmo de escritura optimizado para mantener el tiempo de vida de las celdas de la memoria flash, de hecho, gracias a este algoritmo, si usáramos una memoria flash actual exclusivamente para el uso de ReadyBoost su tiempo de vida oscilaría entre 19,4  y 1823 años. Pero ¿y como se protege esta caché de disco de intentos de lectura no autorizados? pues usando el algoritmo de encriptación AES de 128 bits de tal manera que nos aseguramos que el archivo de caché de ReadyBoost (llamado ReadyBoost.sfcache) solo puede ser leído en el equipo que lo generó inicialmente, y todo esto además con un factor de compresión de 1.8X a 2.3X que garantiza un almacenamiento eficiente al poder guardar más información en menos espacio. Por último quedaría añadir que retirar la memoria flash cuando se esta haciendo uso de ReadyBoost no causa ningún tipo de problema en el equipo ya que es una caché de solo lectura que hace uso del sistema “Write-trought” que garantiza que toda la información de la caché del dispositivo flash se encuentra presente en el disco duro, no siendo por tanto necesaria para que el equipo siga funcionando correctamente.

 
Pestaña de configuración de ReadyBoost

Carpeta de memoria Flash 

 

Sobre estos sistemas de administración de caché de disco duro que realiza SuperFetch hay que hacer mención especial a ReadyDrive que aplica un concepto semejante al de ReadyBoost pero a los discos duros híbridos (discos duros provistos de una caché flash).

 

Los discos duros híbridos continúan la línea de evolución actual de los discos duros de mejorar el rendimiento y el consumo de energía (hasta el 90% menos de consumo que los discos duros actuales en portatiles) al añadir una caché flash no volátil o NVRAM adicional, que no se pierde la información al apagar el ordenador, a la caché DRAM ya existente. Esto permite, a parte de una mejora en el acceso aleatorio a información como ya se explico anteriormente, realizar lecturas y escrituras en disco mientras este se encuentra acelerando, con la consecuente mejora en rendimiento, especialmente tras la hibernación del equipo.

 

 Sistema ReadyDrive

 

Superfetch se suma a este tipo de dispositivos híbridos gestionando su memoria flash y aplicando los patrones de uso de aplicaciones para aumentar aun más el rendimiento, así como para mejorar los tiempos de arranque del sistema operativo y de recuperación tras hibernación, todo esto gracias a que al realizar alguno de estos procesos la información necesaria para el arranque o la recuperación es volcada en la NVRAM. ReadyDrive requiere de un mínimo de 50MB de NVRAM, siendo recomendable más de 120MB.

 

Conclusión:

Como habéis podido comprobar a lo largo de estos post SuperFetch es sin duda una de las grandes novedades incluidas en Windows Vista y un referente en cuanto a tecnologías de rendimiento, de hecho al usar Windows Vista por primera vez a menudo sorprende que, al contrario de lo que esperamos, lleguemos a apreciar una mejoría en el rendimiento de nuestro equipo con respecto a sistemas operativos anteriores.

 

Continuaré desglosando los aspectos de rendimiento de Windows Vista en próximos artículos, hasta entonces espero haber conseguido despertar vuestra curiosidad sobre esta tecnología y otras muchas que se irán mencionando en este blog.

 

Concurso de Gadgets en Windows Vista

El grupo de usuarios .NET de Madrid (www.madriddotnet.com) ha lanzado un concurso de programación de Gadgets para Windows Vista. Estos pájaros, nos han sacado pasta a un montón de gente para darse unos premios de puta madre.


 


1er Premio


 


·  Viaje a Las Vegas para asistir al MIX’07 (incluye vuelo, alojamiento y entrada)


·  1 Licencia de JetBrains ReSharper


·  1 Licencia de JetBrains DotTrace


·  1 suscripción a DotNetMania por un año (11 números)


·  Libro ISBN:978-84-415-2118-6 Visual Studio 2005 Team System


·  Libro ISBN:978-84-415-2070-7 Programación con SQL Server 2005


·  Libro ISBN:978-84-415-2052-3 Programación con ASP.NET 2.0


·  Libro ISBN:978-84-415-2098-1 Visual C# 2005


·  Libro ISBN:978-84-415-2136-0 Programación avanzada de aplicaciones con Microsoft ASP.NET 2.0


2º Premio


 


·  1 Videoconsola Xbox 360 (incluye auriculares, mando, disco duro y juego)


·  1 Licencia de JetBrains ReSharper


·  1 Licencia de JetBrains DotTrace


·  1 suscripción a DotNetMania por un año (11 números)


·  Libro ISBN:978-84-415-2118-6 Visual Studio 2005 Team System


·  Libro ISBN:978-84-415-2053-0 Bases de datos con Visual Basic 2005


·  Libro ISBN:978-84-415-2052-3 Programación con ASP.NET 2.0


3º Premio


 


·  1 Smartphone Qtek 8310


·  1 Licencia de JetBrains ReSharper


·  1 Licencia de JetBrains DotTrace


·  1 suscripción a DotNetMania por un año (11 números)


·  Libro ISBN:978-84-415-2106-3 Visual Basic 2005


·  Libro ISBN:978-84-415-2136-0 Programación avanzada de aplicaciones con Microsoft ASP.NET 2.0


4º Premio


 


·  1 Licencia de ComponentOne Studio Express


·  Libro ISBN:978-84-415-2021-9 Visual Basic 2005


·  Libro ISBN:978-84-415-2125-4 Superutilidades Hacker


·  Libro ISBN:978-84-415-1851-3 Hacking con Google


·  Libro ISBN:978-84-415-2131-5 Bases de datos con SQL Server 2005


·  Libro ISBN:978-84-415-2035-6 Aprende SQL


5º Premio


 


·  1 Licencia de Red Gate SQL Bundle Pro


·  Libro ISBN:978-84-415-2021-9 Visual Basic 2005


·  Libro ISBN:978-84-415-2125-4 Superutilidades Hacker


·  Libro ISBN:978-84-415-1851-3 Hacking con Google


·  Libro ISBN:978-84-415-2131-5 Bases de datos con SQL Server 2005


·  Libro ISBN:978-84-415-2035-6 Aprende SQL


Y luego que si nosecuantos premios de la leche a la popularidad, reconocimiento, tertulia, etc…


 


Vamos, que hasta me dan ganas de aprender a programar en Vista a mi mismo.


 


http://gadgetizate.madriddotnet.com/Participa.aspx


 

Despliegue masivo de Windows Vista con BDD 2007 (I de V)

Comenzamos esta serie de artículos de instalación de Windows Vista en múltiples equipos simultáneamente utilizando las nuevas herramientas proporcionadas por Microsoft.


Hoy hablaremos de BDD 2007 (Bussines Desktop Deployment 2007) y sus requisitos de instalación.


Una de las necesidades habituales de las organizaciones es el despliegue masivo de un sistema operativo en sus equipos cliente. Hasta ahora, las tareas de despliegue han sido una combinación de múltiples estrategias, herramientas,  generación de imágenes y dolores de cabeza.


Pues bien, con Windows Vista, el despliegue se simplifica muchísimo, ya que ahora vamos a poder utilizar una única herramienta que integra todas las necesidades de creación, administración y mantenimiento de imágenes y procesos de despliegue. Me estoy refiriendo a BDD 2007 (Business Desktop Deployment 2007). La aplicación como tal se compone de un conjunto de herramientas, documentación técnica y  buenas prácticas y procedimientos a seguir. Es lo que Microsoft denomina un “Solution Accelerator”.


BDD 2007 no es una herramienta nueva, pero si incorpora muchas novedades, entre ellas:




  • Soporte para imágenes WIM


  • Scripts personalizables basados en XML que se integran en un secuenciador de tareas heredado de SMS v4 o System Center Configuration Manager 2007


  • Nuevo fichero de instalación desatendida (unattend.xml).


  • Además incorpora el “Deployment Workbench” o mesa de trabajo en donde podremos ir creando nuestra propia configuración de sistema que queremos desplegar.

Una de las novedades más interesantes es precisamente las imágenes WIM, las cuales a diferencia de los formatos de imagen basados en sectores, WIM se basa en archivos.


WIM es un formato de imagen independiente del hardware, es decir, ya no tenemos que crear imágenes específicas por cara tipo de hardware, además admite la inclusión de múltiples imágenes de Vista en un solo fichero WIM, lo cual permite simplificar el mantenimiento de imágenes para mediana y gran empresa.


Bien pero ¿por dónde comenzamos una implantación masiva de Windows Vista?


Para nuestro caso vamos a crear un pequeño laboratorio con algunos equipos virtuales y para ello utilizaremos Virtual Server 2005 R2, aunque todos estos pasos que veremos son igualmente aplicables a entornos de cientos o miles de equipos.


El primer equipos que  vamos a crear es una máquina con Windows Server 2003 R2 o SP1, si no tenéis los CDs de instalación podéis descargaros un disco VHD ya instalado  desde aquí o la versión de evaluación desde aquí


Necesitaremos también un par de máquinas, una de ellas sin Sistema Operativo, para realizar una instalación nueva de Windows Vista y la otra con Windows XP para realizar una actualización a Windows Vista.


Necesitaremos Virtual Server 2005 R2 ya que soporta PXE (Preboot Execution Environment), el cual utilizaremos para el despliegue de WindowsPE. Microsoft Virtual Server 2005 R2 se puede instalar tanto en Windows Server 2003 como Windows XP y requiere tener instalado IIS 6.0. Es un producto gratuíto y lo podéis conseguir desde este enlace.


Una vez instalado Windows Server 2003, tenemos que verificar si cumplimos todos los requisitos de hardware y software que requiere BDD 2007. Cuando instalemos BDD 2007 nos pedirá los siguientes componentes:  WAIK, MSXML 6.0, MMC 3.0, .Net Framework 2.0, USMT 3.0 y ACT 5.0


Si queremos realizar un despliegue automático a través de la red basado en XPE necesitaremos instalar WDS (Windows Deployment Services), el cual es la nueva versión de lo que ya conocíamos como RIS. Se puede instalar en Windows Server 2003 SP1 y actualizará el actual RIS, y también vendrá integrado como componente en Windows Server “Longhorn”. WDS está disponible en la carpeta WDS del WAIK


En ese caso necesitaremos un servicio de Directorio Activo, un servidor DHCP habilitado para PXE y por supuesto un servicio DNS. Podeis encontrar más detalles de los requisitos de instalación de WDS aquí.




  • WAIK  es Windows Automated Installation Kit, el cual nos permitirá crear y manipular imágenes WIM con utilidades como ImageX, System Image Manager  e imágenes de Windows PE. WAIK está disponible para su descarga.


  • USMT es User State Migration Tool, el cual nos permitirá hacer una copia del perfil del usuario que estamos migrando al nuevo sistema operativo y posteriormente aplicar dicho perfil a Windows Vista. De esta forma conservamos su configuración y documentos. Se puede descargar desde aquí  


  • ACT es Application Compatibility Toolkit, el cual nos permitirá comprobar la compatibilidad de las aplicaciones que tenemos instaladas en nuestra organización, gracias a procesos de inventario de software y análisis contra una base de datos central de compatibilidad. Se puede descargar desde aquí.


  • MSXML 6.0 se puede obtener desde aquí.


  • .Net Framework 2.0 es un componente ya disponible en Windows Server 2003 R2 y se insala desde los Componentes de Windows. Para Windows Server 2003 SP1 necesitaréis descargarlo e instalarlo.

Una vez que hemos descargado e instalado todos los componentes podemos comenzar la instalación de BDD 2007, este es un proceso sencillo por lo que os lo dejo a vosotros y para el próximo artículo de esta serie comenzaremos con los pasos de preparación de imágenes de Windows Vista utilizando ImageX, Windows SIM y Deployment Workbench.

SuperFetch (III de IV)

Para finalizar el tema de
SuperFetch en estos dos últimos post vamos a comprobar dos de sus
funcionalidades más interesantes: la gestión de los procesos en segundo plano, y
la gestión de caché de disco desde un punto de vista innovador con READYBOOST y READYDRIVE.

 

Es algo común que dejemos
aplicaciones en segundo plano cuando por ejemplo abrimos el explorador o el
Messenger mientras estamos editando un documento de Office o abrimos un juego
mientras se esta ejecutando cualquier otro programa, y es también común que notemos
una reducción en el rendimiento del sistema al intentar retomar dichas
aplicaciones y pasarlas a primer plano; esto se debe a que los programas en
segundo plano son preferentes para pasar al archivo de paginación del disco
duro, lo cual, en caso de falta de memoria, supone que cada vez que deseemos volver
a traer dicha aplicación a primer plano obtengamos una considerable reducción
en el rendimiento del sistema. La situación anterior también es aplicable cuando hacemos
uso de la característica “cambio rápido de usuario” y deseamos volver a la
sesión que dejamos iniciada anteriormente ya que la información de la sesión inactiva
es paulatinamente trasladada a la memoria virtual según se va necesitando más
memoria. Superfetch gestiona los procesos en segundo y primer plano para
reducir en todo lo posible esta pérdida de rendimiento, la manera en que logra
esto es bastante intuitiva: vuelve a cargar la información del proceso en
memoria cuando volvemos a tener disponibilidad de esta (normalmente al cerrar
un programa) lo cual supone que por ejemplo en un entorno de escasa memoria,
volver de Internet Explorer a Microsoft Word tras haber cerrado Windows Mail (el
programa que viene a sustituir a Outlook Express en Windows Vista) sería mucho
más rápido que con sistemas operativos anteriores, y de nuevo esto también sería
aplicable al sistema de cambio rápido de usuario siendo ideal por ejemplo para volver
a la sesión en la que se está ejecutando la mula para aquellos amigos del P2P
que tienen que compartir su equipo; pero quizás la aplicación práctica más
evidente de todo esto es no ver reducido el rendimiento tras largos momentos de
inactividad, como por ejemplo al ir comer en el trabajo o cuando nos llaman por
teléfono. Hasta ahora tras habernos ausentado un tiempo notábamos una
ralentización de nuestras aplicaciones debido a que la actividad de los
servicios y procesos en segundo plano tomaban el control de la memoria RAM
relegando a la aplicación inactiva de primer plano al archivo de paginación;
aun que esto es el comportamiento ideal (mantiene al microprocesador ocupado al
servicio de procesos en segundo plano como la ejecución de un antivirus) tras
la finalización de estos procesos la aplicación principal continuaba en el
archivo de paginación hasta que sus funciones eran requeridas por el usuario al
volver, con la consabida reducción de rendimiento, Windows Vista corrige esta
situación gracias a que Superfetch va colocando denuevo en memoria la
información del programa en primer plano cuando se libera suficiente memoria
RAM por ejemplo al finalizar una aplicación en segundo plano, de esta manera la
aplicación queda completamente disponible para el usuario a su regreso.

 

Bueno, a parte de lo comentado en
este post también existe otra manera de aumentar el rendimiento del equipo a la
hora de tener que acceder al disco, esta manera es mediante los sistemas
ReadyBoost y ReadyDrive, que veremos en mi próximo post.

 

Por cierto, se están publicando
en TechNet Magazine una serie de artículos sobre las mejoras en el Kernel de
Windows Vista, yo estoy a la espera de que publiquen la sección de
administración de memoria por si pudiera ofreceros aun más información de lo
visto hasta ahora. Os dejo el enlace:

 http://www.microsoft.com/technet/technetmag/issues/2007/02/VistaKernel/default.aspx?loc=es/

La protección contra Desbordamientos de Buffer en Windows Vista (IV de IV)

Cuarta Protección: Ocultación de Información


 


Con las tecnologías vistas hasta el momento se ha pretendido, en primer lugar que no se produzcan los fallos en el código que originan los desbordamientos de buffer, que no se puedan sustituir las funciones de tratamiento de errores y que no se puedan meter códigos en la zona de memoria destinada a datos para evitar la inyección de programas no deseados dentro del sistema. Sin embargo un atacante no necesita inyectarte un troyano si puede abrir una conexión desde dentro del sistema que le conecte contra un socket en su equipo, es decir, si puede configurar una conexión reversa. Y para eso no necesita inyectar ningún código, le basta con invocar una función del sistema operativo para abrir un socket.


 



 


Imagen: Invocación de una función conocida del sistema


 


————————————————————-


Pointer ofuscation


————————————————————-


 


La primera tecnología de protección para evitar que se invoquen funciones conocidas se añadió en Windows XP SP2 y Windows Server 2003 SP1. Por supuesto esta tecnología también funciona en Windows Vista.


 


La idea es evitar que se vea la dirección de cualquier función que se usa en el cuerpo de un programa, por ello, se utilizan las funciones: EconcePointer / DecodePointer y EncodeSystemPointer / DecodeSystemPointer para ofuscar la información en el código.


 


Las funciones EncodePointer y EncodeSystemPointer generan una dirección ofuscada a partir de realizar un XOR entre la dirección real de la función que se desea invocar y un número dinámico generado por el sistema operativo.


 


Cuando se desea realizar la llamada a la función se hace mediante las funciones DecodePointer y DecodeSystemPointer. Si un atacante desea suplantar la llamada a una función por una suya debe saber como codificarla para que cuando sea decodificada corresponda con la función que él quiere llamar. Nada sencillo.


 


El uso de estas tecnologías no previene solo contra los ataques de desbordamiento de buffer sino contra todos aquellos que, no pudiendo modificar la dirección de retorno de la llamada buscan obtener el control mediante la modificación de cualquier llamada a función que vaya a ser invocada, ya que cogerá el control del programa.


 


————————————————————-


ASLR (Address Space Layout Randomization)


————————————————————-


 


Para evitar que el atacante sepa la dirección de memoria dónde se encuentra una función que desea invocar, la tecnología ASLR intenta cambiar en cada ejecución la posición exacta de la misma dentro de la memoria. Para ello se utiliza una función que se denomina de entropía (máximo desorden) que le asigna en cada ejecución de la aplicación una dirección diferente dentro de un rango de 256 posibles.


 


Es decir, se ejecuta el programa A y se carga en la dirección FF000FFF, se cierra el programa y se vuelve a ejecutar. Cuando se carga en memoria ASLR le asigna la dirección FF000ABB, por ejemplo.


 


Con esto se intenta que no se pueda predecir la dirección donde se pueden encontrar los programas que tiene en ejecución un determinado sistema.


 



 


Imagen: ASLR le asigna una dirección diferente en cada ejecución


 


Conclusión


 


Garantizar que un sistema no va a tener fallos de desbordamiento de buffer en alguna de los millones de líneas que conforman el sistema operativo es mucho decir, pero el uso de el SDL (Secure Development Lifecycle), la compilación con /FxCod y /SafeSEH, la aplicación de DEP (Data Execution Prevention) con el bit NX (Non Execute) por Hardware y por Software para la protección de integridad en el tratamiento de errores, la ofuscación de los punteros a funciones y la ejecución aleatoria con ASLR ayudan a que el sistema se encuentre mucho más fortificado contra los fallos de Buffer Overflow.


 


Referencias Externas


 


ASLR en Wikipedia


Blog Michael Howard: Address Space Layout Randomization in Windows Vista


Blog Michael Howard: Protecting Against Pointer Subterfuge


La protección contra Desbordamientos de Buffer en Windows Vista (I de IV)


La protección contra Desbordamientos de Buffer en Windows Vista (II de IV)


La protección contra Desbordamientos de Buffer en Windows Vista (III de IV)

SuperFetch (II de IV)

SuperFetch no es una tecnología que parta de cero, sino que complementa a otra ya existente en Windows XP llamada Prefetch y que en español vendría a significar “precarga”.

 

Prefetch es un término usado en diferentes ámbitos de la informática, por ejemplo se habla de prefetch refiriéndose a las capacidades de los microprocesadores de cargar anticipadamente datos en la cache L1 durante la ejecución de una instrucción con el fin de acelerar al ejecución de aplicaciones, en el ámbito de los navegadores WEB se conoce como Prefetch (concretamente como Link Prefetching) a la capacidad de estos de cargar en caché información de las páginas WEB enlazadas cuando el navegador esta inactivo con el fin de acelerar la navegación (pudiendo realizar esto de manera agresiva o solo cuando le es indicado en el código html de link), en programación se hace referencia a este termino apuntando a la precarga de información en memoria antes de que sea necesaria con el fin de ganar tiempo de ejecución y por último en sistemas hablamos de Prefetch como un sistema de gestión de memoria usado en varios sistemas operativos (también esta disponible en Linux) que permite optimizar notablemente la carga de aplicaciones y servicios especialmente al arranque del equipo precargando la información de estos en memoria y reduciendo por tanto el tiempo de inicio.

 

Windows XP y Vista guardan la información de traza de Prefetch en la carpeta %Windir%prefetch en unos archivos con extensión .pf cuyo nombre esta compuesto por el nombre de la aplicación, un guión y un hash en hexadecimal de la ubicación de dicho archivo, como por ejemplo “NOTEPAD.EXE-2F2D61E1.pf” (“NTOSBOOT-B00DFAAD.pf” en el caso del archivo de arranque) y cuyo contenido no es más que una serie de referencias a los ficheros y directorios que leen las aplicaciones al iniciar, así como sus metadatos. Para crear estos archivos de traza el sistema de gestión memoria comprueba las consultas a las entradas de la MFT (Master File Table) del sistema de archivos NTFS sabiendo de este modo qué archivos son los que se intentan cargar y de esta manera poder precargarlos previamente a la próxima apertura de la aplicación. Así mismo Prefetch se combina con el programador de tareas para realizar una defragmentación y colocación de manera contigua y según el orden de uso de aquellos archivos que vayan a ser utilizados al iniciar las aplicaciones o durante el arranque del equipo; estos ficheros a colocar de manera contigua vienen señalados en el archivo layout.ini de la propia carpeta Prefetch realizándose la labor de defragmentación con una periodicidad de 3 días en momentos de baja actividad del equipo.

 

Carpeta Prefetch (parece que alguien ha estado jugando al Age of Empires 2 :P)

 

Sobre la carpeta Prefetch y sus propiedades existen diferentes leyendas urbanas en forma de trucos para mejorar el rendimiento de Windows, podéis echar un vistazo a algunas de ellas en el siguiente enlace:

http://mywebpages.comcast.net/SupportCD/XPMyths.html#Optimization

 

Este sistema de Prefeth de XP combinado con SuperFetch es el usado por Windows Vista si disponemos de menos de 700MB de memoria RAM, si disponemos de una mayor cantidad de memoria se continua usando el sistema Prefetch y SuperFetch pero añadiendo a le ecuación el sistema ReadyBoot (no confundir con ReadyBoost).

 

ReadyBoot es otro añadido al rendimiento de Windows vista y es el sistema utilizado para reducir el tiempo de arranque en caso de disponer de más de 700MB de RAM. ReadyBoot guarda su información en una carpeta con ese mismo nombre dentro del directorio Prefetch de Windows Vista y realiza un seguimiento de los 5 últimos arranques cuyos archivos de traza (de extensión .fx) guarda en el directorio anteriormente citado con el objetivo de usarlos posteriormente para generar un plan de arranque optimizado. Los parámetros de configuración de ReadyBoot los podemos encontrar en la siguiente clave de registro:

HKLMSystemCurrentControlSetServicesEcacheParameters

  
Bueno, a toda esta ecuación sobre precargas en memoria habría que añadir la inclusión en la carpeta prefetch de archivos de traza de aplicaciones enteras en función del comportamiento del usuario, es decir: SuperFetch.

SuperFetch es un servicio disponible en todas las versiones de Windows Vista y hace un uso intensivo de la memoria partiendo del concepto de que es muy común hoy en día trabajar con gran cantidad de memoria libre en los equipos modernos, para resolver este desaprovechamiento de memoria Windows Vista carga en esta toda aquella información que probablemente utilizará el usuario, para ello mantiene un historial de su comportamiento por días de la semana e incluso por horas de tal manera que cuando desee abrir alguna aplicación concreta esta se encuentre ya cargada en memoria y el proceso de apertura sea mucho más rápido, aun que como es obvio para uso efectivo de SuperFetch se requiere memoria libre suficiente (de ahí las recomendación de 1GB de RAM). Superfetch está completamente integrado con Prefetch y con el layout.ini, interviene en los procesos de suspensión e hibernación y es un proceso de baja prioridad y consumo que no repercute negativamente en el rendimiento del equipo sino que lo mejora gracias a la innovadora gestión de memoria que realiza. Los archivos de traza de Superfetch se guardan como Ag*.db en el directorio Prefetch.

Superfetch también esta relacionada con la gestión de la memoria virtual relacionándose y gestionando otras dos tecnologías referentes en Windows Vista: el READY BOOST y el READY DRIVE que describiré en mi próximo post.

II Reto Hacking de El lado del Mal

Hola a todos,


hace unos minutos he hecho público el II Reto Hacking de El lado del Mal, si quieres participar date prisa, solo hay 5 maravillosos premios, a saber: una caricatura hecha por mi, una poesía, una camiseta usada de las mias, un cd de rosendo y una bolsa de chupachús. (no me digas que no son premios increibles!!!).


Tienes más información y las reglas del juego en la siguiente URL:


http://elladodelmal.blogspot.com/2007/02/retohacking-ii.html


Bies malignos!!

Control de Cuentas de Usuario (II)


La primera impresión de la gente al utilizar Windows Vista es lo “cansino” y molesto que puede llegar a ser el control de cuentas de usuario. Yo personalmente os tengo que decir que ya me he acostumbrado (algunos estarán pensando que no sé lo que digo), pero es verdad.


Al principio me resultaba un poco incomodo tener que aceptar cualquier acción que necesitara de privilegios administrativos o ejecutara un aplicación no reconocida por el sistema, pero con el uso acabas acostumbrándote.


Como ya habíamos comentado en post anteriores, esta tecnología viene a cubrir el poco uso o ninguno del comando RUNAS por parte de los administradores. Esta carencia provocaba en nuestras sistemas, agujeros de seguridad que lo convertían en mucho más vulnerables.


Hoy vamos a comentar como se puede deshabilitar el control de cuentas de usuario y sus consecuencias, para que los administradores que decidan no contar con esta tecnología tengan claro los riesgos que están corriendo.


 


¿Cómo Deshabilitamos UAC?


Para deshabilitar el control de cuentas de usuario de Windows Vista simplemente consiste en desactivar una casilla de verificación. Esta casilla de verificación se encuentra en el módulo de cuentas de usuario del panel de control en el link Activar o desactivar el control de cuentas de usuario.



Cuidado con activar o desactivar UAC, ya que es necesario reiniciar la máquina para que los cambios surjan efecto.


 


¿Qué ocurre cuando deshabilito UAC?


Desde el momento en que decidimos dejar de utilizar el control de cuentas de usuario el sistema operativo empieza a ser vulnerable a los riesgos que tantos problemas nos acarreaban en Windows XP.


Sin UAC, Windows Vista deja de virtualizar los registros para cualquier usuario. Obligándonos a dar de nuevo privilegios de administrador a los usuarios estándar. A aquellos usuarios que utilizan aplicaciones que requieren de credenciales de administrador. ¿Queremos correr ese riesgo? ¿Un usuario con privilegios administrativos? (¡Eso nunca!)


Otro de los inconvenientes de desactivar UAC es que un usuario administrador utilizará todos sus privilegios para lanzar aplicaciones como el solitario y navegar por internet. ¿Estamos convencidos de dejar esa puerta trasera abierta?


Otra problemática es la perdida de seguridad en la ejecución de aplicaciones. Me explico, ¿quién no ha sufrido en alguna ocasión la ejecución de una aplicación que venía encapsulada en una imagen o se ha descargado desde una página web,…o desde cualquier otro modo? Pues bien gracias al control de cuentas podemos controlar dichas aplicaciones e impedir que se instalen y se ejecuten en nuestro sistemas.


Estos son algunos ejemplos de los riesgos más comunes que podemos sufrir si desactivamos el UAC. Toda seguridad empieza protegiendo el acceso y control que los usuarios y las aplicaciones tienen de nuestro sistema.


Personalmente os recomiendo encarecidamente seguir utilizando UAC y no hagáis caso a esos post que lo único que hacen es vetarlo sin conocer todas sus ventajas.

En el siguiente post hablaremos del modo que tenemos de configurar el control de cuentas de usuario para adaptarlo a nuestras necesidades. Por ejemplo, como seguir utilizando UAC sin tener que sufrir los mensajes de aceptación.

Bulo sobre Windows Vista y el DRM

Siento tener que poner esto en este blog, pero creo que es importante que todos estemos atentos a este tipo de bulos, o como dirían otros “FUD”.


 


 >Windows Vista, el último sistema operativo de Microsoft, está plagado
 >de sistemas de protección anticopia y de bloqueo de contenidos por
 >presiones de entidades como la MPAA, la RIAA o la SGAE, supuestamente
 >para combatir la piratería. Estos sistemas están integrados en la
 >programación básica del sistema, por lo que son muy difíciles de
 >cancelar o rodear.


 >
 >El resultado es que, si te instalas Windows Vista o compras un
 >ordenador que lo traiga preinstalado, ya no podrás ver o grabar vídeos
 >ni escuchar o grabar música descargados de Internet.


 


Esto es totalmente falso. Windows Vista ofrece a los “CONTENIDOS ORIGINALES” el famoso DRM que les permite dificultar que se puedan copiar. Sólo, aquellos “CONTENIDOS ORIGINALES” cuyo dueño legal (y no entro en filosofadas, solo el que según la ley diga) tiene derecho a activar el sistema de protección de Windows Vista.


 


Cualquier contenido que SU DUEÑO no active el sistema de protección DRM en Windows Vista podra ser reproducido y visualizado correctamente. Es más, el que haya hecho correr esto, en su vida lo ha intentado, porque es tan fácil como hacer doble clic.


 


¿SGAE? Ja, esto sí que tiene gracia.


 


 >
 >Lo más grave es que, en muchos casos, tampoco podrás hacerlo ni
 >siquiera aunque hayas comprado legalmente el contenido, porque el DRM
 >(sistema de protección de derechos de autor) integrado no permite, por
 >ejemplo, que te puedas pasar una canción de un DVD (comprado
 >legalmente) a tu MP3. Ni que te puedas tostar una selección de
 >canciones (compradas legalmente) para el CD de tu coche. Y, con
 >frecuencia, ni siquiera podrás reproducir una película (comprada
 >legalmente) en tu ordenador o en cualquier medio que no sea un
 >reproductor específico autorizado por Microsoft y los fabricantes de
 >contenidos. Si intentas hacerlo, lo reproduce con mala calidad o
 >directamente lo impide.


 


Sí se puede o no copiar el contenido es una decisión de los dueños de los contenidos. Todos los contenidos originales han tenido desde el principio sistemas Anticopy. Las películas en dvd han tenido y tienen sistemas anticopy. Windows Vista ejecuta las protecciones anticopy si LOS DUEÑOS de los contenidos lo deciden aplicar. Muchas compañías han decidido no aplicarlo. Microsoft no autoriza ni desautoriza ningún reproductor, es el DUEÑO DE LOS CONTEDIDOS.


 



 >
 >La única solución segura para evitar este abuso es no instalar Windows
 >Vista y rechazar cualquier ordenador que te intenten vender con
Windows
 >Vista preinstalado. Sigue con Windows XP o considera pasarte a algún
 >sistema operativo “libre”, como Linux.
 >
 >Por favor, PÁSALO. Es posible que, si Microsoft ve que no hay forma de
 >vender el Windows Vista por culpa de esta barbaridad, se lo piensen
 >mejor la próxima vez.


 


La conclusión es. El sistema de protección de Windows Vista DRM es una herramienta que los dueños de contenidos deciden si aplican o no. Nunca es Windows Vista quien decide por los dueños de los contenidos. Como hacen los sistemas de consolas de videojuegos o los dvd.


 


Pero bueno, aquí tenéis la contestación a esto del equipo oficial de Windows Vista.


 


20 preguntas sobre el DRM.


 


Incluso Linus Torvalds en el año 2003 se planteó utilizar DRM en Linux. Aunque al final, como es sabido no se implantó y las compañías han buscado sistemas anticopy para proteger sus derechos. El debate no es de si debe existir o no la tecnología de protección sino si las compañías tienen o no derecho de proteger sus propiedades.


 


Eso, pásalo.