AdaStegano: Esteganografía en Ada

Se expone todo lo relacionado con el lenguaje, desde lo más básico hasta lo no tanto.

Moderadores: gneuromante, Andres_age, Yzumi

AdaStegano: Esteganografía en Ada

Notapor Andres_age » Vie Sep 02, 2005 16:45

Este es mi último proyecto, hecho 100% en Ada95 y disponible bajo licencia GPL.
Se trata de un programa de criptografía y esteganografía, que permite ocultar ficheros dentro de otros y cifrándolos mediante una contraseña.

¿Porqué esteganografía?
La esteganografía consiste en ocultar un mensaje dentro de otro.
AdaStegano permite ocultar cualquier tipo de fichero en imágenes bitmap de 24bpp, de forma que para una tercera persona no sepa que esa imagen contiene otro archivo. A partir de una contraseña definida por el usuario, se ocultan los datos en un orden aleatorio; sin esa contraseña, es casi imposible siquiera "ver" que hay un fichero oculto en su interior.

¿Porqué criptografía?
Porque aún sabiendo que hay un fichero oculto, una tercera persona no puede obtener el fichero. Aún conociendo el orden interno, los datos están codificados, y el fichero seguirá inaccesible e ilegible para alguien
que no conozca la contraseña con la que se cifraron los datos.

Funciones:
Cifrar archivos:
Permite ocultar y cifrar un archivo dentro de otro.
Se pedirá el método a utilizar, la ruta del fichero a ocultar, el archivo que contendrá el fichero anterior, la ruta "Guardar como..." y la contraseña.
Un archivo BMP de 24bpp puede almacenar en su interior otro archivo de su octava parte de tamaño, aproximadamente.

Descifrar archivos:
Permite obtener el archivo oculto.
Se pedirá el método a utilizar, la ruta del fichero contenedor, la contraseña,
y las opciones para restaurar el archivo oculto: Sobreescribir (si ya existe un fichero con el mismo nombre, se sobreescribe), Renombrar (si ya existe un fichero con el mismo nombre, se renombra con extensión diferente) y Guardar como (el usuario especifica la ruta y el nombre del fichero a obtener y lo guarda como tal).
Con el asistente el archivo se guardará con la opción "Renombrar".

Metodos
Por el momento AdaStegano incorpora dos métodos de cifrado para dificultar la labor de un atacante por descubrir y leer el archivo oculto.
Ambos métodos tienen en común que se guarda la información en un orden aleatorio según la contraseña; un ataque a esto por fuerza bruta es casi impracticable. Además, AdaStegano codifica la información de dos maneras:
- Metodo Cesar:
Una vez decidido el orden en el que se guardará la información, se codifica la información con dos métodos seguidos: el método Cesar de desplazamiento y un xor byte a byte con la contraseña.
- Metodo Serpent:
Una vez decidido el orden en el que se guardará la información, se codifica la información dividiendola en trozos de 16 bytes (128 bits) y cifrando cada trozo usando un algoritmo AES candidato (Serpent).


AdaStegano funciona tanto en Linux como en Windows, con el mismo código fuente (excepto por un paquete de manejo de consola, que hay que usar uno u otro según el SO). La versión en consola se puede ejecutar tanto por comandos (y automatizarlo por lotes, por ejemplo) como con un asistente intuitivo.
Además hay una versión gráfica, desarrollada con JEWL para Windows.

La versión actual es la 0.2 y se encuentra disponible para descargar en Canal Ada, que ha proporcionado alojamiento para el programa.

Binarios para Linux
http://www.canalada.org/recursos/adaste ... ux_bin.zip
Binarios para Windows
http://www.canalada.org/recursos/adastegano_win_bin.zip
Codigo fuente (v0.2)
http://www.canalada.org/recursos/adastegano_source.zip
Codigo fuente antiguo (v0.1)
http://www.canalada.org/recursos/adaste ... e_v0.1.zip

Hay un archivo odt (de OpenOffice.org) que sirve de documentación sobre algunos algoritmos usados, y ayuda a comprender como está hecho AdaStegano y que partes necesitan mejoras.

