Файлдық жүйенің стеганографиясы

Эй Хабр.

Мен сіздерге шағын жобаны ұсынғым келеді стеганография, оқудан бос уақытымда жасалған.

Мен файлдық жүйеде ақпаратты жасырын сақтау жобасын жасадым (бұдан әрі FS).
Бұл білім беру мақсатында құпия ақпаратты ұрлау үшін пайдаланылуы мүмкін.

Файлдық жүйенің стеганографиясы

Прототип ретінде өте ескі Linux FS таңдалды ext2.

Реализация

Іске асыруды қарастыру

Егер ext2 стандартын «ашу» жақсы болса, онда сіз оны FS-де ауыстыруға болады. Суперблоктар, ол жүйе туралы негізгі ақпаратты береді. Мен табылғаннан кейін Растрлық кескінді блоктау и Инод кестесі. Бірден дерлік ақпаратты қазіргі бос FS блоктарына жазу идеясы пайда болды. Енді қарулы бағдарламашыдан қорғау туралы ойлану керек еді он алтылық редактор.

Егер сіз жасырын ақпаратты шифрлаусыз сақтасаңыз, оның FS-де бұлыңғырлығына қарамастан, ол әлі де тым айқын болады, әсіресе бағдарламашы не іздеу керектігін білсе. Сондықтан бастапқы файлдың барлық блоктарын шифрлау туралы шешім қабылданды. Мен блоктық шифрды таңдадым AES, бірақ сіз түсінесіз, бұл маңызды емес.

Оқу кезінде барлық басқалардан қажетті блоктарды бөлу үшін блоктың басында әрбір блокқа арнайы маркер қосу туралы шешім қабылданды. Бұл таңбалауыш бастапқы файлдағы блок нөміріне байланысты шифрланған. Бұл трюк бірден қажетті блоктарды табуға ғана емес, сонымен қатар олардың дұрыс ретін тануға мүмкіндік берді.

Жүйенің жалпы жұмыс принципі.

Файлдық жүйенің стеганографиясы

Жазу алгоритмі

Нысандар бойынша:

  • Алдымен бастапқы файлдық жүйеге кейбір ақпаратты жазыңыз;
  • Бұл ақпаратты жою (міндетті түрде барлығы емес);
  • Жасырылатын файл маркерді қоса отырып, ұзындығы бірдей блоктарға бөлінеді;
  • Бұл блоктарды шифрлау;
  • Шифрланған блоктарды бос FS блоктарына орналастырыңыз.

Блок-схема әуесқойлары үшін

Төменде жазу алгоритмінің блок-схемасы берілген. Алгоритм кіріс ретінде төрт файлды қабылдайды:
-Өзгертілетін файлдық жүйенің кескіні;
-Стеганографияға жататын файл;
-AES үшін шифрлау кілті бар файл;
-Маркері бар файл.
Файлдық жүйенің стеганографиясы

Бұл алгоритмнің бір кемшілігі бар екенін бірден атап өткен жөн: файлды FS-ге жазғаннан кейін, емес тиіс FS ішіне кез келген жаңа нәрсені жазыңыз, өйткені кез келген жаңа ақпарат біздің ықшамдалған файлымызға бөлінген блоктарда аяқталуы мүмкін, дегенмен бұл «іздерді жылдам жабу» мүмкіндігін ашады.

Бірақ мұны қалай түзетуге болатыны анық: FS-де блоктарды жазу алгоритмін қайта жазу қажет. Бұл түсінікті, бірақ керемет уақытты қажет ететін тапсырма.
Proof Of Consept үшін мен мұны орындамадым.

Нәтижесінде ТЖ-ға келесі өзгерістер енгізіледі; стеганографияға дейін FS осылай көрінеді (аудио файл бұрын жазылған).
Файлдық жүйенің стеганографиясы
Ал FS қазірдің өзінде қысылған ақпаратпен осылай көрінеді.
Файлдық жүйенің стеганографиясы

Оқу алгоритмі

