Btrfs dosya sistemindeki dosyaları güvenle silin


22

Bazen, bir dosya sistemindeki bir dosyayı silmeye ve dosyanın gerçekten gittiğinden emin olmaya ihtiyaç vardır. Örneğin hassas şifreler içeren bir dosya diskten tamamen silinmelidir.

rmTipik bir dosya sistemine basit bir dosya verilmesi inode ("pointer") dosyasını siler, ancak dosyanın fiziksel diskteki içeriğini silmez - bunlar dosya sistemi boş alana ihtiyaç duyduğunda üzerine yazılana kadar orada kalırlar.

Birçok dosya sisteminde, parçalama programı bu tür güvenli bir silme sağlar. Bununla birlikte, btrfs gibi bir CoW dosya sisteminde bu yaklaşım kullanışsızdır . Sorun, dosyanın toplu anlık görüntülerde bulunması gerçeğiyle daha da artmaktadır.

Btrfs dosya sistemindeki bir dosyayı güvenli bir şekilde silmenin bir yolu var mı ? Tüm işaretçileri silmek (tüm ciltlerde) ve boş alanı sıfırlarla doldurmak yeterli mi?


2
Güzel soru, bu konuyu daha önce hiç düşünmedim. Bu soruna geçici bir çözüm bulmak için bu tür dosyaları şifrelemek olacaktır. Ayrıca bütün diski şifrelemek ancak edebilir çalışan sisteme Saldırgan kök erişimi, bu sana ... yardım etmezse
mreithub

@mreithub Gerçekten, bu tür dosyaları şifrelemek, FDE'de olduğu gibi her zaman en başta iyi bir fikirdir. Tüm kullanım durumlarını düşünemez, ancak (örneğin gömülü bir sistem - böyle bir sistemin btrfs çalıştırması yine de tartışılabilir olsa da ...). Aslında bunu soruyorum çünkü hassas dosyaları kopyalamadan önce şifrelemeyi ayarlamayı unuttum, ancak tüm bölümü silmekten kaçınmak istiyorum
goncalopp

Yanıtlar:


9

Güvenli silme, herhangi bir dosya sisteminde zor bir tekliftir. Dosya sistemi çok tuhaf değilse ve dosyanın başka kopyalarının bulunmadığını garanti etmezse, cihazdaki tüm boş alanları temizlemeniz gerekir. Yazma işleminde kopyalanan dosya sistemlerinde dosyanın çok fazla bitini bulmanız daha muhtemel olsa da, daha fazla sayıda "statik" dosya sistemi uygulamada bu garantiye sahip değildir, çünkü birçok dosya düzenlenir, bu nedenle eski sürümlerin bitleri vardır. dosya etrafında uzanıyor.

Sıfırlarla silmek, rastgele baytlarla silmek kadar iyidir ve birden çok geçişe gerek yoktur. Sıfırlarla silmek, 1980'lerin sabit disk teknolojileri ile laboratuar koşullarında kısmen kurtarılabilecek kalıntı verileri bıraktı; bu artık geçerli değil. Bkz. Neden bir sabit sürücüye sıfır (veya rastgele veri) yazmak, bir kez yapmaktan çok daha iyidir?

Diskteki her şeyi şifreleyerek cleartext gizli verilerinden kurtulabilirsiniz. Bu dosya sistemi üzerinde bir ecryptfs birimi kurun ve tüm (gizli) dosyalarınızı bu dosyaya taşıyın. Ardından, dosya sisteminin kullanılmayan tüm alanlarının üzerine yazın. Dosya sistemini doldurarak çoğunu silebilirsiniz cat /dev/zero >zero. Tamamlanmamış bloklar (hala bir dosyanın son parçasını içeren bloklar, ardından bazı çöpler - gizli bir dosyadan kalanlar olabilir) içinde hala bazı bilgiler bulunabilir. Eksik blok olmadığından emin olmak için, dosya sistemindeki her şeyi ecryptfs'e taşıyın (ecryptfs'in dosyaları tüm blokları kullanır, en azından blokların 4kB olduğu tipik kurulumlarda). Bunu tüm birimlere uyguladığınızdan ve düz metin gizli verileri içeren tüm fotoğrafları sildiğinizden emin olun.

