sábado, 21 de febrero de 2009

Cifrado total de discos duros en Windows: TrueCrypt + Pismo

[Enviado a Kriptópolis como comentario anónimo]

TrueCrypt permite cifrar todo el disco duro (excepto el sector de arranque). Eso incluye toda la partición Windows -no sólo carpetas y archivos- de modo que al arrancar, el sistema te pedirá la contraseña para poder cifrar y descifrar los datos al vuelo.

De esta forma, si el disco duro se pone en otro PC no se verán los datos de la partición, o mejor dicho, lo que se vea estará cifrado.

Ojo, porque cifrar y descifrar consumen CPU y dependiendo del algoritmo elegido la velocidad de puede ser bastante baja.

Personalmente recomiendo cifrar sólo la partición del SO y no todo el disco. De esta manera hay una partición sin cifrar que se puede usar como temporal para aquellas tareas que requieran mucha velocidad de disco. Por contra, está claro que lo que se escriba en ella no debe ser crítico...

* Mi esquema preferido con un sólo HDD (caso de portátiles):

HDD0:
<<- Partición0 4GB - Para el PageFile - Evita que se fragmente y estará en la parte más rápida del disco, al principio. ->>
<<- Partición1 ZGB - Z: El tamaño para nuestros datos temporales que requieran altas prestaciones ->>
<<- Partición2 (4+X)GB - X: El tamaño ajustado en lo posible a lo que estará ocupado) El SO en sí. ->>
<<- Partición3 YGB - Y: El tamaño para nuestros datos no temporales ->>

En este sólo cifraría las particiones 0, 2 y 3, dejando que la 1 tenga su máxima velocidad (sin cifrar).
* Mi esquema preferido con más de un sólo HDD (caso de sobremesa), muy similar, sólo que repartiendo entre varios discos. Así, para dos discos:

HDD0:
<<- Partición0 4GB - Para el PageFile - Evita que se fragmente y estará en la parte más rápida del disco, al principio. ->>
<<- Partición1 (4+X)GB - X: El tamaño ajustado en lo posible a lo que estará ocupado) El SO en sí. ->>

HDD1:
<<- Partición0 ZGB - Z: El tamaño para nuestros datos temporales que requieran altas prestaciones ->>
<<- Partición1 YGB - Y: El tamaño para nuestros datos no temporales ->>

En este sólo cifraría las particiones HDD0-0, HDD0-1 y HDD1-1, dejando que la HDD1-0 tenga su máxima velocidad (sin cifrar).
* Mi esquema preferido con más de un sólo HDD (caso de sobremesa), muy similar, sólo que repartiendo entre varios discos, para tres discos:

HDD0:
<<- Partición0 4GB - Para el PageFile - Evita que se fragmente y estará en la parte más rápida del disco, al principio. ->>
<<- Partición1 (4+X)GB - X: El tamaño ajustado en lo posible a lo que estará ocupado) El SO en sí. ->>
HDD1:
<<- Partición0 YGB - Y: El tamaño para nuestros datos no temporales ->>
HDD2:
<<- Partición0 ZGB - Z: El tamaño para nuestros datos temporales que requieran altas prestaciones ->>
En este sólo cifraría las discos duros HDD0 y HDD1, dejando que el HDD2 tenga su máxima velocidad (sin cifrar).
* Mi esquema preferido con más de un sólo HDD (caso de sobremesa), muy similar, sólo que repartiendo entre varios discos, para cuatro discos:

HDD0:
<<- Partición0 4GB - Para el PageFile - Evita que se fragmente y estará en la parte más rápida del disco, al principio. ->>
HDD1:
<<- Partición0 (4+X)GB - X: El tamaño ajustado en lo posible a lo que estará ocupado) El SO en sí. ->>
HDD2:
<<- Partición0 YGB - Y: El tamaño para nuestros datos no temporales ->>
HDD3:
<<- Partición0 ZGB - Z: El tamaño para nuestros datos temporales que requieran altas prestaciones ->>

En este sólo cifraría los discos duros HDD0, HDD1 y HDD2, dejando que el HDD3 tenga su máxima velocidad (sin cifrar).

