En el contexto de la seguridad, todo es un intercambio. Más sobre eso en un segundo ....
¿Cuáles son las opciones de ataque para entrar en tu volumen cifrado? Ellos son, básicamente:
-
Búsqueda de fuerza bruta del espacio de claves para la clave utilizada por la primitiva de cifrado simétrico.
-
Brute forza la frase de contraseña al intentar cada contraseña posible utilizando los parámetros específicos de sal y clave de derivación de su volumen.
-
La mucama malvada, la manguera de goma, el registrador de llaves u otros medios "no criptográficos" para asegurar su teclado.
Debes preocuparte por el número 3. Porque es el vector de ataque obvio.
Nadie va a tener éxito en la aplicación bruta de la clave utilizada para la primitiva de cifrado de bloque.
Desde una perspectiva de seguridad básica, sigo convencido de que incluso las claves de 128 bits son completamente seguras si la implementación no se rompe. Una búsqueda de fuerza bruta en ese caso debe agotar en promedio la mitad de un espacio clave que tiene 340,282,366,920,938,463,463,374,607,431,768,211,456 posibilidades.
Para una primitiva de 256 bits, estás hablando de 115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,557,007,913,129,639,636 posibilidades.
Entonces, incluso con 256 bits de seguridad clave, ya está alcanzando números que se acercan al número de átomos en el universo conocido.
Eso está fuera.
Lo que te preocupa es que alguien intente cada frase de contraseña posible.
Ahora, recuerda que LUKS usa un poco de sal + PBKDF2 para estirar tu frase de paso al tamaño del espacio clave. Lo que esto significa es que incluso una contraseña de "a" puede asignarse a cualquier lugar posible en todo el espacio clave. Así que los atacantes no van a tener una mesa de arco iris que ayude aquí.
Si van a forzar bruscamente la frase de contraseña, tendrán que probar todas las entradas posibles, ejecutando cada una de ellas a través de la función de derivación de clave con los parámetros utilizados en su volumen (salt & iterations). Eso lleva tiempo. Y, si la memoria sirve, LUKS realmente establece las iteraciones para tomar una cantidad específica de tiempo por "intento".
Lo que esto significa es que simplemente necesitas una longitud de frase de paso que tenga suficiente entropía para que un atacante no pueda probar un número suficiente de frases posibles para ubicar tu frase. El atacante, por supuesto, puede usar GPU o hardware ASIC especializado para acelerar este proceso (es por eso que la gente está experimentando con cosas como Scrypt para hacerlo más difícil), pero estará más que protegido con 20 a 30 caracteres que contienen minúsculas, mayúsculas, números y los símbolos del teclado (incluidos los símbolos de los números desplazados y otros símbolos en el teclado).
Esto me lleva de nuevo a mi comentario inicial. Es importante tener en cuenta las compensaciones. Puede intentar crear una frase de paso que sea equivalente a la dificultad de su espacio de claves de 512 bits, pero IMPACTO su comportamiento. Es posible que no se desmonte / cierre la sesión cuando se levanta para tomar una taza de café, ya que es muy difícil obtener la contraseña correcta cuando es el momento de volver a iniciar sesión. Puede guardar la frase de contraseña larga en un teléfono o pieza. de papel. Si lo almacena en un administrador de contraseñas, estará limitado por la seguridad del administrador de contraseñas y no por la seguridad de la longitud de su frase de contraseña.
Mientras tanto, una vez que un atacante tiene que probar de 20 a 30 caracteres de la frase de paso utilizando 93 caracteres posibles, el atacante enfrenta (efectivamente) de 95 a 150 bits de entropía que lo coloca fuera del rango razonable de fuerza bruta.
Y, todo lo cual conduce a la tercera posibilidad de ingresar a tu volumen. Comparado con la fuerza bruta de la clave del cifrado primitivo o el intento de todas las frases de paso posibles, el tercer escenario "COMPROMISO" es realmente de lo que debería preocuparse. Un atacante que le permite apuntar un navegador web comprometido a un exploit que le otorga privilegios escalados en su sistema en ejecución puede escanear la memoria en busca de su contraseña. Un atacante que obtiene un rootkit en su sistema puede hacer lo mismo. Si enchufa un dispositivo USB o dispositivo FireWire comprometido, puede estar comprometiendo la seguridad. Y todos estos son mucho más fáciles para el atacante que los brutos forzando el espacio de claves o espacio de frase de contraseña.