Steganografia este o tehnică prin care informația este ascunsă într-o zonă de informație aparent inofensivă pentru a o păstra secretă. Etimologic, termenul combină cuvântul grec steganos (care înseamnă "ascuns") și graphia (care înseamnă "scris").
Scopul este similar cu cel al criptografiei, dar diferă de aceasta din urmă, deoarece ascunde chiar existența informației secrete. Steganografia a fost folosită în situații în care criptografia ar fi fost incriminatorie, precum în regimurile totalitare ce monitorizau orice tip de comunicare.
Steganografia fizică are o lungă istorie, fiind folosită încă din antichitate. Primul caz a fost consemnat de Herodot și a presupus raderea părului unui sclav, scrierea unui mesaj secret pe scalp, trecerea unui perioade de timp pentru ca părul să crească din nou, iar apoi trimiterea sclavului la destinație cu instrucțiuni ca acesta să fie ras pe cap pentru recuperarea mesajului. Steganografia s-a mai practicat și prin intermediul cernelurilor secrete, al codului Morse, al mesajelor scrise pe plicuri sub timbre etc.
Steganografia digitală este practica prin care o informație este ascunsă într-un alt tip de informație, de obicei, un fișier multimedia. Imaginile sunt perfecte pentru astfel de activități, deoarece sunt mari și conțin informații atât de multe despre atât de mulți pixeli, încât este foarte greu de observat că o imagine a fost modificată dacă nu am ști de dinainte algoritmul care a fost folosit. Algoritmii cei mai folosiți sunt: modificarea biților cei mai nesemnificativi ai fiecărui pixel și recombinarea lor pentru a obține mesajul secret sau modificarea biților de culori ai fiecărui pixel "n" din imagine.
Într-un sistem digital, culorile sunt cel mai frecvent utilizate sub forma unor combinații cumulante de red/roșu (R), blue/albastru (B), și green/verde (G). Fiecare din această culoare primară primește o valoare de la 0 la o valoare maximă dictată de dimensiunea numerelor folosite pentru a reprezenta cantitatea de culori primare. Astfel, dacă se folosesc 8 biți pentru a reprezenta cantitatea unei singure culori primare, putem reprezenta 256 de nuanțe pentru o singură culoare primară. Având trei culori primare, putem reprezenta peste 16 milioane de culori cu 24 de biți.
Vom reprezenta culorile RGB în format [R, G, B] (eg. "[120, 100, 10]"). În spațiul de 8 biți al RGB, [0, 0, 0] înseamnă negru, [255, 255, 255] înseamnă alb, iar [124, 216, 255] înseamnă un albastru deschis. Scara tonurilor de gri (grayscale) se poate reprezenta similar. În timp ce RGB are o valoare pentru fiecare din cele 3 culori primare, valorile de pe scara tonurilor de gri au nevoie doar de reprezentarea intensității. Valoarea intensității va determina cât de negru sau alb să fie acel gri. Ne vom referi la culorile de pe scara tonurilor de gri printr-un singur număr. Într-un singur byte de pe scara tonurilor de gri, negrul va avea valoarea 0, albul 255, iar gri deschis 200.
Un pixel este unitatea fundamentală a imaginilor digitale. Este cel mai mic punct a cărui culoare poate fi controlată. Pe un monitor de calculator, un pixel emite o culoare din spectrul luminos. Când înregistrăm imaginile, le evaluăm dimensiunea în pixeli. Fiecare pixel este poziționat într-o grilă (grid), atribuindu-i-se culoarea potrivită.
Fiecare canal de culoare R, G și B, din spațiul de culoare RGB este reprezentat de un număr, iar acest număr este reprezentat prin câțiva biți. Câmpul unui bit (bit plane) se referă la toți biții din poziția unui singur bit pe toată suprafața imaginii. Să luăm drept exemplu numărul 10, a cărui reprezentare binară de 8 biți este "00001010". Începând din dreapta, avem un "0" în câmpul 0 al bitului, un "1" în primul, un "0" în al doilea și tot așa pentru toți cei 8 biți. Într-o imagine, un câmp de biți se referă la valorile de 0 sau 1 dintr-o anume poziție pentru toți pixelii, aranjați în același format. În steganografia LSB, sunt manipulate câmpurile bit cel mai puțin semnificative.
Imbricarea Least Significant Bit (LSB - Cel mai nesemnificativ bit) este o strategie ușor de implementat în steganografie. Precum toate metodele steganografice, aceasta ascunde datele în cadrul unor elemente pentru ca aceste date să nu fie observate. Tehnica funcționează prin înlocuirea unor informații dintr-un pixel dat cu informații atașate datelor din imagine.
Deși datele se pot include/imbrica (embed) într-o imagine pe un câmp de biți, imbricarea LSB se realizează pe biții cel mai puțin semnificativi. Acest lucru minimizează variația de culori pe care o creează imbricarea. De exemplu, imbricarea în biții cel mai puțin semnificativi schimbă valoare culorii cu 1 unitate. Imbricarea în planul secund de biți poate schimba valoarea culorii cu 2 unități. Dacă imbricarea se realizează la nivelul celor mai puțin semnificativi 2 pixeli, rezultatul este că acele culori din fundal (on the cover) pot fi oricare dintre cele 4 culori după imbricare. Steganografia evită cât de mult posibil introducerea variațiunilor, pentru a minimiza detecția. În cadrul imbricării LSB, vom pierde mereu o parte din informația de pe imaginea din fundal. Acesta este un efect direct al imbricării directe într-un pixel. Pentru a face acest lucru, trebuie să eliminăm o parte a informației de fundal și să o înlocuim cu informația din datele pe care vrem să le ascundem.
Algoritmul LSB se poate aplica folosind 1, 2 sau 4 din biții cel mai puțin semnificativi. Când se folosește un număr mare de biți, posibilitatea ca artefactele vizuale să devină evidente în cadrul imaginii crește, dar crește și capacitatea globală de a încapsula informație. Algoritmul LSB funcționează doar pentru imagini care sunt codate într-un format de compresie ce nu permite pierderi (e.g. bmp, png), deși se pot utiliza alți algoritmi steganografici pentru formate ce permit pierderi, cum este cazul formatului JPEG.
Steganografia bazată pe principiul DCT (Discrete cosine transform) este un subtip al stenganografiei LSB des aplicat pentru formatul JPEG ( când JPEG este formatul ce susține informația ascunsă). Prin această metodă, datele comunicate sunt codate în coeficienții DCT. Această metodă duce la o capacitate mai mică de încapsulare a informației; unul dintre motive fiind faptul că valorile 0 și 1 ale coeficienților nu pot fi modificate, deci datele nu pot fi încapsulate când coeficienții au valorile 0 și 1.
Primul pas este să decidem câte câmpuri de bit vor fi folosite din imaginea de fundal. Pentru acest exemplu vom folosi 2 biți.
Folosind o implementare simplă a algoritmului LSB am inclus textul din romanul lui Hemingway The Old Man and The Sea (Bătrânul și marea) într-o imagine normală. Imaginea normală și cea procesată se pot observa mai jos, ochiul uman neputând observa diferențele. Acesta este un aspect interesant, deoarece imaginea procesată conține peste 1000 de linii de mesaj semnificativ.
Imaginea originală
Purtătorii de informații (payload carriers) sunt greu de detectat de aplicațiile anti-malware, deoarece arată ca imagini sau fișiere obișnuite. Din aceste motive, tehnicile steganografice se folosesc din ce în ce mai mult de malware sau de spionajul cibernetic. Steganografia nu ascunde doar datele, ci și faptul că se face schimb de date. Instrumentele de securitate de tipul deep packet inspection (DPI) sau anti-APT (advanced persistent threat) nu pot verifica toate comunicațiile dintr-o rețea corporate.
Proofpoint a identificat în 2017 un loader periculos Zero.T care ascundea cod în unele imagini, iar apoi le procesa, astfel încât să obțină module periculoase:
Fișiere originale | Fișiere procesate |
---|---|
fsguidll.bmp | fsguidll.exe |
fslapi.bmp | fslapi.dll |
fslapi.dll.bmp | fslapi.dll.bmp |
În 2020, Kaspersky Labs a descoperit un malware similar, numit MontysThree ce folosește steganografia și câteva tactici de criptare pentru a construi și rula cod periculos în sistemele țintă. Acest malware caută anumite documente Microsoft Office și Adobe Acrobat stocate în directoare și le încarcă în servicii cloud publice legitime precum Google, Microsoft și Dropbox.
Dacă nu se cunoaște de la bun început algoritmul folosit pentru codarea informației, este dificilă detectarea prezenței informației ascunse folosind algoritmi steganografici. Cea mai eficientă metodă este să se cunoască imaginea originală și să se compare imaginea potențial alterată cu cea originală, dar acest lucru este improbabil în multe dintre cazuri, deoarece nu avem imaginea originală. Alte metode presupun realizarea unei analize statistice pe datele din imagine pentru a vedea cât de ordonate sunt. Dacă observăm că sunt mai multe date decât ne-am aștepta, atunci putem presupune că există informație ascunsă, dar această metodă nu va funcționa dacă informația inclusă este semnificativ mai redusă decât potențialul maxim de informație ce poate fi inclusă.
Unele aplicații pot folosi algoritmi steganografici nu pentru a ascunde informație, ci pentru a crește cantitatea de informație ce poate fi transmisă fără a crește capacitatea de bandă. O astfel de aplicație trebuie să respecte câteva specificații: trebuie să aibă viteză de transmisie limitată (de bandă), trebuie să transmită mesaj audio și imagini, nu trebuie limitată la nivelul puterii de calcul. Cel mai bun candidat ar fi explorarea spațială, din moment ce o navă de explorare are capacitate mare de calcul, trebuie să transmită imagini pe Terra, iar rata de transmisie în spațiu este foarte mică.
Steganografia este o metodă incredibil de eficientă de a ascunde comunicarea. Ușurința și eficiența imbricării LSB o fac o metodă atractivă de a transmite mesaje ce nu pot fi detectate. Având în vedere popularitatea în creștere a serviciilor ce presupun schimb de imagini pe Internet, este posibil ca o imagine ce este partajată online pentru o scurtă perioadă de timp să nu fie analizată. Deși steganografia nu garantează că un mesaj nu poate fi decodat, combinarea steganografiei cu criptarea oferă o cale de comunicare greu de detectat, aproape imposibil de decodat de o entitate terță.
Deși steganografia poate fi detectată statistic, asigurarea securității prin numere și tipare obscure de imbricare poate limita decodarea mesajului ascuns.
Eficiența steganografiei, ușurința cu care se poate implementa, extensibilitatea sa, toate sugerează că steganografia poate deveni o serioasă cauză a problemelor de securitate în viitorul apropiat.
Least Significant Bit Embeddings: Implementation and Detection, AARON MILLER, MAY 2012
MontysThree: Industrial espionage with steganography and a Russian accent on both sides
Oops, they did it again: APT Targets Russia and Belarus with ZeroT and PlugX