Szia Habr.
Szeretnék egy kis projektet bemutatni nektek
Készítettem egy projektet az információ rejtett tárolásáról a fájlrendszerben (továbbiakban FS).
Ez felhasználható bizalmas információk oktatási célú ellopására.
Egy nagyon régi Linux FS-t választottak prototípusnak
Реализация
Megvalósítási szempontok
Ha jó az ext2 szabványt "feloldani", akkor azt le lehet cserélni, hogy az FS-ben van egy ún.
Ha titkosítás nélkül tárolja a rejtett információkat, akkor az FS elmosódása ellenére is túlságosan szembetűnő lesz, különösen, ha a programozó tudja, mit kell keresnie. Ezért úgy döntöttek, hogy a forrásfájl összes blokkját titkosítják. A blokk titkosítást választottam
Annak érdekében, hogy olvasás közben a szükséges blokkokat az összes többitől elkülönítsék, úgy döntöttek, hogy minden blokkhoz külön jelölőt adnak a blokk elején. Ez a token a forrásfájl blokkszámától függően lett titkosítva. Ez a trükk azonnal lehetővé tette nemcsak a szükséges blokkok megtalálását, hanem azok helyes sorrendjének felismerését is.
A rendszer általános működési elve.
Rögzítési algoritmus
A pontokon:
- Először írjon néhány információt a forrásfájlrendszerbe;
- Törölje ezt az információt (nem feltétlenül az összeset);
- Az elrejteni kívánt fájlt egyenlő hosszúságú blokkokra osztjuk, hozzáadva egy markert;
- Titkosítsa ezeket a blokkokat;
- Helyezze el a titkosított blokkokat az üres FS blokkokba.
A blokkdiagram szerelmeseinek
Az alábbiakban a rögzítési algoritmus blokkdiagramja látható. Az algoritmus négy fájlt kap bemenetként:
-Módosítható fájlrendszer képe;
- Szteganográfia hatálya alá tartozó fájl;
-Fájl titkosítási kulccsal az AES-hez;
- Reszelő jelölővel.
Azonnal érdemes megjegyezni, hogy ennek az algoritmusnak van egy hátránya: miután a fájlt az FS-be írta, nem írjon be bármi újat az FS-be, mivel minden új információ a zip-fájlunkhoz hozzárendelt blokkokba kerülhet, bár ez is lehetőséget ad arra, hogy „gyorsan lefedjük nyomainkat”.
De teljesen nyilvánvaló, hogyan lehet ezt javítani: át kell írni a blokkok írási algoritmusát az FS-ben. Ez érthető, de hihetetlenül időigényes feladat.
A Proof Of Consept esetében ezt nem hajtottam végre.
Ennek eredményeként a következő változtatások lesznek az FS-ben: így néz ki az FS a szteganográfia előtt (korábban egy hangfájlt rögzítettek).
És így néz ki az FS a már becsomagolt információkkal.
Olvasási algoritmus
A pontokon:
- A kulcs és a markerek létrehozásának módszerének ismeretében állítsa össze az első N markert, garantálva, hogy N szorozva a fájlrendszer blokk hosszával nagyobb, mint a tömörített fájl hossza;
- Blokkok keresése az FS-ben markerekkel kezdődően;
- A kapott blokkok megfejtése és a markerek szétválasztása;
- Gyűjtsd össze a kapott blokkokat a megfelelő sorrendben, és szerezd be a forrásfájlt.
A blokkdiagram szerelmeseinek
Az alábbiakban a rögzítési algoritmus blokkdiagramja látható. Az algoritmus három fájlt kap bemenetként:
-Fájlrendszer kép;
-Fájl titkosítási kulccsal az AES-hez;
- Reszelő jelölővel.
A program futása után megjelenik a Read fájl, amely a szteganográf fájlrendszerből kivont fájl lesz, ha a kulcs vagy a jelölő rosszul lett megadva, akkor a Read fájl üres lesz.
(a szépség szerelmesei nem csak a fájlt, hanem egy „fejlécet” is beilleszthetnek, amely metainformációkat tartalmaz: fájlnév, jogok, utolsó módosítás ideje stb.)
Indítási automatizálás
A kényelem kedvéért bash szkripteket írtak, hogy automatizálják az indítást Linuxon (Ubuntu 16.04.3 LTS-en tesztelték).
Nézzük az indítást lépésről lépésre.
Rekord:
- sudo Copy_Flash.sh „DEVICE” - szerezze be az FS-képet a DEVICE-ről (flash);
- ./Write.sh „FILE” „KEY” „MARKER” – hozzon létre egy virtuális környezetet, töltse le a szükséges könyvtárakat és futtassa az írási szkriptet;
- sudo ./Write_Flash.sh „DEVICE” – írja be újra a megváltozott FS-t a DEVICE-ba.
Olvasás:
- sudo Copy_Flash.sh „DEVICE” - szerezze be az FS-képet a DEVICE-ről (flash);
- ./Read.sh “KEY” 'JELÖLŐ” - hozzon létre egy virtuális környezetet, töltse le a szükséges könyvtárakat, és futtassa a kihagyást olvasáshoz;
- Az aktuális könyvtárban nyissa meg a Read fájlt - ez a tömörített információ.
Következtetés
Ez a szteganográfiai módszer valószínűleg fejlesztésre, további tesztelésre és kiterjesztésre szorul a népszerűbb fájlrendszerekre, mint pl
De ennek a munkának az volt a célja, hogy bemutassa azt az elvet, amely alapján lehetséges az információ rejtett tárolása a fájlrendszerben.
Az ilyen algoritmusok segítségével félelem nélkül tárolhat információkat, és ha a kulcs ismeretében nem nyers erővel (hanem nagyon hosszú algoritmussal) lehet feltörni egy ilyen rendszert, akkor a kulcs ismerete nélkül ez Számomra teljesen stabilnak tűnik a rendszer, de ez okul szolgálhat egy külön cikkre.
Minden kód a Python 3.5.2-es verziójában van implementálva.
(Igen, igen, tudom, hogy a gyártási verzióhoz valami "gyors"-ba kell írni, pl. C 😉)
Ebben a megvalósításban a szteganográfia bemeneti fájljának mérete nem haladhatja meg az 1000 kB-ot.
Szeretném kifejezni hálámat a felhasználónak
Forrás: will.com