Esteganografia fitxategien arabera: datuak zuzenean sektoreetan ezkutatzea

Hitzaurre labur bat

Esteganografia, inork gogoratzen ez badu, edukiontzi batzuetan informazioa ezkutatzen ari da. Adibidez, irudietan (eztabaida Hemen ΠΈ Hemen). Fitxategi-sistemako zerbitzu-tauletan ere ezkutatu ditzakezu datuak (hori buruz idatzi zen Hemen), eta are TCP protokoloko zerbitzu paketeetan. Zoritxarrez, metodo hauek guztiek eragozpen bat dute: edukiontzi batean informazioa "sartu" ezinezkoa izateko, edukiontziaren barne egituraren berezitasunak kontuan hartzen dituzten algoritmo maltzurrak behar dituzu. Eta arazoak sortzen dira ontziaren manipulazioaren aurkako erresistentziarekin: adibidez, argazkia apur bat editatzen baduzu, ezkutuko informazioa galtzen da.

Posible al da nolabait algoritmo maltzurrik eta datuekin manipulazio sotilrik gabe egin, eta oraindik edukiontziaren funtzionaltasuna eta ezkutuko datuen segurtasun maila onargarria bermatzea? Aurrera begira, esango dut - bai, dezakezu! Erabilgarritasun bat ere eskainiko dut.

Metodoaren xehetasun odoltsuak

Oinarrizko ideia kopetan kolpe bat bezain sinplea da: sistema eragileak inoiz idazten ez dituen (edo kasu bakanetan idazten dituen eremuak) daude diskoan. Algoritmo maltzurrak erabiliz eremu horiek bilatu beharrik ez izateko, erredundantzia erabiliko dugu, hau da, gure ezkutuko informazioa hainbat eta hainbat aldiz bikoiztuko dugu diskoko sektore guztietan. Ondoren, distira horren guztiaren gainean, beharrezko partizioak sor ditzakezu, fitxategi-sistemak formateatu, fitxategiak idatzi eta OS-ak instalatu - hala ere, datu sekretuen zati bat gorde eta berreskuratu ahal izango da, eta behin eta berriz bikoizketak lagunduko digu. jarri jatorrizko osoa zatietatik.

Metodo honen abantaila begi-bistakoa da: ez gara fitxategi-formatuaren araberakoak, ezta erabilitako fitxategi-sistema motaren araberakoak ere.

Desabantailak ere, nire ustez, begi-bistakoak dira:

  • Datu sekretuak disko osoa guztiz berridatziz soilik alda daitezke, eta ondoren erabiltzaileak ikusgai duen edukia birsortu. Hala ere, ezin duzu diskoa irudi batetik birsortzen duen softwarerik erabili: aurreko datu sekretuak ere birsortuko ditu.
  • Zenbat eta datu sekretuen bolumena handiagoa izan, orduan eta handiagoa da informazioren bat galtzeko probabilitatea.
  • Diskotik datuak berreskuratzeak denbora luzea izan dezake. Hainbat minututik hainbat egunetara (disko modernoak handiak dira).

Orain goazen zehatzetara.

Argi dago disko guztian datu sekretuak zikintzen badituzu, begi hutsetik bakarrik ezkutatuta egongo dela. Zure begirada, esate baterako, disko editore batekin hornitzen baduzu, datuak bere distira guztian agertuko dira. Hori dela eta, komenigarria litzateke datuak zifratzea, ager ez daitezen. Besterik gabe, baina gustu handiz zifratuko dugu: aes256-cbc algoritmoa erabiliz. Erabiltzaileari enkriptatze-gakoa eskatuko diogu eta pasahitz on bat ateratzen utziko diogu.

Hurrengo galdera da nola bereiz ditzakegun datu "onak" eta datu txarrak. Hemen checksum batek lagunduko digu, baina ez sinple bat, SHA1 baizik. Eta zer? Nahikoa da git-erako, beraz, guri ere egokituko zaigu. Erabakia: gordetako informazio bakoitzari checksum bat ematen diogu, eta deszifratu ondoren bat badator, deszifratzea arrakastatsua izan dela esan nahi du.

Zatiren zenbakia eta datu sekretuen luzera osoa ere beharko dituzu. Zati-zenbakia lehendik deszifratu ditugun eta zein diren geratzen diren piezak jarraitzeko da. Luzera osoa baliagarria izango zaigu azken zatia prozesatzeko orduan, beharrezkoak ez diren datuak (hau da, betegarriak) ez idazteko. Tira, oraindik goiburu bat daukagunez, fitxategi sekretuaren izena gehituko dugu bertan. Deszifratu ondoren erabilgarria izango da, nola ireki ez asmatzeko.

Metodoa praktikan probatzea

Egiaztatzeko, har dezagun euskarririk ohikoena: flash drive bat. 1 GBko edukiera duen zahar bat aurkitu dut, esperimentuetarako nahiko egokia dena. Zuk, ni bezala, euskarri fisikoarekin ez kezkatzea, baina fitxategi batean probatzea - ​​diskoko irudi batean, berehala esango dizut: ez du funtzionatuko. Horrelako "disko" formateatzen denean, Linuxek fitxategia sortzen du berriro, eta erabiltzen ez diren sektore guztiak zeroz beteko dira.

Linux-ekin makina bat bezala, zoritxarrez, balkoian etzanda dagoen Raspberry Pi 3-n eguraldi estazio bat erabili behar izan nuen. Ez dago memoria askorik, beraz, ez ditugu fitxategi handiak ezkutatuko. Gehienez 10 megabyteko tamainara mugatzen gara. Ez du balio txikiegiak diren fitxategiak ezkutatzeak ere: utilitateak datuak diskoan idazten ditu 4 KB-ko multzoetan. Hori dela eta, behean 3 kb-ko fitxategi batera mugatuko gara - horrelako kluster batean sartzen da.

Flash unitateari iseka egingo diogu etapaka, etapa bakoitzaren ondoren ezkutuko informazioa irakurgarria den ala ez egiaztatuz:

  1. Formateatu azkarra FAT16 formatuan 16 KB-ko kluster tamainarekin. Hau da Windows 7-k fitxategi-sistemarik ez duen pendrive batekin egiteko eskaintzen duena.
  2. Era guztietako zaborrez pendrive betetzea %50ean.
  3. Era guztietako zaborrez pendrive betetzea %100ean.
  4. "Luzea" formatua FAT16 formatuan (dena gainidatziz).

Aurreneko bi probak, espero bezala, erabateko garaipenean amaitu ziren: utilitateak 10 megabyte datu sekretu arrakastaz atera ahal izan zituen flash unitatetik. Baina flash unitatea fitxategiz bete ondoren, hutsegite bat gertatu da:

Total clusters read: 250752, decrypted: 158
ERROR: cannot write incomplete secretFile

Ikus dezakezunez, 158 kluster baino ez ziren behar bezala deszifratu (632 kilobyte datu gordinak, 636424 byte karga ematen dutenak). Argi dago hemen ez dagoela 10 megabyte lortzeko modurik, eta hala ere kluster horien artean bikoiztuak daudela argi eta garbi. Ezin duzu megabyte bat ere berreskuratu horrela. Baina berma dezakegu flash drive batetik 1 kilobyte datu sekretu berreskuratuko ditugula formateatu eta edukiera idatzi ondoren ere. Hala ere, esperimentuek erakusten dute oso posible dela 3 kilobyte-ko fitxategi bat ateratzea halako pendrive batetik.

Azken probak, zoritxarrez, flash unitate osoa gainidatzita zegoela erakutsi zuen:

$ sudo ./steganodisk -p password /dev/sda
Device size: 250752 clusters
250700 99%
Total clusters read: 250752, decrypted: 0
ERROR: cannot write incomplete secretFile

Multzo bakar bat ere ez da bizirik atera... Tristea, baina ez tragikoa! Formateatu aurretik, saia gaitezen partizio bat sortzen flash unitatean, eta dagoeneko bertan fitxategi-sistema bat. Bide batez, fabrikatik zetorren formatu honekin zehazki, beraz, ez dugu ezer susmagarririk egiten ari.
Nahiko espero da flash unitatean eskuragarri dagoen espazioa apur bat murriztu dela.

Era berean, nahiko espero da 10 megabyte ezin direla ezkutatu guztiz beteta dagoen disko batean. Baina orain arrakastaz deszifratutako kluster kopurua bikoiztu egin da!

