Giter Site home page Giter Site logo

manueldizen / tpe-cys Goto Github PK

View Code? Open in Web Editor NEW

This project forked from msambartolomeo/shared-secrets-steganography

0.0 0.0 0.0 2.32 MB

Trabajo Práctico Especial realizado para la materia "72.44 - Criptografía y Seguridad" - 1Q2023

C 97.68% Makefile 2.32%

tpe-cys's Introduction

72.04 - Criptografía y Seguridad

Trabajo Práctico de Implementación: "Secreto Compartido con Esteganografía"

Integrantes:

Nombre Legajo
De Simone, Franco 61100
Dizenhaus, Manuel 61101
Negro, Juan Manuel 61225
Sambartolomeo, Mauro Daniel 61279

Introducción

Este trabajo se centra en la criptografía visual, mediante la implementación de un algoritmo de Secreto Compartido para esconder un secreto en sombras, utilizando esteganografía.

Se trabajó con la implementación del paper (k,n) secret image sharing scheme capable of cheating detection escrito por Yan-Xiao Liu, Quin-Dong Sun y Ching-Nung Yang de la Universidad de Tecnología de Xi’an (China).

El paper utiliza el Esquema de Shamir como algoritmo de secreto compartido, que propone un esquema (k,n), siendo n el número total de sombras y k el número mínimo de sombras necesarias para recuperar el secreto.

Junto a la utilización de esteganografía para ocultar la información, describe cómo se puede distribuir una imagen secreta en otras imágenes, que funcionarán de sombras para el esquema de secreto compartido.

A su vez, describe cómo recuperar una imagen secreta a partir de estas sombras, mediante el método interpolador de Lagrange (parte de los fundamentos del Esquema de Shamir).

Implementación

Para este trabajo, se realizó el desarrollo en el lenguaje C version c23, y formateado con CLang.

Requerimientos

Los requerimientos necesarios para correr este proyecto son:

  • make
  • gcc o clang

Compilación

Para compilar el programa, alcanza con posicionarse en el directorio raíz del proyecto, y correr el comando:

make all

Esto generará el ejecutable shared_secret_steganography dentro de la carpeta target.

Ejecución

El programa presenta dos modos de ejecición distintas:

  • Distribuir una imagen secreta en sombras
  • Recuperar una imagen secreta a partir de las sombras

Distribuir una imagen secreta en sombras:

Este modo de ejecución se realiza de la siguiente manera:

./target/shared_secret_steganography d <nombre-imagen.bmp> k <directorio donde se encuentran las imágenes a utilizar como sombras>

El programa leerá la imagen a esconder y generará n sombras, donde n es la cantidad de imágenes que se encuentren en el directorio especificado. Cada una de estas sombras tendrá un tamaño de $(k-1)^{-1}$ veces el tamaño de la imagen secreta, y se guardará ocultada en la imagen correspondiente.

Este método de ocultamiento se realiza mediante el método de esteganografía LSB (Least Significant Bit), donde se modifican los X bits menos significativos de cada byte. En particular, se utiliza LSB4 para valores de k iguales a 3 o 4, y LSB2 para valores entre 5 y 8. De esta forma garantizamos que siempre se pueda ocultar cada sombra en la imagen portadora correspondiente.

Por último, se añade un número de sombra en la sección adicional del formato .bmp de cada imagen portadora, para poder identificar qué sombra se encuentra en cada imagen. Esto se hace en el offset 0x06 del archivo, un espacio reservado de 2 bytes para la aplicación creadora de la imagen, por lo que lo utilizamos para guardar el número de sombra.

Recuperar una imagen secreta a partir de las sombras:

Este modo de ejecución se realiza de la siguiente manera:

./target/shared_secret_steganography r <nombre-imagen.bmp> k <directorio donde se encuentran las imágenes a utilizar como sombras>

El programa leerá el directorio de imágenes portadoras y tomará los primeros k archivos que encuentre, ignorando directorios y archivos que no sean .bmp. Luego, generará los polinomios descriptos en el paper y evaluará el caso de cheating, donde fallará si se detecta alguna sombra inválida. Luego, se reconstruirá la imagen secreta a partir de las sombras, y se guardará en el nombre de imagen especificado.

Aclaraciones:

  • La carpeta con las imágenes que se utilizarán como sombras deben tener exactamente n imagenes de extension .bmp, con n mayor o igual a k, pues se utilizarán todas las imágenes para construir portadoras.
  • La longitud máxima de los paths otorgados para identificar imágenes o directorios es de 4096 caracteres.
  • Las imágenes utilizadas deben tener formato .bmp. De no ser así, el programa no podrá esconder ni recuperar las imágenes.
  • Tanto al distribuir la imagen secreta como al recuperarla, se ignorará todo lo que no sea un archivo .bmp en el directorio especificado, incluyendo subdirectorios y archivos de otros formatos.

tpe-cys's People

Contributors

msambartolomeo avatar j-negro avatar manueldizen avatar desimonef avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.