Sigo trabajando en el código, por ahora he conseguido mejorar el método Serpent, de forma que no ocupe el doble de espacio (además, al ocultar los caracteres hexadecimales en 4 bits en vez de 8 (ASCII) dificulta que se pueda hacer un análisis para sacar la información). Esto que acabo de mencionar NO está implementado todavía en el código fuente que está disponible para descargar; si alguien lo quiere, que me lo diga y le pasaré lla nueva implementación gustosamente.
Espero hacer más cambios (y si alguien se anima a colaborar, con código cambiado o ideas nuevas, serán bienvenidas) para sacar pronto la versión 0.2 (y si no, la sacaré como 0.1b o algo así :p).

Screens:
Imagen

Imagen
Última edición por Andres_age el Vie Sep 09, 2005 22:00, editado 1 vez en total
Andres_age
Moderador
Moderador
 
Mensajes: 121
Registrado: Sab Abr 02, 2005 22:40

Notapor gneuromante » Dom Sep 04, 2005 23:29

Como "betatester oficial" ;) te quería felicitar de nuevo y recomendar a todos que le echen un vistazo a este programa que merece la pena.

Por otro lado, creo que AdaStegano merece un anuncio más destacado que este mensaje en el foro, yo creo que deberías poner un anuncio en la página principal de canalada.org con un enlace a estos detalles. Y creo que Flash_noi podría poner un enlace en la sección de código.
gneuromante
Gurú Moderador
Gurú Moderador
 
Mensajes: 191
Registrado: Mié Mar 09, 2005 0:34

Notapor Andres_age » Lun Sep 05, 2005 10:46

Es que yo le pedí que no publicase nada, porque no había hecho ninguna "presentación" :P y quería que lo primero fuera el mensaje. Pero bueno, si sale a portada, más que contento :P
A propósito, cualquier mejora es bienvenida.
Es que ahora mismo Adastegano necesita en memoria 5 veces el tamaño del archivo (es decir, si usas un bitmap de 10 megas, necesitaras 50 megas de memoria heap), y eso es una de las cosas que me gustaría mejorar, pero no se como. No hace falta codigo, solo una idea de como hacer lo mismo que se hace ahora pero de forma más eficiente (todo explicado en la documentación). Venga, animaros!
Andres_age
Moderador
Moderador
 
Mensajes: 121
Registrado: Sab Abr 02, 2005 22:40

Notapor Flint » Lun Sep 05, 2005 11:19

¡Enhorabuena, Andres_age! Lo he probado y me ha cifrado y descifrado perfectamente.

El programa es muy útil, el código está disponible y se puede aprender de él, y además he conocido la librería JEWL para hacer interficies gráficas. No se puede pedir más. ¡Gracias! :D
Flint
Iniciado
Iniciado
 
Mensajes: 18
Registrado: Mié Ago 03, 2005 20:38

Notapor Flash_noi » Lun Sep 05, 2005 21:46

Felicidades Andres_age!!
Sólo hace falta que me mandes el texto de la portada y listo :D
Nam nunc tempus est.
Avatar de Usuario
Flash_noi
Administrador
Administrador
 
Mensajes: 89
Registrado: Mar Mar 08, 2005 20:15
Ubicación: Reus

Notapor Andres_age » Lun Sep 05, 2005 22:01

Puedes usar el texto de este post :wink:
Andres_age
Moderador
Moderador
 
Mensajes: 121
Registrado: Sab Abr 02, 2005 22:40

Notapor Andres_age » Vie Sep 09, 2005 22:00

Bueno, he sacado la versión 0.2
El sistema Serpent ha sido mejorado completamente, y he puesto todo el texto de adastegano en un paquete, para que si se quiere traducir sea más fácil.
Los binarios todavía no he podido subirlos.
Andres_age
Moderador
Moderador
 
Mensajes: 121
Registrado: Sab Abr 02, 2005 22:40


Volver a General

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron