Check the new version here

Popular channels

Formato Violeta, mi reemplazo a PGP

Hola bienvenidos a mi nuevo Post.


Antes que nada, quiero aclarar que este programa lo desarrolle yo y que personalmente lo utilizo como un reemplazo propio a PGP.

Iniciemos...

Descripcion
El Formato Violeta es un sistema de cifrado de un solo archivo, el cual se caracteriza por sus algoritmos de cifrado simetrico, cifrado asimetrico, compresion y eliminacion segura de datos.

Usos
Debido a que es un sistema pequeño, solo podra usarse para cifrar un solo archivo. Mas no por el detalle de cifrar un solo fichero pueda perder su capacidad para protegerlo. Hay que tomar en cuenta que el limite del fichero a cifrar puede ser de (256 ^ 6) - (2 * (1024 ^ 2)) = 262,143.9 GB. Por lo tanto no se puede considerar que tenga una limitacion en cuanto el tamaño de datos a procesar. Para ello, si es necesario cifrar mas de un solo fichero, entonces podemos hacer uso de herramientas ya conocidas: tar, gzip, rar, zip, 7zip, WinRAR, etc. Otra de las caracterizticas a resaltar es que su codigo fue %100 programado en ruby 1.9.2-p180, por lo cual es multiplataforma.

Funcionamiento
  • El Formato Violeta utiliza dos bloques de seguridad, el llamado AES_DATA y el RSA_DATA.
  • El AES_DATA se le considera el bloque maestro, si se rompe el cifrado de este bloque entonces se tendra acceso al archivo. Este bloque contiene las llaves RSA desconocidas de 1024 bits y una llaves AES de entre 64 y 128 Bytes. Este bloque es cifrado con el algoritmo AES-256-CBC y el algoritmo RSA 1024 bits. Se puede considerar innecesario cifrar primero con RSA y luego con AES, pero hay que tomar en cuenta la propiedad de esquema de relleno (OAEP) el cual vuelve los datos fuertes ante un criptoanalisis de patrones o de texto plano conocido.
  • El RSA_DATA es el bloque que contiene las dos llaves mas importantes, la llave para decifrar el nombre del fichero y la llave para decifrar los datos del fichero. Igual que el bloque maestro, primero se cifra usando RSA 1024 bits y luego AES-256-CBC.
  • El FILE_DATA es el bloque que contiene los datos del fichero cifrado, para este bloque debido a que es necesario la velocidad para cifrar ficheros grandes, se implemente solo el algoritmo AES-256-CBC, pero para evitar un criptoanalisis se utiliza el algoritmo de compresion Deflate, el cual elimina gran parte de la entropia, volviendo su criptoanalisis muy dificil.


Propiedades criptograficas
  • El cipher-block chaining (CBC), es un metodo importante a la hora de utilizar el algoritmo de cifrado simetrico AES-256, debido a que es necesario decifrar primero un bloque para decifrar el bloque siguiente.
  • El RSA-1024 bits es considerado obsoleto debido a que es bien sabido que ya existe la forma de factorizar integros de este tamaño, sin embargo la propiedad a explotar no es la de su cifrado, sino el OAEP el cual evita un criptoanalisis eficiente por entropia.
  • El metodo de compresion Deflate es utilizado antes de cifrar los datos para hacer casi lo mismo que el RSA-1024, pero este metodo elimina en gran porcentaje la entropia de los datos, por lo tanto es tambien inutil un criptoanalisis de patrones.

Otras caracterizticas
  • El codigo se encuentra abierto debido a la naturaleza de su lenguaje, por ello podemos asegurarnos que nuestro codigo no fue modificado o corrupto, ademas de que nosotros mismos podemos corregir errores o vulnerabilidades.
  • Dentro de la linea de comandos tiene, en la opcion de cifrar, un switch para eliminar el fichero ya una vez cifrado, pero el algoritmo de eliminacion es de forma segura, primero sobreescribiendo los datos y luego renombrando el fichero varias veces antes de eliminar su puntero.
  • Otra caracteriztica es que para cifrar y decifrar es necesario proporcionar un numero PIN, entre 1 y 999999. Lo que hace este PIN es modificar el numero de iteraciones para generar el SALT y el generador de KEY, IV del AES.

Descripcion de la estructura del fichero cifrado



















Instrucciones de uso del programa

  • Seleccionamos un fichero para realizar la prueba.



  • En mi caso yo hice un fichero el cual voy a editar.



  • Escribo algo importante en mi fichero que no quiero que alguien mas vea y lo guardo.



  • Escribe el comando de ayuda para saber como cifrar mi fichero.



  • Escribo los argumentos para cifrar mi fichero tal y como dice en el mensaje de ayuda anterior:

ruta_de_fichero_a_cifrar.txt -E ruta_de_fichero_de_salida.txt contraseña PIN -X:Y

(Recuerda que el switch -X:Y es para eliminar el fichero a cifrar y si no quieres eliminarlo, solo pon -X:N)


  • Espero a que termine de cifrarlo



  • Verifico que mi archivo cifrado exista, como pueden ver el archivo que cifre ya no existe porque elegi la opcion eliminar despues de cifrar.



  • Abro mi fichero como si fuera a editarlo.



  • Como pueden ver mi fichero esta cifrado, en esta imagen se alcanza a apreciar los caracteres que representan el numero magico.



Codigo fuente

Como pueden imaginar el codigo es un poco grande asi que publicarlo en imagen o completo es muy largo, asi que hice una implementacion en Base64 y comprimido con Deflate, al ejecutar el codigo de aqui abajo crearan el fichero FoVc1.rb.


require 'Zlib'
require 'Base64'

codigo_base_64 = "
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"

inflar = Zlib::Inflate.new(15)
codigo = inflar.inflate(Base64.decode64(codigo_base_64))
fichero = File.open('FoVc1.rb', 'wb')
fichero.write(codigo)
fichero.close


Fin del Post

Espero sea de su agrado, todo esta %100 libre de virus, de lo contrario me denuncian.
0No comments yet
      GIF
      New