Steganografia per i schedari: nasconde dati direttamente in settori

Una breve prefazione

A steganografia, se qualchissia ùn s'arricorda, hè piatta l'infurmazioni in certi cuntenituri. Per esempiu, in ritratti (discussu ccà и ccà). Pudete ancu ammuccià e dati in tavule di serviziu di u sistema di schedari (questu hè statu scrittu annantu ccà), è ancu in i pacchetti di serviziu di protocolu TCP. Sfurtunatamente, tutti questi metudi anu un inconveniente: per imperceptibilmente "inserisce" l'infurmazioni in un cuntinuu, avete bisognu di algoritmi astuti chì tenenu in contu e peculiarità di a struttura interna di u cuntinuu. È i prublemi sò cun a resistenza di u cuntinuu à a manipulazione: per esempiu, se editate pocu a stampa, l'infurmazioni oculate hè persa.

Hè pussibule di fà in qualchì manera senza algoritmi astuti è manipulazioni sottili cù dati, è ancu assicurà a funziunalità di u cuntinuu è un livellu accettabile di sicurità di dati oculati? Fighjendu avanti, dicu - sì, pudete! Aghju ancu offre una utilità.

Detaglii sanguinosi di u metudu

L'idea basica hè simplice quant'è un colpu à a fronte: ci sò spazii nantu à u discu chì u sistema operatore ùn scrive mai (o scrive in casi rari). Per evitari a necessità di ricerca di sti spazii cù l'algoritmi astuti, avemu aduprà a redundanza - vale à dì, duplicà a nostra infurmazione nascosta parechje volte in tutti i settori di u discu. Allora, ghjustu annantu à tuttu stu splendore, pudete creà e partizioni necessarie, formate i sistemi di schedari, scrive i schedari è installate OS - tuttu u listessu, una parte di i dati secreti seranu salvati è ponu esse recuperati, è a duplicazione ripetuta ci aiuterà. mette u sanu originale inseme da i pezzi.

U vantaghju di stu mètudu hè evidenti: ùn dipende micca di u furmatu di u schedariu, o ancu di u tipu di sistema di schedariu utilizatu.

I svantaghji sò ancu, pensu, evidenti:

  • I dati sicreti ponu esse cambiati solu da riscrive completamente u discu sanu, seguitu da ricreà u cuntenutu visibile à l'utilizatore. Tuttavia, ùn pudete micca aduprà software chì ricreate u discu da una maghjina: ricreà ancu i dati secreti previ.
  • U più grande hè u voluminu di dati secreti, più grande hè a probabilità di perde qualchì infurmazione.
  • Ritruvà dati da u discu pò piglià assai tempu. Da parechji minuti à parechji ghjorni (i discu muderni sò grande).

Avà andemu à i specifichi.

Hè chjaru chì s'è vo simpricimenti smear dati secreti in tuttu u discu, sarà solu oculatu da l 'occhiu nudu. Se equipate u vostru sguardu cù, per esempiu, un editore di discu, i dati appariscenu in tutta a so gloria. Per quessa, saria una bona idea di criptà i dati per ch'ellu ùn si vede. Cripteremu simpliciamente, ma cun gustu: utilizendu l'algoritmu aes256-cbc. Avemu da dumandà à l'utilizatore per a chjave di criptografia è lasciamu chì vene cun una bona password.

A quistione dopu hè cumu pudemu distinguishà i dati "boni" da i dati cattivi. Quì un checksum ci aiuterà, ma micca un simplice, ma SHA1. È chì ? Hè abbastanza bè per git, cusì ci cunvene ancu. Decidiu: furnimu ogni pezzu d'infurmazione almacenatu cun un checksum, è se dopu a decifrazione currisponde, significa chì a decifrazione hè stata successu.

Avete bisognu di u numeru di frammenti è a durata tutale di i dati secreti. U numeru di frammentu hè di mantene a traccia di quali pezzi avemu digià decifratu è chì sò lasciati. A durata tutale serà utile per noi quandu trasfurmà l'ultimu fragmentu, per ùn scrive micca dati innecessarii (vale à dì, padding). Ebbè, postu chì avemu sempre un capu, aghjunghjemu u nome di u schedariu secretu quì. Serà utile dopu a decryption, per ùn guessà cumu si apre.

Pruvate u metudu in pratica

Per verificà, pigliemu u mediu più cumuni - un flash drive. Aghju trovu un vechju cù capacità 1 GB, chì hè abbastanza adattatu per esperimenti. Sè vo, cum'è mè, hè vinutu cù l'idea di ùn preoccupassi di i media fisichi, ma di pruvà nantu à un schedariu - una maghjina di discu, allora dicu subitu: ùn hà micca travagliatu. Quandu formate un tali "discu", Linux crea u schedariu di novu, è tutti i settori inutilizati seranu pieni di zeri.

Cum'è una macchina cù Linux, sfurtunatamenti, aghju avutu aduprà una stazione meteorologica nantu à u Raspberry Pi 3 chì si trova nantu à u balcone, ùn ci hè micca assai memoria, perchè ùn avemu micca ammuccià i schedarii grossi. Ci limitemu à una dimensione massima di 10 megabytes. Ùn ci hè ancu un puntu di ammuccià i fugliali chì sò troppu chjuchi: l'utilità scrive dati à u discu in clusters 4 KB. Dunque, quì sottu ci limiteremu à un schedariu di 3 kb - si mette in un tali cluster.

Ci burleremu di u flash drive in tappe, cuntrollendu dopu ogni tappa se l'infurmazioni nascosti sò leghjite:

  1. Formattazione rapida in formatu FAT16 cù una dimensione di cluster di 16 KB. Questu hè ciò chì Windows 7 prupone à fà cù un flash drive chì ùn hà micca un sistema di schedari.
  2. Riempite u flash drive cù ogni tipu di basura da 50%.
  3. Riempite u flash drive cù ogni tipu di basura da 100%.
  4. Formattazione "longa" in furmatu FAT16 (sovrascrivite tuttu).

I primi dui testi, cum'è s'aspittava, finiscinu in a vittoria cumpleta: l'utilità hà sappiutu estrae 10 megabytes di dati secreti da u flash drive. Ma dopu chì l'unità flash hè stata piena di fugliali, un fallimentu hè accadutu:

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

Comu pudete vede, solu 158 clusters sò stati decriptati cù successu (632 kilobytes di dati crudi, chì dà 636424 bytes di payload). Hè chjaru chì ùn ci hè micca manera di ottene 10 megabyte quì, è ancu trà questi clusters ci sò chjaramente duplicati. Ùn pudete ancu ricuperà 1 megabyte in questu modu. Ma pudemu guarantisci chì avemu da ricuperà 3 kilobytes di dati secreti da una unità flash ancu dopu chì hè furmatu è scrittu à capacità. In ogni casu, l'esperimenti mostranu chì hè abbastanza pussibule di caccià un schedariu 120 kilobytes longu da una tale unità flash.

L'ultima prova, sfurtunatamenti, hà dimustratu chì tutta a unità flash hè stata soprascritta:

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

Ùn ci hè sopravvissutu un solu cluster... Triste, ma micca tragicu ! Prima di furmà, pruvemu di creà una partizione in u flash drive, è digià in questu un sistema di fugliale. Per via, hè vinutu da a fabbrica cù esattamente questu furmatu, cusì ùn facemu nunda di suspettu.
Hè abbastanza aspettatu chì u spaziu dispunibule nantu à u flash drive hè diminuitu ligeramente.

Hè ancu abbastanza aspettatu chì 10 megabytes ùn puderanu micca esse oculati nantu à un discu cumpletamente pienu. Ma avà u numeru di clusters decifrati cun successu hè più chè radduppiatu!

Total clusters read: 250752, decrypted: 405

