Файлын системийн стеганографи

Хөөе Хабр.

Би та бүхэнд нэгэн жижиг төслийг танилцуулахыг хүсч байна стеганографи, хичээлээс чөлөөт цагаараа хийсэн.

Би файлын систем дэх мэдээллийг далд хадгалах төсөл боловсруулсан (цаашид ФС).
Үүнийг боловсролын зорилгоор нууц мэдээллийг хулгайлахад ашиглаж болно.

Файлын системийн стеганографи

Маш хуучин Linux FS-ийг загвар болгон сонгосон ext2.

Реализация

Хэрэгжүүлэхэд анхаарах зүйлс

Хэрэв ext2 стандартыг "тайлах" нь сайн хэрэг бол та FS-д гэж нэрлэгддэг зүйлийг сольж болно. Супер блокууд, системийн талаарх үндсэн мэдээллийг өгдөг. Намайг олсны дараа Bitmap-г блоклох и Inode хүснэгт. Бараг тэр даруй хоосон FS блокуудад мэдээллийг бүртгэх санаа гарч ирэв. Одоо зэвсэглэсэн програмистаас хамгаалах талаар бодох нь зүйтэй болов hex редактор.

Хэрэв та далд мэдээллийг шифрлэлтгүйгээр хадгалдаг бол FS-д бүдэг бадаг байсан ч энэ нь хэтэрхий тод байх болно, ялангуяа програмист юу хайхаа мэддэг бол. Тиймээс эх файлын бүх блокуудыг шифрлэхээр шийдсэн. Би блок шифрийг сонгосон AES, гэхдээ таны ойлгож байгаагаар энэ нь чухал биш юм.

Уншихдаа шаардлагатай блокуудыг бусад бүх блокуудаас салгахын тулд блок бүрийн эхэнд тусгай тэмдэглэгээ хийхээр шийдсэн. Энэ токен нь эх файл дахь блокийн дугаараас хамаарч шифрлэгдсэн. Энэхүү заль мэх нь шаардлагатай блокуудыг олох төдийгүй тэдгээрийн зөв дарааллыг таних боломжийг нэн даруй хийсэн.

Системийн үйл ажиллагааны ерөнхий зарчим.

Файлын системийн стеганографи

Бичлэг хийх алгоритм

Оноо:

  • Эхлээд эх файлын системд зарим мэдээллийг бичнэ үү;
  • Энэ мэдээллийг устгах (заавал бүгдийг нь биш);
  • Нуух файлыг ижил урттай блокуудад хувааж, тэмдэглэгээ нэмнэ;
  • Эдгээр блокуудыг шифрлэх;
  • Шифрлэгдсэн блокуудыг хоосон FS блокуудад байрлуул.

Блок диаграмд ​​дуртай хүмүүст зориулав

Бичлэг хийх алгоритмын блок диаграммыг доор харуулав. Алгоритм нь дөрвөн файлыг оролт болгон хүлээн авдаг:
-Хувиргах боломжтой файлын системийн зураг;
-Стеганографид хамаарах файл;
-AES-д зориулсан шифрлэлтийн түлхүүр бүхий файл;
- Тэмдэглэгчтэй файл.
Файлын системийн стеганографи

Энэ алгоритм нь нэг сул талтай гэдгийг нэн даруй тэмдэглэх нь зүйтэй: файлыг FS-д бичсэний дараа, чадахгүй байна FS-д шинэ зүйл бичих, учир нь аливаа шинэ мэдээлэл бидний zip файлд хуваарилагдсан блокуудад дуусч болох ч энэ нь "Бидний мөрийг хурдан дарах" боломжийг нээж өгдөг.

Гэхдээ үүнийг хэрхэн засах нь тодорхой байна: FS дээр блок бичих алгоритмыг дахин бичих шаардлагатай. Энэ бол ойлгомжтой, гэхдээ маш их цаг хугацаа шаардсан ажил юм.
Концепцийн нотлох баримтын хувьд би үүнийг хэрэгжүүлээгүй.

Үүний үр дүнд FS-д дараах өөрчлөлтүүд хийгдэх бөгөөд стеганографи хийхээс өмнө FS нь иймэрхүү харагдаж байна (аудио файлыг өмнө нь бичиж байсан).
Файлын системийн стеганографи
Мэдээллийг аль хэдийн задалсан байхад FS ийм харагдаж байна.
Файлын системийн стеганографи

Унших алгоритм