Dejar una partición dedicada al PageFile es mucho mejor que ponerlo en otra, según he podido obsevar en mis pruebas, de hecho las mejores prestaciones las he obtenido haciendo que dicha partición sea FAT32 y no NTFS, de ahí el límite a 4GB (FAT32 no admite archivos mayores). Recordad que la partición ha de ser ligeramente mayor que el PageFile o Windows os dirá que no le cabe. Requiere que haya unos megas libres, a pesar de decirle que sea de tamaño fijo (mismo tamaño mínimo y máximo).

Que el SO y pagefile estén en discos diferentes hace ganar mucho en prestaciones.

Asimismo recordad que normalmente (salvo discos de muy altas prestaciones y muy caros) los discos duros leen y escriben más rápido en la parte más baja de direcciones (cilindros más bajos). En algunos la direfencia es de hasta el doble, por ejemplo los primeros cilindros a unos 80MB/s y los últimos a unos escasos 30MB/s. Esto hace que si la partición para el SO está al final del disco sea mucho más lento el PC.

A lo que me refiero con "datos temporales que requieran altas prestaciones" es a datos intermedios generados por muchas aplicaciones que todos conocemos y no voy a mencionar, pero que tienen algo un poco especial: se usa poca CPU y mucha entrada/salida. Además suelen ser archivos muy grandes, de 4.32GB 4.7GB o incluso de 8.5GB. Ya sabéis a qué me refiero y con la llegada de los nuevos medios ópticos podrían ser de 25GB o incluso hasta 50GB.

Lógicamente, al no cifrar dicha partición lo mejor es que cuando dichos datos temporales no sean ya necesarios (es decir, cuando ya estén en su medio externo correspondientemente tratados) primero usad algún programa que sobreescriba partes de los archivos con datos aleatorios y tamaños variables en posiciones concretas de los archivos, para luego "formatearla" tras su uso. Digo "formatearla" y no simplemente borrarlos para que las estructuras (MFT, etc...) sean borradas. Lo ideal sería un Wipe, pero eso lleva demasiado tiempo. Luego usad algún programa que genera archivos con datos aleatorios y de tamaños variables en posiciones concretas del disco y después volved a "formatearla". Con esto se evitará que los programas de recuperación de datos por contenido puedan ver alguna estructura de lo que había en la partición no cifrada y así se evita que se pueda recuperar algo sin el coste de un wipe completo. Obviamente si prima la seguridad el wipe es fundamental, y si se es un paranoico pues nada de particiones sin cifrar y -eso sí- más lentos esos procesos de entrada / salida.

Mucho ojo con cifrar la partición del sistema operativo. Causa tres efectos laterales, uno evitable y dos no:

El evitable es que se pierda la contraseña. TrueCrypt permite tener a buen recaudo un método para subsanar esto e incluso un borrado accidental del cilindro cero (reparticionar el disco, por ejemplo).

Los no evitables son: 1) La partición no se podrá cambiar de tamaño mientras esté cifrada y 2) Si tratas de clonar dicha partición para tener un respaldo / backup, al estar cifrada no se podrán comprimir los datos que vea el programa clonador y tampoco verá la estructura, por lo que el archivo imagen ocupará tanto como ocupe la partición.

Espero os sirva de ayuda, pues os veo no muy versados en el tema, algo muy comprensible. Pocos fanáticos hay como yo que inviertan meses en pruebas hasta dar con un sistema bueno.

TrueCrypt también permite cifrar el 100% de un PenDrive o disco externo. En este caso recomiendo que en el Administrador de disco de Windows le digáis que no le asigne letra a la partición no montada, para que accidentalmente no os pida darle formato y evitar así el riesgo de formatearla accidentalmente.


Pismo File Mount

También hay por la red otro programita llamado Pismo File Mount bastante útil, que es capaz de crear archivos y montarlos como una carpeta o una unidad. Muy útil.

Lo bueno: Admite que el contenido del archivo se comprima y/o cifre. Tras ser montado se puede usar como si fuera una carpeta. Comentar que el ratio de compresión gana con creces a la compresión de NTFS y además es más rápida. Sólo tiene una pega: el tamaño del archivo sin montar sólo sabe crecer, no tiene ninguna opción para compactarlo; se soluciona creando uno nuevo y montando ambos; movemos los de uno al otro listo.

Además el mismo programa permite crear archivos con un ratio de compresión mucho más alto que también se pueden montar, pero éstos sólo serán de lectura y no podrán ser borrados ni alterados; muy parecido a lo que hace 7zip, ideal para imágenes de CDs/DVDs, etc.


