top of page

Hashte bir tuzumuz olsun

  • Writer: İbrahim Mert COŞKUN
    İbrahim Mert COŞKUN
  • Apr 18, 2020
  • 2 min read

Updated: Jan 19, 2021

Bu yazıda veritabanlarında saklanan şifrelerin nasıl tutulması gerektiğini ve "hashlerde tuzlama" dediğimiz yöntem ile nasıl güvenli bir şekilde tutulacağını anlatacağım.


Sistemimizde bulunan veya keşfedilen güvenlik açıklarından dolayı veritabanları riske girebilmektedir. Özellikle kullanıcı bilgileri, şifreleri vs. gibi bilgiler tutan bir veritabanı ise durum daha da vahim bir hal almakta. Bunun için kullanıcı verilerinin tutulduğu veritabanının güvenliği oldukça büyük bir önem arz etmektedir. Günümüzde veri tabanındaki parola güvenlikleri için belli başlı yöntemler var. Bunlar;


1 - Parolaların bir şifreleme yöntemi kullanılarak simetrik bir şifreleme algoritması ile şifrelenmesi.

2 - Girilen parolaların hash'lerinin alınarak hash'lerin veri tabanında tutulması. Eğer işi biraz daha güvenli bir hale getirmek istiyorsanız hash'leri birden fazla (200-300 vs.) gibi n değerine kadar iterasyon yaparak da saklayabilirsiniz.

3 - Bir diğer yöntem olan ve yazımızın da konusu olan "Tuzlama" olarak adlandırılan "Salting" yöntemi uygulanabilir.


İlk bakışta alınan önlemler yeterli gibi gelse de saldırganlar bir şekilde şifrelenmiş ya da hash'lenmiş verilerinizi çözerek şifrelerinizi elde edebilir. İlk madde de bulunan "şifreleme algoritması" ile her ne kadar parolalarınızı şifreleseniz bile, şifreleme yönetimi için şifrenin kendisi ile birlikte veritabanı da hacılanabilir. Bundan dolayı bu yöntem yeteri kadar güvenlik sağladığı söylenemez.




İkinci madde de bulunan "hash"leme fena bir çözüm değil. Bilinen hash algoritmalarıyla şifrelerinizi hash'leyebilirsiniz. Ancak ele geçirilen veritabanının parolalarını elde edebilmek için saldırganlar "Rainbow Attack" dediğimiz saldırı şeklini kullanarak hash değerini bulabilir. Rainbow Attack için ufak bir bilgilendirme yapacak olursak;


Bilindiği üzere hash algoritmaları açık metin ile şifrelenmiş metin arasında tek yönlü bir kriptografik çıkış verir. Bir hash'in kaşılığı belirtilen algoritmaya göre bir çıkış verir. Rainbow Attack; Önceden hazırlanmış "Rainbow Table" adı verdiğimiz tabloları kullanılarak yapılan bir saldırı türüdür. Rainbow Table'lerde hash'ler bulunur. Ve bu hash'lerde hangi hash'in hangi veriye karşılık geldiği tutulur. Bu sayede her bir hash'i karşılaştırarak hangi hash hangi veriye geliyor diye kontrol edilir. Eğer tablodaki hash ile karşılaştırılan hash uyuşuyorsa şifre bulunmuş olarak kabul edilir.


Bundan dolayı 2. yöntem de pek güvenli sayılmaz. Zira internet üzerinde yüzlerce tablo var. Ve çevrimiçi bir tablonuz yoksa bile buralardan indirerek şifre kırma işlemi başarılı olabilir.


Gelelim son yönteme; Tuzlama


Salting işlemi çok daha güvenli ve günümüzde kullanılan bir yöntemdir. Bu sayede çözüme ulaşılmış olur. "Salt" değeri; parolaya eklenen üretilmiş herhangi bir random değerdir. Bu değer, her kullanıcı için ve her parola için farklıdır. Bu sayede Rainbow Attack'ın da önüne geçilir. Çünkü kullanıcılara verilen random değerini bilmek mümkün olmadığı gibi, her kullanıcı için ayrı ayrı tablo oluşturulması gerekir. Sonuç olarak parola salt'landıktan sonra üretilen hash değeri tablolardaki kayıtlar ile erişilemeyecektir. Bu da saldırının başarısız olması anlamına gelmektedir.


Yukarıdaki gif olayın özeti. Hash'lenmiş şifrenizin yanına "salt" değerini de ekleyerek veritabanlarında bu şekilde saklanıyor. Bu sayede;


- Şifrenin uzunluğu ve karmaşıklığı artıyor. Brute force ve Rainbow Saldırılarına karşı savunmamız artıyor.

- Salt değeri bir şekilde bulunsa bile her kullanıcı için ayrı ayrı bir tablo oluşturması gerekiyor. Ve bundan dolayı kullanıcıya özel tablo(lar) oluşturmak gerek.


Eğer bir göz atmak isterseniz aşağıdaki linkten tabloları görebilir ve istediğiniz özelliğe göre indirip kullanabilirsiniz. Yararlı olması dileğiyle...



Yararlandığım Kaynaklar;

Comments


Dünya üzerinde haksızlığa uğrayan, yardım bekleyen, Hak arayan onca mazlumun yanında bu sitenin haklarının pekte bir önemi yoktur. Tüm yazıları kullanabilirsiniz.

bottom of page