Şifre Güvenliği Hash ve Tuzlama (Salt) ve Yöntemleri ile uzun bir aradan sonra bloğuma devam ediyorum. Bu yazımda php ile web projeleri hazırlamaya başladığım dönemde karşılaştığım bir durum olan şifre tuzlama yöntemi çok ilgimi çekmişti. Bu konuyu da bahane ederek artık yazmaya başlamam gerektiğini fark ettim
Şifre Güvenliği Hash ve Tuzlama (Salt) ve Yöntemleri
Özellikle web projelerinde yani webde çalışan uygulamalardan şifre ve diğer bilgilerimizin ki özellikle şifrelerimizin ne kadar değerli olduğunu artık anlatma gereği duymuyorum. Tuzlama Algoritmasına giden yolda şifre güvenliğinden biraz bahsedelim.
Şifre Güvenliği Hash ve Tuzlama – Şifreler Neden Hash’lenmelidir.?
Parola hash, kullanıcılardan parola isteyen herhangi bir uygulama tasarlarken yapılması gereken en temel güvenlik düşüncelerinden biridir. Hash olmadan, uygulamanızın veri tabanında saklanan herhangi bir şifre, veri tabanının güvenliği ihlal edilirse çalınabilir ve daha sonra benzersiz şifreler kullanmıyorlarsa, yalnızca uygulamanızın değil, kullanıcılarınızın diğer hizmetlerdeki hesaplarının da güvenliğini hemen tehlikeye atmak için kullanılabilir. .
Yani bir sistemde hash yöntemi kullanmıyorsa, hacker’lar için armut pişti ağzıma düştü gibi bir durum oluşur. Bu da asla istemediğimiz bir durumdur.
Aklınızda bulunsun, bu hash işlemi sırasında biz şifrenin ne olduğu ile ilgilenmeyiz. Kullanıcı şifreyi girer, sistem şifreyi hash’ler ve veri tabanına yazar. Kullanıcı tekrar giriş yaptığında, kullanıcın girdiği şifre tekrar hash’lenir, veri tabanının kullanıcının kayıt olduğu veya şifresini değiştirdiğinde hash’lenerek kaydedilmiş şifre ile eşleştirilir. Yani biz kontrolleri hep hash’lenmiş şifreler üzerinde yaparız.
NOT: MD5, SHA1 ve SHA256 gibi algoritmalar bu güvenlik amacı için kullanılamazlar. Bu gibi gerekli güvenlik işlemlerinde genellikle Blowfish algoritması kullanılır. Linkle tıklayarak detaylı bilgi alabilirsiniz.
Şimdi tuzlama (salt) nedir ona bakalım.
Tuzlama (Salt) Nedir?
Web projelerinde genellikle şifreler hash yöntemi ile şifrelenerek veri tabanına kaydedilirler. Böylece kullanıcıların şifreleri güvene alınmış olur. Bu noktada her ihtimale karşı olarak hash yöntemi uygulandıktan önce veya sonrasında kullanıcının girdiği şifreye ekstra bir kaç ifade daha eklenir. Bu yönteme de şifreyi tuzlama denir.
Diyelim ki şifreniz a123b456 olsun. Bu şifre hash ‘lendiğinde slkjf89sl89765kfşa85lsıfjasd6876d8h4s65df4gdfg gibi ifadeye dönüşür. Sistemler çoğunlukla bu hash ‘lenmiş hali kaydederler. Olurda şifreler çalınırsa, çalan kişi şifrenin ne olduğunu bilemez.
Ancak bunu da bir ölçüde aşmanın yolu var. Hacker kişilerin ellerinde ne anlama geldiğini bildikleri Hash = Şifre listesi yer alır. Bu hash listesinde slkjf89sl89765kfşa85lsıfjasd6876d8h4s65df4gdfg ifadesinin a123b456 olduğu belli olabilir. Kaldı ki basit abc123 gibi şifreler kesinlikle yer alıyordur. Hacker ise sizin hash’li şifrenizi bu listede aratarak şifrenizi ele geçirebilir. Bu ihtimalin gerçekleşme oranına ne desek yalan olur doğrusu. O yüzden bir ihtimal bile veremiyorum. Ama unutmayalım ki o listelerde trilyonlarca hash’li şifre olabileceğini düşünüyorum.
Hacker’ların bu yöntemi kullandığını bilen sistem geliştiricileri de bu durumun önüne geçmek için ki büyük ölçüde kendi istekleri üzerine tuzlama (salt) yöntemini kullanarak şifrenize ekstra ifadeler ekler. Bu algoritma tamamen geliştiren kişinin bileceği bir algoritmadır. Yani bir kuralı yoktur ki olması da zaten kesinlikle saçmalık olurdu.
Şifremiz aynı olsun ve bir tuzlama yapalım
Kullanıcı şifresi : a123b456
Tuzlama algoritmamız da şöyle olsun. Karakter sayısı / 2 diyerek şifreyi ortadan bölelim. En başına A ortasına B ve sonuna da C ekleyelim.
Şifremizin son hali Aa123Bb456C oldu. Şuanda şifreyi tuzlamış olduk. Bu şekilde hacker ‘in elde edebileceği şifre Aa123Bb456C‘dir ki bu sizin kullandığınız şifre değildir. Burada sistem geliştiricisi sizin şifrenizi korumuş oluyor.
Bu Tuzlama (Salt) işlemi ister şifreye isterse de şifrenin hash ‘lenmiş haline yapılabilir. Ancak direk şifreyi değiştirmek bana daha mantıklı geliyor.
NOT: Sistem geliştiricileri olarak bizim şifre ile alakamız yoktur. Şifrenin olduğu önemli değildir. Öyle bir algoritma yapalım ki her türlü şifreye uysun ve hacker’ların ele geçirdiği şifreler kullanıcılarımızın gerçek şifreleri olmasın.
Tuzlamaların Saklanması
Elbette böyle bir şeyi asla yapmıyoruz arkadaşlar. Tuzlamayı yapan kodlar olabildiğince gizli halde olmalıdır. Tuzlamada kullanılan ifadeleri de asla bir dosyada saklamıyoruz. Algoritmamız Login, Register ve User Update işlemleri esnasında kullanılmalıdır.
Ekstra Güvenlik
Tuzlamaya ekstra olarak ek tuzlamalar da yapabilirsiniz ama tek seferde yeterince güçlü olması bence yeterli olacaktır.
Şifre Güvenliği Hash ve Tuzlama (Salt) ve Yöntemleri yazımda bu kadardı arkadaşlar. Diğer Güvenlik konulu yazılarım için bağlantıya tıklayabilirsiniz. Discord’a katılmayı unutmayın.
Yorumlar (1)