Dosyaları yoketmek 16 May 07, Wednesday @ 13:28

Sevgili Talat Uyarer’in Pardus Gezegeni‘nden ulaştığım Pardus Altında Veri Kurtarma -1 yazısını okuyunca 3 yıl önce tanıştığım veriyi yok etme kavramı aklıma geldi.

Talat’ın tanıttığı uygulama, dosya sistemi üzerinde gezerek içinde bir dosya başlığı (İng. file header) bulunan parçaları buluyor. Dosya başlığını okumak aslında o kadar zor değil. Daha sonra da dosyanın devamını kolayca elde ediyor. Eğer siz bu dosyanın önceden kapladığı alana başka bir şey yazmamış iseniz dosyanın tamamı artık elinizde. Biz geçtiğimiz yaz, Portakal Teknoloji‘deki stajyerlerimize (Karahan ve Mete’ye buradan selamlar) bu tür bir uygulamayı yazdırmıştık.

Şimdi bu durumda aklınıza şu soru gelmeli. Madem bir dosyayı tamamen (yada kısmen) kurtarmak mümkün. Silinmesini ve kurtarılmasını istemediğimiz bir dosya olduğunda ne yapacağız? Bunun yazılım ile iki türlü, donanım ile bir kaç türlü daha çözümü var. Yazılım çözümlerinin birincisi bu işe yönelik bir dosya sistemi kullanmayı öngörüyor. Yani bir şey yazacağınız zaman ilk olarak taze silinmiş verinin üzerine yazıyorsunuz. Bu da verilerin silinme işlemlerinin takip edilmesi demek. Ancak bu yaklaşım performans yönünde sorun çıkartabilir. Ne de olsa her dosyayı bu şekilde silmek istemezsiniz. İkinci çözüm ise, bir dosyayı silmeden önce onun içeriğinin üzerine başka şeyler yazmak. Sadece dosya başlığını oluşturan bir kaç kilobaytın üzerine bir şey yazmak bile verimli bir çözüm.

Ancak daha ciddi bir çözüm istiyorsanız o zaman bu yazma işini birden fazla kere yapmanız gerekiyor. Çünkü diskinizde önceki yazmalardan kaynaklanan manyetik izler kaldığı için özel cihazlarla bu izleri takip etmek de mümkün. Yani üzerine bir şey yazsanız da eski yazılanları bulmak mümkün oluyor. Bu durumda istatistiksel olarak durumu zorlaştırmak gerekli. Bunun için çeşitli algoritmalar (örneğin ünlü Gutmann Yöntemi) tasarlanmış hatta askeri standartları bile var.

GNU’nun dosya araçları içinde, shred adını verdiğimiz bir komut satırı aracı da bu işi yapıyor. En temel kullanımı ile

$ shred –iterations=SAYI dosya_adı

şeklindeki komut ile dosyanın üzerine SAYI kadar sefer, rastgele baytlardan oluşan bir içerik yazılıyor. Bu parametrenin varsayılan değeri 25 ve bu oldukça tatmin edici bir şey. Ancak zaman alabileceğini göz ardı etmeyin. Örneğin ben 20 Megabaytlık bir dosyayı 5 defa üzerine yazarak yok etmek isteyince, aşağıda görüldüğü gibi makul bir zaman alıyor.

BoraNX6325 ~ # ls -lh dosya.bin
-rw-r–r– 1 root root 20M May 16 17:25 dosya.bin
BoraNX6325 ~ # time shred –iterations=5 dosya.bin

real 0m15.734s
user 0m0.016s
sys 0m13.965s
BoraNX6325 ~ #

Ancak kalkar bütün bir diski, ve 25 defa yazarak yok etmek isterseniz o zaman işiniz biraz daha zaman alır. 20 MB’ı 5 sefer ile 15 saniyede yok etmek 25 sefer ile 75 saniyede yok etmek demek. Aynı mantık ile 20GB’ı ise 75 bin saniyede, 100 GB’ı ise bunun beş katı yani 375 bin saniyede yok etmek mümkün. 375 bin saniye kısa bir süre değil, bir diski yok etmek benim bilgisayarımda tam 104 saat sürüyor.

Hani filmlerde olur ya. Bir düğmeye basar ve anında tüm dosyaları yok ederler. Onu yazılım ile yapmak mümkün değil anlayacağınız. O dediğiniz için diskinizi manyetik etkiye maruz bırakan cihazlar kullanmak gerekiyor.

Eğer verilerinizi daha kolay biçimde korumak istiyorsanız, onları şifreli saklamanız daha doğru. Portakal Teknoloji’de geliştirdiğimiz açık kaynak kodlu kriptolu dosya servisi gibi uygulamalar (o kadar da reklam olsun) ile bu da mümkün.



Tags: Özgür Yazılım  Pardus  Portakal Teknoloji 

Comments

Post a comment (max. 3000 character)

Your name: Comment:
Number of remaining characters: