
Outil de stockage stéganographique et de chiffrement de fichiers

tird & tirdFStird /tɪrd/ (un acronyme pour « ce sont des données aléatoires ») est un outil de chiffrement de fichiers qui minimise les métadonnées et cache les données chiffrées.
Avec tird, vous pouvez :
tirdFS) à l’intérieur de fichiers conteneurs et de périphériques en mode bloc. Contrairement à VeraCrypt et Shufflecake, les conteneurs tirdFS ne contiennent pas d’en-têtes ; l’utilisateur spécifie les emplacements des données à l’intérieur du conteneur et est responsable de maintenir ces emplacements séparés. Toute région d’apparence aléatoire d’un fichier ou d’un périphérique en mode bloc peut être utilisée comme conteneur.tird offre un déni plausible intégré, même lorsque les fichiers chiffrés sont stockés en dehors des conteneurs. Il aide également à résister aux attaques coercitives de divulgation de clé (cryptanalyse sous pression, xkcd 538).
[!ATTENTION] Avant d’utiliser
tird, veuillez lire la section « Avertissements ». La sécurité ne dépend pas seulement de l’outil mais de vos actions : stockage sécurisé des clés, utilisation dans un environnement sûr, et évitement du mode débogage avec des données réelles.
La stabilisation du format et une spécification formelle sont prévues pour la v1.0.0.
Vous n’avez pas besoin de mémoriser les options de ligne de commande pour utiliser tird. Cet outil dispose d’une CLI basée sur des invites : lancez-le simplement, sélectionnez une option du menu et répondez aux questions qui suivront.```
$ tird
MENU
———————————————————————————————————————————
0. Exit 1. Info & Warnings
2. Encrypt 3. Decrypt
4. Embed 5. Extract
6. Encrypt & Embed 7. Extract & Decrypt
8. Create w/ Random 9. Overwrite w/ Random
———————————————————————————————————————————
A0. SELECT AN OPTION [0-9]:
## Options d'entrée
Il y a 4 groupes d'options d'entrée : A (Action), D (Data), K (Keys), P (Proceed). Ils sont numérotés pour faciliter la description.```
+——————————————————————+————————————————————————+
| A0. SELECT AN OPTION | A. Select an action |
+——————————————————————+————————————————————————+
| D1. INPUT FILE PATH | |
| D2. COMMENTS | D. Enter data, |
| D3. OUTPUT FILE PATH | data location, |
| D4. OUTPUT FILE SIZE | data size |
| D5. START POSITION | |
| D6. END POSITION | |
+——————————————————————+————————————————————————+
| K1. KEYFILE PATH | K. Enter values |
| K2. PASSPHRASE | related to |
| K3. TIME COST | key derivation |
+——————————————————————+————————————————————————+
| P0. PROCEED? | P. Confirm to continue |
+——————————————————————+————————————————————————+
Une description détaillée de ces options avec des exemples se trouve ici.
La charge utile qui sera chiffrée lors de la création du cryptoblob se compose de :
La spécification de la charge utile dans l'interface utilisateur se présente comme suit :``` D1. FILE TO ENCRYPT (OPT): files.zip I: path: 'files.zip'; size: 2,824,230,648 B (2.6 GiB) D2. COMMENTS (DEFAULT='files.zip'): The X-Files, zip (секретные материалы) I: comments will be shown as ['The X-Files, zip (секретные материалы)']
## Matériau de clé d'entrée
`tird` offre la possibilité d'utiliser le contenu de fichiers de clés et une phrase de passe pour dériver des clés uniques.
- **Fichiers de clés (optionnel) :** Zéro, un ou plusieurs chemins de fichiers de clés ; l'ordre des entrées n'a pas d'importance. Un chemin de fichier de clé peut être :
- Un <ins>fichier régulier</ins>. Le contenu du fichier de clé sera haché, et son condensat sera utilisé pour un étirement de clé et une dérivation de clé supplémentaires.
- Un <ins>périphérique bloc</ins>. Traité de la même manière qu'un fichier de clé régulier : le contenu sera haché.
- Un <ins>répertoire</ins>. Tous les fichiers du répertoire seront hachés et utilisés comme fichiers de clés.
- **Phrase de passe (optionnel) :** Jusqu'à 2048 octets après [normalisation](https://www.unicode.org/reports/tr15/) Unicode (forme C) ; peut être omise.
La spécification de l'IKM dans l'interface utilisateur ressemble à ceci :```
K1. KEYFILE PATH (OPT): key
I: path: 'key'; size: 32 B
I: reading and hashing contents of 'key'
I: keyfile accepted
K1. KEYFILE PATH (OPT):
K2. PASSPHRASE (OPT):
K2. CONFIRM PASSPHRASE:
I: passphrase accepted
Pour plus de détails, reportez-vous à la spécification.
Tandis que le contenu d'un message chiffré est protégé, sa taille, sa provenance, sa destination… ne le sont pas. Les données sont cachées, les métadonnées sont visibles. Parfois, cela suffit à votre ennemi pour découvrir vos secrets.
Nous tuons des gens sur la base de métadonnées.
![]() vs. ![]() |
|---|
tirdFS — Système de fichiers stéganographique piloté par l'utilisateurtird utilise une technique qui est décrite comme suit :
Dissimulation de données dans des données chiffrées ou dans des données aléatoires. Le message à cacher est chiffré, puis utilisé pour écraser une partie d'un bloc beaucoup plus grand de données chiffrées ou d'un bloc de données aléatoires (un chiffre incassable comme le masque jetable génère des textes chiffrés qui semblent parfaitement aléatoires sans la clé privée).
Vous pouvez chiffrer des fichiers et intégrer des cryptoblobs dans des conteneurs à partir de positions arbitraires. Après avoir écrit le cryptoblob, vous devrez vous souvenir de son emplacement dans le conteneur (les positions de début et de fin), qui sera utilisé ultérieurement pour extraire les cryptoblobs. Ainsi, vous pouvez créer tirdFS — un système de fichiers caché, sans en‑tête et piloté par l'utilisateur à l'intérieur d'un conteneur :
tirdFS n'est pas un système de fichiers monté avec des structures de métadonnées internes. C'est un modèle de stockage caché géré par l'utilisateur construit à partir de cryptoblobs placés indépendamment.
Tout fichier, disque ou partition plus grand que la taille minimale d'un cryptoblob (1160 B) peut être un conteneur valide. Les cryptoblobs peuvent être intégrés dans n'importe quelle zone.
Exemples de conteneurs valides :
Exemple de structure de conteneur :``` +—————————+—————————————+ <— Position 0 of the container | | | | | Random data | | | | | +—————————————+ <— Cryptoblob1 start position | Header- | | | less | Cryptoblob1 | | | | | Layer +—————————————+ <— Cryptoblob1 end position | | Random data | | Cake +—————————————+ <— Cryptoblob2 start position | | | | | Cryptoblob2 | | | | | +—————————————+ <— Cryptoblob2 end position | | Random data | +—————————+—————————————+
**Header géré par l'utilisateur**
Un en-tête texte `tirdFS` géré séparément par l'utilisateur pourrait ressembler à ceci :```
[100000000:100345765] secret_video.mp4
[100345765:234765345] various_secrets.zip
[12654876456:14765345098] Epstein_files_part1.zip
C'est-à-dire qu'il doit généralement contenir l'emplacement de chaque cryptoblob dans le conteneur ainsi qu'un bref commentaire. Cependant, l'utilisateur est libre de déterminer comment stocker les positions et quoi inclure dans un tel en-tête.
L'image suivante visualise à quel point il est difficile de distinguer une entrée de données aléatoires d'une autre et le processus d'incorporation de cryptoblobs dans un conteneur.
Conteneur vide avec des données aléatoires :

