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)

Wireless aglarda guvenlik problemleri

Wireless aglarda WEP kullanimi wireless aglarin guvenligini saglamakta yetersiz kaliyor.

  • MAC adresine gore erisim kisitlanmasi kolayca asilabiliyor
  • “WEP anahtarini kirabilmek icin yeterli veri toplanilmasi gerekiyor, dolayisiyla WEP anahtarini duzenli araliklarda degistirmek problemimizi giderir” fikri de curutulmus durumda. Konuyla ilgili bir grup FBI ajaninin yaptigi, yaklasik 3 dakikada WEP anahtarinin kirilmasi demonstrasyonu hakkinda bilgiye buradan ulasilabilir. WEP anahtari kirma demolari, guvenlik ile ilgili olan live cd dagitimlarinin web sitelerinde yerlerini almis bile.

WEP yerine WPA kullanilmasi gerekiyor. Ancak WPA-PSK (WPA and a pre-shared key) kullaniminda passphrase secimi cok onemli, cunku bu passphrase brute-force(deneme/yanilma) saldirilarina acik. Dolayisiyla uzun ve kompleks passphrase secimi onem kazaniyor.
Bu brute-force saldirisinin nasil yapilabildigini gormek icin, bugun rasladigim WPA Cracking demonstrasyonu izlenebilir.

Su sira en iyi secim, WPA-Enterprise olarak gecen, WPA + 802.1x kullanimi olarak gozukuyor.