İçeriğe geç

Veri tabanında Şifre Saklama: Hash, Salt, Pepper Anlatım

Veri tabanında Şifre Saklama: Hash, Salt, Pepper Anlatım

Veri tabanında Şifre Saklama: Hash, Salt, Pepper Anlatım

İnternet sitelerinde veriler veritabanlarında saklanır. Veri tabanını bir liste olarak düşünebilirsiniz. Bu veri tabanlarında kullanıcının adı, e-postası, şifresi vs.. saklanır. Fakat şifre diğer bilgiler gibi plain text (düz yazı) olarak kaydedilmez şifreler hashing dediğimiz tek taraflı özetleme – şifreleme fonksiyonundan geçer ve  öyle kaydedilir. Bu yazımda basitçe bu hashing fonksiyonundan ve birkaç önemli detaydan bahsedeceğim.

Hash Salt Pepper
Hash Salt Pepper

 

Hash Örneği : “deneme” kelimesini md5 hash fonksiyonu ile özetlediğimizde “8f10d078b2799206cfe914b32cc6a5e9″ metnini elde ederiz.

İlk olarak neden hash kullanırız ona bakalım. Dediğim gibi veriler veri tabanlarında saklanır. Fakat hacker dediğimiz kötü niyetli insanlar bu veri tabanlarına sızabilir ve veri tabanını ele geçirebilir buna nasıl önlem alırız ? Cevap hashing.

Daha önce bahsettiğim gibi hash tek taraflıdır ve hashlenmiş metinden düz yazıya geri dönülmez. Bu yüzden hacker hashli metini şifre olarak yazmayı denese bile giriş yapamaz düz metine ihtiyaç duyar. Peki hackerlar şimdi ne yapabilir ?

Hackerler rainbow table dediğimiz bir sistem kullanırlar rainbow table şudur: Milyarlarca kelimenin ve şifrenin düz metini ve hashli metini hacker veri tabanında kayıtlıdır. Hacker hacklediği siteden aldığı hashli metni bu veritabanında arar. Peki ne gibi bir önlem alabiliriz ?

 

Hacker’ın veri tabanında bulunması imkansız kendimize özgü bir şifre kullanmalıyız. Tamam bunları yaptık güvende miyiz ? Hayır. Hackerlar’ ın bir başka yöntemi brute force ve dictionary attack tır. Bunlar kısaca şöyle anlatılabilir:

Brute force hacker’ın mümkün her olasılığı denemesi örneğin hacker’ın yazdığı program a b c d…z, ab ac ad.. az, ba bc bd… bz, a1 b2 diye mümkün olan bütün anlamlı anlamsız kelimeleri dener. Saniye yüzlerce hatta binlerce şifre deneyebilir. Önlemi nedir ? Uzun ve karmaşık bir şifre seçmek.

Dictionary attack ise hackerın bir kelime listesi oluşturup bu kelimeleri yazdığı bir programla saniyede yüzlerce kez farklı kelimeyle denemesidir. Hacker bu sistemde kurbanı tanır ve kullanabileceği doğum tarihi doğum yerini vs. ekler bu listeye. Önlemi nedir ? Doğum yeri, tarihi vs. şifre içinde kullanmamak.

Peki rainbow table ‘a dönelim site sahibi olarak nasıl önlem alabiliriz ? Ne yaparsak yapalım yaygın bir şifre seçen kullanıcı her zaman olacaktır nasıl önlem alabiliriz ? Cevap salt ve pepper.

Salt nedir ? Salt kullanıcının şifresinin sonuna hashlemeden önce bir kelime koymaktır. Örnek veriyorum kullanıcı şifreyi deneme olarak seçti. Biz şifreyi hashlemeden önce şifrenin sonuna bir takım harf ve rakam ekleriz ki rainbow table da bulunmasın.

 

Örnek :

NOT:md5 bir hash fonksiyonudur md5(deneme) yazarsak denemeyi hashler.

Kullanıcının seçtiği kelime -> deneme

Saltımız -> x$eJ-!

Hashleme -> md5(denemex$eJ-!)

yaparız ve deneme kelimesi yerine denemex$eJ-! kelimesinin hashini alırız. Giriş yaparken de gelen şifre denemesini salt ile birleştirip hashleyip veritabanı sorgusu yaparız.

Bu şekilde büyük bir güvenlik sağlarız. Peki Pepper nedir ?

Pepper 1 harften oluşur ve veri tabanında saklanmaz.

Yani

Kullanıcının seçtiği kelime -> deneme

Saltımız -> x$eJ-!

olduğunda

pepper kayıt yapılırken rastgele belirlenir ve kayıtı tutulmaz !

Hashlerken md5(denemex$eJ-!+ rastgele bir harf) kullanırız örneğin bilgisayar rastgele M harfini seçmiş olsun. hash

Hashleme -> md5(denemex$eJ-!M) olur.

Giriş yaparken bilgisayar bütün harfleri rastgele dener Örneğin :

Sırayla md5(denemex$eJ-!A),md5(denemex$eJ-!B),md5(denemex$eJ-!C),md5(denemex$eJ-!D) diye doğru pepperı bu durumda M yi bulana kadar dener.

Bu işlem kullanıcının giriş yapmasını yarım saniye uzatır ama hackerın işini 2 kat zorlaştırır.

Evet bu yazımda Veri tabanında Şifre Saklama: Hash, Salt, Pepper Anlatım bahsettik eğer anlamadığınız bir yer, sormak istediğiniz bir konu olursa veya herhangi bir öneri, şikayetiniz varsa bana yorum kısmından yazın en fazla 1 gün içinde onaylanıp yayınlarım ve size dönerim.

 

Tarih:Genelprogramlama

Tek Yorum

  1. Murat Murat

    Gayet güzel ve başlangıç için yeterli bir makale

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.