StegCloak es un módulo de esteganografía 100% JavaScript diseñado en estilo de programación funcional, para ocultar secretos dentro del texto comprimiendo y cifrando el secreto antes de encubrirlo con caracteres invisibles especiales unicode.
Se puede utilizar para hacer marcas de agua de forma segura, scripts invisibles en páginas web, textos en medios sociales o para cualquier otra comunicación encubierta. ¡Completamente invisible!
Características
- Protege tu secreto invisible mediante contraseñas e integridad HMAC
- Criptográficamente seguro al cifrar el secreto invisible usando AES-256-CTR.
- ¡Utiliza 6 caracteres invisibles en unicode que funciona en todas partes en la web – Tweets, Gmail, WhatsApp, Telegram, Instagram, Facebook, y muchos más!
- Máxima compresión para reducir la carga útil (LZ, Huffman).
- Completamente invisible, utiliza caracteres de ancho cero en lugar de espacios en blanco o tabulaciones.
- ¡Súper rápido! Oculta la página-fuente de Wikipedia para esteganografía (800 líneas y 205362 caracteres) dentro de un covertext de 3 palabras en menos de un segundo.
- Ocultar archivos en cadenas se puede lograr subiendo el archivo a la nube y haciendo “stegcloaking” el enlace en la cadena
- Escrito en estilo funcional puro.
- Uso – Disponible como un módulo API, un CLI y también una Interfaz Web (optimizada con web workers).
Instalación
Usando npm:
npm install -g stegcloak
Usando npm (para usarlo localmente en tu programa),
npm install stegcloak
Cómo funciona
Entonces, incluso si el atacante identifica cómo funciona el algoritmo, no debería ser posible revelar el mensaje secreto.
¿Lo descubres? …
Uso de la CLI
Ocultar
stegcloak hide
Opciones:
hide [options] [secret] [cover]
-fc, --fcover <file> Extract cover text from file
-fs, --fsecret <file> Extract secret text from file
-n, --nocrypt If you don't need encryption (default: false)
-i, --integrity If additional security of preventing tampering is needed (default: false)
-o, --output <output> Stream the results to an output file
-c, --config <file> Config file
-h, --help display help for command
Revelar
stegcloak reveal
Opciones
reveal [message]
-f, --file <file> Extract message from file
-cp, --clip Copy message directly from clipboard
-o, --output <output> Stream the secret to an output file
-c, --config <file> Config file
-h, --help display help for command
Soporte adicional
La variable de entorno STEGCLOAK_PASSWORD, si se establece, se utilizará por defecto como contraseña.
Soporte de archivos de configuración para configurar StegCloak CLI y evitar los avisos:
--config
StegCloak tiene un CLI interactivo que pide al usuario la contraseña. La contraseña está enmascarada, ya que es un contenido sensible. Para evitar los avisos y utilizar StegCloak en otros programas, se puede pasar un archivo de configuración JSON con las entradas y la salida estándar necesarias.
Ocultar
{
"secret": "Attack at Dawn!",
"cover": "We need food supplies here",
"password": "Allies need help",
"output": "out.txt" // optional, default -> clipboard
"integrity": false, // optional, default -> false
"nocrypt": false // optional, default -> false
}
Revelar
{
"message": "We need food supplies here", // StegCloaked message
"password": "Allies need help",
"output": "out.txt" // optional
}
La clave “password” puede hacerse opcional en tu configuración estableciéndola en una variable de entorno, STEGCLOAK_PASSWORD.
Si no se da la clave de “output“, StegCloak CLI aplica su acción por defecto de copiar el resultado al portapapeles si es una operación de ocultación, sino imprime el secreto descifrado a STDOUT si es una operación de revelación.
Uso de la API
const StegCloak = require('stegcloak');
const stegcloak = new StegCloak(true, false); // Initializes with encryption true and hmac false for hiding
// Estos argumentos sólo se utilizan durante la ocultación
// Se puede cambiar más tarde cambiando las flags booleanas para stegcloak.encrypt y stegcloak.integrity
¿Qué es HMAC y lo necesito?
HMAC es un paso adicional de seguridad por fingerprint para evitar la manipulación de textos y para verificar si el mensaje recibido fue realmente enviado por el remitente previsto. Si los datos se envían a través de WhatsApp, Messenger o cualquier plataforma de redes sociales, esto ya está solucionado. Sin embargo, si estás utilizando StegCloak en tu programa para transmitir y recuperar de forma segura, esta opción se puede activar y StegCloak se encarga de ello.
Ocultar
stegcloak.hide(secret, password, cover) -> string
const magic = stegcloak.hide("Voldemort is back", "mischief managed", "The WiFi's not working here!");
// Utiliza los booleanos stegcloak.encrypt y stegcloak.integrity para la ofuscación
console.log(magic); // The WiFi's not working here!
Revelar
stegcloak.reveal(data, password) -> string
const secret = stegcloak.reveal(magic, "mischief managed");
// Detecta automáticamente si se han realizado comprobaciones de cifrado o de integridad durante la ocultación y actúa en consecuencia
console.log(secret); // Voldemort is back
Esta increíble publicación de Francesco Soncina muestra cómo podrías utilizar la API de StegCloak para poner una marca de agua a cualquier texto de tu sitio web.
Importante
StegCloak no resuelve el problema de Alice-Bob-Warden, es poderoso sólo cuando la gente no lo está buscando y te ayuda a lograr eso muy bien, ¡dadas sus propiedades de invisibilidad en la web! Se puede utilizar con seguridad para hacer marcas de agua en foros, tweets invisibles, medios sociales, etc.
Por favor, no lo uses cuando sepas que hay alguien que está husmeando activamente tus datos, mirando los caracteres unicode a través de una herramienta de análisis de datos.
En ese caso, aunque no se pueda descifrar el secreto codificado, el hecho es que el vigilante (intermediario) sabe que se produjo alguna comunicación secreta, porque habría notado una cantidad inusual de caracteres especiales invisibles.
Recursos
Para conocer y comprender un poca más sobre la práctica de la esteganografía, revisa los siguientes artículos:
- Esteganografía con Steghide: Guía completa de uso
- Las 10 Mejores Herramientas para la Esteganografía
- Las mejores +20 herramientas para desafíos de Esteganografía
stegcloak (este enlace se abre en una nueva ventana) por KuroLabs (este enlace se abre en una nueva ventana)
Hide secrets with invisible characters in plain text securely using passwords 🧙🏻♂️⭐