Hey Habr.
Vogliu prisentà vi un picculu prughjettu nantu
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.
Un FS Linux assai anticu hè statu sceltu cum'è prototipu
Реализация
Considerazioni di implementazione
S'ellu hè bonu per "unravel" u standard ext2, pudete rimpiazzà chì in u FS ci hè un cusì chjamatu
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
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.
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.
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).
È questu hè ciò chì u FS pare cù l'infurmazioni digià zipped up.
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.
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:
- sudo Copy_Flash.sh "DEVICE" - uttene l'imagine FS da DEVICE (flash);
- ./Write.sh "FILE" "KEY" "MARKER" - crea un ambiente virtuale, scaricate e librerie necessarie è eseguite u script di scrittura;
- sudo ./Write_Flash.sh "DEVICE" - scrivite u FS cambiatu di novu à DEVICE.
Lettura:
- sudo Copy_Flash.sh "DEVICE" - uttene l'imagine FS da DEVICE (flash);
- ./Read.sh "KEY" 'MARKER" - crea un ambiente virtuale, scaricate e librerie necessarie è eseguite u skipt per a lettura;
- 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'è
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.
(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
Source: www.habr.com