9/05/2005

Database Guvenligi - Salting Nedir?

Önceki makalede açıkladığımız hashing kullanımı her ne kadar passwordleri saklamak için güvenlik sağlasa da bu bilgiler hala sözlük yardımıyla yapılan saldırılara(dictionary attack) karşı kormasız durumdadırlar.

Dictionary attack'lerde saldırıyı yapan kişi passwordünüzü bir sözlükteki bütün kelimeleri bir software yardımıyla kullanarak deneme/yanılma yolu ile bulmaya çalışır. Sözlük yardımıyla yapılan saldırılardan son kullanıcılarınızı korumak için password seçerken belirli rakam ve harf kombinasyonları kullanmalarını mecburi tutabilirsiniz.

Ekstra koruma olarak password başına veya sonuna hash edilmeden önce rastgele bir grup byte ekleyebilirsiniz. Bu eklenen byte'lara salt denir. Bu salt değerini password ile beraber database üzerinde saklarız.

Salt değeri yaratmanın pek çok yolu bulunmakta. Bunlardan en çok kullanılanı bir GUID değeri yaratmak.

GUID nedir?
Guid, (Globally Unique Id) dünyada eşi bulunmayan 16 bytelik hexadecimal formatında yazılan bir değerdir. Teknik olarak daha önceden yarattığınız bir GUID değeri ile tekrar karşılaşmanız mümkün değil. .Net Framework size Guid değerleri yaratabilmeniz için bir class vermekte.

VB.Net ve C# ile nasıl bir GUID değeri yaratacağımıza bakalım...

VB.Net
Public Function SaltDegeriYarat() As String
Dim GuidDegeri As System.Guid = System.Guid.NewGuid()
Return GuidDegeri.ToString()
End Function

C#
public statix String SaltDegeriYarat()
{
System.Guid GuidDegeri = System.Guid.NewGuid();
return GuidValue.ToString();
}


Hashing Nedir?
http://teknoturk.blogspot.com/2005/09/hashing-kullanimi.html