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
Terwijl in dit huidige 'manic' artikel schrijven podium dacht ik dat ik zou delen eengevoeligproject Ik bouwde voor een goed doel tijdens COVID.Dit is een zeer gevoelig onderwerp dus ik heb alle toepasselijke permissies gekregen en ging ermee akkoord om ALLEEN deconcepten
Die verschillen en zijn veel triviaaler dan het echte systeem.Het maakt deel uit van een lange geschiedenis vanverbergt berichten in het volle zicht
En het is nog steeds zo kritisch als altijd van boodschappen doorgeven op school aan massale multinationale bedrijfsspionage en wereldmachten die elkaar bespioneren.
Van oude tirannen tot Cold War spymasters tot moderne ontwikkelaars die veiligheidsuitdagingen oplossen, het verbergen van informatie in het volle zicht is zowel een kunst als een wetenschap.
Dit bericht verkent de fascinerende evolutie van geheime communicatiesystemen, van berichten getatoeëerd op scalps tot een JavaScript-gebaseerde beveiligde chat systeem dat ik gebouwd dat was zo subtiel, zelfs actieve monitoring zou niet onthullen zijn bestaan.
Oude oorsprongen: Histiaeus en de getatoeëerde boodschapper
**Ons verhaal begint rond 500 v.Chr. met Histiaeus van Miletus, een Griekse tiran die gevangen wordt gehouden in Susa door de Perzische koning Darius I.**Wanhopig om te communiceren met zijn schoonzoon Aristagoras terug in Miletus zonder Perzische argwaan op te wekken, bedacht Histiaeus een ingenieuze oplossing.
Hij koos zijn meest vertrouwde slaaf, scheerde het hoofd van de man, en tatoeëerde een bericht direct op zijn hoofdhuid.Nadat hij had gewacht tot het haar terug zou groeien, stuurde hij de slaaf naar Miletus met eenvoudige instructies: "Vertel Aristagoras om je hoofd te scheren." - De boodschap, aandringend op rebellie tegen de Perzische heerschappij, was letterlijk verborgen onder het oppervlak.De Perzen, gewend aan het onderscheppen van conventionele boodschappen, vermoedden nooit dat de boodschapper zelf de intelligentie droeg.Dit leidde tot de Ionische Opstand, een cruciaal moment in de Grieks-Perzische relaties.
: Het communicatiekanaal zelf bleek volledig onschuldig.**De slaaf was gewoon... een reizende slaaf.**Geen verdachte rollen, geen gecodeerde letters, niets te onderscheppen.
John Steeple Davis
Het verhaal van de grootste naties, van het begin van de geschiedenis tot de twintigste eeuw[(published in 1900), Public Domain,](https://books.google.co.uk/books?id=soYmDwAAQBAJ&pg=PA297&redir_esc=y#v=onepage&q&f=false)Verband
Histiaeus' techniek illustreertsteganografie- de praktijk van het verbergen van berichten binnen niet-geheime media.
In tegenstelling tot cryptografie, die berichten onleesbaar maakt, verbergt steganografie het bestaan van communicatie.Onzichtbare Inkten en chemische geheimenTijdens de Revolutionaire Oorlog gebruikte het Continental Army veel onzichtbare inkten.
De meest verfijnde was "Agent 711's" (ook bekend als George Washington) vlek, ontwikkeld door arts en spymaster 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
onzichtbare inktverder geëvolueerd.De Britten gebruikten alles van citroensap (warmte-geactiveerd) tot verfijnde chemische verbindingen en ja, menselijk (ik neem aan!) sperma...
De Duitsers ontwikkelden microdots - foto's verminderd tot de grootte van een gedrukte periode die in gewone correspondentie verborgen kon worden.
Het genie was niet alleen de fysieke vermissing, maar de
Voor waarnemers waren dit nietszeggende details in het stadslandschap.
Er waren zelfs speciale apparaten zoals een spike die onder de grond kon worden verborgen totdat de boodschap werd opgehaald (ook geweldig voor natte omstandigheden / open gebieden).
Original pixel: RGB(11010110, 10110101, 01011010)
Modified pixel: RGB(11010111, 10110100, 01011011)
↑changed ↑changed ↑changed
Door The Central Intelligence Agency - Drop Spike, Public Domain, https://commons.wikimedia.org/w/index.php?curid=29197364
Numbers Stations: Broadcasting SecretsVan de Koude Oorlog tot vandaag, hebben mysterieuze radio-uitzendingen wereldwijd gefascineerd luisteraars.)

"aantal stations"