Нысандар бойынша:

  • Кілтті және маркерлерді құрастыру әдісін біле отырып, N файлдық жүйе блогының ұзындығына көбейтілген N сыдырылған файлдың ұзындығынан үлкен екеніне кепілдік бере отырып, бірінші N маркерлерді құрастырыңыз;
  • Маркерлерден бастап ФС-да блоктарды іздеу;
  • Алынған блоктарды дешифрлеу және маркерлерді бөлу;
  • Алынған блоктарды дұрыс ретпен жинап, бастапқы файлды алыңыз.

Блок-схема әуесқойлары үшін

Төменде жазу алгоритмінің блок-схемасы берілген. Алгоритм кіріс ретінде үш файлды қабылдайды:
-Файлдық жүйе кескіні;
-AES үшін шифрлау кілті бар файл;
-Маркері бар файл.
Файлдық жүйенің стеганографиясы

Бағдарлама іске қосылғаннан кейін стеганографиялық файлдық жүйеден алынған файл болатын Read файлы пайда болады; егер кілт немесе маркер қате көрсетілсе, онда Оқу файлы бос болады.
(сұлулықты ұнататындар үшін файлды ғана емес, сонымен қатар мета-ақпаратты қамтитын «тақырыпты» енгізуге болады: файл атауы, құқықтар, соңғы өзгертілген уақыт және т.б.)

Іске қосуды автоматтандыру

Ыңғайлы болу үшін Linux жүйесінде іске қосуды автоматтандыру үшін bash сценарийлері жазылған (Ubuntu 16.04.3 LTS жүйесінде сыналған).
Іске қосуды кезең-кезеңімен қарастырайық.
Жазба:

  1. sudo Copy_Flash.sh “DEVICE” – DEVICE (флэш) құрылғысынан FS кескінін алу;
  2. ./Write.sh “FILE” “KEY” “MARKER” – виртуалды ортаны құру, қажетті кітапханаларды жүктеп алу және жазу сценарийін іске қосу;
  3. sudo ./Write_Flash.sh «ҚҰРЫЛҒЫ» – өзгертілген FS-ті ҚҰРЫЛҒЫ-ға қайта жазыңыз.

Оқу:

  1. sudo Copy_Flash.sh “DEVICE” – DEVICE (флэш) құрылғысынан FS кескінін алу;
  2. ./Read.sh “KEY” ‘MARKER’ – виртуалды ортаны құру, қажетті кітапханаларды жүктеп алу және оқу үшін скипті іске қосу;
  3. Ағымдағы каталогта Оқу файлын ашыңыз - бұл қысылған ақпарат.

қорытынды

Бұл стеганография әдісі жақсартуды, қосымша тестілеуді және танымал файлдық жүйелерге кеңейтуді қажет етуі мүмкін Fat32, NTFS и ext4.
Бірақ бұл жұмыстың мақсаты файлдық жүйеде ақпаратты жасырын сақтауды жүзеге асыруға болатын принципті көрсету болды.
Мұндай алгоритмдердің көмегімен сіз ақпаратты қорықпай сақтай аласыз, егер сіз кілтті білсеңіз, мұндай жүйені дөрекі күшпен емес (бірақ өте ұзақ алгоритммен) бұзуға болатын болса, онда кілтті білмей-ақ, бұл Менің ойымша, жүйе мүлдем тұрақты, бірақ бұл бөлек мақаланың себебі болуы мүмкін.

Барлық код Python 3.5.2 нұсқасында жүзеге асырылады. Жұмыстың мысалы менің youtube каналымда ұсынылған. Жобаның толық коды сайтта орналастырылған GitHub.
(Иә, иә, мен өндіріс нұсқасы үшін сізге «жылдам» бірдеңе жазу керек екенін білемін, мысалы, C 😉)
Бұл іске асыруда стеганографияға арналған кіріс файлының өлшемі 1000 кБ аспауы керек.

Мен пайдаланушыға алғысымды білдіргім келеді Павел ММУ зерттеуді жоспарлауда құнды кеңестер мен мақаланың дизайны бойынша ұсыныстар үшін.

Ақпарат көзі: www.habr.com

пікір қалдыру