2025-09-06 16:18:11 +02:00
wf
2025-09-06 15:33:09 +02:00
2025-09-06 15:41:39 +02:00
2025-09-06 14:11:05 +02:00
2025-09-06 14:11:05 +02:00
2025-09-06 14:11:05 +02:00
2025-09-06 14:11:05 +02:00
2025-09-06 16:18:11 +02:00
2025-09-06 14:11:05 +02:00
2025-09-06 14:11:05 +02:00
2025-09-06 14:11:05 +02:00
2025-09-06 14:11:05 +02:00

🔐 ComfyUI EncryptMaster

image

Pack ComfyUI de nœuds pour chiffrer et cacher du texte ou des images.

Sécurité : AES-256-GCM (authentifié) avec dérivation de clé scrypt.
Stéganographie : LSB (PNG/TIFF) et DCT/JPEG (plus robuste aux recompressions).


📁 Contenu

Dossier : ComfyUI/custom_nodes/Comfyui_EncryptMaster/

  • text_cipher.py — Text Cipher (chiffrer/déchiffrer une chaîne)
  • stego_text.py — Stego Text (cacher/extraire du texte dans une image, LSB)
  • stego_capacity.py — Stego Capacity Estimator (capacité d’une image en LSB)
  • image_cipher.py — Image ⇄ Noise (image chiffrée rendue comme “bruit”)
  • stego_image_in_image.py — Stego Image-in-Image (cacher une image dans une autre, compression avant chiffrement)
  • generate_passphrase.py — Generate Passphrase (phrases de passe solides)

⚙️ Installation

  1. Copier ce dépôt dans :

    ComfyUI/custom_nodes/Comfyui_EncryptMaster

  2. Activer votre venv puis installer les dépendances :

    pip install cryptography pillow numpy

  3. Relancer ComfyUI. Les nœuds « EncryptMaster — … » apparaissent dans la recherche.

Testé avec Python 3.10–3.12, ComfyUI ≥ 0.3.x, Windows / Linux.


🔑 Sécurité (résumé)

  • Chiffrement : AES-256-GCM (authentifié).
  • Dérivation : scrypt (N=2^14, r=8, p=1) depuis une passphrase humaine.
  • Associated Data (AAD) : champ associated_data optionnel, non chiffré mais authentifié.
    Si l’AAD ne correspond pas entre chiffrement et déchiffrement, le déchiffrement échoue.

🧩 Nœuds et usages

image image image image image image

1) EncryptMaster — Text Cipher (AES-GCM)

  • Entrées

    • text (STRING) : texte clair ou blob chiffré.
    • passphrase (STRING) : mot/phrase de passe.
    • mode (STRING) : "encrypt" ou "decrypt".
    • associated_data (STRING, optionnel).
  • Sorties

    • text (STRING) : texte chiffré « armored » ou texte déchiffré.
  • Notes

    • Parfait pour sécuriser prompts, JSON ou credentials avant stockage.

2) EncryptMaster — Stego Embed Text (AES-GCM) / Stego Extract Text

  • But : cacher un texte chiffré dans les bits de poids faible (LSB) d’une image.

  • Entrées (Embed)

    • image (IMAGE), text (STRING), passphrase (STRING)
    • bits_per_channel : 1 (discret) ou 2 (×2 capacité)
    • associated_data (STRING, optionnel)
  • Sorties (Embed)

    • image (IMAGE) : même visuel, message caché.
  • Entrées (Extract)

    • image (IMAGE), passphrase (STRING), associated_data (STRING, optionnel)
  • Sorties (Extract)

    • text (STRING) : texte en clair.
  • Conseils

    • Sauvegarder en PNG/TIFF (sans perte).
    • Éviter toute recompression/redimensionnement après l’embed.

3) EncryptMaster — Stego Capacity Estimator

  • But : estimer la capacité maximale (octets et nombre de caractères) d’une image pour l’embed LSB.

  • Entrées

    • image (IMAGE), bits_per_channel (1/2)
  • Sorties

    • capacity_bytes (INT), capacity_chars (INT), report (STRING)
  • Rappel rapide

    • Capacité brute ≈ largeur × hauteur × 3 × bpc / 8 octets.