Sfurtunatamente, hè impussibile di assemblà un megabyte da pezzi, ma dui centu kilobyte sò faciuli.

Ebbè, a nutizia annantu à l'ultimu, 4u cuntrollu, sta volta hè gioia: furmà cumplettamente un tali flash drive ùn hà micca purtatu à a distruzzione di tutte l'infurmazioni! 120 kilobytes di dati secreti si adattanu perfettamente à u spaziu inutilizatu.

Tavola riassuntu di a prova:

Steganografia per i schedari: nasconde dati direttamente in settori

Un pocu teorizante: nantu à u spaziu liberu è i settori inutilizati

Se avete mai spartutu u vostru discu duru in partizioni, pudete avè nutatu chì ùn hè micca sempre pussibule di assignà tuttu u spaziu liberu nantu à u discu. A prima sezione principia sempre cù qualchì indentazione (di solitu 1 megabyte, o 2048 settori). Dopu à l'ultima rùbbrica, succede ancu chì ferma una piccula "coda" di settori inutilizati. E qualchì volta ci sò spazii trà e sezioni, ancu raramenti.

In altri palori, ci sò settori nantu à u discu chì ùn ponu micca accede durante u travagliu normale cù u discu, ma i dati ponu esse scritti in questi settori! È questu significa ancu leghje. Ajustatu per u fattu chì ci hè ancu una tavola di partizioni è u codice di bootloader, chì si trovanu in l'area viota à u principiu di u discu.

Facemu una pausa da e rùbbriche per un pezzu di tempu è fighjemu u discu da una vista d'uccello, per parlà. Quì avemu una particione viota nantu à u discu. Creemu un sistema di schedari in questu. Pudemu dì chì certi settori nantu à u discu restanu micca sguassati?

E-e-e - rollu di tamburi ! A risposta sarà quasi sempre sì ! In verità, in a maiò parte di i casi, a creazione di un sistema di fugliale hè di scrive solu uni pochi di blocchi di informazioni di serviziu à u discu, è altrimente u cuntenutu di a partizione ùn cambia micca.

È ancu - puramente empiricamente - pudemu suppone chì u sistema di fugliale ùn pò micca sempre occupà tuttu u spaziu attribuitu finu à l'ultimu settore. Per esempiu, un sistema di fugliale FAT16 cù una dimensione di cluster di 64 kilobytes ovviamente ùn pò micca occupà cumplettamente una partizione cù una dimensione micca un multiplu di 64 kilobytes. À a fine di una tale rùbbrica duverà esse una "coda" di parechji settori chì hè inaccessibile per almacenà e dati di l'utilizatori. Tuttavia, sta supposizione ùn pò esse cunfirmata sperimentalmente.

Dunque, per maximizà u spaziu dispunibule per u steganogram, avete bisognu di utilizà un sistema di schedari cù un grande cluster size. Pudete ancu creà una partizione, ancu s'ellu ùn hè micca necessariu (in un flash drive, per esempiu). Ùn ci hè bisognu di creà sezioni vacanti o di lascià spazii micca attribuiti - questu attirà l'attenzione di i citadini interessati.

Utilità per esperimenti

Pudete tuccà u codice fonte di l'utilità ccà

Per custruisce, avete bisognu di Qt versione 5.0 o superiore è OpenSSL. Se qualcosa ùn viaghja micca, pudete avè da edità u schedariu steganodisk.pro.

Pudete cambià a dimensione di u cluster da 4 KB à, dì, 512 bytes (in secretfile.h). À u listessu tempu, u costu di l'infurmazioni di serviziu aumenterà: l'intestazione è u checksum occupanu un 68 bytes fissi.

Avete bisognu di eseguisce l'utilità, sicuru, cù i diritti di l'utilizatori di root, è cun prudenza. Ùn ci saranu micca dumande prima di sovrascrive u schedariu o u dispositivu specificatu!

Prufittate.

Source: www.habr.com

Add a comment