CarrierEdit
Carrierul este semnalul, fluxul sau fișierul de date în care se ascund datele ascunse prin efectuarea unor modificări subtile. Exemplele includ fișiere audio, fișiere de imagine, documente și fișiere executabile. În practică, purtătorul ar trebui să arate și să funcționeze la fel ca și purtătorul original nemodificat și ar trebui să pară benign pentru oricine îl inspectează.
Certe proprietăți pot ridica suspiciunea că un fișier transportă date ascunse:
- Dacă datele ascunse sunt mari în raport cu conținutul purtătorului, ca în cazul unui document gol care are o dimensiune de un megabyte.
- Utilizarea unor formate învechite sau a unor extensii slab suportate care strică instrumentele utilizate în mod obișnuit.
Este o cerință criptografică ca purtătorul (de ex. fotografie) să fie original, nu o copie a ceva disponibil public (de ex, descărcată). Acest lucru se datorează faptului că datele sursă disponibile public ar putea fi comparate cu versiunea cu un mesaj ascuns încorporat.
Există o cerință mai slabă ca mesajul încorporat să nu modifice statisticile purtătorului (sau alți parametri) astfel încât prezența unui mesaj să fie detectabilă. De exemplu, dacă cei mai puțin semnificativi biți ai canalului roșu al pixelilor de cameră dintr-o imagine au o distribuție gaussiană, dat fiind un câmp colorat constant, o steganografie simplă a imaginii care produce o distribuție aleatorie a acestor biți ar putea permite discriminarea imaginilor stego de cele neschimbate.
Volumul imens al mediilor moderne (cca 2014) și inane cu lățime de bandă mare (de ex, youtube.com, sursele bittorrent. eBay, Facebook, spam, etc.) oferă oportunități ample pentru comunicarea ascunsă.
ChainEdit
Datele ascunse pot fi împărțite între un set de fișiere, producând un lanț de purtători, care are proprietatea că toți purtătorii trebuie să fie disponibili, nemodificați și prelucrați în ordinea corectă pentru a recupera datele ascunse. Această caracteristică suplimentară de securitate se obține, de obicei, prin:
- utilizarea unui vector de inițializare diferit pentru fiecare purtător și stocarea acestuia în interiorul purtătorilor procesați -> CryptedIVn = Crypt( IVn, CryptedIVn-1 )
- utilizarea unui algoritm de criptografie diferit pentru fiecare purtător și alegerea acestuia cu un algoritm echiprobabilistic dependent de ordinea lanțului
Robustețe și criptografieEdit
Instrumentele de steganografie urmăresc să asigure robustețea față de metodele criminalistice moderne, cum ar fi steganaliza statistică. O astfel de robustețe poate fi obținută printr-o combinație echilibrată de:
- un proces de criptografie bazat pe flux;
- un proces de albire a datelor;
- un proces de codificare.
Dacă datele sunt detectate, criptografia ajută, de asemenea, la minimizarea pagubelor rezultate, deoarece datele nu sunt expuse, ci doar faptul că a fost transmis un secret. Expeditorul poate fi forțat să decripteze datele odată ce acestea sunt descoperite, dar criptarea negabilă poate fi exploatată pentru a face ca datele decriptate să pară benigne.
Un software de steganografie puternic se bazează pe o arhitectură pe mai multe niveluri cu un proces de ofuscare profund și documentat.
Motorul purtătorEdit
Motorul purtător este nucleul oricărui instrument de steganografie. Diferite formate de fișiere sunt modificate în moduri diferite, pentru a introduce în mod ascuns date ascunse în interiorul lor. Algoritmii de prelucrare includ:
- Injectarea (suspectă din cauza creșterii dimensiunii fișierului fără legătură cu conținutul)
- Generarea (suspectă din cauza trasabilității purtătorilor generați)
- Substituirea datelor auxiliare și a metadatelor
- Substituirea LSB sau adaptivă
- Manipularea spațiului de frecvență
.