zend strings van getallen, woorden, of tonen - schijnbare gebrabbel naar casual luisteraars.
Maar aan de agent met het juiste eenmalige pad?Dit zijn instructies, informatie updates, of missie-kritische gegevens.).
Onvindbaar
Moderne computing heeft de steganografie veranderd.
Hier is een voorbeeld (niet geweldigmaar vanaf hier
steganopng
Acrostische codes
: Eerste letters van zinnen spellen een berichtWoordvervanging: Gebruik van synoniemen in patronen om bits te coderen
: Extra spaties, tabs, of lijnbreuken dragen gegevens - ook vaak gebruikt om bedrijfslekken op te sporen waar een 'signatuur' van elke kopie subtiel gecodeerd is in witruimteveranderingen. (Waarom vaak journalisten fysiek documenten opnieuw zullen typen voor publicatie; om hun bronnen te beschermen tegen steganografie gebaseerd ontmaskeren).Netwerk SteganografieGegevens verbergen in netwerkverkeerspatronen:
Timingkanalen
: Varying pakket timing om informatie te coderenProtocolmanipulatie 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 😜 ).
: Het maken van geheime gegevens eruit zien als legitiem verkeer (Netflix streaming, gaming, enz.)compatibility-shim1.jsDe moderne uitdaging: digitale veiligheid in vijandelijke omgevingenpolyfill-helpers.jsDit brengt ons bij een hedendaags probleem dat alle lessen van de historische steganografie vereist:
<script src="https://cdn.example.org/compatibility-shim1.js"></script>
Hoe biedt u veilige privé-communicatie aan iemand wiens digitale leven wordt gecontroleerd door iemand die fysiek aanwezig is in zijn huis?
Nieuwe e-mailaccounts?ref=newsletter_2021_march: Makkelijk te ontdekken, verdacht om te creëren
// 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
}
De oplossing die ik ontwikkelde was gebaseerd op elk principe van historische steganografie, aangepast aan het webtijdperk.
Dit is hoe het gaat.
MisschienWerkte.
Fase 1: De onschuldige payload
Het bestand zelf was:
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
Dit zag er totaal onschuldig uit:
De chat verbonden met beveiligde backend
OF doorgestuurd naar echte ondersteuning met een onschuldig eerste bericht
Geen indicatie dat er iets bijzonders werd geprobeerd.
: Willekeurige vertragingen toegevoegd om patroonherkenning te voorkomen
Eindpunt
Geen speciale cookies
Geen console-logs
Als iemand daarna de computer heeft gecontroleerd:
// 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();
}
Browser geschiedenis toonde een normaal bezoek aan de website van de organisatie
Het beveiligingsmodel
// 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;
}
Dit systeem implementeerde verschillende belangrijke beveiligingsbeginselen:
Ontkenning op elke laag
// Hash the codeword with environmental factors
const authToken = await hashWithContext(
userInput,
window.navigator.userAgent,
currentTimestamp,
siteIdentifier
);
Net als getallenstations is het systeem zo ontworpen dat:
Net als Histiaeus' reizende slaaf, had het systeem een echt nut:
Het chat-widget was een echte ondersteuningstool
Geen gevaarlijke partiële toestanden
Timing-Resistant Code
In plaats daarvan:
Dit betekende:
Aannames van nul vertrouwen
Eervolle degradatie
: Moet hoofd scheren om te zien ↔ Moet weten URL + codeword
: Slagvenster ↔ Codewoord verlopen
: Agent ontmoet nooit begeleider ↔ Gebruiker onthult nooit ware intentie
Deze technologie bestaat in een ethisch complexe ruimte.
Criminele coördinatie
De technologie is neutraal; de toepassing bepaalt de moraal.
: Bedreiging model gerechtvaardigd verfijning
: Systeem ontworpen voor specifiek, beperkt gebruik geval
Maar iedereen die soortgelijke systemen bouwt, moet deze vragen serieus nemen.
: Monitoring voor voorwaardelijke code uitvoering op basis van URL-parameters
Timinganalyse
// 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;
}
}
De detectie staat echter voor ernstige uitdagingen:
// 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();
});
}
: Miljoenen legitieme scripts gebruiken soortgelijke techniekenVersleuteling: Alle moderne webverkeer is versleuteld; geen manier om te inspecteren
## 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
: Onmogelijk om alle JavaScript op alle websites te controleren
Evolution
Journalistiek in vijandige omgevingen
Bedrijfsveiligheid
Organisaties kunnen vergelijkbare technieken gebruiken voor:
Exfiltratie van informatie over klokkenluiders
Bescherming van journalistieke bronnen
Naarmate de surveillancecapaciteit groeit, zal de verfijning van de verborgen technieken ook:
Algenerated Cover Traffic
Machine learning kan perfect realistisch afleidingsverkeer genereren:
Kwantum Steganografie
Quantum computing en communicatie bieden nieuwe mogelijkheden:
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.