Listas de hash criptográficos
Desde un punto de vista teórico, la verificación de la integridad de los datos que se colocarán en un medio no confiable (como un servidor de copia de seguridad remoto o un dispositivo de almacenamiento desatendido) requiere que se mantenga algo en un medio seguro que es de confianza y no puede ser manipulado. Ese algo le permite verificar que el resto de los datos no han sido manipulados. En otras palabras, está moviendo la confianza de los datos en sí mismos a algunos datos auxiliares (hashes, una firma criptográfica, etc.). Esto es deseable porque los datos auxiliares son muy pequeños y se pueden almacenar localmente en la mayoría de los medios. En el caso de una copia de seguridad de una unidad, puede utilizar un hash criptográfico, como SHA-256, en cada archivo:
find /path/to/backup -type f -exec sha256sum -- {} + > hashlist.txt
El archivo de texto resultante contiene una lista de archivos y sus hashes SHA-256. El propio archivo puede almacenarse localmente en una máquina confiable o firmado criptográficamente (por ejemplo, con GnuPG o signify ) ) y guardado en la copia de seguridad en sí. Esto evitará que cualquier persona con acceso de escritura a la copia de seguridad (pero no el acceso de escritura a la lista hash) modifique, agregue o elimine archivos sin ser detectado.
Firmas digitales
Si está almacenando la copia de seguridad en una imagen de sistema de archivos o tarball grande, simplemente puede hacer un hash de eso, lo que le proporcionará la ventaja adicional de conservar directorios y metadatos:
tar cpf - /path/to/backup | tee backup.tar | sha256sum > backup.tar.sha256
Si desea almacenar la lista de hash en la copia de seguridad, es necesario asegurarse de que la lista de hash no pueda ser manipulada sin ser detectada. La forma más común de hacer esto es usar GPG. Una vez que haya creado una clave de firma , puede sign el archivo , si el archivo es una lista hash o un archivo tar completo. La firma se puede almacenar junto con las copias de seguridad y puede verificarlas de manera segura utilizando la clave pública correspondiente. Solo asegúrese de mantener una copia local de la clave pública y no permita que la clave privada caiga en manos de sus adversarios. Esta técnica tiene la ventaja de ser compatible con una serie de tarjetas inteligentes .
Utilidades de copia de seguridad seguras
Hay algunas herramientas diseñadas específicamente para copias de seguridad que proporcionan integridad y confidencialidad. Duplicity , por ejemplo, admite el envío de copias de seguridad incrementales encriptadas del lado del cliente a una gran cantidad de hosts de datos en línea, incluido Google Drive. Cifra y firma las copias de seguridad utilizando un par de claves públicas y privadas, aunque también admite el uso de una clave simétrica (frase de contraseña simple). Debido a que las copias de seguridad incrementales son compatibles, solo la copia de seguridad inicial de un disco grande tomará un tiempo considerable. Las copias de seguridad posteriores solo transmitirán los archivos que hayan cambiado:
duplicity /path/to/backup gdocs://user[:password]@other.host/some_dir
La restauración desde la copia de seguridad verifica los datos, y los datos también pueden verificarse manualmente. Al igual que con GPG, debe mantener el par de llaves en un medio confiable (una unidad local o una tarjeta inteligente). El acceso de lectura a la clave privada permite falsificar firmas válidas, al igual que el acceso de escritura a la clave pública.
Esto es lo que uso yo mismo.
Cosas a tener en cuenta
Para garantizar que los valores de hash sean representaciones fieles del contenido de los archivos que se están copiando, es necesario utilizar una función de hash fuerte. Evite usar MD5 o SHA-1 ya que ambos están rotos (ya que es posible crear dos archivos con diferentes contenidos pero con el mismo hash). El algoritmo SHA-256 es el más popular, pero SHA-3-256 y BLAKE2b también son aceptables.
Si está generando un par de llaves (porque está usando GnuPG para firmar una lista de hash o archivo, o una utilidad de copia de seguridad que requiere un par de llaves como Duplicity), debe usar un algoritmo fuerte. El estándar de la industria es RSA para el cifrado y la firma, con un tamaño de clave de 2048 o más.
En un comentario, mencionas que deseas poder usar esto para probar que no se agregaron archivos incriminatorios con tu conocimiento. No es probable que esto vuele en el tribunal, ya que sería trivial para usted cargar un nuevo archivo incriminatorio y no firmarlo para reclamar que no lo agregó usted. Todo lo que le permitirá hacer es confiar en la copia de seguridad tanto como confía en la lista de hash local (o clave de firma).