This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
Tuesday, 11 November 2025
Alors que dans cet article 'manique' en train d'écrire, j'ai pensé que je partagerais unSensibleprojet que j'ai construit pour un organisme de bienfaisance pendant COVID.C'est un sujet très sensible, donc j'ai obtenu toutes les permissions applicables et j'ai accepté de ne partager que laconcepts
qui divergent et sont beaucoup plus triviaux que le système réel.Ça fait partie d'une longue histoire decachent des messages en clair
et c'est toujours aussi critique que jamais de passer des messages à l'école à l'espionnage d'entreprises multinationales massives et les puissances mondiales s'espionnent l'un sur l'autre.
Des tyrans anciens aux maîtres espions de la guerre froide aux concepteurs modernes qui résolvent les problèmes de sécurité, cacher l'information en clair a été à la fois un art et une science.
Ce post explore l'évolution fascinante des systèmes de communication secrète, des messages tatoués sur les cuir chevelus à un système de chat sécurisé basé sur JavaScript que j'ai construit qui était si subtil, même la surveillance active ne révélerait pas son existence.
Origines antiques : Histiaeus et le Messager tatoué
**Notre histoire commence vers 500 avant JC avec Histiaeus de Miletus, un tyran grec détenu captif à Susa par le roi perse Darius Ier.**Désireux de communiquer avec son gendre Aristagora de retour à Miletus sans susciter la suspicion persane, Histiaeus a conçu une solution ingénieuse.
Il a choisi son esclave le plus fiable, rasé la tête de l'homme et tatoué un message directement sur son cuir chevelu.Après avoir attendu que les cheveux repoussent, il envoya l'esclave à Miletus avec des instructions simples: "Dis à Aristagoras de te raser la tête." - Le message, exhortant à la rébellion contre la domination persane, était littéralement caché sous la surface.Les Perses, habitués à intercepter les messages conventionnels, ne soupçonnaient jamais que le messager lui-même portait l'intelligence.Cela a déclenché la Révolte Ionienne, un moment pivot dans les relations gréco-persiennes.
: Le canal de communication lui-même est apparu complètement inoffensif.**L'esclave était juste... un esclave voyageur.**Pas de parchemins suspects, pas de lettres codées, rien à intercepter.
John Steeple Davis
L'histoire des plus grandes nations, de l'aube de l'histoire au XXe siècle[(publié en 1900), Domaine public,](https://books.google.co.uk/books?id=soYmDwAAQBAJ&pg=PA297&redir_esc=y#v=onepage&q&f=false)Lien
La technique d'Histiaeus illustrestéganographie- la pratique consistant à cacher des messages dans des médias non secrets.
Contrairement à la cryptographie, qui rend les messages illisibles, la stéganographie cache l'existence même de la communication.Encres invisibles et secrets chimiquesPendant la guerre révolutionnaire, l'armée continentale utilisait largement des encres invisibles.
La tache la plus sophistiquée a été "Agent 711" (alias George Washington), développé par le médecin et espion James Jay.
sequenceDiagram
participant Agent as Field Agent
participant Location as Dead Drop Location
participant Signal as Public Signal Spot
participant Handler as Handler
Agent->>Location: Place material in dead drop
Agent->>Signal: Leave innocuous mark (chalk, flower pot)
Handler->>Signal: Checks for signal during routine
Handler->>Location: Retrieves material
Handler->>Signal: Leaves confirmation mark
Agent->>Signal: Confirms retrieval
Note over Agent,Handler: No direct contact between parties
encres invisiblesa évolué plus loin.Les Britanniques utilisaient tout, du jus de citron (activé par la chaleur) aux composés chimiques sophistiqués et oui, du sperme humain (je suppose!)...
Les Allemands ont développé des micropoints - des photographies réduites à la taille d'une période imprimée qui pourrait être cachée dans la correspondance simple.
Le génie n'était pas seulement la dissimulation physique, mais le
Pour les observateurs, il s'agissait de détails insignifiants dans le paysage urbain.
Il y avait même des dispositifs spéciaux comme un pic qui pouvaient être dissimulés sous le sol jusqu'à ce que le message soit récupéré (aussi bon pour les conditions humides / zones ouvertes).
Original pixel: RGB(11010110, 10110101, 01011010)
Modified pixel: RGB(11010111, 10110100, 01011011)
↑changed ↑changed ↑changed
Par l'Agence centrale de renseignement - ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Numéros Stations: Secrets de radiodiffusionDe la guerre froide à nos jours, de mystérieuses émissions de radio ont fasciné les auditeurs du monde entier.)

