Cifrado total de discos duros en Windows (1): 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) tarda la operación casi un hora, mientras que la misma operación sobre un archivo montado como carpeta por Pismo (sin compresión ni cifrado para poder comparar tiempos), tarda tan sólo un segundo. Son sólo cuatro megas y el pen permite escribir a 5MB/s. Si a esto le añadimos compresión, encima aumentamos no sólo la velocidad del PenDrive sino también su capacidad, y si encima usamos cifrado además añadimos privacidad.

- Resumiendo: La mejor solución es combinar técnicas: TrueCrypt y Pismo. De esta forma con TrueCrypt garantizamos que Off-Line (apagado) el disco duro esté seguro y On-Line (encendido) sólo estarán accesibles los datos más críticos cuando los montemos (TrueCrypt y/o Pismo, tanto de forma separada como en cascada), ojo con poner en cascada varios cifradores, ralentiza bastante.

 

Cifrado en cascada

¿Cómo se ponen en cascada? Fácil. Un ejemplo: se crea un archivo .tc con TrueCrypt, se monta como unidad; en ella se crea un archivo .pfo con Pismo y se monta como carpeta o unidad; en ella se crea un archivo .tc o .pfo, etc... Para acceder a los datos habría que ir montando en cascada cada uno, cada uno con su clave pertinente, ... A costa de más CPU y tiempo se aumenta la seguridad contra ataques de fuerza bruta; imaginemos a un atacante cómo de frustrado se quedaría si tras conseguir romper una clave monta el archvo y se encuentra que lo que hay son también archivos cifrados .tc o .pfo y que tiene que volver a empezar de nuevo a romper otra clave. Si además tras romper la siguiente (varios años de trabajo) se vuelve a encontrar otra vez con otros archivos cifrados y ha de volver a empezar de nuevo, frustrado de narices; lo que espero es que no se suicide de lo frustrante que le resulte al atacante, pues no le deseo mal a nadie.

Recordad simpre la máxima en seguridad: El punto más débil del cifrado puede no ser el algoritmo sino la clave; imaginad a un usuario que pone la contraseña de windows para el usuario Administrador vacía. En los algoritmos actuales más conocidos se tiende a intentar que la clave sea lo más pequeña posible y que el algoritmo garantize que los datos estén a salvo; si la clave es pequeña la cantidad diferente de posibles claves es baja, por tanto con muchos ordeadores en paralelo, cada uno con un rango, llegarán en poco tiempo a sacar la clave rápidamente. El ejemplo más drástico: una clave de un byte (256 posibles valores) es muy mala protección pues sólo son necesarias 256 pruebas; si tienes 256 ordenadores cada uno deberá hacer sólo una prueba. A más bytes de clave más pruebas y es una función exponencial: doble longitud de clave, el cuadrado de pruebas.

Personalmente mis claves tienen una longitud de cerca de un megabyte (1024*1204 bytes) para los datos poco sensibles, para los críticos uso claves de más de 8GB (>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!

Comentarios

Selecciona arriba tu forma preferida de visualizar los comentarios y pulsa el botón para guardar tu elección para próximas visitas (sólo si eres usuario registrado).
maty's picture

Edición enriquecida


Este artículo merece una edición mucho más prolija, con multitud de capturas de pantalla para facilitar su implementación.

Desconocía Pismo, lo probaré con las memorias USB.

Nauscopio Scipiorum

anónimo's picture

Pismo


El tema del Pismo ya estaba disponible en Mac OS X.

Se pueden crear imágenes .dmg del tamaño que uno quiera, con un cifrado de AES 128 y AES 256.

También existe la posibilidad de crear imágenes dinámicas (crecen al ritmo que se van copiando ficheros) y con los cifrados arriba mencionados.

anónimo's picture

¿claves de 8 GB?


No entiendo muy bien, ¿usas un archivo de 8 gb de clave? es que no creo que sea posible "teclear" semejante volumen de datos para acceder a un archivo. Yo uso alguna clave de 28 dígitos y me parece que por fuerza bruta no es muy fácil de romper.

Revenarius

anónimo's picture

Sí, vale


http://xkcd.org/538/

Sí, vale, yo también soy uno.

LlamameX's picture

Gracias por el post


Tengo un portátil donde siempre he querido probar el truecrypt con encriptación total del disco pero siempre me ha dado miedo el tema del rendimiento, así que tu estudio me viene como anillo al dedo.

Por lo que respecta a las pruebas que comentas con máquinas virtuales. Intenté hacerlo con VMware server encriptando todo el disco virtual pero no me dejó. No recuerdo exactamente de que se quejaba, quizás algún tema del arranque (volveré a probarlo pero tengo que reinstalar un XP virtual) pero no quiso. No lo he probado con los entornos que comentas pero imagino que las pegas van a tener que ser más o menos las mismas.

Saludos

Andy's picture

Un poco off-topic, pero no tanto


Yo me veo forzado a llevar en un PenDrive el certificado para acceder por SSH a un servidor. Nunca guardo el certificado en el portátil.

Lo que he hecho es crear en el PenDrive un directorio "keys", dentro del mismo 16 directorios de "0" a "F" y dentro de cada uno de éstos 256 directorios de "00" a "FF". Son 4096 directorios en total.

Luego con la ayuda de un script he creado unos 20.000 certificados de 4096 bits, todos con nombres hexadecimales aleatorios de 8 caracteres, todos protegidos por "passphrasses" de entre 12 y 20 caracteres aleatorios (generados con pwgen) y esparcidos de forma aleatoria en los 4096 directorios de último nivel que comentaba antes.

Uno de estos es el certificado que necesito para acceder al server.

Aunque pierda mi PenDrive, el que lo encuentre se enfrenta a 20.000 certificados, todos encriptados, sin saber cuál es el bueno.

Tengo disponible el script por si a alguien le interesa.

Saludos,
Andy

anónimo's picture

Que complicado no?


No es mucho mas sencillo y mas efectivo simplemente llevar el pendrive encriptado con una buena clave?

anónimo's picture

Sin contar con que....


....la seguridad basada en ocultar cosas no sirve de mucho, ni es buena practica.

Andy's picture

No es eso


La seguridad no se basa en esconder cosas. La seguridad en este caso está en utilizar certificados de 4096 bits con passphrases largas.

El resto sólo es disuasorio.

La puerta de mi casa también tiene cerraduras, aunque no sirvan para mucho. Son sólo disuasorias. Alguien realmente determinado o con los conocimientos necesarios las puede abrir más o menos fácilmente. Es mejor no pensar en ello, pero es asi. Yo lo sé y tú también lo sabes.

¿Significa eso que es mejor no tener cerraduras? No!!!

El poder disuasorio es justamente ese: teniendo cerraduras -y tanto mejor si hay varias y son buenas- harán que un ladrón lo piense 2 veces antes de intentar abrirlas. Siempre habrá otra casa con menos cerraduras o de menor calidad.

anónimo's picture

y si se usa un script


y no sería igual de facil usar un script para probar los 20 mil certificados?

Supongo que aunque tengas que usar un certificado habrá una clave privada para acceder al servidor.

Personalmente creo que la mayor seguridad es la que está en la cabeza, sin salir de ahí, quietecita. La única manera de sacarla es también la fuerza bruta.... física.

Claro que la fuerza bruta física es bastante más facil de utilizar... cualquier policia sabe hacerlo.