Resumen

Como resumen: TrueCrypt para cifrar el Arranque, SO y datos críticos, medios externos etc... y si somos maniáticos o paranoicos sobre archivos / particiones cifradas con TrueCrypt podemos añadir otro nivel de cifrado más, con Pismo File Mount. Recordad que Pismo File Mount también permite comprimir al vuelo, parecido a como lo hace la NTFS, pero con un notable mejor ratio.


Algunas notas finales

- Siempre tened cuidado con qué trasteais; por ejemplo, no se os ocurra la burrada de pensar que Pismo podrá comprimir el directorio de Windows. Pismo crea archivos que pueden ser montados y accedidos como carpetas, pero el SO debe estar arrancado para ello.

- Jamás olvidéis hacer un backup del disco antes de cifrarlo, pues si no tienes cuidado y haces mal las cosas puedes perder todo. Guarda en un papel escrito la contraseña y dicho papel guardalo a salvo en casa, ... trabaja sobre seguro, haz pruebas para familiarizarte antes en un PC que no tenga riesgos. Para ello están VirtualPC o VirtualBOX, máquinas virtuales en las que montar un sistema operativo y hacer pruebas (si no dispones de un PC físico donde hacerlas). Recomiendo familiarizarse antes con el sistema de cifrado del disco duro antes de hacerlo sobre el definitivo. También recomiendo que no dejéis que se cifre el disco en el arranque, sino mientras estéis trabajando en windows de fondo. De lo contrario el proceso debería terminar sin poderlo parar; yo mismo metí la pata y aborté el proceso de cifrado en el arranque, perdí el SO y me tocó reinstalarlo; por eso cuando se reinicie y pida si cifrar el disco ahora (en el arranque) o luego (mientras se trabaja en windows) elegir luego. Además así podréis apagar el PC aunque no haya acabado. En el siguiente arranque continuará mientras trabajamos en Windows.

- Sugerencia: probad Pismo sobre un PenDrive, el rendimiento en escritura aumenta una burrada. El motivo es simple: cada vez que se escribe un archivo pequeño en un PenDrive (dado que windows por defecto desactiva la caché de escritura) se escribe la tabla de asignacion de datos (FAT o $MFT), por lo que la velocidad con archivos pequeños es pésima; pues bien, al hacerlo dentro de una carpeta resultante de haber montado un sistema de archivos virtual (vamos, un archivo de Pismo montado como carpeta), dichas escrituras tienen su propia caché y la FAT/$MFT sólo se escribe una única vez, al final. En mis pruebas con algunos PenDrives he observado que si escribo 1000 (mil) archivos de menos de cuatro KB (<4096bytes)>8*1024*1024*1024 Bytes). Paranoico, no. Seguro de que no usarán el ataque a fuerza bruta, sí. La clave es mayor que los datos y sólo la uso una única vez, vamos una clave para cada archivo a proteger.

Por ello resulta que el coste de inventarse qué habría es mucho menor que probar a fuerza bruta cada posible valor de la clave; además el número de posibles claves es mayor que el número de posibles datos.

Lo explicaré con un ejemplo:

Clave de 4Bytes, dato en limpio ocupa 2 bytes -> Número de posibles claves 256^4=4294967296, número de posibles datos en limpio 256^2=65536; ahora con 8 bytes de clave y 3 bytes de datos: número de posible claves 256^8=18446744073709551616 y número de posibles datos: 256^3=16777216.

Espero quede claro; si no pondré otro ejemplo: si la clave es más larga que los datos y sólo se usa una vez una simple función XOR basta para garantizar la seguridad de los datos y si no intentad descifrar esto (sin la clave y obviamente sin el dato en claro):

Dato en claro: HOLA -> 072 079 076 065
Clave: LUIS -> 076 085 073 083
Dato protegido: **** -> 004 026 005 018

Espero haber resuelto no sólo vuestras dudas sobre con qué cifrar el disco duro para que la partición de Windows esté cifrada, sino también que entendáis un poco la seguridad y su coste, y así podáis determinar el equilibrio entre el coste y cuán seguros queráis tener los datos.

Suerte y al toro!

Extraído de Kriptópolis

No hay comentarios: