CarrierEdit
De drager is het signaal, de stroom of het gegevensbestand waarin de verborgen gegevens worden verborgen door subtiele wijzigingen aan te brengen. Voorbeelden zijn audiobestanden, afbeeldingsbestanden, documenten en uitvoerbare bestanden. In de praktijk moet de drager er hetzelfde uitzien en hetzelfde werken als de oorspronkelijke, ongewijzigde drager, en er goedaardig uitzien voor iedereen die het inspecteert.
Een aantal eigenschappen kan de verdenking wekken dat een bestand verborgen gegevens bevat:
- Als de verborgen gegevens groot zijn in verhouding tot de inhoud van de drager, zoals in een leeg document dat een megabyte groot is.
- Het gebruik van verouderde formaten of slecht ondersteunde extensies die algemeen gebruikte hulpprogramma’s breken.
Het is een cryptografische vereiste dat de drager (bijv. een foto) origineel is, en geen kopie van iets dat publiekelijk beschikbaar is (bijv, gedownload). Dit is omdat de openbaar beschikbare brongegevens zouden kunnen worden vergeleken met de versie waarin een verborgen bericht is opgenomen.
Er is een zwakkere eis dat het ingesloten bericht de statistieken (of andere metriek) van de drager niet zodanig verandert dat de aanwezigheid van een bericht detecteerbaar is. Als bijvoorbeeld de minst significante bits van het rode camera-pixelkanaal van een afbeelding een Gaussiaanse verdeling hebben, gegeven een constant kleurveld, zou eenvoudige beeldsteeganografie die een willekeurige verdeling van deze bits produceert, het mogelijk maken om stego-afbeeldingen te onderscheiden van onveranderde afbeeldingen.
Het enorme volume van moderne (ca. 2014) en onzinnige media met hoge bandbreedte (bijv, youtube.com, bittorrent bronnen. eBay, Facebook, spam, enz.) biedt ruimschoots gelegenheid voor heimelijke communicatie.
ChainEdit
Verborgde gegevens kunnen worden verdeeld over een reeks bestanden, waardoor een carrier chain ontstaat, die de eigenschap heeft dat alle carriers beschikbaar moeten zijn, ongewijzigd, en in de juiste volgorde moeten worden verwerkt om de verborgen gegevens te kunnen achterhalen. Deze extra beveiliging wordt gewoonlijk bereikt door:
- voor elke drager een andere initialisatievector te gebruiken en deze in de verwerkte dragers op te slaan -> CryptedIVn = Crypt( IVn, CryptedIVn-1 )
- gebruik van een verschillend cryptografisch algoritme voor elke drager en de keuze ervan met een ketting-orde-afhankelijk equiprobabilistisch algoritme
Robuustheid en cryptografieEdit
Steganografie tools zijn gericht op robuustheid tegen moderne forensische methoden, zoals statistische steganalyse. Deze robuustheid kan worden bereikt door een evenwichtige combinatie van:
- een op stromen gebaseerd cryptografieproces;
- een proces voor het witmaken van gegevens;
- een coderingsproces.
Als de gegevens worden gedetecteerd, helpt de cryptografie ook de daaruit voortvloeiende schade te beperken, aangezien de gegevens niet worden blootgelegd, alleen het feit dat een geheim werd verzonden. De verzender kan worden gedwongen de gegevens te ontsleutelen als ze eenmaal zijn ontdekt, maar ontkenbare encryptie kan worden gebruikt om de ontsleutelde gegevens goedaardig te doen lijken.
Sterke steganografiesoftware berust op een meerlagige architectuur met een diepgaand, gedocumenteerd obfuscatieproces.
Carrier engineEdit
De carrier engine is de kern van elk steganografietool. Verschillende bestandsformaten worden op verschillende manieren bewerkt, om er heimelijk verborgen gegevens in op te nemen. Verwerkingsalgoritmen zijn onder meer:
- Injectie (verdacht vanwege de inhoudsonafhankelijke toename van de bestandsgrootte)
- Generatie (verdacht vanwege de traceerbaarheid van de gegenereerde dragers)
- Substitutie van aanvullende gegevens en metadata
- LSB- of adaptieve substitutie
- Manipulatie van frequentieruimte