Оноо:

  • Түлхүүр болон тэмдэглэгээ хийх аргын талаар мэдлэгтэй бол эхний N тэмдэглэгээг зохиож, N нь файлын системийн блокийн уртаар үржүүлсэн нь зиплэгдсэн файлын уртаас их байх баталгаатай байх;
  • Тэмдэглэгчээс эхлэн FS дахь блокуудыг хайх;
  • Хүлээн авсан блокуудыг тайлж, тэмдэглэгээг салгах;
  • Үүссэн блокуудыг зөв дарааллаар цуглуулж, эх файлыг аваарай.

Блок диаграмд ​​дуртай хүмүүст зориулав

Бичлэг хийх алгоритмын блок диаграммыг доор харуулав. Алгоритм нь гурван файлыг оролт болгон хүлээн авдаг:
-Файлын системийн дүрс;
-AES-д зориулсан шифрлэлтийн түлхүүр бүхий файл;
- Тэмдэглэгчтэй файл.
Файлын системийн стеганографи

Програмыг ажиллуулсны дараа Унших файл гарч ирэх бөгөөд энэ нь стеганографтай файлын системээс гаргаж авсан файл болох бөгөөд хэрэв түлхүүр эсвэл тэмдэглэгээг буруу зааж өгсөн бол Уншсан файл хоосон болно.
(гоо сайхныг хайрлагчдын хувьд та зөвхөн файл төдийгүй мета мэдээлэл агуулсан "толгой" оруулах боломжтой: файлын нэр, эрх, хамгийн сүүлд өөрчилсөн хугацаа гэх мэт.)

Эхлэх автоматжуулалт

Тохиромжтой болгох үүднээс Linux дээр эхлүүлэхийг автоматжуулахын тулд bash скриптүүдийг бичсэн (Ubuntu 16.04.3 LTS дээр туршиж үзсэн).
Алхам алхмаар хөөргөхийг харцгаая.
Бичлэг:

  1. sudo Copy_Flash.sh "DEVICE" - DEVICE (флэш) -ээс FS дүрсийг авах;
  2. ./Write.sh “ФАЙЛ” “ТҮЛХҮҮР” “MARKER” – виртуал орчин үүсгэж, шаардлагатай сангуудыг татаж аваад бичих скриптийг ажиллуулна;
  3. sudo ./Write_Flash.sh “DEVICE” – өөрчлөгдсөн FS-г DEVICE руу дахин бичнэ.

Уншиж байна:

  1. sudo Copy_Flash.sh "DEVICE" - DEVICE (флэш) -ээс FS дүрсийг авах;
  2. ./Read.sh “ТҮЛХҮҮР” 'MARKER” - виртуал орчин үүсгэж, шаардлагатай номын сангуудыг татаж аваад уншихын тулд алгасах програмыг ажиллуулна;
  3. Одоогийн директор дотор Унших файлыг нээнэ үү - энэ нь зиплэгдсэн мэдээлэл юм.

дүгнэлт

Энэхүү стеганографийн аргыг сайжруулах, нэмэлт туршилт хийх, илүү алдартай файлын системд өргөтгөх шаардлагатай байж магадгүй юм Fat32, NTFS и ext4.
Гэхдээ энэ ажлын зорилго нь файлын систем дэх мэдээллийг далд хадгалах зарчмыг харуулах явдал байв.
Ийм алгоритмын тусламжтайгаар та мэдээллийг айдасгүйгээр хадгалах боломжтой бөгөөд хэрэв та түлхүүрийг мэддэг бол ийм системийг бүдүүлэг хүчээр биш (гэхдээ маш урт алгоритмаар) хакердах боломжтой бол түлхүүрийг мэдэхгүй бол энэ нь систем нь үнэхээр тогтвортой юм шиг санагдаж байна, гэхдээ энэ нь тусдаа нийтлэл гаргах шалтгаан болж магадгүй юм.

Бүх кодыг Python 3.5.2 хувилбар дээр хэрэгжүүлсэн. Ажлын жишээ миний youtube суваг дээр танилцуулсан. Төслийн бүрэн кодыг нийтэлсэн болно github.
(Тийм, тийм ээ, үйлдвэрлэлийн хувилбарын хувьд та "хурдан", жишээлбэл C гэж бичих хэрэгтэй гэдгийг би мэднэ 😉)
Энэхүү хэрэгжилтийн хувьд стеганографийн оролтын файлын хэмжээ 1000 кБ-аас хэтрэхгүй байх ёстой.

Би хэрэглэгчдэдээ талархлаа илэрхийлмээр байна Павел MSTU судалгааг төлөвлөхөд үнэтэй зөвлөгөө, нийтлэлийн дизайны талаархи зөвлөмж.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх