Merhaba Habr.
Size küçük bir proje sunmak istiyorum
Dosya sisteminde bilgilerin gizli depolanması üzerine bir proje yaptım (daha fazla FS).
Bu, eğitim amaçlı gizli bilgileri çalmak için kullanılabilir.
Prototip olarak çok eski bir Linux FS seçildi
uygulama
Uygulama Hususları
Ext2 standardını "çözmek" iyiyse, FS'de sözde olanı değiştirebilirsiniz.
Gizli bilgileri şifrelemeden saklarsanız, FS'deki bulanıklığa rağmen, özellikle programcı neyi arayacağını biliyorsa, yine de çok dikkat çekici olacaktır. Bu nedenle kaynak dosyanın tüm bloklarının şifrelenmesine karar verildi. Blok şifreyi seçtim
Okurken gerekli blokları diğerlerinden ayırmak için her bloğun başına bloğun başına özel bir işaret eklenmesine karar verildi. Bu token, kaynak dosyadaki blok numarasına bağlı olarak şifrelendi. Bu numara, yalnızca gerekli blokları bulmayı değil, aynı zamanda doğru sıralarını da tanımayı hemen mümkün kıldı.
Sistemin genel çalışma prensibi.
Kayıt algoritması
Puan:
- Öncelikle kaynak dosya sistemine bazı bilgiler yazın;
- Bu bilgileri silin (hepsini değil);
- Gizlenecek dosya, bir işaretleyici eklenerek eşit uzunlukta bloklara bölünür;
- Bu blokları şifreleyin;
- Şifrelenmiş blokları boş FS bloklarına yerleştirin.
Blok diyagramı sevenler için
Aşağıda kayıt algoritmasının blok diyagramı bulunmaktadır. Algoritma girdi olarak dört dosya alır:
-Değiştirilebilir bir dosya sisteminin görüntüsü;
-Steganografiye tabi dosya;
-AES için şifreleme anahtarını içeren dosya;
-İşaretleyicili dosya.
Bu algoritmanın bir dezavantajı olduğunu hemen belirtmekte fayda var: dosyayı FS'ye yazdıktan sonra, yapmamalısın FS'ye yeni bir şey yazın, çünkü herhangi bir yeni bilgi sıkıştırılmış dosyamıza ayırdığımız bloklarda yer alabilir, ancak bu aynı zamanda "izlerimizi hızlı bir şekilde kapatma" olasılığını da açar.
Ancak bunun nasıl düzeltilebileceği oldukça açık: FS'de blok yazma algoritmasını yeniden yazmak gerekiyor. Bu anlaşılabilir ancak inanılmaz derecede zaman alıcı bir iştir.
Proof of Concept için bunu uygulamadım.
Sonuç olarak, FS'de aşağıdaki değişiklikler yapılacaktır; FS, steganografiden önce böyle görünüyor (daha önce bir ses dosyası kaydedilmişti).
Ve bilgiler zaten sıkıştırılmış haldeyken FS böyle görünüyor.
Okuma algoritması
Puan:
- Anahtar ve işaretleyici oluşturma yöntemi hakkında bilgi sahibi olarak, N'nin dosya sistemi bloğunun uzunluğu ile çarpılmasının sıkıştırılmış dosyanın uzunluğundan daha büyük olacağını garanti ederek ilk N işaretleyiciyi oluşturun;
- FS'de işaretleyicilerle başlayan blokları arayın;
- Alınan blokların şifresini çözün ve işaretleri ayırın;
- Ortaya çıkan blokları doğru sırayla toplayın ve kaynak dosyayı alın.
Blok diyagramı sevenler için
Aşağıda kayıt algoritmasının blok diyagramı bulunmaktadır. Algoritma girdi olarak üç dosya alır:
-Dosya sistemi görüntüsü;
-AES için şifreleme anahtarını içeren dosya;
-İşaretleyicili dosya.
Program çalıştırıldıktan sonra steganografili dosya sisteminden çıkarılan dosya olacak Okuma dosyası görünür; anahtar veya işaretleyici yanlış belirtildiyse Okuma dosyası boş olacaktır.
(güzellik sevenler için, yalnızca dosyayı değil, meta bilgileri içeren bir "başlık" da ekleyebilirsiniz: dosya adı, haklar, son değiştirilme zamanı vb.)
Başlangıç otomasyonu
Kolaylık sağlamak için, Linux'ta başlatmayı otomatikleştirmek için bash komut dosyaları yazılmıştır (Ubuntu 16.04.3 LTS'de test edilmiştir).
Lansmana adım adım bakalım.
kayıt:
- sudo Copy_Flash.sh “DEVICE” - DEVICE'tan (flash) FS görüntüsünü alın;
- ./Write.sh “DOSYA” “ANAHTAR” “MARKER” – sanal bir ortam oluşturun, gerekli kitaplıkları indirin ve yazma komut dosyasını çalıştırın;
- sudo ./Write_Flash.sh “DEVICE” – değiştirilen FS'yi tekrar DEVICE'a yazın.
Okuma:
- sudo Copy_Flash.sh “DEVICE” - DEVICE'tan (flash) FS görüntüsünü alın;
- ./Read.sh “KEY” 'MARKER” - sanal bir ortam oluşturun, gerekli kütüphaneleri indirin ve okumak için skipt'i çalıştırın;
- Geçerli dizinde Okuma dosyasını açın - bu sıkıştırılmış bilgidir.
Sonuç
Bu steganografi yönteminin muhtemelen iyileştirilmesi, ek test edilmesi ve aşağıdakiler gibi daha popüler dosya sistemlerine genişletilmesi gerekmektedir:
Ancak bu çalışmanın amacı, dosya sisteminde bilgilerin gizli depolanmasının mümkün olduğu prensibi göstermekti.
Bu tür algoritmaların yardımıyla bilgileri korkusuzca saklayabilirsiniz ve eğer anahtarı biliyorsanız, böyle bir sistemi kaba kuvvetle değil (ama çok uzun bir algoritmayla) hacklemek mümkünse, o zaman anahtarı bilmeden, bu sistem bana kesinlikle kararlı görünüyor, ancak bu ayrı bir makalenin nedeni olabilir.
Tüm kodlar Python 3.5.2 sürümünde uygulanmıştır.
(Evet evet, üretim versiyonu için "hızlı" bir şey yazmanız gerektiğini biliyorum, örneğin C 😉)
Bu uygulamada steganografi için girdi dosyasının boyutu 1000 kB'ı geçmemelidir.
Kullanıcıya şükranlarımı sunmak istiyorum
Kaynak: habr.com