El cifrado de disco es un caso especial de protección de datos en reposo cuando el medio de almacenamiento es un dispositivo direccionable por sector (por ejemplo, un disco duro). Este artículo presenta aspectos criptográficos del problema. Para obtener una descripción general, consulte cifrado de disco . Para obtener información sobre los diferentes paquetes de software y dispositivos de hardware dedicados a este problema, consulte Software de cifrado de disco y hardware de cifrado de disco .
Definición del problema
Los métodos de cifrado de disco tienen como objetivo proporcionar tres propiedades distintas:
- Los datos del disco deben permanecer confidenciales .
- La recuperación y el almacenamiento de datos deben ser operaciones rápidas, sin importar en qué parte del disco se almacenen los datos.
- El método de cifrado no debe desperdiciar espacio en disco (es decir, la cantidad de almacenamiento utilizado para los datos cifrados no debe ser significativamente mayor que el tamaño del texto sin formato ).
La primera propiedad requiere definir un adversario del que los datos se mantienen confidenciales. Los adversarios más fuertes estudiados en el campo del cifrado de disco tienen estas capacidades:
- pueden leer el contenido sin procesar del disco en cualquier momento;
- pueden solicitar que el disco cifre y almacene archivos arbitrarios de su elección;
- y pueden modificar los sectores no utilizados en el disco y luego solicitar su descifrado.
Un método proporciona una buena confidencialidad si la única información que un adversario puede determinar con el tiempo es si los datos de un sector han cambiado o no desde la última vez que miraron.
La segunda propiedad requiere dividir el disco en varios sectores , generalmente 512 bytes (4096 bits) de longitud, que se cifran y descifran de forma independiente entre sí. A su vez, si los datos deben permanecer confidenciales, el método de cifrado debe poder modificarse ; no se deben procesar dos sectores exactamente de la misma manera. De lo contrario, el adversario podría descifrar cualquier sector del disco copiándolo en un sector no utilizado del disco y solicitando su descifrado.
La tercera propiedad generalmente no es controvertida. Sin embargo, prohíbe indirectamente el uso de cifrados de flujo , ya que los cifrados de flujo requieren, por su seguridad, que el mismo estado inicial no se use dos veces (lo que sería el caso si un sector se actualiza con datos diferentes); por lo tanto, esto requeriría un método de cifrado para almacenar estados iniciales separados para cada sector en el disco, aparentemente una pérdida de espacio. La alternativa, un cifrado de bloque , está limitada a un cierto tamaño de bloque (generalmente 128 o 256 bits). Debido a esto, el cifrado de disco estudia principalmente los modos de encadenamiento , que amplían la longitud del bloque de cifrado para cubrir un sector de disco completo . Las consideraciones ya enumeradas hacen que varios modos de encadenamiento conocidos no sean adecuados: el modo ECB , que no se puede modificar, y los modos que convierten los cifrados de bloque en cifrados de flujo, como el modo CTR .
Estas tres propiedades no garantizan la integridad del disco; es decir, no le dicen si un adversario ha estado modificando su texto cifrado. En parte, esto se debe a que una garantía absoluta de la integridad del disco es imposible: pase lo que pase, un adversario siempre podría revertir todo el disco a un estado anterior, eludiendo tales comprobaciones. Si se desea algún nivel no absoluto de integridad del disco, se puede lograr dentro del disco cifrado archivo por archivo utilizando códigos de autenticación de mensajes .
Bloquear modos basados en cifrado
Como la mayoría de los esquemas de cifrado, el cifrado de disco basado en cifrado en bloque utiliza modos de operación , que permiten cifrar cantidades de datos mayores que el tamaño de bloque de los cifrados (normalmente 128 bits). Por lo tanto, los modos son reglas sobre cómo aplicar repetidamente las operaciones de un solo bloque de los cifrados.
Encadenamiento de bloques de cifrado (CBC)
El encadenamiento de bloques de cifrado (CBC) es un modo de encadenamiento común en el que el texto cifrado del bloque anterior se combina con el texto sin formato del bloque actual antes del cifrado:
Dado que no hay un "texto cifrado del bloque anterior" para el primer bloque, se debe utilizar un vector de inicialización (IV) como. Esto, a su vez, hace que CBC se pueda modificar de alguna manera.
CBC tiene algunos problemas. Por ejemplo, si los IV son predecibles, entonces un adversario puede dejar una "marca de agua" en el disco, es decir, almacenar un archivo especialmente creado o una combinación de archivos identificables incluso después del cifrado. El método exacto para construir la marca de agua depende de la función exacta que proporciona los IV, pero la receta general es crear dos sectores encriptados con primeros bloques idénticos. y ; estos dos se relacionan entre sí por. Por lo tanto, el cifrado de es idéntico al cifrado de , dejando una marca de agua en el disco. El patrón exacto de "igual-diferente-mismo-diferente" en el disco se puede modificar para que la marca de agua sea única para un archivo determinado.
Para protegerse contra el ataque de marca de agua, se utiliza una función de cifrado o hash para generar los IV a partir de la clave y el número de sector actual, de modo que un adversario no pueda predecir los IV. En particular, el enfoque ESSIV utiliza un cifrado de bloque en modo CTR para generar los IV.
Vector de inicialización cifrado del sector de sal (ESSIV)
ESSIV [1] es un método para generar vectores de inicialización para el cifrado de bloques para usar en el cifrado de disco. Los métodos habituales para generar IVs son secuencias predecibles de números basadas, por ejemplo, en la marca de tiempo o el número de sector, y previenen ciertos ataques como un ataque de marca de agua . ESSIV previene tales ataques generando IVs a partir de una combinación del número de sector SN con el hash de la clave. Es la combinación con la clave en forma de hash lo que hace que el IV sea impredecible.
ESSIV fue diseñado por Clemens Fruhwirth y se ha integrado en el kernel de Linux desde la versión 2.6.10, aunque se ha utilizado un esquema similar para generar IVs para el cifrado de intercambio de OpenBSD desde 2000. [2]
ESSIV es compatible como opción con los sistemas de cifrado de disco dm-crypt [3] y FreeOTFE .
Ataque de maleabilidad
Si bien CBC (con o sin ESSIV) garantiza la confidencialidad, no garantiza la integridad de los datos cifrados. Si el adversario conoce el texto sin formato, es posible cambiar cada segundo bloque de texto sin formato a un valor elegido por el atacante, mientras que los bloques intermedios se cambian a valores aleatorios. Esto se puede utilizar para ataques prácticos al cifrado de disco en modo CBC o CBC-ESSIV. [4]
Liskov, Rivest y Wagner (LRW)
Para evitar ataques tan elaborados, se introdujeron diferentes modos de operación: cifrado de bloque estrecho modificable (LRW y XEX) y cifrado de bloque ancho (CMC y EME).
Considerando que un propósito de un cifrado de bloque habitual es imitar una permutación aleatoria para cualquier clave secreta , el propósito del cifrado modificablees imitar una permutación aleatoria para cualquier clave secreta y cualquier ajuste conocido . El cifrado de bloque estrecho modificable (LRW) [5] es una instanciación del modo de operaciones introducido por Liskov, Rivest y Wagner [6] (ver Teorema 2). Este modo utiliza dos claves: es la clave para el cifrado de bloque y es una clave adicional del mismo tamaño que el bloque. Por ejemplo, para AES con una clave de 256 bits, es un número de 256 bits y es un número de 128 bits. Bloque de cifrado con índice lógico (retoque) utiliza la siguiente fórmula:
Aquí multiplicación y adición se realizan en el campo finito (para AES). Con un poco de cálculo previo, solo se requiere una única multiplicación por sector (tenga en cuenta que la suma en un campo finito binario es una simple suma bit a bit, también conocida como xor):, dónde se calculan previamente para todos los valores posibles de . Este modo de operación solo necesita un único cifrado por bloque y protege contra todos los ataques anteriores, excepto una fuga menor: si el usuario cambia un solo bloque de texto sin formato en un sector, solo cambia un solo bloque de texto cifrado. (Tenga en cuenta que esta no es la misma fuga que tiene el modo ECB: con el modo LRW, los textos sin formato iguales en diferentes posiciones se cifran en diferentes textos cifrados).
Existen algunos problemas de seguridad con LRW , y este modo de operación ahora ha sido reemplazado por XTS.
BestCrypt emplea LRW y es compatible con los sistemas de cifrado de disco dm-crypt y FreeOTFE .
Xor – encriptar – xor (XEX)
Otro modo de cifrado modificable, XEX ( xor – encrypt – xor ), fue diseñado por Rogaway [7] para permitir el procesamiento eficiente de bloques consecutivos (con respecto al cifrado utilizado) dentro de una unidad de datos (por ejemplo, un sector de disco). El ajuste se representa como una combinación de la dirección del sector y el índice del bloque dentro del sector (el modo XEX original propuesto por Rogaway [7] permite varios índices). El texto cifrado, se obtiene usando:
dónde:
- es el texto sin formato,
- es el número del sector,
- es el elemento primitivo de definido por polinomio ; es decir, el número 2 ,
- es el número del bloque dentro del sector.
Las operaciones básicas del modo LRW (cifrado AES y multiplicación de campo de Galois ) son las mismas que las utilizadas en el modo Galois / Counter (GCM), lo que permite una implementación compacta del hardware universal LRW / XEX / GCM.
XEX tiene una debilidad. [8]
Modo de libro de códigos modificado basado en XEX con robo de texto cifrado (XTS)
El robo de texto cifrado proporciona soporte para sectores con un tamaño no divisible por el tamaño del bloque, por ejemplo, sectores de 520 bytes y bloques de 16 bytes. XTS-AES se estandarizó el 19 de diciembre de 2007 [9] como IEEE P1619 . [10] El estándar admite el uso de una clave diferente para el cifrado IV que para el cifrado en bloque; esto es contrario a la intención de XEX y parece estar enraizado en una mala interpretación del documento XEX original, pero no daña la seguridad. [11] [7] Como resultado, los usuarios que deseen cifrado AES -256 y AES-128 deben proporcionar 512 bits y 256 bits de clave respectivamente.
El 27 de enero de 2010, NIST publicó la Publicación especial (SP) 800-38E [12] en su forma final. SP 800-38E es una recomendación para el modo de operación XTS-AES, estandarizado por IEEE Std 1619-2007, para módulos criptográficos. La publicación aprueba el modo XTS-AES del algoritmo AES por referencia al IEEE Std 1619-2007, sujeto a un requisito adicional, que limita el tamaño máximo de cada unidad de datos encriptados (típicamente un sector o bloque de disco ) a 2 20 AES bloques. Según SP 800-38E, "En ausencia de autenticación o control de acceso, XTS-AES proporciona más protección que los otros modos aprobados de sólo confidencialidad contra la manipulación no autorizada de los datos cifrados".
XTS con el apoyo de BestCrypt , Botan , NetBSD 's cgd, [13] dm-crypt , FreeOTFE , TrueCrypt , veracrypt , [14] DiskCryptor , FreeBSD ' s Geli , OpenBSD softraid de software de cifrado de disco, OpenSSL , Mac OS X Lion 's FileVault 2, Windows 10 's BitLocker [15] y wolfCrypt .
Debilidades de XTS
El modo XTS es susceptible a la manipulación y manipulación de datos, y las aplicaciones deben emplear medidas para detectar modificaciones de datos si la manipulación y la manipulación son una preocupación: "... dado que no hay etiquetas de autenticación, cualquier texto cifrado (original o modificado por el atacante) será descifrado como texto sin formato y no hay un mecanismo incorporado para detectar alteraciones. Lo mejor que se puede hacer es asegurarse de que cualquier alteración del texto cifrado aleatorizará completamente el texto sin formato, y confiar en la aplicación que utiliza esta transformación para incluir suficiente redundancia en su texto sin formato para detectar y descartar dichos textos sin formato aleatorios ". Esto requeriría mantener sumas de verificación para todos los datos y metadatos en el disco, como se hace en ZFS o Btrfs . Sin embargo, en los sistemas de archivos de uso común, como ext4 y NTFS, solo los metadatos están protegidos contra la manipulación, mientras que la detección de la manipulación de datos es inexistente. [dieciséis]
El modo es susceptible de análisis de tráfico, repetición y ataques de aleatorización en sectores y bloques de 16 bytes. A medida que se reescribe un sector determinado, los atacantes pueden recopilar textos cifrados de grano fino (16 bytes), que se pueden usar para análisis o ataques de reproducción (con una granularidad de 16 bytes). Sería posible definir cifrados de bloques en todo el sector, desafortunadamente con un rendimiento degradado (ver más abajo). [17]
CBC – máscara – CBC (CMC) y ECB – máscara – ECB (EME)
CMC y EME protegen incluso contra las fugas menores mencionadas anteriormente para LRW. Desafortunadamente, el precio es una doble degradación del rendimiento: cada bloque debe cifrarse dos veces; muchos consideran que esto es un costo demasiado alto, ya que la misma filtración a nivel de sector es inevitable de todos modos.
CMC, presentado por Halevi y Rogaway, significa CBC – mask – CBC: todo el sector cifrado en modo CBC (con ), el texto cifrado se enmascara mediante xoring con y se vuelve a cifrar en modo CBC a partir del último bloque. Cuando el cifrado de bloque subyacente es una fuerte permutación pseudoaleatoria (PRP), a nivel de sector, el esquema es un PRP modificable. Un problema es que para descifrar uno debe pasar secuencialmente todos los datos dos veces.
Para resolver este problema, Halevi y Rogaway introdujeron una variante paralelizable llamada EME (ECB-mask-ECB). Funciona de la siguiente manera:
- los textos planos están xored con , desplazados en una cantidad diferente a la izquierda y están encriptados: ;
- la máscara se calcula: , dónde y ;
- Los textos cifrados intermedios están enmascarados: por y ;
- se calculan los textos cifrados finales: por .
Tenga en cuenta que, a diferencia de LRW y CMC, solo hay una clave .
El SISWG consideró la estandarización de CMC y EME . EME está patentado, por lo que no se favorece como un modo de soporte primario. [18]
Patentes
Si bien el esquema de cifrado autenticado IAPM proporciona cifrado y una etiqueta de autenticación, el componente de cifrado del modo IAPM describe completamente los esquemas LRW y XEX anteriores y, por lo tanto, XTS sin el aspecto de robo de texto cifrado . Esto se describe en detalle en las Figuras 8 y 5 de la patente estadounidense 6,963,976. [19]
Ver también
- Remanencia de datos
- Ataque de arranque en frío
- Software de encriptación de disco
- Hardware de cifrado de disco
- IEEE P1619 , proyecto de estandarización para el cifrado de los datos de almacenamiento
Referencias
- ^ Clemens Fruhwirth (18 de julio de 2005). "Nuevos métodos de cifrado de disco duro" (PDF) . Instituto de Lenguajes de Computación: Grupo de Teoría y Lógica (PDF). Universidad Tecnológica de Viena.
- ^ "Cifrado de la memoria virtual" (Postscript). Cite journal requiere
|journal=
( ayuda ) - ^ Milan Broz. "DMCrypt dm-crypt: destino criptográfico del mapeador de dispositivos del kernel de Linux" . gitlab.com . Consultado el 5 de abril de 2015 .
- ^ Jakob Lell (22 de diciembre de 2013). "Práctico ataque de maleabilidad contra particiones LUKS cifradas con CBC" .
- ^ Los borradores más recientes de SISWG e IEEE P1619 y la información de reuniones se encuentran en la página de inicio de P1619 [1] .
- ^ M. Liskov, R. Rivest y D. Wagner. Cifrados de bloque modificables [2] , CRYPTO '02 (LNCS, volumen 2442), 2002.
- ^ a b c Rogaway, Phillip (24 de septiembre de 2004). "Instancias eficientes de Blockciphers modificables y refinamientos a los modos OCB y PMAC" (PDF) . Dpto. De Ciencias de la Computación (PDF). Universidad de California, Davis.
- ^ https://link.springer.com/content/pdf/10.1007/978-3-540-74462-7_8.pdf sección 4.1.
- ^ Karen McCabe (19 de diciembre de 2007). "IEEE aprueba estándares para el cifrado de datos" . Asociación de estándares IEEE. Archivado desde el original el 6 de marzo de 2008.
- ^ Estándar para la protección criptográfica de datos en dispositivos de almacenamiento orientados a bloques . Biblioteca digital IEEE Xplore. 18 de abril de 2008. doi : 10.1109 / IEEESTD.2008.4493450 . ISBN 978-0-7381-5363-6.
- ^ Liskov, Moisés; Minematsu, Kazuhiko (2 de septiembre de 2008). "Comentarios sobre XTS-AES" (PDF) ., Sobre el uso de dos claves , págs. 1-3.
- ^ Morris Dworkin (enero de 2010). "Recomendación para los modos de operación de cifrado en bloque: el modo XTS-AES para la confidencialidad en los dispositivos de almacenamiento" (PDF) . Publicación especial NIST 800-38E. Instituto Nacional de Estándares y Tecnología . Cite journal requiere
|journal=
( ayuda ) - ^ "Controlador de disco criptográfico NetBSD" .
- ^ "Modos de funcionamiento" . Documentación de VeraCrypt . IDRIX . Consultado el 13 de octubre de 2017 .
- ^ "¿Qué hay de nuevo en BitLocker?" . 12 de noviembre de 2015 . Consultado el 15 de noviembre de 2015 .
- ^ Estándar para la protección criptográfica de datos en dispositivos de almacenamiento orientados a bloques (PDF) , IEEE P1619 / D16, 2007, p. 34, archivado desde el original (PDF) el 14 de abril de 2016 , consultado el 14 de septiembre de 2012
- ^ Thomas Ptacek; Erin Ptacek (30 de abril de 2014). "No quieres XTS" .
- ^ P. Rogaway, modo de operación de cifrado de bloques para construir un cifrado de bloques de tamaño de bloque ancho a partir de un cifrado de bloques convencional , solicitud de patente de EE.UU. 20040131182 A1.
- ^ * Patente estadounidense 6,963,976, "Esquemas de cifrado autenticados con clave simétrica" (presentada en noviembre de 2000, emitida en noviembre de 2005, vence el 25 de noviembre de 2022) [3] [4] .
Otras lecturas
- S. Halevi y P. Rogaway, A Tweakable Enciphering Mode , CRYPTO '03 (LNCS, volumen 2729), 2003.
- S. Halevi y P. Rogaway, A Parallelizable Enciphering Mode [5] , 2003.
- Arquitectura estándar para medios de almacenamiento compartidos cifrados, Proyecto IEEE 1619 (P1619), [6] .
- SISWG, Proyecto de propuesta para el formato de copia de seguridad de claves [7] , 2004.
- SISWG, Proyecto de propuesta para cifrado de bloque ancho modificable [8] , 2004.
- James Hughes, Almacenamiento cifrado: desafíos y métodos [9]
- J. Alex Halderman , Seth D. Schoen , Nadia Heninger , William Clarkson, William Paul, Joseph A. Calandrino, Ariel J. Feldman, Jacob Appelbaum y Edward W. Felten ( 21 de febrero de 2008 ). "Para que no recordemos: ataques de arranque en frío sobre claves de cifrado" (PDF) . Universidad de Princeton . Archivado desde el original (PDF) el 14 de mayo de 2008. Cite journal requiere
|journal=
( ayuda )CS1 maint: varios nombres: lista de autores ( enlace ) - Niels Fergusson (agosto de 2006). "Difusor de elefante AES-CBC +: un algoritmo de cifrado de disco para Windows Vista" (PDF) . Microsoft . Cite journal requiere
|journal=
( ayuda )
enlaces externos
- Grupo de Trabajo de Seguridad en Almacenamiento SISWG .
- "El proyecto eSTREAM" . Consultado el 28 de marzo de 2010 .