Yo uso Gnu Privacy Guard (GPG) en Linux.
Prefiero almacenar datos privados como un archivo cifrado AES-256 blindado ASCII. Tengo mucho cuidado para asegurarme de que el texto sin formato original (el secreto, los datos privados) nunca toque el disco duro (o cualquier otro dispositivo de almacenamiento). Así es como lo hago:
gpg -ca —cipher-algo aes256> secret_encrypted_data.gpg
Ese es el comando que emito en la línea de comandos, generalmente dentro de un directorio especial para contener información privada, como ~ / Private. (Todos los archivos en este directorio son archivos .gpg). Inmediatamente después de emitir este comando, me solicita la frase de contraseña de cifrado, que puede ser tan larga y complicada como quiero que sea. Lo escribo y presiono Enter. Luego me lo pide nuevamente (para confirmar que lo he escrito de la misma manera las dos veces), así que lo ingreso nuevamente. Si ambas frases de contraseña coinciden, entonces espera en silencio que ingrese los datos de texto sin formato, en la entrada estándar (a través del teclado o mediante un pegado del portapapeles del mouse). Cuando termine de ingresar los datos, presiono CTRL-D para enviar una señal EOF a la entrada estándar. GPG encripta todo, escribe el archivo y me devuelve mi solicitud de shell. Cuando emito el comando “cat secret_encrypted_data.gpg”, puedo ver claramente que es solo un montón de gobbledygook codificado en Base64 de aspecto aleatorio. Luego lo pruebo, para asegurarme de que puedo descifrarlo:
gpg -d secret_encrypted_data.gpg
Solo me pide una vez la frase de contraseña. Si lo escribo correctamente, envía el texto sin formato a la salida estándar (mi sesión de terminal) y luego sale, devolviéndome el mensaje. (Si lo escribo incorrectamente, simplemente falla con un mensaje de error, así que tengo que volver a intentarlo).
En algunos casos, los datos privados / secretos que quiero encriptar están en un archivo de texto grande (demasiado grande para escribir o pegar con el mouse), o puede ser un archivo binario como una imagen .jpg o .png, a. archivo pdf, o tal vez un documento de Word u hoja de cálculo de Excel. En casos como este, ingresaría un comando como el siguiente:
gpg -ca —cipher-algo aes256 -o secret_encrypted_image_jpg.gpg secret_plaintext_image.jpg
Todavía me piden la frase de contraseña dos veces, pero en lugar de esperar la entrada manual de texto sin formato a través de la entrada estándar, solo lee el contenido del archivo (en el último argumento de la línea de comandos) y envía la salida cifrada al archivo indicado por el -o opción de línea de comandos.
Para verificar el cifrado / descifrado exitoso:
gpg -d -o secret_plaintext_image_2.jpg secret_encrypted_image_jpg.gpg
Si ingreso la frase de contraseña correcta, escribe un nuevo archivo de salida, colocando el texto sin formato original en él.
Luego, para verificar que el nuevo archivo de texto sin formato es el mismo que el archivo de texto sin formato original:
sha256sum secret_plaintext_image.jpg secret_plaintext_image_2.jpg
Si los dos hash SHA-256 se ven iguales, entonces el ciclo de cifrado / descifrado fue exitoso.
Ahora, finalmente, es hora de deshacerse permanentemente de los archivos originales (texto sin formato). Así es como lo haría con la utilidad “triturar”:
shred -v -n 7 -u secret_plaintext_image.jpg secret_plaintext_image_2.jpg
En este ejemplo del uso de “triturar”, sobrescribo el archivo 7 veces. Eso es probablemente suficiente. Pero si me siento más paranoico, podría enfrentarlo hasta 32 veces, tal vez 40 veces. Pero la efectividad de “triturar” también depende del tipo de medio que esté almacenando el archivo de texto sin formato que se eliminará. ¿Es un medio magnético giratorio tradicional (disco duro)? Si es así, entonces la destrucción probablemente funcionará bien, a menos que alguna capa de almacenamiento en caché en el sistema operativo intercepte las llamadas de E / S, y toda la destrucción ocurra “en la memoria”, con solo una última limpieza del archivo en el disco duro real. Si el archivo se almacena en un medio de memoria no volátil (como una memoria USB o una unidad SSD), entonces quién sabe si la destrucción realmente está destruyendo los datos de texto sin formato. El problema con las unidades de memoria de estado sólido no volátil es que tienen algoritmos de nivelación de desgaste integrados en el hardware, lo que hace imposible sobrescribir los mismos bits una y otra vez (donde residía el archivo). Es muy probable que cada sobrescritura sucesiva del archivo por trituración se reasigne a otras celdas de memoria que han tenido menos cambios de bits en su historial. Además, una cosa a tener en cuenta es que estas unidades de estado sólido (tanto memorias USB como SSD) pueden tener una capacidad adicional significativa incorporada, pero no todas son accesibles / accesibles en un momento dado. Es muy posible que en una memoria USB de 4GB, pueda haber 2GB de espacio adicional que siempre es inalcanzable hasta que el algoritmo de nivelación de desgaste decida que es hora de cambiar una sección de los 4GB direccionables con una sección del mismo tamaño de los 2GB inalcanzables . Si esto sucede antes de que el archivo secreto de texto sin formato pueda ser “triturado”, entonces todo el archivo intacto puede estar en el dispositivo en esa sección de memoria actualmente no accesible (no direccionable). Puede hacer un escaneo completo del sistema de archivos del dispositivo, e incluso puede usar la utilidad “dd” para escribir todos los bits cero, pero el archivo de texto sin formato sigue ahí, simplemente no puede verlo. ¡Esto da miedo!
Esto significa que si * alguna vez * ha tenido datos sensibles de texto sin formato almacenados en cualquier dispositivo de almacenamiento de memoria de estado sólido no volátil (especialmente memorias USB o unidades SSD), nunca permita que caigan en manos de personas no autorizadas, incluso si cree que ha borrado por completo el dispositivo. Simplemente no puede confiar en el borrado de dichos dispositivos, al menos no mediante el uso de utilidades tradicionales de borrado de archivos como “triturar”, “borrar” o “BleachBit”. En realidad, la mayoría de estos dispositivos de almacenamiento de archivos de memoria no volátil tienen una API especial a nivel de hardware que le permite borrar el dispositivo * completo * (incluidos los segmentos de memoria ocultos). Pero estas API de nivel de hardware a menudo son propietarias y no son accesibles desde sistemas operativos de código abierto como Linux.
Por cierto, una vez que sus archivos estén encriptados AES-256 mediante el uso de GPG, debería ser razonablemente seguro cargar los archivos encriptados en el almacenamiento en la nube, como un bucket de Amazon S3. Todavía debe establecer los controles de acceso adecuados para asegurarse de que solo las personas autorizadas (quizás solo usted) puedan acceder a los archivos en el bucket de S3. Aunque están encriptados con uno de los cifrados simétricos más seguros y confiables disponibles en la actualidad, sigue siendo una muy buena idea evitar la distribución generalizada de sus archivos encriptados.