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.
AES - CBC + Difusor
Existen numerosos elementos necesarios aplicar a la hora de determinar un mecanismo de cifrado, y estos deben garantizarse, de tal forma que el acceso a los datos cifrados deben ser controlados, tanto a nivel lógico, como el impedir los ataques que mediante manipulación arbitraria permitiera el acceso aleatorio a los datos y la obtención del mecanismo de cifrado.Por mecanismos de rendimiento el mejor sistema que se puede emplear para el cifrado de datos de disco es AES-CBC, pero ya advertimos anteriormente el riesgo de posibles ataques al utilizar únicamente este mecanismo. La decisión finalmente establecía la utilización de AES-CBC para la encriptación primaria y una clave difusor independiente para texto plano. Este difusor tiene como objetivo fortificar frente a los ataques de manipulación, mejor que lo que puede realizar de forma única el algoritmo de AES-CBC.
Implementando el cifrado
Aqui vamos a definir como se realiza la implementación en Windows Vista. Antes de realizar la implementación, necesitamos haber definido inicialmente una estructura de disco consecuente para la implantación de Bitlocker.
Inicialmente necesitamos para habilitar bitlocker 2 particiones formateadas en NTFS. Una de las particiones, la activa, es el volumen de sistema, que contendrá todo el sistema de arranque y no se cifrará, esta partición no cifrada además de mantener todo el arranque, nos permitirá cargar el boot loader y arrancan otro sistema operativo que pudiera estar coexistiendo en nuestra máquina y en otra partición diferente de aquella que vamos a cifrar. La otra partición, almacenará el sistema operativo y es aquella que podemos cifrar. Únicamente mediante bitlocker se puede cifrar esta partición.
Una vez que tenemos definido y creado nuestro sistema de almacenamiento siguiendo estas características, procederemos a habilitarlo. En el caso de que no poseamos el chip TPM, siempre podremos optar por utilizar un Stick USB para el almacenamiento de las claves. Para utilizar esta metodología deberíamos habilitar la directiva correspondiente tal y como definimos en post anteriores.
Posteriormente a la definición del método para el almacenamiento de las claves, el sistema nos presenta la posibilidad de guardar una password de recuperación. El almacenamiento de la misma se puede realizar en un dispositivo USB, en una carpeta o bien imprimirse. Esta clave debiera quedar bien resguardada, tanto por motivos de seguridad, como por motivos de administración, puesto que nos permitirá recuperar el disco cifrado, en caso de contratiempos, aunque nos lleváramos el disco duro a otra máquina diferente del que hallamos implementado el cifrado del disco. Esta password de recuperación es única para cada sistema donde hayamos implementada por bitlocker.
Finalizaremos la aplicación de Bitlocker, reiniciando la máquina. Se realiza un pre-arranque donde se comprueban las condiciones para su implementación y la compatibilidad. Si supera este proceso, se procederá a la implementación del cifrado. Una vez completado en el siguiente proceso de arranque, en función del escenario de implementación que hayamos utilizado, bien por PIN o USB, nos lo solicitará para proceder con el proceso de carga del sistema operativo.
Uno de los mecanismos que tenemos que tener siempre presente es el de la recuperación en caso de una contingencia. Para ello deberemos disponer de la clave de recuperación bien que se encuentre en un dispositivo USB, o lo hubiéramos impreso. Durante el arranque si el sistema está bloqueado nos pedirá la clave de recuperación. Inicialmente nos solicitará la llave USB o bien introducir manualmente la clave que tuviéramos en papel. Este mismo mecanismo deberemos implementar en el caso de que el hardware haya provocado fallos y tuviéramos que llevarnos el disco a otra máquina.
Figura 1 - Funciones de cifrado mediante AES-CBC + Difusor
La figura anterior describe los mecanismos empleados para el cifrado de los datos. Los datos en texto plano son corred con una clave del sector. Posteriormente se le aplican los difusores y finalmente se encripta con el modo AES-CBC. La clave del sector viene definida por la siguiente función:
KS:=E(KSEC, e(s)) E(KSEC,e’(s))
donde E() es la función AES de encriptación, KSEC es la clave utilizada (128 o 256 bits, según lo elegido) y e(s) y e’(s), es la función de codificación utilizada en la capa AES-CBC teniendo en cuenta que e’ es como e solo que el último byte tiene el valor 128. La clave Ks se repite tantas veces como sea necesario hasta completar una clave del tamaño del bloque y se aplica una función corred sobre el texto plano.
El uso de dos difusores, muy similares pero aplicados en direcciones opuestas, permite la propiedad de difusión correcta en ambas direcciones. Los difusores vienen determinadas en una función donde intervienen el número de palabras del sector y un operador de 4 constantes (diferentes para cada difusor) en un array que especifica la rotación. Este mecanismo tiene como objetivo minimizar el impacto del cifrado en el rendimiento al utilizar un menor uso de ciclos por segundo para realizar el mismo.
No hay comentarios:
Publicar un comentario