Se ha publicado Shufflecake, una herramienta para crear secciones ocultas y cifradas en disco.

La empresa Kudelski Security, especializada en auditorías de seguridad, ha publicado la herramienta Shufflecake, que permite crear sistemas de archivos ocultos, dispersos en el espacio libre existente en las particiones y que son indistinguibles de los datos residuales aleatorios. Las particiones se crean de tal manera que, sin conocer la clave de acceso, es problemático demostrar su existencia incluso durante un análisis forense. El código de las utilidades (shufflecake-userland) y del módulo del núcleo de Linux (dm-sflc) está escrito en C y se distribuye bajo la licencia GPLv3, lo que imposibilita incluir el módulo publicado en la composición principal del núcleo de Linux debido a la incompatibilidad con la licencia GPLv2, bajo la cual se distribuye el núcleo.

El proyecto se posiciona como una solución más avanzada que Truecrypt y Veracrypt para ocultar datos que requieren protección, que tiene soporte nativo para la plataforma Linux y permite alojar hasta 15 particiones ocultas en un dispositivo, anidadas entre sí para dificultar la identificación de su existencia. Si bien el uso de Shufflecake en sí no es un secreto, como se puede inferir, por ejemplo, por la presencia de las utilidades correspondientes en el sistema, la cantidad total de particiones ocultas creadas es imposible de determinar. Las particiones ocultas pueden ser formateadas según la elección del usuario para alojar cualquier sistema de archivos, como ext4, xfs o btrfs. Cada partición se trata como un dispositivo de bloque virtual separado con su propia clave de desbloqueo.

Para enmascarar las huellas, se propone utilizar un modelo de comportamiento de 'negación plausible' (plausible deniability), que consiste en ocultar los datos valiosos como capas adicionales en particiones cifradas con datos de menor valor, formando una especie de jerarquía oculta de particiones. En caso de presión, el propietario del dispositivo puede revelar la clave de la partición cifrada, pero dentro de esta partición pueden ocultarse otras particiones (hasta 15 niveles anidados), lo que dificulta determinar su existencia y probarla.

El ocultamiento se logra mediante la formación de cada sección como un conjunto de fragmentos cifrados, colocados en posiciones aleatorias en el dispositivo de almacenamiento. Cada fragmento se crea dinámicamente en el momento en que se requiere espacio adicional de almacenamiento en la sección. Para dificultar el análisis, los fragmentos de diferentes secciones se entrelazan, es decir, las secciones de Shufflecake no se asocian con áreas continuas y los fragmentos de todas las secciones se mezclan. La información sobre los fragmentos utilizados y libres se almacena en un mapa de ubicación vinculado a cada sección, al que se hace referencia desde el encabezado cifrado. Los mapas y el encabezado están cifrados y sin el conocimiento de la clave de acceso son indistinguibles de datos aleatorios.

El encabezado se divide en ranuras, cada una de las cuales define su propia sección y los fragmentos asociados. Las ranuras en el encabezado se organizan en orden de pila y están recursivamente conectadas: la ranura actual contiene una clave para descifrar los parámetros de la sección anterior en la jerarquía (menos oculta), lo que permite utilizar una sola contraseña para descifrar todas las secciones menos ocultas vinculadas a la sección seleccionada. Cada sección menos oculta considera los fragmentos de las secciones anidadas como libres.

Por defecto, todas las secciones anidadas de Shufflecake tienen el mismo tamaño visible que la sección de nivel superior. Por ejemplo, si en un dispositivo de 1 GB están involucradas tres secciones, cada una aparecerá para el sistema como una sección de 1 GB y el espacio de disco disponible total se compartirá entre todas las secciones; si la suma del tamaño de los datos guardados supera el tamaño real del dispositivo, comenzará a aparecer un error de entrada/salida.

Las secciones anidadas no abiertas no participan en la distribución del espacio, es decir, intentar llenar una sección de nivel superior provocará la sobrescritura de datos en las secciones anidadas, pero no permitirá revelar su existencia mediante el análisis del tamaño de los datos que se pueden colocar en la sección antes de que comience la emisión del error (se supone que las secciones superiores contienen datos inmutables para distraer y nunca se utilizan individualmente, mientras que el funcionamiento normal se realiza siempre con la sección anidada más reciente; el esquema implica que es más importante mantener el secreto de la existencia de los datos que perder esos datos).

De hecho, siempre se crean 15 secciones de Shufflecake: a las secciones utilizadas se les asocia la contraseña del usuario, y las secciones no utilizadas reciben una contraseña generada aleatoriamente (no es posible comprender cuántas secciones se utilizan realmente). Al inicializar las secciones de Shufflecake, el disco, la sección o el dispositivo de bloque virtual destinado a ellas se llena de datos aleatorios, lo que impide la identificación de los metadatos y datos de Shufflecake en el fondo general.

La implementación de Shufflecake tiene un rendimiento bastante alto, pero debido a los gastos generales, su capacidad se queda aproximadamente a la mitad de comparación con el cifrado de discos basado en la subsistema LUKS. El uso de Shufflecake también conlleva un consumo adicional de memoria y espacio para almacenar datos de servicio en el disco. El costo de memoria se estima en 60 MB por sección, y el espacio en disco en un 1% del tamaño total. En comparación, técnicas análogas como WORAM pueden reducir la velocidad de 5 a 200 veces, con una pérdida del 75% del espacio utilizable en el disco.

El conjunto de herramientas y el módulo del núcleo han sido probados solo al trabajar en Debian y Ubuntu con núcleos 5.13 y 5.15 (se admite el funcionamiento en Ubuntu 22.04). Se señala que el proyecto aún debe considerarse un prototipo en desarrollo, que no debería utilizarse para almacenar datos importantes. En el futuro, se planea llevar a cabo una optimización adicional del rendimiento, la confiabilidad y la seguridad, así como proporcionar la capacidad de arranque desde secciones de Shufflecake.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster