Dosyaları tamamen silme: Eski harddisk’e veda ederken…

Daha önce yazdığım Disk üzerinde veriyi tamamen silmek: 1 defa üzerine yazmak yeterli mi? yazısında, veriyi disk üzerinden tamamen silen yazılımlardan ve bu konudaki tartışmalardan bahsetmiştim.

Şahsi görüşüm kişisel kullanım için single-pass adı verilen yöntemle, sadece 1 defa tüm disk üzerindeki sektörlere 0 (sıfır) yazarak verinin silinmesinin yeterli olacağı yönünde. En azından standart veri kurtarma yöntemleri ile verinin kurtarılamayacağını ve disk wipe işleminin zamanını da düşündüğümüzde hızlı bir yol.
Read the rest of this entry »

Disk üzerinde veriyi tamamen silmek: 1 defa üzerine yazmak yeterli mi?

Konuya hakim kişilerin çok iyi bildiği gibi, disk üzerinde silinen veriler aslında disk üzerinden tamamen silinmez. İşletim sistemi dosyanın, dosya sistemi tablosundaki referansını siler. Ve yeni bir veri/dosya oluşturulduğunda bu veri, rasgele olarak boş alanlara veya silinmiş olarak bilinen bu alanlara yazılmaktadır.

Silinmiş verileri kurtarma yazılımları da bu mantıkta çalışmaktadır. Dosya sisteminde ilişkili olmayan ama silinmiş dosyalar bu sayede kurtarılabilmektedir.

Eraser, THC-SecureDelete, DBAN gibi yazılımlar ise, dosyanın disk üzerinde tamamen silinmesi için kullanılabilecek yazılımlardır.

Peki veriyi disk üzerinde 1 defa silmek yetiyor mu? 1996 yılında Peter Gutmann tarafından yayınlanan Secure Deletion of Data from Magnetic and Solid-State Memory makalesi, bazı yöntemlerle verinin disk üzerinde 2-3 defa silinmesi durumlarında dahi kurtarılabileceğini/okunabileceğini belirtiyordu. Hatta sektörde sürekli olarak “bu şekilde silinse bile adamlar okuyabiliyormuş” diye bahsedilir.

SANS forensics blog’unda geçen gün yayınlanan Overwriting Hard Drive Data yazısı bu konuyla ilgili yeni bir tartışmayı alevlendirecek gibi gözüküyor. Buradaki yazıya göre verinin bu yöntemle okunabilmesi/kurtarılabilmesi mümkün değil. Yani 1 defa üzerinden geçmek yeterli.
Ancak Gutmann’ın makalesine yaptığı “Further Epilogue” eki, SANS forensics blog’unda geçen yöntemin farklı ve bu yorumun hatalı olduğu yönünde.

Kişisel kullanım için fikrim 1 pass, yani disk üzerindeki alanların üzerinden bir defa geçilmesi, veri silinmesi için yeterli olacağı yönünde. Zaten verinin gizlilik ve kritiklik değeri çok yüksekse bu durumda kurumlar farklı yöntemler de uyguluyor. (degaussing vd.)

Database encryption: Transparent Data Encryption

Veri hırsızlığı ne kadar gizli bilginin açığa çıkmasına neden oldu? Peki sadece Internet üzerinden sistemlere sızılarak mı bilgiler kaçırılıyor? Tabi ki sadece bu değil.

Kimlik bilgileri, şirket verileri, finansal bilgiler ve diğer kişiye/kuruma özel bilgilerdeki toplu veri kayıpları en çok kaybolan veya çalınan backup teypleri, harddiskler, laptop ve diğer donanım nedeniyle oluşuyor. Rakamlar yüzbinlerle, milyonlarla ifade ediliyor. Ve bunlar sadece bilinen veya duyulan olaylar. Bundan çok daha fazlasının duyurulmadığı, duyulmadığı ve farkedilmediğinden eminim.

Transparent Data Encryption
TDE, yani Transparent Data Encryption olarak geçen veritabanı veri şifreleme yöntemi, kodlamada, sorgularda vb. değişiklik yapmadan verilerin veritabanı tarafından disk üzerinde şifrelenerek saklanmasını temel alıyor. Veritabanı sunucularına bu özellik getirilirken, aynı zamanda performans problemlerinin oluşmasının da önüne geçilmesi sağlanmaya çalışıyor.

Oracle
Oracle ilk olarak, Oracle 10g Release 2 ile tablolarda bulunan kolonlar bazında TDE özelliğini duyurdu (Konu hakkında makale). Ancak bu şifreleme yöntemi, performans konusunda sıkıntıları da beraberinde getiriyordu.

Oracle 11g sürümü* ile gelen yeni özellikle, şifrelenmiş tablespace yaratılarak, sadece kolon değil, tablo bazında şifreleme sağlanmış oluyor.
Şifrelemeden kaynaklanan performansın önüne geçebilmek için, kullanıcı bir sorgu yaptığında sunucu veriyi buffer cache bölümüne atıyor ve veri burada şifrelenmemiş olarak hızlı erişilebilir/sogrulanabilir halde duruyor. (Encrypting Tablespaces makalesi)

Temel amaç verinin ve yedeklerinin şifrelenmiş olarak saklanması.

Microsoft SQL
Aynı şekilde Microsoft SQL 2008’de de TDE özelliği bulunuyor. Bu sayede database dosyaları (mdf) ve yedekler şifrelenmiş olarak bulunduğu için veri hırsızlığında verilerin açığa çıkması engellenmiş oluyor. SQL 2008 TDE detayları bu yazıda bulunabilir.

Sonuç
Kolon tiplerini standart kolonlardan binary tipi kolonlara dönüştürmek; SQL SELECT, INSERT vb. sorguları buna göre güncellemek ve değiştirmek; bu kolonlarda yaşanacak sorgulama problemleri; şifreleme anahtarları yönetimi; uygulama yapılarında değişiklik ve tüm bu değişiklikler sonrası yaşanan performans problemleri TDE ile büyük ölçüde rahatlatılmış oluyor.

Özellikle hassas veri barındıran kurumların ve hatta SaaS firmalarının uygulayabileceği TDE özellikleri, veritabanı yöneticilerinin ve uygulama geliştiricilerinin işlerini kolaylaştıracaktır. Şifreleme anahtarlarının da etkin bir şekilde yönetildiği durumlarda, veri hırsızlığına ve güvenliğine karşı gerekli itina gösterilerek, önlemler alınmış oluyor.

TrueCrypt 6 çıktı

Farklı işletim sistemlerinde çalışabilen, ücretsiz ve açık kaynak kodlu disk şifreleme yazılımı TrueCrypt‘in 6.0a sürümü çıktı.


Yeni özellikleri arasında eski sürümlerine göre hız açısından farklılıklar, gizli işletim sistemi oluşturma göze çarpıyor.

Detaylı sürüm notlarına buradan ulaşabilir, yazılımın yeni sürümünü buradan indirebilirsiniz.

PGP Desktop 9.0

Ilk ciktiginda PGP Desktop 9.0‘i [alternatif link] incelemistim. Urune genel olarak bakarsak, eski surumlerinden farkli olan ozellikler:
  • Whole disk encryption
  • Politika bazli e-mail sifreleme
  • AIM(AOL Instant Messenger) trafigi sifreleme
PGP Whole Disk ile tum diskin sifrelenebilmesini saglamak mumkun. Bu islem yapildiktan sonra,sistem acilisinda girilecek bir sifre veya bir token’da saklanan pgp anahtari ile verilere erisim saglanabiliyor.
Bu ozelligin sadece PGP Desktop Professional 9.0‘da mevcut oldugunu, ve Windows XP SP1 veya SP2 ile desteklendigini hemen belirteyim. Urunun sayfasindaki bilgiye gore Windows 2000 desteginin de ileride eklenecegi planlanmis.
PGP Desktop Home serisini kullanan kullanicilar, isletim sistemi bu ozelligi kullanmak icin uygun olmayanlar veya herhangi bir nedenden oturu kullanmak istemeyenler ise bunun yerine olusturacaklari sanal disk ile hassas verilerini guvenli bir sekilde saklayabilirler.

PGP’nin daha onceki surumlerinde de bulunan PGP Virtual Disk ozelligi ile sifrelenmis bir dosya olusturup, bunu yeni bir diskmis gibi mount etmek (otomatik veya istenildiginde) mumkun. Bu sanal disk belirlenecek bir sifre ile sifrelenebilecegi gibi, pgp anahtarinizla da sifrelenebilir. Tek dikkat edilmesi gereken, diskin boyutunu ilk olustururken iyi planlamak, cunku bu sanal disklerin, diger tum disklerde oldugu gibi, otomatik olarak genisleme ozelligi yok ;)

PGP Virtual Disk ile yasadigim tek sorun, bu diski eger ag uzerinde (ornegin yerel aginizdaki dosya sunucunuzda) SMB paylasimi uzerinden kullaniyorsaniz ve diski unmount etmeden Windows’unuzu kapatirsaniz, meshur mavi ekranla karsilasabiliyorsunuz.
Bu sorunun, benim Windows’un varsayilan shell’i explorer yerine bbLean kullanmamdan kaynaklaniyor olabilecegini de dusunebiliriz. Fluxbox aliskanligim yuzunden Windows uzerinde ancak bu sekilde rahat edebiliyorum.

Politika bazli e-mail sifreleme‘deki fark, eskiden oldugu gibi e-mail client’inizda e-mail’i olustururken, “bu e-mail’i sifrele”, “bu e-mail’i imzala” gibi secmek yerine; e-mail gonderilirken, gonderilen e-mail’i ag seviyesinde kendisi uzerinden gecirip programda belirtilen politikalara gore sifreleme/imzalama kararlarini vermesi olarak aciklanabilir. Bunun guzel artilari var, ancak bazi nedenlerden dolayi kisisel olarak pek hoslanmadigimi soyleyebilirim.

Oncelikle ‘politika’dan kasit nedir, PGP ile gelen varsayilan politikalardan birisinde bunu gorelim.

Aciklama(Description) bolumunde politikaniza bir isim veriyorsunuz, ardindan asagidakileri belirterek kuralimizi olusturuyoruz:

  • Kosul: Kosul belirleyerek(ornegin mesaj basliginda [PGP] varsa, mesaj gizli olarak isaretlenmisse, belirlediginiz domain’e veya kisiye gidiyorsa); gonderilen e-mail’in belirleyebileceginiz kosullarin hepsine(If all), herhangi birisine(If any) veya hic birisine(If none) uyma durumu
  • Aksiyon: Imzala ve/veya sifrele
  • Istisna: Alicinin PGP anahtari bizde bulunmuyorsa anahtarini anahtar sunucularda ara, anahtari bulamazsan mesaji blokla veya duz metin olarak gonder
Bu sayede olusturdugunuz politikalarla, isi kullaniciya birakmadan belirttiginiz kosullarda kesinlikle sifrelenebilmesini aksi taktirde gonderilmemesini saglayabiliyorsunuz.
Yine bu sayede kullanici hangi e-mail istemcisini kullanirsa kullansin, PGP uzerinden gececegi icin sifreleme saglamis oluyorsunuz. Bu sayede PGP e-mail client destegi otomatik olarak daha genis bir alana yayilmis oluyor.

AOL Instant Messaging trafigi, iki taraf da PGP Desktop 9.0 yazilimini kullaniyorsa saglanabiliyor. Yine ag uzerinden gecen AIM trafigi otomatik olarak karsilikli sifrelenmis oluyor. Bu gunlerde cevremdeki insanlarin daha yaygin olarak MSN Messenger kullandigini gordugumde bu urunle ilgili pek fazla bir arti yaratmiyor.

Gelelim urunun sevmedigim ozelligine. Yukarida anlattigim e-mail sifreleme ve AOL sifreleme, PGP’nin trafigi uzerinden gecirmesini gerektiriyor ki bu da ag trafigini uzerinden gecirmesine neden oluyor. Malesef _PGP’nin bu 2 ozelligini kapatmama ragmen_ bu anormalligi duzeltebilmis degilim. Asagida bazi ekran goruntuleri ve bu ekran goruntuleri ile ilgili notlarim var:

Ilk ekran goruntusunde gorebileceginiz gibi PGP AIM Proxy ozelligi kapali olmasina ragmen, 5190. port’a yaptigim bir istegi PGP karsiliyor, ve disariya kullandigim netcat yerine kendisi baglanti yapmaya calisiyor.

Ikinci ekran goruntusundeyse, olmayan bir IP adresinin 5190. portuna yapmaya calistigim bir baglantiyi netcat yerine kendisi yapmaya calisiyor. Yine PGP secenekleri ekraninda gorulebilecegi gibi, “Encrypt instant messages” secenegi isaretli degil.

Son olarak wget ile yaptigim bir web isteginin bile kendisi uzerinden gecmeye calistigini gordum. PGP’nin disariya cikis iznini blokladigimda, ikinci baglanti istegini kendi uzerinden gecirmeye calismiyor.

PGP Desktop 9.0 urununun 30 gunluk deneme surumunu PGP’nin sitesinden edinebilirsiniz. Bu deneme surumunun de PGP Whole Disk ozelligini kapsamadigi belirtilmis.

PGP Desktop urununun teknik ozelliklerine buradan(Professional, Home) bakabilirsiniz.

Cryptoloop kullanimi

Oncelikle Whoppix‘i Auditor‘e tercih ettigimi belirtmeliyim. Bunda Auditor’u ilk ciktigi siralarda denemem, ve klavye basta olmak uzere(yanlis hatirlamiyorsam varsayilan klavye isvec olarak geliyordu) bazi problemler yasamam, ve Whoppix’in icerik olarak Auditor’e gore daha zengin olmasinin rolu buyuk.
Ancak Auditor’un gecen gun denemek uzere indirdigim ve bu yazida gecen cryptoloop’u denedigim surumunde bir problem yasamadim. (auditor-200605-02-ipw2100.iso)

Bir penetrasyon testinin Auditor ile yaptigim kisminda elde ettigim sonuclari kendime sifrelenmis bir sekilde gondermek istedigimde, aklima cryptoloop geldi. Sifrelenmis bir disk olusturup, tarama sonuclarini icerisine koyarak kendime guvenli bir sekilde ulastirabilecektim ve daha sonra, belirledigim 20 karakterin uzerindeki kompleks sifre ile tarama sonuclarina ulasabilecektim.
Loop-AES veya baska bir cozumun daha iyi olup olmadigi konularina fazla girmeden, buldugum Cryptoloop HOWTO dokumani ve losetup(8) man sayfasi ile ihtiyacimi gidermeye odaklandim.

Asagida, yukaridaki amaci gerceklestirmek icin Auditor ile yaptigim tum adimlari aralarina comment ekleyerek anlatiyor olucam. Veriler bir USB disk uzerinde saklanacaksa, ozel bilgiler olacagi icin asagidaki yontemle saklamakta fayda olacaktir.


root@1[~]# lsmod |grep crypt

cryptoloop modul olarak derlenmis(bknz. /boot/auditor-config), ancak aktif moduller arasinda gozukmuyor. Cryptoloop kullanabilmek icin bu module ihtiyacimiz olacak.

root@1[~]# modprobe cryptoloop
root@1[~]# lsmod |grep crypt
cryptoloop 3072 0

10mb boyutunda bir dosya olusturalim. Verileri kendimize mail ile gondereceksek daha ufak bir dosya olusturmakta fayda var. (Dosya sistemini olusturmada problem yaratmayacak kadar)

NOT: Cryptoloop HOWTO dokumaninda dd kullanimi ornek alinabilir.
root@1[~]# dd if=/dev/zero of=kripton bs=1024k count=10
10+0 records in
10+0 records out
10485760 bytes transferred in 0.025614 seconds (409377115 bytes/sec)

10mb boyutundaki dosyamizi gorelim

root@1[~]# ls -lh kripton
-rw-r--r-- 1 root root 10M Jun 27 21:46 kripton

Sifrelenmis dosya sistemini olusturalim, ext3 olarak formatlayalim ve /mnt/crypto dizinine mount edelim.


-e AES256 : 256 bit AES sifreleme kullan,
-T : belirleyecegimiz sifreyi iki kere sor

root@1[~]# losetup -T -e AES256 /dev/loop2 kripton
Password:
Retype password:
root@1[~]# mkfs.ext3 /dev/loop2
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
2560 inodes, 10240 blocks
512 blocks (5.00%) reserved for the super user
First data block=1
2 block groups
8192 blocks per group, 8192 fragments per group
1280 inodes per group
Superblock backups stored on blocks:
8193

Writing inode tables: done
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
root@1[~]# mkdir /mnt/crypto
root@1[~]# mount -t ext3 /dev/loop2 /mnt/crypto/

Yeni diskimizin icerigi:
root@1[~]# ls -la /mnt/crypto/
total 14
drwxr-xr-x 3 root root 1024 Jun 27 21:51 .
drwxr-xr-x 12 root root 1024 Jun 27 21:51 ..
drwx------ 2 root root 12288 Jun 27 21:51 lost+found

Tarama sonuclarini sIkistirarak, yeni olusturdugumuz diske tasiyalim
root@1[~]# tar -jcf c-scan-results.tgz c/
root@1[~]# mv c-scan-results.tgz /mnt/crypto/
root@1[~]# ls -lh /mnt/crypto/
total 18K
-rw-r--r-- 1 root root 5.5K Jun 27 21:53 c-scan-results.tgz
drwx------ 2 root root 12K Jun 27 21:51 lost+found

Diski unmount edelim
root@1[~]# umount /mnt/crypto
root@1[~]# losetup -d /dev/loop2
root@1[~]#

Ileride diski kullanmak istedigimizde, cryptoloop modulunu yukledikten sonra asagidaki adimlari izleyebiliriz.

Yanlis sifre ile deniyorum:
root@3[knoppix]# mount kripton /mnt/crypto/ -oencryption=aes-256 -t ext3
Password:
mount: wrong fs type, bad option, bad superblock on /dev/loop2,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so

Dogru sifre ile deniyorum:
root@3[knoppix]# mount kripton /mnt/crypto/ -oencryption=aes-256 -t ext3
Password:

Dosyalarim yerli yerinde ;)
root@3[knoppix]# ls -l /mnt/crypto/
total 18
-rw-r--r-- 1 root root 5570 Jun 27 21:53 c-scan-results.tgz
drwx------ 2 root root 12288 Jun 27 21:51 lost+found
root@3[knoppix]# losetup -a
/dev/loop0: [1600]:2118 (/cdrom/KNOPPIX/KNOPPIX)
/dev/loop1: [000c]:47499 (kripton) encryption=CryptoAPI/aes-cbc
root@3[knoppix]# umount /mnt/crypto
root@3[knoppix]# losetup -a
/dev/loop0: [1600]:2118 (/cdrom/KNOPPIX/KNOPPIX)