Steganografia in u sistema di schedari

Hey Habr.

Vogliu prisentà vi un picculu prughjettu nantu steganografia, fattu in u mo tempu liberu da studià.

Aghju fattu un prughjettu nantu à l'almacenamiento oculatu di l'infurmazioni in u sistema di schedari (in più FS).
Questu pò esse usatu per arrubbari infurmazione cunfidenziale per scopi educativi.

Steganografia in u sistema di schedari

Un FS Linux assai anticu hè statu sceltu cum'è prototipu ext2.

Реализация

Considerazioni di implementazione

S'ellu hè bonu per "unravel" u standard ext2, pudete rimpiazzà chì in u FS ci hè un cusì chjamatu Superblocchi, chì furnisce infurmazioni basi nantu à u sistema. Dopu ch'e aghju trovu Block Bitmap и Table Inode. Quasi subitu, hè nata l'idea di registrà infurmazioni in blocchi FS vacanti attualmente. Avà vale a pena di pensà à a prutezzione di un programatore armatu editore hex.

Se guardate l'infurmazioni oculate senza criptografia, allora, anche malgradu a so sfocatura in u FS, serà sempre troppu visibile, soprattuttu se u programatore sapi ciò chì cerca. Dunque, hè statu decisu di criptà tutti i blocchi di u schedariu fonte. Aghju sceltu u cifru di bloccu Eram, ma cum'è avete capitu, questu ùn hè micca impurtante.

Per separà i blocchi necessarii da tutti l'altri durante a lettura, hè statu decisu di aghjunghje un marcatu speciale à ogni bloccu à u principiu di u bloccu. Stu token hè statu criptatu secondu u numeru di bloccu in u schedariu fonte. Stu truccu hà subitu pussibule micca solu di truvà i blocchi necessarii, ma ancu di ricunnosce u so ordine currettu.

Principiu generale di u funziunamentu di u sistema.

Steganografia in u sistema di schedari

Algoritmu di registrazione

I punti:

  • Prima scrivite qualchi infurmazione à u sistema di fugliale fonte;
  • Eliminate sta infurmazione (micca necessariamente tutte);
  • U schedariu per esse oculatu hè divisu in blocchi di uguali lunghezza, aghjunghjendu un marcatore;
  • Cripta sti blocchi;
  • Pone i blocchi criptati in blocchi FS vacanti.

Per l'amatori di i diagrammi di blocchi

Quì sottu hè un diagramma di bloccu di l'algoritmu di registrazione. L'algoritmu riceve quattru schedari cum'è input:
-Image di un sistema di schedariu mudificabile;
-File sughjettu à steganografia;
-File cù chjave di criptografia per AES;
-File cun marcatore.
Steganografia in u sistema di schedari

Hè da nutà subitu chì questu algoritmu hà un inconveniente: dopu avè scrittu u schedariu à u FS, pò micca scrivite qualcosa di novu in u FS, postu chì ogni nova infurmazione pò finisce in i blocchi chì avemu attribuitu à u nostru schedariu zippatu, ancu s'ellu apre ancu a pussibilità di "coperte rapidamente e nostre piste".

Ma hè abbastanza evidenti cumu si pò esse riparatu: hè necessariu di riscrive l'algoritmu per scrive blocchi in u FS. Questu hè un compitu comprensibile, ma incredibbilmente di tempu.
Per Proof Of Consept ùn aghju micca implementatu questu.

In u risultatu, i seguenti cambiamenti seranu fatti à u FS; questu hè ciò chì l'FS pare prima di steganografia (un schedariu audio hè statu registratu prima).
Steganografia in u sistema di schedari
È questu hè ciò chì u FS pare cù l'infurmazioni digià zipped up.
Steganografia in u sistema di schedari

Algoritmu di lettura

I punti:

  • Cù a cunniscenza di a chjave è u metudu di custruzzione di marcatori, cumpone i primi marcatori N, cù a guaranzia chì N multiplicate da a lunghezza di u bloccu di u sistema di fugliale hè più grande di a durata di u schedariu zippatu;
  • Ricerca di blocchi in u FS cuminciendu cù marcatori;
  • Decifrate i blocchi ricevuti è separà i marcatori;
  • Cullate i blocchi resultanti in l'ordine currettu è uttene u schedariu fonte.

Per l'amatori di i diagrammi di blocchi

Quì sottu hè un diagramma di bloccu di l'algoritmu di registrazione. L'algoritmu riceve trè file cum'è input:
-File system image;
-File cù chjave di criptografia per AES;
-File cun marcatore.
Steganografia in u sistema di schedari

Dopu chì u prugramma s'executa, u schedariu di lettura appare, chì serà u schedariu estratto da u sistema di fugliale steganografatu; se a chjave o u marcatore hè stata specificata in modu incorrectu, allora u schedariu di lettura serà viotu.
(Per l'amatori di bellezza, pudete inserisce micca solu u schedariu, ma un "header" chì cuntene meta-informazioni: nome di u schedariu, diritti, l'ultima volta mudificata, etc.)

L'automatizazione di l'iniziu

Per a cunvenzione, i script bash sò stati scritti per automatizà u lanciu in Linux (pruvatu in Ubuntu 16.04.3 LTS).
Fighjemu u lanciu passu per passu.
Récordu:

  1. sudo Copy_Flash.sh "DEVICE" - uttene l'imagine FS da DEVICE (flash);
  2. ./Write.sh "FILE" "KEY" "MARKER" - crea un ambiente virtuale, scaricate e librerie necessarie è eseguite u script di scrittura;
  3. sudo ./Write_Flash.sh "DEVICE" - scrivite u FS cambiatu di novu à DEVICE.

Lettura:

  1. sudo Copy_Flash.sh "DEVICE" - uttene l'imagine FS da DEVICE (flash);
  2. ./Read.sh "KEY" 'MARKER" - crea un ambiente virtuale, scaricate e librerie necessarie è eseguite u skipt per a lettura;
  3. In u cartulare attuale, apre u schedariu Read - questu hè l'infurmazione zippata.

cunchiusioni

Stu metudu di steganografia hà probabilmente bisognu di migliuramentu, teste supplementari è estensione à i sistemi di schedari più populari, cum'è grassu 32, NTFS и ext4.
Ma u scopu di stu travagliu era di mustrà u principiu da quale hè pussibule di realizà u almacenamentu oculatu di l'infurmazioni in u sistema di schedari.
Cù l'aiutu di tali algoritmi, pudete almacenà l'infurmazioni senza paura, è se, se sapete a chjave, hè pussibule di pirate un tali sistema micca per forza bruta (ma da un algoritmu assai longu), allora senza sapè a chjave, questu. sistema mi pari à esse assulutamente stabile, però, questu pò esse un mutivu per un articulu separatu.

Tuttu u codice hè implementatu in a versione Python 3.5.2. Esempiu di travagliu presentatu nant'à u mo canale youtube. U codice sanu di u prugettu hè publicatu github.
(Iè, sì, sò chì per a versione di pruduzzione avete bisognu di scrive in qualcosa "rapidu", per esempiu C 😉)
In questa implementazione, a dimensione di u schedariu di input per steganografia ùn deve micca più di 1000 kB.

Vogliu sprime a mo gratitudine à l'utilizatori PavelMSTU per cunsiglii preziosi in a pianificazione di u studiu è cunsiglii nantu à u disignu di l'articulu.

Source: www.habr.com

Add a comment