stringtranslate.com

Teoría del cifrado de disco

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 sectores (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 conocer 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:

  1. Los datos del disco deben permanecer confidenciales .
  2. La recuperación y el almacenamiento de datos deben ser operaciones rápidas, sin importar en qué parte del disco se almacenen los datos.
  3. El método de cifrado no debe desperdiciar espacio en el 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 cual se mantienen confidenciales los datos. Los adversarios más fuertes estudiados en el campo del cifrado de discos tienen estas capacidades:

  1. pueden leer el contenido sin procesar del disco en cualquier momento;
  2. pueden solicitar el disco para cifrar y almacenar archivos arbitrarios de su elección;
  3. y pueden modificar sectores no utilizados en el disco y luego solicitar su descifrado.

Un método proporciona una buena confidencialidad si la única información que dicho adversario puede determinar a lo largo del 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 , normalmente de 512 bytes (4096 bits) de longitud, que se cifran y descifran de forma independiente entre sí. A su vez, para que los datos sigan siendo confidenciales, el método de cifrado debe poder modificarse ; No deben procesarse 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. Mientras que el propósito de un cifrado de bloque habitual es imitar una permutación aleatoria para cualquier clave secreta , el propósito del cifrado modificable es imitar una permutación aleatoria para cualquier clave secreta y cualquier ajuste conocido .

La tercera propiedad no suele ser controvertida. Sin embargo, indirectamente prohíbe el uso de cifrados de flujo , ya que los cifrados de flujo requieren, por su seguridad, que no se utilice dos veces el mismo estado inicial (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 del disco, lo que aparentemente sería una pérdida de espacio. La alternativa, un cifrado de bloque , está limitado a un determinado tamaño de bloque (normalmente 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 completo del disco . Las consideraciones ya enumeradas hacen que varios modos de encadenamiento conocidos sean inadecuados: el modo ECB , que no se puede modificar, y los modos que convierten cifrados de bloque en cifrados de flujo, como el modo CTR .

Estas tres propiedades no ofrecen ninguna garantía de integridad del disco; es decir, no le dicen si un adversario ha estado modificando su texto cifrado. En parte, esto se debe a que es imposible garantizar absolutamente la integridad del disco: pase lo que pase, un adversario siempre podría revertir todo el disco a un estado anterior, eludiendo dichas 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 .

Bloque estrecho y ancho

Los métodos de cifrado de disco también se distinguen en métodos de "bloque estrecho" y "bloque ancho". Para un texto sin formato del tamaño de un sector, el método de bloque estrecho lo cifra en varios bloques, mientras que el método de bloque ancho lo cifra en solo uno. Los métodos de bloque estrecho como LRW, XES y XTS permiten a un atacante explotar la granularidad del bloque para realizar análisis y reproducción del tráfico. [1] Lo ideal es que un cifrado de bloque ancho haga que todo el texto cifrado sea irreconocible para un cambio en cualquier parte del texto sin formato. [2]

Bloquear modos basados ​​en cifrado

Como la mayoría de los esquemas de cifrado, el cifrado de disco basado en cifrado de bloques 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 bloque único 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 el CBC sea modificable de alguna manera.

CBC sufre 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 creado especialmente 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 cifrados con primeros bloques idénticos y ; estos dos luego están relacionados entre sí por . Por 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-igual-diferente" en el disco puede modificarse para que la marca de agua sea única para un archivo determinado.

Para protegerse contra el ataque de marca de agua, se utiliza un cifrado o una función 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 del sector de sal cifrado (ESSIV)

ESSIV [3] es un método para generar vectores de inicialización para el cifrado de bloques a utilizar en el cifrado de discos. Los métodos habituales para generar IV son secuencias predecibles de números basadas, por ejemplo, en la marca de tiempo o el número de sector, y permiten ciertos ataques, como un ataque de marca de agua . ESSIV previene tales ataques generando IV 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 IV para el cifrado de intercambio de OpenBSD desde 2000. [4]

ESSIV es compatible como opción con los sistemas de cifrado de disco dm-crypt [5] 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. [6]

Liskov, Rivest y Wagner (LRW)

El cifrado de bloque estrecho modificable (LRW) [7] es una instancia del modo de operaciones introducido por Liskov, Rivest y Wagner [8] (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. El bloque de cifrado con índice lógico (modificación) utiliza la siguiente fórmula:

Aquí la multiplicación y la suma se realizan en el campo finito ( para AES). Con algunos cálculos previos, solo se requiere una única multiplicación por sector (tenga en cuenta que la suma en un campo binario finito es una simple suma bit a bit, también conocida como xor): , donde se calculan previamente para todos los valores posibles de . Este modo de operación necesita solo un 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, entonces solo cambia un único bloque de texto cifrado. (Tenga en cuenta que esta no es la misma fuga que tiene el modo ECB: con el modo LRW, 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 lo admite como opción para los sistemas de cifrado de disco dm-crypt y FreeOTFE .

Xor–cifrar–xor (XEX)

Rogaway [9] diseñó otro modo de cifrado modificable, XEX ( xor–encrypt–xor ), 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 [9] permite varios índices). El texto cifrado, se obtiene usando:

dónde:

es el texto claro,
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. usos XEX ; Usos de XTS .

Las operaciones básicas del modo LRW (cifrado AES y multiplicación de campos Galois ) son las mismas que las utilizadas en el modo Galois/Contador (GCM), permitiendo así una implementación compacta del hardware universal LRW/XEX/GCM.

El XEX original tiene una debilidad. [10]

Modo de libro de códigos modificado basado en XEX con robo de texto cifrado (XTS)

El robo de texto cifrado brinda 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 [11] como IEEE P1619 . [12] El estándar XTS requiere el uso de una clave diferente para el cifrado IV que para el cifrado en bloque; esto difiere de XEX que usa solo una clave. [9] [13] : 1–4  Como resultado, los usuarios que deseen cifrado AES -256 y AES-128 deben proporcionar 512 bits y 256 bits de clave respectivamente. Las dos claves (es decir, ambas mitades de la clave XTS) deben ser distintas para que XTS sea seguro para CCA, ya que XTS calcula la secuencia comenzando en ; esto difiere de XEX que comienza en . [9] : 7  [13] : 6 

El 27 de enero de 2010, el NIST publicó la Publicación Especial (SP) 800-38E [14] en su forma final. SP 800-38E es una recomendación para el modo de operación XTS-AES, según lo estandarizado por IEEE Std 1619-2007, para módulos criptográficos. La publicación aprueba el modo XTS-AES del algoritmo AES con referencia al estándar IEEE 1619-2007, sujeto a un requisito adicional, que limita el tamaño máximo de cada unidad de datos cifrados (normalmente 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 otros modos aprobados de sólo confidencialidad contra la manipulación no autorizada de los datos cifrados".

XTS es compatible con BestCrypt , Botan , cgd de NetBSD , [15] dm-crypt , FreeOTFE , TrueCrypt , VeraCrypt , [16] DiskCryptor, geli de FreeBSD , software de cifrado de disco softraid OpenBSD , OpenSSL , Mac OS X Lion FileVault 2, BitLocker de Windows 10 [17] 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 existe 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 que la aplicación que utiliza esta transformación incluya 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 manipulación de datos es inexistente. [18]

El modo es susceptible a ataques de análisis de tráfico, reproducción y aleatorización en sectores y bloques de 16 bytes. A medida que se reescribe un sector determinado, los atacantes pueden recopilar textos cifrados detallados (16 bytes), que pueden usarse para analizar o reproducir ataques (con una granularidad de 16 bytes). Sería posible definir cifrados de bloques para todo el sector, lamentablemente con un rendimiento degradado (ver más abajo). [1]

CBC–máscara–CBC (CMC) y BCE–máscara–BCE (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 coste demasiado alto, ya que de todos modos la misma fuga a nivel sectorial es inevitable.

CMC, presentado por Halevi y Rogaway, significa CBC–mask–CBC: todo el sector se cifra 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 permutación pseudoaleatoria (PRP) fuerte, entonces, 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 (BCE–máscara–BCE). Funciona de la siguiente manera:

Tenga en cuenta que, a diferencia de LRW y CMC, sólo existe una clave .

El SISWG consideró la estandarización de CMC y EME . EME está patentado y, por lo tanto, no se considera el modo principal admitido. [19]

Modos de cifrado de flujo

La construcción HBSH (hash, cifrado de bloque, cifrado de flujo, hash), publicada por empleados de Google en 2018, permite utilizar un cifrado de flujo rápido en el cifrado de disco. El esquema Adiantum utilizado en dispositivos Android de gama baja elige específicamente NH , Estándar de cifrado avanzado de 256 bits (AES-256), ChaCha12 y Poly1305 . La construcción es modificable y de bloque ancho. Requiere tres pases sobre los datos, pero aún es más rápido que AES-128-XTS en un ARM Cortex-A7 (que no tiene un conjunto de instrucciones AES ). [20]

En 2023, Aldo Gunsing, Joan Daemen y Bart Mennink presentaron la construcción de "dos pisos", que también utiliza un cifrado de flujo. De nuevo es modificable y de bloque ancho. [2]

Patentes

Mientras que el esquema de cifrado autenticado IAPM proporciona cifrado así como 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. [21]

Ver también

Referencias

  1. ^ ab Thomas Ptacek; Erin Ptacek (30 de abril de 2014). "No quieres XTS".
  2. ^ ab Aldo Gunsing; Joan Daemen; Bart Menink. Modos de cifrado de bloque ancho basados ​​en plataforma (PDF) . El tercer taller del NIST sobre modos de operación de cifrado de bloques 2023.
  3. ^ Clemens Fruhwirth (18 de julio de 2005). "Nuevos métodos de cifrado de discos duros" (PDF) . Instituto de Lenguajes Informáticos: Grupo de Teoría y Lógica (PDF). Universidad Tecnológica de Viena.
  4. ^ "Cifrado de memoria virtual" (Posdata). {{cite journal}}: Citar diario requiere |journal=( ayuda )
  5. ^ Milán Broz. "DMCrypt dm-crypt: destino criptográfico del asignador de dispositivos del kernel de Linux". gitlab.com . Consultado el 5 de abril de 2015 .
  6. ^ Jakob Lell (22 de diciembre de 2013). "Práctico ataque de maleabilidad contra particiones LUKS cifradas con CBC".
  7. ^ Los borradores más recientes de SISWG e IEEE P1619 y la información sobre las reuniones se encuentran en la página de inicio de P1619 [1].
  8. ^ M. Liskov, R. Rivest y D. Wagner. Cifrados de bloque modificables [2] Archivado el 5 de diciembre de 2008 en Wayback Machine , CRYPTO '02 (LNCS, volumen 2442), 2002.
  9. ^ abcd Rogaway, Phillip (24 de septiembre de 2004). "Creaciones eficientes de cifrados de bloques modificables y refinamientos de los modos OCB y PMAC" (PDF) . Departamento de Informática (PDF). Universidad de California, Davis.
  10. ^ Minematsu, Kazuhiko (2007). "Análisis de seguridad mejorado de los modos XEX y LRW" (PDF) . Áreas seleccionadas en criptografía . Apuntes de conferencias sobre informática. vol. 4356, págs. 96-113. doi :10.1007/978-3-540-74462-7_8. ISBN 978-3-540-74461-0.
  11. ^ 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.
  12. ^ Estándar IEEE para la protección criptográfica de datos en dispositivos de almacenamiento orientados a bloques. 18 de abril de 2008. págs. 1–40. doi :10.1109/IEEESTD.2008.4493450. ISBN 978-0-7381-5363-6. {{cite book}}: |journal=ignorado ( ayuda )
  13. ^ ab Liskov, Moisés; Minematsu, Kazuhiko (2 de septiembre de 2008). "Comentarios sobre XTS-AES" (PDF) .
  14. ^ 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 dispositivos de almacenamiento" (PDF) . Publicación especial del NIST 800-38E. Instituto Nacional de Estándares y Tecnología . doi :10.6028/NIST.SP.800-38E. {{cite journal}}: Citar diario requiere |journal=( ayuda )
  15. ^ "Controlador de disco criptográfico NetBSD". Archivado desde el original el 8 de enero de 2019 . Consultado el 7 de enero de 2019 .
  16. ^ "Modos de operación". Documentación de VeraCrypt . IDRIX . Consultado el 13 de octubre de 2017 .
  17. ^ "¿Qué hay de nuevo en BitLocker?". 12 de noviembre de 2015 . Consultado el 15 de noviembre de 2015 .
  18. ^ 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 , recuperado 14 de septiembre 2012
  19. ^ P. Rogaway, Modo de operación de cifrado de bloques para construir un cifrado de bloques de gran tamaño a partir de un cifrado de bloques convencional, Solicitud de patente de EE. UU. 20040131182 A1.
  20. ^ Crowley, Pablo; Biggers, Eric (13 de diciembre de 2018). "Adiantum: cifrado que preserva la longitud para procesadores básicos". Transacciones IACR sobre criptología simétrica : 39–61. doi : 10.13154/tosc.v2018.i4.39-61 .
  21. ^ * Patente de EE. UU. 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] Archivado el 11 de agosto de 2018 en Wayback Machine [4].

Otras lecturas

enlaces externos