"nombre de stations"

transmettre des chaînes de nombres, de mots ou de tons - gibberish apparent à des auditeurs occasionnels.
Mais à l'agent avec le bon tampon unique ?Il s'agit d'instructions, de mises à jour du renseignement ou de données essentielles à la mission.).
Incraçable
L'informatique moderne a révolutionné la stéganographie.
Voici un exemple (pas GRAND)mais à partir d'ici
steganopng
Codes généraux
: Les premières lettres de phrases épelent un messageSubstitution de mots: Utilisation des synonymes dans les motifs pour encoder les bits
: Des espaces supplémentaires, des onglets ou des coupures de ligne transportent des données - aussi couramment utilisées pour détecter les fuites d'entreprises où une « signature » de chaque copie est subtilement codée dans les changements d'espaces blancs. (Pourquoi les journalistes rechignent physiquement des documents avant publication; pour protéger leurs sources contre le démasquage stéganographique).Steganographie en réseauDonnées de cache dans les schémas de trafic réseau:
Chaînes de temps
: Calage variable des paquets pour coder les informationsManipulation du protocole I came up with; for that one even screen snapshotting won't detect it (using a form of temporal steganography...you can have a guess what that means 😜 ).
: Faire passer les données secrètes comme du trafic légitime (Netflix streaming, jeu, etc.)compatibility-shim1.jsLe défi moderne : la sécurité numérique dans les environnements hostilespolyfill-helpers.jsCela nous amène à un problème contemporain qui a exigé toutes les leçons de la stéganographie historique:
<script src="https://cdn.example.org/compatibility-shim1.js"></script>
Comment fournissez-vous des communications privées sécurisées à une personne dont la vie numérique est surveillée par une personne physiquement présente dans sa maison?
Nouveaux comptes de messagerie?ref=newsletter_2021_march: Facile à découvrir, méfiant à créer
// Heavily simplified example - actual implementation was obfuscated and encrypted
const params = new URLSearchParams(window.location.search);
if (params.has('ref') && params.get('ref').match(/newsletter_\d{4}_[a-z]+/)) {
// Trigger secure chat initialization
}
La solution que j'ai développée s'est inspirée de tous les principes de la stéganographie historique, adaptés à l'ère du web.
Voilà comment ça se passe.
**Peut-être qu'elle l'aurait fait.**J'ai travaillé.
Phase 1 : La charge utile innocue
Le fichier lui-même était :
sequenceDiagram
participant User as User Browser
participant Site as Organization Website
participant CDN as CDN (Shim Script)
participant Secure as Secure Chat Backend
participant Real as Real Support System
User->>Site: Visit with ?ref=newsletter_2021_march
Site->>CDN: Load compatibility-shim1.js
CDN->>User: Script with hidden trigger
User->>User: Script detects parameter
User->>User: Chat window appears
alt Correct codeword entered
User->>Secure: Authenticate with codeword
Secure->>User: Establish encrypted channel
Note over User,Secure: Secure communication session
else Wrong codeword or no codeword
User->>Real: Forward to real support
Real->>User: "Please describe your issue"
Note over User,Real: Appears as normal support contact
end
Cela semblait complètement inoffensif:
Le chat connecté au moteur sécurisé
OU transmis au support réel avec un premier message inoffensif
Rien n'indique que quelque chose de spécial ait été tenté
: Délais aléatoires ajoutés pour éviter la reconnaissance des motifs
Point d'arrivée
Pas de cookies spéciaux
Pas de journaux de console
Si quelqu'un a vérifié l'ordinateur par la suite:
// Simplified example of the pattern
const encryptedPayload = "U2FsdGVkX1+xYz... [encrypted data]";
const decryptionKey = deriveKeyFromContext(window.location, document.referrer);
if (validTriggerDetected()) {
const chatModule = decryptPayload(encryptedPayload, decryptionKey);
chatModule.initialize();
}
L'historique du navigateur a montré une visite normale du site Web de l'organisation
Le modèle de sécurité
// Simplified example
async function processInput(userInput) {
// Always perform both operations
const secureResult = await checkSecureAuth(userInput);
const normalResult = await checkNormalAuth(userInput);
// Add random delay to normalize timing
await randomDelay(100, 300);
// Return appropriate result
return secureResult.valid ? secureResult : normalResult;
}
Ce système a mis en œuvre plusieurs principes clés en matière de sécurité :
Déviabilité à tous les calques
// Hash the codeword with environmental factors
const authToken = await hashWithContext(
userInput,
window.navigator.userAgent,
currentTimestamp,
siteIdentifier
);
Comme les stations de numéros, le système a été conçu de telle sorte que:
Comme l'esclave itinérant d'Histiaeus, le système avait une véritable utilité:
Le widget chat était un véritable outil de support
Pas d'états partiels dangereux
Code résistant au temps
Au lieu de cela:
Cela signifiait :
Hypothèses de confiance zéro
Dégradation gracieuse
: Doit raser la tête pour voir doit connaître URL + mot de code
: Drop window -Expiration du mot de code
: L'agent ne rencontre jamais le gestionnaire L'utilisateur ne révèle jamais la véritable intention
Cette technologie existe dans un espace éthiquement complexe.
Coordination pénale
La technologie est neutre; l'application détermine la moralité.
: Modèle de menace justifié sophistication
: Système conçu pour un cas d'utilisation spécifique et limitée
Mais quiconque construit des systèmes similaires doit s'attaquer sérieusement à ces questions.
: Surveillance de l'exécution de code conditionnel basée sur les paramètres d'URL
Analyse du calendrier
// Never store sensitive data in localStorage
// Use sessionStorage with expiry, or pure memory
class SecureSession {
constructor() {
this.data = new Map(); // Memory only
this.expiry = Date.now() + (30 * 60 * 1000); // 30 min
// Clear on page unload
window.addEventListener('beforeunload', () => this.destroy());
// Auto-expire
setTimeout(() => this.destroy(), 30 * 60 * 1000);
}
destroy() {
this.data.clear();
// Overwrite memory (best effort)
this.data = null;
}
}
Cependant, la détection est confrontée à de graves défis:
// Lazy loading of secure components
async function initializeSecureChat() {
// Only load if triggered
if (!shouldInitialize()) return;
// Dynamic import to keep main bundle small
const { SecureChat } = await import('./secure-chat.encrypted.js');
// Initialize asynchronously
requestIdleCallback(() => {
new SecureChat().initialize();
});
}
: Des millions de scripts légitimes utilisent des techniques similairesChiffrement: Tout le trafic web moderne est crypté; aucun moyen d'inspecter
## Secure Chat System - Operator Manual
### Activation
- URL pattern: `?ref=newsletter_YYYY_month`
- Current codewords: See separate secure document
- Rotation schedule: Monthly
### Incident Response
- If system discovered: Immediate codeword rotation
- If user identity compromised: Emergency protocol Alpha
- If backend compromised: Failover to backup, investigate
### Audit Trail
- Log only: Connection timestamp, session duration
- Never log: User identity, message content, codewords
: Impossible d'auditer tous les JavaScripts sur tous les sites
Évolution
Journalisme dans des environnements hostiles
Sécurité des entreprises
Les organisations pourraient utiliser des techniques comparables pour :
Exfiltration d'informations sur les dénonciateurs d'alerte
Protection des sources de journalistes
Au fur et à mesure que les capacités de surveillance s'accroîtront, la sophistication des techniques de dissimulation se fera de même :
Trafic de couverture généré par l'IA
L'apprentissage automatique pourrait générer un trafic de leurres parfaitement réaliste:
Stéganographie quantique
L'informatique et les communications quantiques offrent de nouvelles possibilités:
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.