Parolalar, Veri Tabanlarında Nasıl Saklanır?

Pamir Çil
3 min readMar 25, 2024

--

Bu yazıyı, pamircil.com.tr web sitem üzerinden okuyabilirsiniz.

Parolalarımızı kötü niyetli kişilere karşı korumak günden güne zorlaşırken siber güvenliğin önemi de bununla doğru orantılı bir şekilde artıyor. Kullandığımız onlarca uygulama ve sisteme girdiğimiz parolamızın, veri tabanlarına bizim giriş yaptığımız şekilde kaydedildiğini düşünmüyorsunuz değil mi? Eğer böyle olsaydı kurum içinde yetkisi olan herkes parolamızı görebilir veya o sisteme sızmayı başarabilmiş tüm “hacker”lar rahatlıkla parolalarımızı ele geçirebilirlerdi. Birçoğumuzun hemen hemen tüm uygulama ve sistemlerde aynı parolayı kullandığımızı düşünürsek, parolamızı saklayan bu sistemler, ne etik bir sistem ne de güven veren bir sistem olacaktır.

Bu yazımda, sistemlere giriş yaparken yazdığımız parolanın, sistem tarafındaki güvenliğini arttıran en yaygın iki metottan bahsedeceğim.

Hashing

Hashing, karakter sayıları farklı boyutlarda olan verilerin, belirli algoritmalar yardımıyla sabit bir boyuta çevrilerek çıktı alınma işleminin genel adıdır. Farklı girdilerin hiçbir zaman aynı çıktıyı vermesi beklenmezken aynı girdilerin ise her zaman aynı çıktıyı vermesi beklenir. Blockchain teknolojisinin güvenilir bir sistem olmasının yegâne unsuru “hashing” işlemidir.

Girdiğimiz parolalar çeşitli algoritmalar sayesinde çok daha karmaşık ve komplike bir hâl alarak veri tabanlarının içinde kendilerine yer bulurlar. Onlarca algoritma arasındaki en yaygın olan “SHA-1” ve “MD5” algoritmalarının üzerinden ufak birkaç örnek vererek bu bilgiyi görselleştirelim.

$password = md5(sha1(md5($password))) şeklinde, birden fazla iç içe hashing yöntemi kullanılarak korunan sistemlerin, güvenliğini artırmak amacıyla bu parolaları şifrelediklerini söyleyebiliriz. İç içe olan bu algoritmayı okumak gerekirse şöyle okuyabiliriz: “Sisteme belirttiğimiz parola, önce md5 ile hashing işlemine giriyor, “hashing” işleminden çıkan yeni şifre sha1 ile, sha1 ile hashlenip çıkan yeni şifre de md5 ile tekrar hash işlemine girdikten sonra veri tabanındaki şifreniz, 3 defa hashlenmiş bu şifre olarak kayıt altına alınıyor. Böylelikle, “hacker”lar bu şifreye erişip, bu şifreyi “decode” yapmak, yani şifreyi çözmek istediklerinde iç içe hashlendiği için, bir kere hashli bir şifreye göre kat kat daha zor olacaktır. Birkaç satır sonra bu iç içe çeşitli algoritmalardan da bahsediyor olacağım.

Salting

Siber güvenlik departmanında Türkçeye çevirdiğimizde, birebir örtüşen nadir kelimelerden bir tanesi… Tuzlama… Kullandığımız parolanın, o gün içerisinde yaptığımız bir yemek olduğunu varsayalım. Biz bu yemeğe tuz attıkça tadı değişecek, hatta karıştırdığımızda tuz, tüm yemeğe karışmış olacaktır. Açıkçası ben herhangi bir konudaki görselin, yazıdan daha çok akılda kaldığını düşündüğümden dolayı bu işlemi de ufak bir görselle özetlemek isterim.

Temel olarak “salting” işlemi bu şekilde çalışır fakat Tabii ki “salting” işleminin bu kadar basit ve kolay anlaşılabilen bir sistem olmadığını da belirtmek isterim.

Şimdi sıra hashing kısmında bahsettiğim iç içe çeşitli algoritmalarda.

Parolamız “Pamir00!” ve tuzlama şeklimizi de her karakterden sonra bir “x” harfinin gelmesi olarak tanımlayalım.

Yani salting işlemi öncesi Pamir00! olan şifremiz, salting işlemi sonrasında ise Pxaxmxixrx0x0x!x olarak işlem görecektir. Bu yapılan salting işlemi, bir parolanın veri tabanında tutulması için yapılan binlerce işlemden sadece bir tanesi.

İşleri biraz daha komplike hale getirip, gerçek sistemlerin çalışma prensibine değinelim. Bahsedeceğim parola koruma yönteminin adı “Password Based Key Derivation Funcstions 2”. PBKDF2 yönteminin çalışma prensibi ise sırasıyla şu şekildedir:

  • Parola ve tuz, birleşerek hashing işlemine girer.
  • Hashing işleminden çıkan yeni şifre, gelecek seferki tuz olarak kullanılır.
  • Bu yeni tuz, şifremizle birlikte tekrar hashing işlemine girer
  • Bu işlem, sistem yetkilisinin belirlediği iterasyon sayısı, N sayısı, kadar tekrar eder.

İterasyon (N) sayımız 0’a yaklaştıkça sistem güvenliğimiz azalacağından dolayı mümkün mertebede N sayımızı yüksek tutmakta fayda var fakat bununla birlikte iterasyon sayımız arttıkça işlemciye binen yükün artacağından ötürü sistemimizde sıkıntılar yaşayabilmemiz olası bir durum haline gelecektir. 2000 senesinde bu standart yazıldığında iterasyon sayısının varsayılanı 1000 olarak belirlenmişti ve aynı sene Apple, iOS 3 için 10.000 iterasyon kullandığını duyurarak işlemcilerine bir hayli güvendiklerini ve sistem güvenliğe gereken önemi verdiklerini açıkça belirtmişti.

Siz de kendi parolalarınızın SHA1 veya MD5 ile hashlenmiş değerlerini buraya tıklayarak öğrenebilirsiniz!

--

--