
HIDEAGEM experimentelle Steganographie-Plattform.
888 888 8888888 8888888b. 8888888888 d8888 .d8888b. 8888888888 888b d888
888 888 888 888 "Y88b 888 d88888 d88P Y88b 888 8888b d8888
888 888 888 888 888 888 d88P888 888 888 888 88888b.d88888
8888888888 888 888 888 8888888 d88P 888 888 8888888 888Y88888P888
888 888 888 888 888 888 d88P 888 888 88888 888 888 Y888P 888
888 888 888 888 888 888 d88P 888 888 888 888 888 Y8P 888
888 888 888 888 .d88P 888 d8888888888 Y88b d88P 888 888 " 888
888 888 8888888 8888888P" 8888888888 d88P 888 "Y8888P88 8888888888 888 888
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▄ ____ ______ ____ ▄ ▄
█ / / \ \ HIDEAGEM STEGANOGRAPHY PLATFORM █ . . █
█ /___ /________\ ___\ █ .-. .-. '.___.' █
█ \ \ / / ASTRAL SOFTWARE FROM THE FUTURE █ (_ \ / _) .' `. █
█ \ \ / / █ | : : █
█ \ \ / / COPYRIGHT 2024 WWW.CYBERGEM.NET █ | : : █
█ \ \ / / █ | `.___.' █
█ \/ LET'S DO COMPUTER STUFF ALL DAY █ █
█ █ █
█ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ █ ._____. .--. █
█ MMMMMSSSSSSSSSSSSSSSSSSSSSSSSSSddMMMMMSSSSSSMSSSSSSSSSS; █ | | / _`. █
█ MMMMSSSSSSSSSSSSSSSSSMSSSSS; ;SSdMMMMSSSSSSMMSSSSSSSSSS, █ | | (_) ( ) █
█ MMSSSSSSSMSSSSSMSSSSMMMSS."-.-":MMMMMSSSSMMMMSSMSSSMMSS █ _|_|_ '. / █
█ MSSSSSSSMSSSSMMMSSMMMPTMM;"-/\":MMM^" MMMSSMMMSSMM █ ' ' `--' █
█ SSSSSSSMMSSMMMMMMMMMP-.MMM : ;.;P dMMMMMMMMMP' █ █
█ SSMSSSMMMSMMMMMMMMMP :M;`: ;.'+"""t+dMMMMMMMMMMP █ _ █
█ MMMSSMMMMMMMMPTMMMM"""":P `.\// ' ""^^MMMMMMMP' █ .--. ' `:--.--. █
█ MMMMMMPTMMMMP="TMMMsg, \/ db`c" dMMMMMP" █ ( ) | | |_ █
█ MMMMMM TMMM d$$$b ^ /T$; ;-/TMMMP' Let's █ (_) / | | | ) █
█ MMMMM; .^`M; d$P^T$$b : $$ ::MMMMP hide some █ (_, | | |/ █
█ MMMMMM .-+d$$ $$$; ;. $$ ;;MMMP, Gems ! █ (J █
█ MMMMMMb _d$$$ $$$$ :$$$; :MMMMMMp. █ █
█ MMMMMM" " T$$$._.$$$; T$P.'MMMSSSSSSb █ _ █
█ MMM`TMb -")T$$$$$$P' `._ "" :MMSSSMMP' █ __ ' `:--.--. █
█ MMM / \ ' "T$$P" / :MMMMMMP' █ ___.' '.___ | | | █
█ MMSb`. ; " :MMMMMM' █ ____________ | | | █
█ MMSSb_lSSSb. .___. MMMMMP ,d88b.d88b, █ | | | .., █
█ MMMMSSSSSSSSb. .MMMMMM. 88888888888 █ `--': █
█ MMMMMMMMMMMSSSb .dMMMMMMMP `Y8888888Y' █ █
█ MMMMMMMMMMMMMSS; .dMMMMMMMMMM' `Y888Y' █ ... _ █
█ MMMMGEMMAMMMMb`;"-. .dMMMMMMMMMMP' `Y' █ .': \ /_) █
█ MMMMMMMMMMMMMMb: `'--.___.dMMMMMMMMMPP' █ .' \ /`. █
█ MMMMMMMMMMMMMMMb; dMMMMMMMMPPR █ `..' \ / ; █
█ ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ █ .'`. \/ __.' █
█ █ █
█ ░░░░░░░░ ▒▒▒▒▒▒▒▒ ░░░░░░░░ █ █
█ ▓▓▓░░ ████████ ███▒▒ ▓▓▓▓▓▓▓▓ ▓▓▓░░ ████████ █ `-. .-' █
█ ▒▒▒▓▓ ░░ ██ ▒▒▒▒▒▒░░░██ ▒▒ ▓▓ ░░░░░░▒▒▒▓▓ ░░ ██+§¥µ██ █ .-"-._.-"-._.- : : █
█ ███▒▒ ▓▓ ░░░██ ▒▒ ▓▓▓░░ ██ ▒▒▒▓▓ ░░ ███▒▒ ▓▓ ░░░██$@¢¶██ █ .-"-._.-"-._.- --:--:-- █
█ ██ ▒▒ ▓▓▓▓▓▓███▒▒ ▓▓ ░░ ██████▓▓▓░░ ██ ▒▒ ▓▓▓▓▓▓████████ █ : : █
█ ██ ▒▒▒▒▒▒▒▒ ▒▒▒▓▓ ░░░░░░░░ ░░░██ ▒▒▒▒▒▒▒▒ █ .-' `-. █
█ ████████ ▓▓▓▓▓▓▓▓ ████████ CYBERGEM █ █
▀ ▀ ▀
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
HIDEAGEM ist ein experimentelles Werkzeug zum Verstecken von Dateien in Bildern.
Es ist in C++ geschrieben und kann über die Python-CLI sowie über benutzerdefinierte Nodes in ComfyUI für Stable Diffusion verwendet werden.
WARNUNG: HIDEAGEM ist experimentelle Software! Es können unbekannte Fehler oder Sicherheitslücken vorhanden sein. Verwendung auf eigene Gefahr!
WARNUNG: Die Widerstandsfähigkeit von HIDEAGEM gegen Steganalyse (z. B. Werkzeuge, die die Wahrscheinlichkeit einer versteckten Nachricht in einem Bild berechnen) wurde noch nicht untersucht. Gehen Sie daher davon aus, dass es für Angreifer möglich sein könnte, ein Bild als „verdächtig“ zu erkennen.
Eine ausführliche Erklärung der Algorithmen und des Designs von HIDEAGEM finden Sie in diesem Beitrag.
Entwicklungsupdates und Support sind auf Discord verfügbar.
HIDEAGEM kann jetzt im Browser unter WWW.HIDEAGEM.COM verwendet werden!
Steganografie geht darum, die Existenz einer Nachricht zu verbergen; es geht darum, die Existenz von Kommunikation zu verschleiern.
HIDEAGEM möchte eine Steganografie-Plattform der nächsten Generation sein, die moderne kryptografische und steganografische Techniken kombiniert, um schnelles, sicheres und robustes Verstecken von Informationen in Trägermedien zu ermöglichen.
Neben dem traditionellen Ziel der Steganografie (verdeckte Kommunikation) werden weitere Sicherheitseigenschaften des Versteckens von Nachrichtenbits in großen Bit-Sammlungen untersucht.
HIDEAGEM ist als erweiterbare und anpassbare Plattform konzipiert, von der aus verschiedene steganografische Algorithmen und Techniken eingesetzt werden können, um Daten in einer Vielzahl von Trägermedientypen zu verbergen.
Im Laufe der Zeit können neue Stego-Algorithmen in das Programm integriert werden, um weitere Dateitypen zu unterstützen und neue Techniken zu nutzen.
Liste der allgemeinen Funktionen und möglicher zukünftiger Entwicklungsrichtungen.
Aktuelle Funktionen | Zukünftige Entwicklung
-------------------------------|---------------------------------------------------
Unicode-Passwörter | Schlüsseldateien
Fälschungssichere Gem-Daten | Mobile App
512-Bit symmetrischer Schlüssel | Weitere Stego-Algorithmen
Sichere Speicherverwaltung | Weitere Trägermedientypen
Mehrere Dateien pro Passwort | Dateien auf mehrere Bilder aufteilen
Mehrere Passwörter pro Bild | Web-App (lokale Ausführung)
Offline-Brute-Force-Resistenz | Browser-Erweiterung (z. B. Kontextmenü zum Extrahieren von Gems)
Verwenden Sie alle verrückten Unicode-Zeichen, die Sie möchten, in Ihren Passwörtern: Sie können sogar Ihre Lieblings-Emojis verwenden; niemand kann Sie aufhalten! 🐬
Hinweis: Die folgenden Informationen gelten nur für die aktuellen räumlichen Algorithmen von HIDEAGEM, die nur mit verlustfreien Bildformaten wie PNG, TIFF und BMP kompatibel sind.
Wenn ein Gem erfolgreich extrahiert wird und der korrekte Gem-Hash vorliegt, ist praktisch garantiert, dass es sich Bit für Bit um dasselbe Gem handelt, das Sie im Bild versteckt haben.
Wenn auch nur ein einziges Bit eines Gem-Pixels (eines Pixels, das Gem-Daten enthält) beschädigt ist, schlägt die Gem-Extraktion fehl.
Die Fälschungssicherheit geht auf Kosten der Fragilität: Kleine Änderungen an Gem-Bildern können dazu führen, dass die Daten nicht wiederhergestellt werden können. Sie sind empfindlich und können durch Größenänderung, Zuschneiden oder Ändern eines Pixels, das Gem-Daten enthält, zerstört werden.
HIDEAGEM verwendet ein experimentelles symmetrisches Schlüsselsystem, das für das Zusammenspiel mit seinen steganografischen Algorithmen entwickelt wurde.
Der 512-Bit-Schlüssel wird mit libsodiums Argon2id-Passwort-Hash-Funktion und dem vom Benutzer bereitgestellten Passwort generiert.
Argon2id wurde ausgewählt, da es konfigurierbare Brute-Force-Resistenzparameter (wie Speicheranforderungen) und Widerstandsfähigkeit gegen GPU-Brute-Force-Angriffe bietet.
Die Gem-Daten werden mit einem aus dem 512-Bit-Schlüssel abgeleiteten 256-Bit-Schlüssel verschlüsselt und dann unter Verwendung des 512-Bit-Schlüssels im Trägermedium versteckt. Der 512-Bit-Schlüssel muss zuerst verwendet werden, um das gesamte verschlüsselte Gem zu extrahieren, bevor der 256-Bit-Schlüssel zum Entschlüsseln seiner Bits verwendet werden kann.
Weitere Informationen zum Schlüsselsystem finden Sie hier.
HINWEIS: Die endgültige Stärke des Schlüssels ist nur so stark wie das Passwort. Ein sehr
langes/zufälliges Passwort ist erforderlich, um alle 512 Bits des Schlüssels zu nutzen.
Um 512 Bit Entropie mit einem Passwort unter Verwendung des ASCII-Zeichensatzes zu erreichen,
müsste das Passwort >= ~74 Zeichen lang sein und jedes Zeichen perfekt zufällig sein.
Um potenzielle Seitenkanalangriffe zu entschärfen, werden libsodiums Low-Level-Speicherverwaltungsfunktionen verwendet, um Speicher von Schlüsseln, Gem-Dateien und anderen sensiblen Daten, die während der Einbettungs-/Extraktionsprozesse erzeugt werden, sicher zu löschen.
Es wird auch verwendet, um zu verhindern, dass sensible Daten wie Schlüssel auf die Festplatte ausgelagert werden.
Sie können sich Bilder als verschlüsselte Write-Once-Dateiordner oder -Archive vorstellen.
Sie können beliebig viele Dateien mit einem einzigen Passwort in einem Bild verstecken, nur begrenzt durch die Einbettungskapazität des Bildes. Sie werden alle auf einmal extrahiert, wenn das richtige Passwort eingegeben wird.
Der Gem-Stream hat einen Overhead von 52 Bytes und jede Gem-Datei einen Overhead von 8 Bytes.
HIDEAGEM versucht, alle Gem-Dateien vor der Verschlüsselung mit miniz (zlib) zu komprimieren, was die Anzahl der eingebetteten Bytes manchmal deutlich reduzieren kann.
Die maximale Dateigröße pro Gem-Datei und die maximale Anzahl von Bytes, die pro Ocean eingebettet werden können, beträgt 16 Exabyte.
HIDEAGEM unterstützt derzeit das Verstecken mehrerer Dateisätze mit mehreren Passwörtern in einem einzigen Bild, jedoch wurde noch keine Benutzeroberfläche für die Nutzung dieser Funktion entwickelt.
Die Funktionsweise ist auch etwas eigenartig, da sie hierarchisch ist: Um auf den nächsten Dateisatz zuzugreifen, benötigen Sie alle Passwörter, die davor kamen, zusätzlich zum Passwort des Dateisatzes.
Betrachten Sie dies also als eine versteckte Funktion, die wahrscheinlich noch nicht nützlich ist.
Die Argon2id-Passwort-Hash-Funktion wird verwendet, um Schlüssel aus dem vom Benutzer bereitgestellten Passwort zu generieren.
Der Hauptschlüssel wird mit INTERACTIVE-Schlüsselparametern generiert, was im Vergleich zur Verwendung einer regulären Hash-Funktion zur Schlüsselgenerierung einen erheblichen Schutz vor Passwort-Brute-Force-Angriffen bietet.
HIDEAGEM ist in C++ geschrieben und kann über eine kleine API in Python verwendet werden.
Benutzerdefinierte Nodes für die ComfyUI Stable Diffusion-Plattform sind verfügbar, was die Integration in 2D-generative KI-Workflows erleichtert.
Die folgenden externen Bibliotheken werden verwendet:
Alle kryptografischen Operationen, wie Gem-Daten-Verschlüsselung, Hashing und Zufallszahlengenerierung, werden mit libsodiums Funktionen durchgeführt.
Schlüsselgenerierung: BLAKE2b-Hash-Funktion und Argon2id-Passwort-Hash-Algorithmus
Gem-Daten-Verschlüsselung: XChaCha20-Poly1305 symmetrischer Verschlüsselungsalgorithmus (256-Bit-Schlüssel + 192-Bit-Nonce)
CSPRNG-Implementierung: BLAKE2b-Hash und XChaCha20-Stromchiffre (256-Bit-Seed + 192-Bit-Nonce)
Zusätzlich werden libsodiums Low-Level-Speicherverwaltungsfunktionen zur Verwaltung sensibler Daten wie Schlüssel und Gem-Dateien verwendet.
Eine kleine Bibliothek zur Verwaltung von Unicode-Strings. Sie wird verwendet, um Unicode-Passwörter zu normalisieren, damit sie systemübergreifend konsistent funktionieren.
Eine Komprimierung der Gem-Daten wird vor der Verschlüsselung mit miniz (zlib-Implementierung) versucht.
Behalten Sie alte Versionen von HIDEAGEM, falls Sie Daten migrieren müssen.
Kleine Änderungen am Code von HIDEAGEM während dieser frühen Entwicklungsphase können die Rückwärtskompatibilität beeinträchtigen. Neuere Versionen von HIDEAGEM können möglicherweise keine Gems extrahieren, die mit älteren Versionen versteckt wurden.
Dies wird kein Problem mehr sein, sobald der Code als stabil gilt, da das Versionssystem dann dazu verwendet wird, die Rückwärtskompatibilität mit allen vorherigen Versionen zu gewährleisten.
HIDEAGEM v.1 wird mit einigen Nodes für ComfyUI ausgeliefert. Sie können damit Gems in Ihren KI-generierten Bildern oder in beliebigen auf der Festplatte gespeicherten Bildern verstecken.
🚨 WARNUNG: Der standardmäßige Bild-Speicher-Node von ComfyUI gibt in den PNG-Metadaten preis, dass HIDEAGEM verwendet wurde !!!
Es ist wichtig, HIDEAGEMs SAVE IMAGE-Node zu verwenden, da dieser diese Metadaten nicht im ausgegebenen PNG-Gem-Bild speichert.
Die Nodes werden mit einigen Beispiel-Arbeitsbereichen geliefert, die deren Verwendung zeigen.
Beim Finden von Gems erfordert das Konsolenfenster eine Benutzereingabe, um Gems auf der Festplatte zu speichern. Wechseln Sie daher nach dem Starten einer Gem-Suche zur ComfyUI-Konsole, um das Ergebnis zu sehen.
So kompilieren Sie HIDEAGEM und alle Abhängigkeiten aus dem Quellcode:
HIDEAGEM\builds\visual_studio\2022Die Binärdateien werden in HIDEAGEM\bin erstellt.
Zum Testen Python installieren und dann:
pip install -r requirements.txt
python HIDEAGEM.py demo
Drücken Sie STRG + C, um die Demo zu beenden.
Installieren Sie zuerst cmake und make, dann:
git clone --recurse-submodules https://github.com/CYBERGEM777/HIDEAGEM
cd HIDEAGEM
make
Die Binärdateien werden in HIDEAGEM/bin erstellt.
Zum Testen installieren Sie python3 und dann:
pip install -r requirements.txt
python HIDEAGEM.py demo
Drücken Sie STRG + C, um die Demo zu beenden.
Nach dem Kompilieren kann HIDEAGEM über HIDEAGEM.py verwendet werden:
cd HIDEAGEM
pip install -r requirements.txt
python HIDEAGEM.py [ args ]
HIDEAGEM kann Gems (Dateien) in jeder anderen Datei verstecken, die HIDEAGEM als Bit-Ocean bezeichnet.
HIDEAGEM.py versucht zu erkennen, ob der eingegebene Ocean eine Bilddatei ist, und verwendet in diesem Fall nur die Pixel-Bytes des Bildes als Bit-Ocean. Der Rest der Bilddatei wird vollständig verworfen, und das Gem-Bild wird als .png-Bild mit demselben Dateinamen wie das eingegebene Bild im angegebenen Ausgabeverzeichnis gespeichert.
Um einen Gem zu verstecken, übergeben Sie HIDEAGEM einfach einen Ocean, eine oder mehrere Gem-Dateien und ein Passwort. Wenn kein Ausgabeverzeichnis angegeben ist, wird das Gem-Vestecken durchgeführt, aber die Ausgabe wird nicht auf die Festplatte geschrieben.
python HIDEAGEM.py hide --ocean MORIA.JPEG --files RUBY.TXT EMERALD.TXT SAPPHIRE.TXT --output gem_images/ --password mellon
Die Gem-Textdateien werden in den aus MORIA.JPEG kopierten Pixel-Bytes versteckt, und das resultierende Gem-Bild MORIA.PNG wird im Verzeichnis gem_images gespeichert.
Wenn ein RGBA-Bild als Ocean verwendet wird, werden die Alphakanal-Bytes und die RGB-Bytes von vollständig transparenten Pixeln nicht geschrieben.
Das Finden von Gems ist einfach ( wenn Sie das Passwort haben! ):
python HIDEAGEM.py find --ocean MORIA.PNG --output gem_images/ --password mellon
HIDEAGEM sucht im Ocean MORIA.PNG mit dem Passwort „mellon“ nach Gems und speichert sie, falls welche gefunden werden, in gem_images.
Wenn die Gem-Suche ohne Ausgabeverzeichnis ausgeführt wird, werden die Gem-Dateien (falls gefunden) extrahiert, aber nichts auf die Festplatte geschrieben.
WARNUNG: Experimentelle Funktion !!! Verwendung auf eigene Gefahr !
HIDEAGEM kann Gems mit einer Time-Trap-Verkräftung versehen, sodass es schwieriger ist, das Passwort durch Brute-Force zu erraten.
Time-Traps haben einen Level von 0 bis 7, der die Zeit beeinflusst, die zum Extrahieren des Gems und zur Überprüfung des Passworts benötigt wird.
Level 0 hat keine zusätzliche Zeit: Das Einbetten und Extrahieren von Gems dauert genauso lange wie ohne Time-Trap.
Level 1 bis 7 haben längere Extraktionszeiten, wobei 1 die kürzeste und 7 die längste ist.
Wenn das richtige Passwort eingegeben wird, wird der Gem mit dem beim Verstecken angegebenen Time-Trap-Level extrahiert.
Wenn ein falsches Passwort eingegeben wird, wird ein zufälliger Time-Trap-Level aus dem Ocean gefischt, mit hoher Wahrscheinlichkeit der langsamste:
LEVEL 7 = 50% (1/2)
LEVEL 6 = 25% (1/4)
LEVEL 5 = 12.5% (1/8)
LEVEL 4 = 6.25% (1/16)
LEVEL 3 = 3.125% (1/32)
LEVEL 2 = 1.5625% (1/64)
LEVEL 1 = 0.78125% (1/128)
LEVEL 0 = 0.39062% (1/256)
Etwa die Hälfte der Brute-Force-Versuche für Passwörter wählt Level 7, unabhängig davon, welcher Level zum Verstecken des Gems verwendet wurde (selbst Level 0).
Es ist möglich, Gems zu verstecken, die weniger als eine Sekunde zum Extrahieren benötigen, aber mehrere Minuten für einen einzigen Passwort-Brute-Force-Versuch.
Der Preis der Time-Trap ist der Komfort: Die versehentliche Eingabe des falschen Passworts kann viel Zeit kosten, daher ist sie nicht für Kontexte geeignet, in denen eine sofortige Rückmeldung bei falschem Passwort erforderlich ist.
Um einem Gem eine Time-Trap hinzuzufügen, fügen Sie einfach das Flag --timetrap hinzu, optional mit einem Level von 0 bis 7 (wenn keiner angegeben ist, wird 0 gewählt):
python HIDEAGEM.py hide --ocean MORIA.JPEG --files DIAMOND.TXT --output gem_images/ --password mellon --timetrap [level]
Um einen Time-Trap-Gem zu finden, fügen Sie einfach das Flag --timetrap hinzu (ohne Angabe des Levels):
python HIDEAGEM.py find --ocean MORIA.PNG --output gem_images/ --password mellon --timetrap
Beachten Sie, dass HIDEAGEM find nicht automatisch nach Time-Trap-Gems sucht, es sei denn, es wird dazu aufgefordert.
Wenn Sie zusehen möchten, wie HIDEAGEM zufällige Gem-Siegel erzeugt, indem es Zufallsdaten in einem zufälligen Ocean versteckt, können Sie den Demo-Modus ausführen:
python HIDEAGEM.py demo
Wenn Sie sehen möchten, wie HIDEAGEM Gems so schnell wie möglich versteckt und findet, können Sie einige Unit-Tests ausführen:
python HIDEAGEM.py unit
Drücken Sie STRG + C, um beide Modi zu beenden.
HIDEAGEM ist unter einer freizügigen Lizenz + MAGIC AI LICENSE [ MAGIC-AL] lizenziert.