Dergide kalan bazı bilgiler hala olabilir. Bunu nasıl temizleyeceğimi bilemiyorum.

SSD'de, blok yeniden tahsisi nedeniyle, normal yazılım araçlarıyla okunamayan ancak bellenimi hackleyerek veya fiziksel erişime sahip veriler toplanabilir. Orada tek başvurunuz SSD'nin tamamen silinmesidir.


3
Sıfırlar, sıkıştırılmalarının veya tamamen ihmal edilmesinin dezavantajına sahiptir (bir SSD, okurken TRIM'd sektörler sıfırlar döndürdüğü için, sıfır yazmak yerine TRIM olabilir). Bu, bugünlerde sıfırları güvensiz yapıyor. Rasgele veri kullanmak, dosya sistemini ve diski verileri olduğu gibi yazmaya zorlar.
frostschutz

@frostschutz 0Tamam dışında ve TRIMing'e tabi olmayan herhangi bir karakter yazmak 1yerine , hepsinin yazdığını söyler misiniz? Veya bazı sürücüler her şeyde sıkıştırma kullanıyor mu?
Xen2050

@frostschutz Eğer bir ecryptfs hacmini sıfırlarla dolduruyorsanız (cevabın burada önerdiğini düşündüğüm şey budur, ancak daha fazla inceleme yapıldığında, ifadelerinin gerçekte belirsiz olduğunu görüyorum), o zaman esasen rastgele yazacaksınız (sıkıştırılamaz / diske okunamaz) veri, hayır?
JamesTheAwesomeDude

@JamesTheAwesomeDude Hayır, şifreleri sıfırlanan kısımlara sıfır yazmayı teklif ediyordum, ancak bunun aşağıda bir SSD için yeterli olmadığını belirtmiştim.
Gilles 'SO- kötülük yapmayı bırak'

6

Hmmm, btrfs her zamanki parçalama yöntemlerini yeniyor gibi görünüyor ...

  • Çağrılan bir takma seçeneği var, nodatacowancak bu zaten varolan dosyaları etkilemiyor gibi görünüyor.
  • Diskinizde zaten mantıklı dosyalarınız olduğundan, bu btrfs SSS girişi size de yardımcı olmaz.
  • O zaman var debugfs. Sadece ext dosya sistemleri içindir, ancak işe yarayabilecek bir yama vardır . Etkilenen blok adreslerini bulmak için kullanabilir ve ardından doğrudan / dev / sdXY üzerine yazabilirsiniz. Ancak bu çok tehlikelidir ve çalışmayabilir (özellikle de dosyanın daha fazla görüntüsü varsa)
  • Birinin belirli fotoğrafları veya tam bir dosyayı değiştirmesine (veya parçalamasına) izin veren bir btrfs yaması yazın
  • En temiz girişim (gerçekten hassas veriler için):

    • başka bir disk satın alın (etkilenen bölümün bir kopyası için birincisi için yeterli boş alanınız yoksa)
    • tam disk şifrelemesi ve bunun üzerine dosya sistemlerini kur
    • a'dan b'ye her şeyi kopyala
    • b sistemine önyükleme yapın ve tüm diski parçalayın ...

    Bu en ucuz yaklaşım olmayabilir, ancak günümüzün düşük depolama maliyetlerini ve diğer seçeneklerde yaşayacağınız sorunu göz önüne alarak aslında en ucuz olanı olabilir (çalışma saatleri açısından).


nodatacowYeni oluşturulan dosyalar için Cbayrağın varsayılan durumunu ayarlar . Elbette biri tam olarak ve sonra olabilir? chattr +C ~/.browser/logins.sqliteshred
JamesTheAwesomeDude

-6

Orada shred(1)(Dağıtımınıza ait paketlerde olmalıdır) Unix / Linux için. EFF'nin önerdiği şey bu .


3
Soruyu iki kez kontrol ederseniz,
paramparça

Tek bulduğum nedenden dolayı, hassas dosyaların şifrelenmesi için önerilerim var.
von

2
"Birçok dosya sisteminde, parçalama programı bu kadar güvenli bir silme sağlar. Ancak, btrfs gibi bir CoW dosya sisteminde bu yaklaşım kullanışsızdır.". Orada da iki bağlantı var.
goncalopp
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.