Një parathënie e vogël
Steganografia, nëse dikush nuk e mban mend, është fshehja e informacionit brenda ndonjë konteneri. Për shembull, në imazhe (diskutuar dhe ). Të dhënat gjithashtu mund të fshihen në tabelat ndihmëse të sistemit të skedarëve (për këtë është shkruar ), dhe madje . Fatkeqësisht, të gjitha këto metoda kanë një mangësi: për të «futur» informacionin në një kontener pa u vënë re, nevojiten algoritme të sofistikuara që kanë parasysh veçoritë e konstrukcionit të brendshëm të kontenerit. Po ashtu, kanë dalë probleme me qëndrueshmërinë e kontenerit ndaj manipulimeve: për shembull, nëse editohet pak imazhi, informacioni i fshehur humbet.
A është e mundur ndonjëherë të eliminohen algoritmet e sofistikuara dhe manipulimet e hollësishme me të dhënat, dhe ndërkohë të sigurohet funksionaliteti i kontenerit dhe një nivel të pranueshëm të ruajtjes së të dhënave të fshehura? Përpara se të vazhdoj, do të thosha - po, është e mundur! Dhe madje do t'ju propozoj një utilitar.
Detajet e tmerrshme të metodës
Ideja Ă«shtĂ« e thjeshtĂ« si njĂ« goditje me çekiç nĂ« ballĂ«: disk ka zona nĂ« tĂ« cilat sistemi operativ kurrĂ« nuk shkruan (ose shkruan nĂ« raste tĂ« ralla). PĂ«r tĂ« mos e kĂ«rkuar kĂ«to zona me algoritme tĂ« ndĂ«rlikuara, ne do tĂ« pĂ«rdorim tepĂ«rsi â dmth do tĂ« kopjojmĂ« shumĂ« herĂ« informacionin tonĂ« tĂ« fshehtĂ« nĂ« tĂ« gjitha sektoret e diskut. MĂ« pas, direkt mbi kĂ«tĂ« bukuri mund tĂ« krijojmĂ« ndarjet e nevojshme, tĂ« formatojmĂ« sistemet e skedarĂ«ve, tĂ« shkruajmĂ« skedarĂ« dhe tĂ« vendosim sistemi operativ â pĂ«r shkak se njĂ« pjesĂ« e tĂ« dhĂ«nave sekrete do tĂ« ruhet dhe mund tĂ« nxirret, dhe shumĂ«fishimi do tĂ« ndihmojĂ« pĂ«r tĂ« ndĂ«rtuar tĂ«rĂ«sinĂ« fillestare nga copat.
Merita e këtij metodi është evidente: ne nuk jemi të varur nga formati i skedarëve, as edhe nga lloji i sistemit të skedarëve të përdorur.
Disavantazhet gjithashtu, mendoj, janë evidente:
- Të dhënat sekrete mund të ndryshohen vetëm me një riparim të plotë të diskut, me krijimin e mëvonshëm të përmbajtjes që shikohet nga përdoruesi. Në këtë proces, nuk duhet përdorur softueri që rikrijon diskun nga imazhi: ai do të rikrijojë edhe të dhënat sekrete të mëparshme.
- Sa më shumë janë të dhënat e fshehta, aq më shumë rrezikohet humbja e pjesës së informacionit.
- Nxjerrja e të dhënave nga disku mund të zgjasë shumë. Nga disa minuta deri në disa ditë (disqet moderne janë të mëdha).
Tani kalojmë në hollësi.
ĂshtĂ« e qartĂ« se nĂ«se thjesht shpĂ«rndajmĂ« tĂ« dhĂ«nat e fshehta nĂ« tĂ« gjithĂ« disku, ato do tĂ« mbeten tĂ« fshehura vetĂ«m nga syri i zakonshĂ«m. NĂ«se armatosim vĂ«shtrimin, le tĂ« themi, me njĂ« editor disku, tĂ« dhĂ«nat do tĂ« shfaqen nĂ« tĂ«rĂ« shkĂ«lqimin e tyre. Prandaj, Ă«shtĂ« mirĂ« t'i enkriptojmĂ« tĂ« dhĂ«nat qĂ« tĂ« mos duken. Do ta bĂ«jmĂ« enkriptimin thjeshtĂ«, por me stil: sipas algoritmit aes256-cbc. Klucin pĂ«r enkriptim do ta kĂ«rkojmĂ« nga pĂ«rdoruesi, le tĂ« mendojĂ« njĂ« fjalĂ«kalim tĂ« mirĂ«.
Pyetja tjetĂ«r Ă«shtĂ« se si tĂ« dallojmĂ« tĂ« dhĂ«nat «tĂ« sakta» nga ato tĂ« prishura. KĂ«tu na ndihmon kontrolli i shumĂ«s, dhe jo çdo lloj, por SHA1. Pse jo? Ajo Ă«shtĂ« e mirĂ« pĂ«r git, pra do tĂ« na pĂ«rshtatet edhe ne. E zgjidhur: do tâi pajisim çdo fragment tĂ« ruajtur tĂ« informacionit me kontrolle shumash, dhe nĂ«se pas dekryptimit ajo pĂ«rputhet â do tĂ« thotĂ« se dekryptimi e arriti qĂ«llimin.
Do t'ju nevojitet gjithashtu numri i fragmentit dhe gjatësia totale e të dhënave sekrete. Numri i fragmentit është i nevojshëm për të ndjekur cilat pjesë e kemi dekoduar tashmë dhe cilat kanë mbetur. Gjatësia totale do të na ndihmojë gjatë përpunimit të fragmentit të fundit, për të mos shkruar të dhëna të tepërta (në kuptimin e padding). Dhe për shkak se ndoshta po shkonim drejt një titulli, do ta shtojmë atje emrin e skedarit sekret. Ai do të jetë i dobishëm pas dekodimit, për të mos u shqetësuar se me çfarë ta hapim.
Po e testojmë metodën në praktikë
PĂ«r verifikim do tĂ« marrim mediun mĂ« tĂ« zakonshĂ«m â njĂ« flash drive. Kam gjetur njĂ« tĂ« vjetĂ«r prej 1 GB, qĂ« Ă«shtĂ« mĂ«se e mjaftueshme pĂ«r eksperimente. NĂ«se ju, siç mĂ« erdhi edhe mua nĂ« mendje, mendoni tĂ« mos shqetĂ«soheni me media fizike, por tĂ« testoni me njĂ« skedar â imazhin e disku, do t'ju them menjĂ«herĂ«: nuk do tĂ« funksionojĂ«. Kur formatohet njĂ« 'disk' i tillĂ«, Linux krijon skedarin nga e para dhe tĂ« gjitha sektorĂ«t e papĂ«rdorur do tĂ« mbushen me zero.
Si machine me Linux, fatkeq, duhet ta pĂ«rdorim stacionin meteorologjik qĂ« ndodhet nĂ« ballkon, i bĂ«rĂ« me Raspberry Pi 3. Nuk ka shumĂ« hapĂ«sirĂ« kujtese, prandaj nuk do tĂ« fshehim skedarĂ« tĂ« mĂ«dhenj. Do tĂ« kufizohemi nĂ« madhĂ«sinĂ« maksimale prej 10 megabajtĂ«sh. SkedarĂ«t shumĂ« tĂ« vegjĂ«l nuk kanĂ« kuptim tĂ« fshihen gjithashtu: utilitarja shkruan tĂ« dhĂ«nat nĂ« disk nĂ« grumbuj prej 4 KB. Prandaj, poshtĂ« do tĂ« kufizohemi me njĂ« skedar prej 3 KB â ai futet nĂ« njĂ« grumbull tĂ« tillĂ«.
Do të tallim me flash disk-un në mënyrë graduale, duke kontrolluar pas çdo etape nëse informacioni i fshehur është lexuar:
- Formatimi i shpejtë në formatin FAT16 me madhësinë e grumbujve prej 16 KB. Kjo është ajo që propozon Windows 7 të bëjë me flash disk-un që nuk ka sistem skedari.
- Mbushja e flash disk-ut me çdo lloj plehrash në 50%.
- Mbushja e flash disk-ut me çdo lloj plehrash në 100%.
- Formatimi «i gjatë» në formatin FAT16 (me riparimin e tërë përmbajtjes).
Dy provat e para, siç pritej, përfunduan me një fitore të plotë: utilitarja arriti të nxjerrë me sukses 10 megabajt të dhënash sekrete nga flash disk-u. Por, pasi u mbush plot me skedarë, ndodhi një defekt:
Numri total i grupeve të lexuara: 250752, të dekryptuara: 158
Gabim: nuk mund të shkruaj një secretFile të papërfunduar
Siç duket, arritĂ«m tĂ« deshifrojmĂ« me sukses vetĂ«m 158 klastera (632 kilobajt tĂ« dhĂ«nash tĂ« papĂ«rpunuara, qĂ« jep 636424 bajta tĂ« ngarkesĂ«s). ĂshtĂ« e qartĂ« qĂ« 10 megabajt nuk do tĂ« mblidhen kĂ«tu, ndĂ«rsa mes kĂ«tyre klasterave padyshim ka kopje tĂ« dyfishta. Edhe 1 megabajt nuk do tĂ« rikuperohet nĂ« kĂ«tĂ« mĂ«nyrĂ«. Por mund tĂ« garantojmĂ« se 3 kilobajt tĂ« dhĂ«nash sekrete do t'i rikuperojmĂ« nga flehsha edhe pas formatimit tĂ« saj dhe mbushjes deri nĂ« maksimum. MegjithatĂ«, eksperiencat tregojnĂ« se Ă«shtĂ« plotĂ«sisht e mundur tĂ« nxirret njĂ« skedar prej 120 kilobajt nga njĂ« flehshĂ« e tillĂ«.
Proba e fundit, për fat të keq, tregoi se flehsha është riformatuar e gjitha:
$ sudo ./steganodisk -p password /dev/sda
Madhësia e pajisjes: 250752 klustera
250700 99%
Numri total i klustereve të lexuara: 250752, të çkoduara: 0
Gabim: nuk mund të shkruaj një secretFile të papërfunduar
AsnjĂ« klaster nuk u ruajt... TrishtueshĂ«m, por jo tragjike! Do tĂ« pĂ«rpiqemi tĂ« krijojmĂ« njĂ« ndarje nĂ« flehshĂ« para formatimit, dhe nĂ« tĂ« â njĂ« sistem skedarĂ«sh. PĂ«r decide, ajo erdhi nga fabrika me kĂ«tĂ« formatim, kĂ«shtu qĂ« nuk po bĂ«jmĂ« asgjĂ« tĂ« dyshimtĂ«.
Plotësisht e pritur që hapësira e disponueshme në flehshë është paksa zvogëluar.
Gjithashtu, është krejt e pritshme që 10 megabajtë të mos arrijnë të fshihen në një disk të mbushur plot. Por tani numri i klasterëve të dekoduar me sukses është dyfishuar!
Numri total i klasterëve të lexuar: 250752, të dekoduar: 405
MegabajtĂ«, fatkeqĂ«sisht, nuk mund tĂ« mblidhen nga copat, por dyqind kilobajtĂ« â lehtĂ«.
E fundit dhe më e gëzueshme është se, gjatë verifikimit të katërt, formatimi i plotë i një disku USB nuk i shkatërroi të gjitha informacionet! 120 kilobajtë të dhënash sekrete u ankoruan në hapësirën e papërdorur.
Tabela përmbledhëse e testimit:

Disa teoritizime: mbi hapësirën e lirë dhe sektorët e papërdorur
Nëse ndonjëherë keni ndarë një hard disk në pjesë, mund të keni vënë re se nuk është gjithmonë e mundur të angazhohet e gjithë hapësira e lirë në disk. Pjesa e parë gjithmonë fillon me një hapësirë (zakonisht 1 megabajt, ose 2048 sektorë). Por edhe pas pjesës së fundit, shpesh mbetet një «bisht» i vogël i sektorëve të papërdorur. Ndërsa ndonjëherë mbeten hapësira edhe midis pjesëve, ndonëse rrallë.
Në fjalë të tjera, disku ka sektora të cilët nuk janë të aksesueshëm gjatë përdorimit normal të diskut, por të dhënat mund të shkruhen në këto sektora! Kështu që, edhe mund të lexohen. Me kusht që të kemi parasysh se ekziston edhe tabela e particioneve dhe kodi i ngarkuesit, të cilat ndodhen pikërisht në zonën e zbrazët në fillim të diskut.
Të largohemi për pak nga particionet dhe të shikojmë diskun nga lart, si të thuash, nga një pikëpamje zogj-shikimi. Këtu kemi një partiçion të zbrazët në disk. A mund të themi se disa sektora në disk kanë mbetur të pazbrazur?
Dhe -- tambur! Përgjigjja do të jetë gati gjithmonë -- po! Sepse në shumicën e rasteve, krijimi i një sistemi skedash reduktohet në atë që në disk shkruhen vetëm disa blloqe informacioni shërbimi, ndërsa përmbajtja e particionit nuk ndryshon.
Gjithashtu, njĂ« mĂ«nyrĂ« ndihmĂ«se â Ă«shtĂ« e mundur tĂ« supozohet se sistemi i skedave nuk mund tĂ« mbushĂ« gjithmonĂ« hapĂ«sirĂ«n e caktuar deri nĂ« sektorin e fundit. PĂ«r shembull, sistemi i skedave FAT16 me njĂ« madhĂ«si klasteri prej 64 kilobajtĂ«sh, natyrshĂ«m, nuk do tĂ« mund tĂ« mbushĂ« plotĂ«sisht njĂ« ndarje me madhĂ«si qĂ« nuk Ă«shtĂ« shumĂ«fish i 64 kilobajtĂ«ve. NĂ« fund tĂ« njĂ« ndarje tĂ« tillĂ« do tĂ« mbetet njĂ« "bisht" me disa sektora, qĂ« nuk do tĂ« jenĂ« tĂ« aksesueshĂ«m pĂ«r ruajtjen e tĂ« dhĂ«nave tĂ« pĂ«rdoruesve. MegjithatĂ«, eksperimentalisht, kjo supozim nuk u konfirmua.
Pra, pĂ«r tĂ« maksimizuar hapĂ«sirĂ«n e disponueshme pĂ«r steganogramin, duhet tĂ« pĂ«rdoret njĂ« sistem skedash me njĂ« madhĂ«si klasteri mĂ« tĂ« madhe. Mund tĂ« krijoni gjithashtu njĂ« ndarje, edhe nĂ«se kjo nuk Ă«shtĂ« e domosdoshme (pĂ«r shembull, nĂ« njĂ« flash drive). Nuk Ă«shtĂ« e nevojshme tĂ« krijoni ndarje tĂ« zbrazĂ«ta apo tĂ« lini zona tĂ« pa shpĂ«rndara â kjo do tĂ« tĂ«rheqĂ« vĂ«mendjen e atyre qĂ« janĂ« tĂ« interesuar.
Utilita për eksperimente
Kodet burimor të utilitës mund të provohen
PĂ«r ndĂ«rtimin e saj do tĂ« nevojiten Qt version 5.0 ose mĂ« lart dhe OpenSSL. NĂ«se ndonjĂ« gjĂ« nuk ndĂ«rtohet â ndoshta do tĂ« ketĂ« nevojĂ« pĂ«r tĂ« rregulluar skedarin steganodisk.pro.
Mund të ndryshoni madhësinë e klasterit nga 4 KB në, le t' themi, 512 byte (në secretfile.h). Kjo do të rrisë kostot për informacionin shërbim: kryesia dhe kontrolli i sumës zënë 68 byte fikse.
Duhet ta запŃŃĐșаjete utilitarin, natyrisht, me tĂ« drejtat e pĂ«rdoruesit root, dhe me kujdes. Nuk do tĂ« ketĂ« asnjĂ« pyetje para se tĂ« rijĂ« njĂ« skedar ose pajisje tĂ« caktuar!
Shijoni.
Burimi: habr.com