4) EncryptMaster — Image Cipher → Noise (AES-GCM)

EncryptMaster — Image Decipher ← Noise (AES-GCM)

  • But : chiffrer tous les pixels d’une image et produire une image de bruit aléatoire (réversible).

  • Entrées (Cipher)

    • image (IMAGE), passphrase (STRING)
    • associated_data (STRING, optionnel)
    • preserve_width (BOOLEAN) : conserve la largeur; la hauteur s’ajuste si nécessaire.
  • Sorties (Cipher)

    • image (IMAGE bruitée), out_width (INT), out_height (INT)
  • Entrées (Decipher)

    • image (IMAGE bruitée), passphrase (STRING), associated_data (STRING, optionnel)
  • Sorties (Decipher)

    • image (IMAGE originale), report (STRING)
  • Important

    • Toujours sauver en PNG/TIFF. Le JPEG détruit des octets → déchiffrement impossible.

5) EncryptMaster — Stego Embed Image (LSB/AES-GCM) / Stego Extract Image

  • But : cacher une image secrète B dans une image porteuse A (LSB), en compressant le secret avant chiffrement.

  • Entrées (Embed)

    • cover_image (IMAGE), secret_image (IMAGE), passphrase (STRING)
    • bits_per_channel : 1 ou 2
    • secret_encode : "jpeg" (recommandé) ou "png"
    • jpeg_quality (50–95) : qualité du secret si "jpeg"
    • resize_secret_to_cover (BOOLEAN) : redimensionner le secret à la cover
    • associated_data (STRING, optionnel)
  • Sorties (Embed)

    • image (IMAGE), report (STRING)
  • Entrées (Extract)

    • image (IMAGE), passphrase (STRING), associated_data (STRING, optionnel)
  • Sorties (Extract)

    • image (secret reconstruit), report (STRING)
  • Capacité (ordre de grandeur)

    • Cover 1216×1600 @ 1 bpc ≈ ~712 KiB ; @ 2 bpc ≈ ~1.42 MiB.
    • Secret 1216×1600 en JPEG q85 ≈ 200–400 Ko → OK avec 2 bpc.
    • Mode PNG lossless souvent plus volumineux → nécessitera une cover plus grande ou 2 bpc.
  • Format de sortie

    • Sauver la cover modifiée en PNG/TIFF (pas de recompression JPEG après embed).

6) EncryptMaster — Generate Passphrase

  • But : générer une phrase de passe robuste (type Diceware).
  • Astuce : viser ≥ 24 caractères ou 8–9 mots aléatoires.

🧪 Workflows types

A) Cacher un texte chiffré dans une image (PNG)

[Text Box] -> [Text Cipher (encrypt)] -> [Stego Embed Text] -> [Save Image (PNG)]

B) Cacher une image dans une autre

[Load Cover] + [Load Secret] -> [Stego Embed Image (secret_encode=jpeg, bpc=2)] -> [Save Image (PNG)]

C) Chiffrer une image en « bruit » (réversible)

[Load Image] -> [Image Cipher → Noise] -> [Save Image (PNG)]
[Load Noise] -> [Image Decipher ← Noise] -> [Preview]

✅ Bonnes pratiques

  • Utiliser Generate Passphrase pour des passphrases solides.
  • Renseigner un associated_data stable (ex. project=EncryptMaster;v=1) et le réutiliser à l’extraction.
  • Ne pas compresser les images codées, format export png ou tiff, ne pas réenregister les images en jpeg, beaucoup de réseaux sociaux réencodent les images (cryptage infonctionnel).

🌟 Show Your Support

If this project helped you, please consider giving it a ⭐ on GitHub!

Made with ❤️ for the ComfyUI community

by Orion4D

Buy Me A Coffee
S
Description
No description provided
Readme MIT
8.9 MiB
Languages
Python 100%