Total clusters read: 250752, decrypted: 405

Zoritxarrez, ezinezkoa da piezetatik megabyte bat muntatzea, baina berrehun kilobyte errazak dira.

Beno, azkeneko 4. egiaztapenari buruzko berriak, oraingoan pozgarriak dira: horrelako flash drive bat guztiz formateatzeak ez zuen informazio guztia suntsitzea ekarri! 120 kilobyte datu sekretu ezin hobeto sartzen dira erabili gabeko espazioan.

Proba laburpen-taula:

Esteganografia fitxategien arabera: datuak zuzenean sektoreetan ezkutatzea

Teorizazio pixka bat: espazio libreari eta erabili gabeko sektoreei buruz

Inoiz zure disko gogorra partiziotan banatu baduzu, baliteke konturatu izana ez dela beti posible diskoko espazio libre guztia esleitzea. Lehenengo atala beti hasten da koska batekin (normalean 1 megabyte edo 2048 sektore). Azken atalaren atzean, erabiltzen ez diren sektoreen β€œbuztan” txiki bat geratzen dela ere gertatzen da. Eta batzuetan atalen artean hutsuneak daude, gutxitan bada ere.

Beste era batera esanda, diskoan lan arruntean sartu ezin diren sektoreak daude, baina sektore horietan datuak idatz daitezke! Eta horrek irakurtzea ere esan nahi du. Partizio-taula eta abio-kargagailuaren kodea ere badirela egokituta, diskoaren hasieran hutsik dagoen eremuan kokatuta daudenak.

Har dezagun tartetxo bat ataletatik eta begira dezagun diskoa txori-ikuspegitik, nolabait esateko. Hemen partizio huts bat dugu diskoan. Sor dezagun bertan fitxategi-sistema bat. Esan al dezakegu diskoko sektore batzuk ezabatu gabe geratzen direla?

E-e-e - danborra jotzea! Erantzuna ia beti baiezkoa izango da! Izan ere, kasu gehienetan, fitxategi-sistema bat sortzea diskoan zerbitzu-informazio bloke batzuk bakarrik idaztean datza, eta, bestela, partizioaren edukia ez da aldatzen.

Eta, gainera, -enpiriko hutsez-, onar dezakegu fitxategi-sistemak ezin duela beti okupatu azken sektorera arte esleitutako espazio guztia. Adibidez, 16 kilobyte-ko cluster tamaina duen FAT64 fitxategi-sistema batek ezin du guztiz okupatu 64 kilobyte-ko multiploa ez den tamaina duen partizioa. Horrelako atal baten amaieran hainbat sektoreren β€œbuztan” bat egon beharko da, erabiltzaileen datuak gordetzeko eskuraezina. Hala ere, hipotesi hori ezin izan da esperimentalki baieztatu.

Beraz, esteganogramarako erabilgarri dagoen espazioa maximizatzeko, kluster tamaina handiagoa duen fitxategi-sistema bat erabili behar duzu. Partizio bat ere sor dezakezu, hau beharrezkoa ez bada ere (flash drive batean, adibidez). Ez dago atal hutsik sortu edo esleitu gabeko eremuak utzi beharrik - interesa duten herritarren arreta erakarriko du horrek.

Esperimentuetarako erabilgarritasuna

Utilitatearen iturburu-kodea uki dezakezu Hemen

Eraikitzeko, Qt 5.0 bertsioa edo berriagoa eta OpenSSL beharko dituzu. Zerbaitek ez badu funtzionatzen, baliteke steganodisk.pro fitxategia editatu behar izatea.

Kluster-tamaina 4 KB-tik, esate baterako, 512 byte-ra alda dezakezu (fitxategi sekretuan.h). Aldi berean, zerbitzuaren informazioaren kostua handituko da: goiburuak eta checksumak 68 byte finko bat hartzen dute.

Utilitatea exekutatu behar duzu, noski, root erabiltzaile-eskubideekin eta kontuz. Ez da galderarik egingo zehaztutako fitxategia edo gailua gainidatzi aurretik!

Gozatu.

Iturria: www.habr.com

Gehitu iruzkin berria