Cacher des informations. L’art de cacher quelque chose sous son nez. Depuis que les humains sont en vie, nous essayons de cacher des choses – que ce soit la dernière tranche de pizza ou l’emplacement d’un trésor enfoui. Vous souvenez-vous de l’incroyable astuce de l’encre de citron invisible, où nous écrivons le message secret avec des citrons et chauffons le papier pour révéler le grand secret ? Eh bien, c’est ce qu’est la stéganographie, en un mot, elle nous permet de cacher facilement des messages en masquant simplement leur existence.
Au début du XXe siècle, des espions allemands ont infiltré les citoyens français au nom du commerce. Leurs motifs, cependant, étaient de surveiller les détails du système de défense français et d’aider les Allemands à envahir la France. Le système de défense intelligemment conçu par les Français maintenait un secret absolu même entre chaque district, ce qui rendait difficile pour un seul espion de collecter toutes les informations. Cela a nécessité plusieurs espions pour recueillir des informations sur chaque zone et concevoir ensemble leur plan de match. Le lieu de rendez-vous n’aurait dû être annoncé que le jour même à une personne fortement gardée mais comment était-il censé atteindre toutes les zones en une seule journée ? Ils ont choisi le journal, une chaîne publique rapide mais très peu sûre ! Mais les Allemands y avaient déjà pensé et publièrent le lieu de la réunion secrète dans la météo du jour.
Prenez la première lettre de chaque mot et ce que nous obtenons – le lieu de rencontre
« Nouvelle Rue des Thermopyles Heil Hitler! ».
A cette époque, encre invisible, maintenant caractères invisibles.
Aujourd’hui, à l’ère de l’information, le lieu de communication le plus important est Internet. Des applications de messagerie comme Messenger, Whatsapp, iMessage et des médias sociaux comme Twitter, Facebook et Instagram. Comment pouvons-nous appliquer le même problème ici et le résoudre maintenant ? Eh bien, nous pouvons commencer par les caractères sans largeur.
« Copiez-moi » – collez cette citation https://www.textmagic.com/free-tools/unicode-detector Pour voir des ZWC se cacher devant vous tout le temps.
Les caractères de largeur nulle sont des caractères non imprimables, qui font partie de la table Unicode. Comme leur nom l’indique, ils n’ont même pas montré leur présence. Ils sont utilisés pour activer le retour à la ligne dans les mots longs, joindre les emojis, combiner deux caractères en chaînes, empêcher qu’ils ne soient joints, etc.
Personnages zwj
Rejoignez les emoji mais ils ne sont pas visibles
Ces personnages trouvaient de plus en plus leur chemin dans le texte caché, et leur invisibilité complète était un excellent argument de vente. Il ne peut pas être bloqué car il fait partie intégrante de nombreuses langues et emojis. Et il s’avère également que les ZWC ne sont pas les seuls personnages invisibles, par exemple. Séparateur invisible – U + 2063.
Le tableau contenant les caractères invisibles les plus utilisés.
Un petit problème avec cette table cependant ! Gmail bloque U+200B (zéro espace de vue). Sans oublier que Twitter est connu pour mettre sur liste noire les caractères invisibles inutiles, et aucun des caractères du tableau, à l’exception de U + 200C, U + 200D et U + 180e, ne fonctionne. Alors maintenant, nous avons trois personnages!
Oh, attendez, U + 180e n’est pas invisible et s’affiche bizarrement sur les appareils iOS. Nous sommes maintenant réduits à seulement deux personnages.
En déchiquetant la table Unicode, en testant tous les caractères invisibles possibles pour le masquage sur la plate-forme/le Web, nous pouvons ajouter 4 caractères supplémentaires à notre arsenal, un total de 6 caractères invisibles que nous pouvons maintenant utiliser pour cacher nos secrets dans des chaînes.
const zwc = ['', '', '', '', '', ''] // 200c,200d,2060,2062,2063,2064 The digital equivalent invisible ink
Maintenant, pour utiliser l’encre invisible, tout ce que nous avons à faire est de donner un « bonjour » secret que nous devons représenter en binaire, par exemple, 01101000 011010001. Ensuite, prenez les 4ZWC et mappez-les sur la table de vérité à deux bits, c’est-à-dire 00- 200c, 01-200d, 10-2060, 2062-11. Utilisez une table de vérité pour convertir un fichier binaire en un flux invisible et incluez-le dans n’importe quelle lettre de motivation n’importe où.
Cryptage du contenu caché
Et si l’intrus découvrait d’une manière ou d’une autre l’existence des personnages cachés et essayait de forcer la table de vérité à révéler le secret.
C’est l’endroit Principe de Kerckhoff Entrer:
Un système cryptographique idéal doit être sécurisé même si tout ce qui concerne le système est exposé au public, à l’exception de la clé secrète.
Nous avons donc besoin d’une sorte de clé pour verrouiller nos secrets. À cette fin, une fonction de génération de clé basée sur un mot de passe peut être utilisée pour produire une clé forte qui, à son tour, est utilisée pour chiffrer nos messages. Le chiffrement de flux AES-CTR avec IV aléatoire et sel peut être utilisé pour chiffrer le secret caché car il a l’avantage supplémentaire de ne pas nécessiter de remplissage contrairement aux chiffrements par blocs car il augmente la longueur du message.
pression
Maintenant que nous faisons beaucoup de codage, nous avons définitivement besoin de la compression maximale possible.
Comme vous pouvez le voir, bien que nous ayons six caractères ZWC, seuls 4 caractères ont été utilisés car 6 n’est pas une puissance de 2, les deux caractères supplémentaires (U+2063, U+2064) peuvent être utilisés pour créer une couche supplémentaire de compression Huffman extraits pour réduire la redondance. Une fois le secret converti en ZWC, les ZWC les plus fréquents dans le flux sont sélectionnés, par exemple U + 200D et U + 2060. Désormais, toutes les deux itérations consécutives de U + 200D et U + 2060 peuvent être remplacées par une U + 2063 ou U + 2064. Cela permet d’économiser des lots où la redondance est fréquemment observée.
Nous avons maintenant deux couches de compression qui tirent le meilleur parti des six invisibles ! Fabuleux!
Donc, en combinant tout cela, deux de mes amis et moi avons construit StegCloak, qui est un module de masquage javascript pur conçu dans un style de programmation fonctionnel pour réaliser ce qui a été dit ci-dessus.
En voici une démo rapide :
Nous espérons que vous l’apprécierez autant que j’ai aimé le construire !
profitable StegCape dans un github ou visitez https://stegcloak.surge.sh.