Un cryptoblob incorporé dans le conteneur :

Deux cryptoblobs incorporés dans le conteneur :

Trois cryptoblobs incorporés dans le conteneur :

Animation : visualisation de l'incorporation :

Transportez partout. C'est votre droit.
Veuillez regarder la capture d'écran suivante.
Il semble que ce volume de 16 Go ne contienne qu'un seul fichier de 8,7 Mio. Est-ce vraiment vrai ? Peut-être oui, peut-être non.
Le système de fichiers nous indique qu'il n'y a qu'un seul fichier ici. Mais n'y a-t-il vraiment qu'un seul fichier sur le volume ? Nous ne pouvons pas le déterminer en utilisant le système de fichiers. En fait, des données peuvent se trouver en dehors du système de fichiers et être indétectables par les outils du système de fichiers. Les 15,2 Gio d'espace marqués comme libres peuvent être occupés par un système de fichiers caché. Cet espace « libre » peut être occupé par des données cryptées dissimulées.
Pouvons-nous réfuter l'existence de ces données ? Oui, par exemple en examinant le niveau d'entropie de cet espace libre à l'aide de binwalk. Une faible entropie indique une probable absence de données cachées. Une entropie élevée ne prouve pas, en soi, la présence de données cryptées dissimulées. Les zones à haute entropie peuvent être soit simplement des données résiduelles, soit des données cryptées dissimulées.
Si vous êtes intéressé par la dissimulation de données en dehors du système de fichiers visible, alors tird est à votre service pour fournir une Cape d'Invisibilité pour vos fichiers.
Le chiffrement à verrou temporel (TLE) peut être utilisé pour empêcher un adversaire d'accéder rapidement aux textes en clair en cas de compromission de l'IKM (par exemple en cas de coercition de l'utilisateur). Dans notre implémentation, il s'agit en fait d'une dérivation de clé à verrou temporel basée sur PoW. L'option d'entrée « Time cost » spécifie le nombre de passes d'Argon2. Si vous spécifiez un nombre de passes suffisamment élevé, il faudra un temps significatif pour les exécuter. Cependant, un attaquant nécessera le même temps en utilisant un matériel similaire. L'exécution d'Argon2 ne peut pas être accélérée par parallélisation, donc on s'attend à ce que le temps passé par un attaquant soit approximativement le même que celui passé par le défenseur.
Cette implémentation TLE fonctionne hors ligne, contrairement à tlock.
Définissez la valeur TIME COST souhaitée :```
K3. TIME COST (DEFAULT=4): 1000000
I: time cost: 1,000,000
W: decryption will require the same "TIME COST" value!
**Plausible TLE:** L'adversaire ne connaît pas la valeur réelle du coût de temps, donc vous pouvez plausiblement déformer le nombre de passages. L'adversaire ne peut pas réfuter votre affirmation jusqu'à ce qu'il tente de déchiffrer le cryptoblob en utilisant la valeur de coût de temps spécifiée.
## Options de ligne de commande
`tird` ne nécessite aucune option de ligne de commande pour une utilisation normale.```
$ tird --help
tird v0.30.0
A tool for encrypting files and hiding encrypted data.
Homepage: https://github.com/hakavlad/tird
Usage:
tird [--unsafe-debug] [--unsafe-decrypt]
Start without options for normal usage.
Options:
--help print this help message and exit
--unsafe-debug enable unsafe debug mode
--unsafe-decrypt release plaintext even if MAC verification
failed (dangerous)
Examples:
$ tird
$ tird --unsafe-debug
[!WARNING] Le mode de débogage n'est pas destiné à être utilisé en production !
Démarrez tird avec l'option --unsafe-debug pour voir ce qui se passe sous le capot pendant l'exécution du programme.
L'activation du mode débogage affiche également :
[!WARNING] Dans ce mode, le texte clair renvoyé peut avoir été modifié ou substitué par un attaquant !
En mode de déchiffrement non sécurisé, tird libérera le texte clair même si l'authentification échoue. À n'utiliser que si vous privilégiez la disponibilité à l'intégrité, lorsque vous ne pouvez pas déchiffrer avec succès un cryptoblob en mode normal.
tird ne prend pas en charge :
tird ne fournit pas :
tird ne peut pas traiter (chiffrer/incorporer) plus d'un fichier en une seule passe. Le chiffrement de répertoires et de fichiers multiples n'est pas pris en charge.tird ne nettoie pas les métadonnées du système de fichiers (atime, mtime, ctime).tird n'est pas très élevée (jusqu'à 730 Mio/s dans mes tests sur du matériel moderne).La crypto peut aider, mais elle ne vous sauvera pas des mauvais usages, des vulnérabilités, de l'ingénierie sociale ou des menaces physiques.
tird n'a pas été audité indépendamment par des humains en matière de sécurité.tird est inefficace dans un environnement compromis ; l'exécuter dans de tels cas peut provoquer des fuites de données désastreuses.tird a peu de chances d'être efficace lorsqu'il est utilisé avec des clés courtes et prévisibles.tird n'efface pas ses données sensibles de la mémoire après utilisation ; les clés peuvent persister en mémoire après la sortie du programme.tird ne trie pas les condensats des fichiers de clé et des phrases de passe en temps constant.tird protège les données, pas l'utilisateur ; il ne peut pas empêcher la torture si vous êtes suspecté.HKDF et une implémentation rapide de ChaCha20)Argon2 et BLAKE2)tird(1)Améliorer la documentation.
N'hésitez pas à poser des questions, laisser des commentaires ou fournir des critiques dans la section Discussions.