Soy un nuevo usuario de eCryptfs y tengo una pregunta muy básica que no pude encontrar en ningún lado. Estoy interesado en usar eCryptfs a través de mi Synology NAS que usa Linux.
Al intentar cifrar mi carpeta (EXT4) a través de la aplicación de cifrado de Synology (eCryptfs) encuentro errores que indican que la longitud de mi nombre de archivo no puede exceder los 45 caracteres (por lo tanto, no hay cifrado).
Si el límite realmente es de 45 caracteres, eCryptfs puede no ser una herramienta utilizable para la mayoría.
¿Cuál es el tamaño máximo permitido para el nombre de archivo al cifrar archivos y carpetas con eCryptfs? ¿Linux tiene 255 caracteres?
Respuestas:
Divulgación completa: soy uno de los autores y el actual responsable de las utilidades de espacio de usuario de eCryptfs.
Gran pregunta!
Linux tiene una longitud máxima de nombre de archivo de 255 caracteres para la mayoría de los sistemas de archivos (incluido EXT4), y una ruta máxima de 4096 caracteres.
eCryptfs es un sistema de archivos en capas. Se apila sobre otro sistema de archivos como EXT4, que en realidad se usa para escribir datos en el disco. eCryptfs siempre encripta el contenido del archivo, pero opcionalmente puede encriptar (ocultar) los nombres de los archivos (o no).
Si los nombres de archivo no están encriptados, puede escribir de manera segura nombres de hasta 255 caracteres y encriptar sus contenidos, ya que los nombres de archivo escritos en el sistema de archivos inferior simplemente coincidirán. Si bien un atacante no podría leer el contenido de
index.html
obudget.xls
, sabría qué nombres de archivo existen. Eso puede (o no) filtrar información confidencial dependiendo de su caso de uso.Si los nombres de archivo están encriptados, las cosas se vuelven un poco más complicadas. eCryptfs antepone un poco de datos en el frente del nombre de archivo cifrado, de modo que pueda identificar los nombres de archivo cifrados definitivamente. Además, el cifrado en sí implica "rellenar" el nombre del archivo.
Por ejemplo, tengo un archivo cifrado,
~/.bashrc
. Este nombre de archivo está encriptado usando mi clave para:Claramente, ese nombre de archivo de 7 caracteres ahora requiere más de 7 caracteres para encriptarse. Empíricamente, hemos encontrado que los nombres de archivo de caracteres de más de 143 caracteres comienzan a requerir> 255 caracteres para encriptar. Por lo tanto, nosotros (como desarrolladores ascendentes de eCryptfs) generalmente recomendamos limitar sus nombres de archivo a ~ 140 caracteres.
Ahora, dicho todo esto, Synology NAS es un producto comercial que incorpora y utiliza eCryptfs y Linux para cifrar y proteger los datos en el dispositivo. Nosotros (los desarrolladores anteriores de eCryptfs) no tenemos nada que ver con Synology o sus productos, aunque en general estamos contentos de ver que eCryptfs se utiliza en la naturaleza . Me parece que su recomendación de 45 caracteres es un error tipográfico (de nuestra recomendación de 140 caracteres) o simplemente una estimación mucho más conservadora.
fuente
Este hilo es muy interesante porque me preguntaba exactamente lo mismo. Puedo vivir con tener que renombrar 20 archivos de 50 000 si los nombres de archivo deben tener 140 caracteres o menos, pero 45 o menos no es factible (en mi situación) porque requeriría que cambie el nombre de demasiados archivos.
Le hice exactamente la misma pregunta directamente a Synology (incluso señalándoles el presente artículo), y su respuesta fue interesante: "El límite de nombre de archivo del recurso compartido cifrado es de 143 bytes. Puede tener hasta 140 caracteres latinos puros o 45 CJK (chino , Japoneses y coreanos) ".
Después de esta respuesta, hice más pruebas, probando con archivos de 45, 46, 140, 143 y 144 caracteres. Mis pruebas muestran que los archivos de hasta 143 caracteres (no bytes, al contrario de lo que Synology me dijo) se cifrarán, pero los archivos con 144 caracteres EVITARÁN que una carpeta se cifre. Sin embargo, el MENSAJE DE ERROR que recibo de mi NAS es que el nombre del archivo debe tener menos de 45 caracteres (mientras que la realidad es que debe tener menos de 144 caracteres).
No hice pruebas con caracteres CJK ... Pero, para cualquiera que lea esto, parece que está bien hasta 143 caracteres, a pesar de lo que le dice el sistema.
fuente
Me gustaría aclarar que Linux tiene un límite de 255 bytes por nombre de archivo, no 255 caracteres. Esta es una diferencia significativa y si usa, por ejemplo, codificación UTF-8, puede terminar con nombres de archivo de 100 caracteres como máximo.
fuente
U+10FFFF
cumplir con las limitaciones de UCS-2 (básicamente UTF-16 sin pares sustitutos), UTF-8 podría requerir hasta 6 bytes para representar un punto de código de 32 bits debido a cómo codifica "inicio del carácter" y "continuación del carácter" para garantizar que la sincronización del analizador se pueda volver a adquirir sin importar dónde comience el análisis dentro de una secuencia de bytes. Siempre es una posibilidad que eventualmente decidan revertir esa decisión porque se están quedando sin puntos de código no asignados.La longitud del nombre de archivo de ecrypt fue solo un problema para mí, ya que necesitaba un subárbol particular de mi directorio de inicio para admitir nombres de archivo largos, y finalmente me di cuenta de que simplemente podía crear un sistema de archivos dentro de un archivo y montar eso:
Probablemente haya todo tipo de problemas de eficiencia con esto, pero es suficiente para mi caso en el que los archivos son solo resultados de pruebas creados periódicamente para mis propios fines locales.
Mis colegas han puesto su imagen en / tmp: los datos de prueba no son particularmente confidenciales: principalmente queremos asegurar nuestro código fuente, no nuestros resultados de prueba.
fuente