Si queremos alojar algún archivo en la red, si alguien se lo descarga tendrá un tiempo ilimitado para poder hackear su cifrado.
Si el archivo es de nuestra propiedad, no solo lo podemos proteger con un cifrado estandar aes256 (o similar), sino que para aumentar dramáticamente su nivel de cifrado de forma muy sencilla. Usando estos dos métodos no tendremos nada que envidiar, a los niveles de encriptación militar.
Este método es para archivos privados donde no transmitiremos nuestra clave a nadie, ya que no es necesario.
La fortaleza de este método se basa, en romper una de las leyes del cifrado, una clave una sola solución. En nuestro caso haremos una clave con millones de millones de soluciones y además crearemos una clave, no de 128 bits, no de 256 bits, no de 512 bits sino de varios Kb o Megas. (Por que tu lo vales)
Consideraciones Importantes:
También es aconsejable si el archivo esta expuesto, usar un cifrado simétrico previo, consiguiendo así algo muy, muy desagradable de crackear.
El programa posterior leer archivos de modo binario, por lo que a pesar de ser imágenes en el ejemplo, en la realidad sirve para cualquier tipo de archivos.
Por último, para aumentar la seguridad al absurdo, no se debe usar siempre el mismo archivo de cifrado, han de ser parejas monogámicas. Quiero decir que cada archivo tendrá su pareja de cifrado única, impidiendo el posterior análisis criptográfico si subimos un numero grande de archivos con el mismo cifrado.
En el ejemplo hay una condición para simplificar el código y que sea más fácil de entender, El archivo de cifrado ha de ser mayor que el que se cifra. Con un par de lineas adicionales esta limitación desaparecería.
En el siguiente vídeo probaré el programa de ejemplo, para la imagen del logo de Antergos y posteriormente con un archivo cifrado mediante aescrypt. El código lo podéis modificar para vuestra conveniencia y recordar cuanto más aleatorio es el archivo de cifrado mas cerca del imposible esta su descifrado.
Ejemplo de cifrado/decifrado con Imágenes.
Ingredientes para la destrucción controlada:
- Archivo a cifrar.
- Archivo para cifrado de mayor tamaño al anterior.
- Programa de cifrado y descifrado.
El ejemplo sera muy sencillo, lo mostraremos para una imagen, que es más visual e intuitivo. Pero lo ideal es cifrar el archivo primero por un cifrado simétrico estándar y luego añadir muestra capa de destrucción controlada.
- Archivo Foto.jpg, archivo Original en mi caso usare una de Antergos mi S.O.
Foto.jpg - Archivo para cifrar FotoKey.jpg

- Programa Cifrado/descifrado.(Al usar XOR es prácticamente lo mismo)
#include<iostream>#include<fstream>using namespace std;// El programa encripta origen mediante cifrado XOR con origen2
|
El programa esta en C++, para compilarlo y ejecutarlo desde el terminal:
[nukebull ]$ c++ -o CifradoXOR CifradoBinario.cpp [nukebull]$ chmod +x CifradoXOR [nukebull]$ ./CifradoXOR |
Para descifrar es el mismo programa cambiando [Foto.jpg por CopiaSegura.jpg ) y (CopiaSegura.jpg por CopiaDescifrada.jpg), FotoKey.png no se altera
#include<iostream>#include<fstream>using namespace std;// El programa encripta origen mediante cifrado XOR con origen2
|
El programa esta en C++, para compilarlo y ejecutarlo desde el terminal:
[nukebull ]$ c++ -o CifradoXORInv CifradoBinarioInverso.cpp [nukebull]$ chmod +x CifradoXORInv [nukebull]$ ./CifradoXORInv |
Conclusión.
Usar esta segunda capa de cifrado produce una destrucción de los datos del programa, si el original estaba cifrado, reconstruirlo es prácticamente imposible. Para archivos sensibles que estén expuestos es ideal, ya que el criptoanálisis que le pudieran hacer, se lo hacen a un archivo incompleto del que no saben que tipo de cifrado se ha usado o con que programa se ha encriptado.
El código se puede mejorar pidiendo los archivos desde consola, o añadiendo algún tipo de GUI. Pero en lo básico seguirá siendo similar.
Espero que les sirva de ayuda y deja un comentario si deseas alguna aclaración. Gracias