Özet Fonksiyonları ve SHA256
Posted on November 19, 2019 by Volkan Taşcı in yazılım geliştirme kriptoloji
Yazılımın pek çok alanında yer alan özet fonksiyonları nasıl çalışır, ne işe yarar gibi sorulara cevap verelim.
Özet Fonksiyonu Nedir?
Özet fonksiyonları bir verinin özetini çıkarmaya yararlar. Elbette bu tanım tek başına yetersiz kalıyor. Biraz daha açalım. Örneğin elimizde bir metin dosyası olsun ve içeriğinde uzunca bir metin olsun. Bu metin dosyasına bir isim verip kaydedelim.
Not: Dosyanın adını metin.txt olarak kaydettim.
Şimdi bu dosyanın özetini almak için özet fonksiyonlarından biri olan SHA256’yı komut satırından çağırıyorum.
Kullanılan işletim sistemi: Manjaro Linux
Özet fonksiyonu aşağıdaki çıktıyı üretiyor.
Metin dosyamızda aslında uzunca bir text var ve pek çok satırdan oluşuyor. Özet fonksiyonu ise bu metni bazı algortimalardan geçirip bu sonuca varıyor. Dünyanın her yerinde aynı metin dosyası sha256 ile özeti alındığında aynı sonucu üretecektir.
SHA256 fonksiyonu adından da anlaşıldığı gibi 256 bitlik veri (sonuç) üretiyor. Bu bilgi ne işe yarar? Teknik olarak özet fonksiyonları veriyi kırparlar. Elbette veri küçük bir metin değilse. Bizim durumumuzda 256 bitten küçükse veriyi kırpmak yerine bazı algoritmalar yardımıyla random bir sonuç üretirler. Ancak bu rasgelelik çok da rasgele değildir. Yani yine dünyanın her yerinde aynı random değerler üretilir.
Bir romanı ele alalım. Roman yüzlerce sayfadan oluşabilir. SHA256 yine 256 bitlik veriye dönüştürüp özetler. Esasında veriyi küçülttüğü için özet fonksiyonu adı verilir. Ve bir özet fonksiyonunun kalitesi hata payının azlığıyla ölçülebilir. Örneğin SHA256 fonksiyonu ile 2256 + 1 farklı deneme yapıldığında bu veriler içinden iki farklı veri için aynı özet ortaya çıkar. Bu da SHA256’nın hata payıdır.
SHA256 (Özet Fonksiyonları) Nerede Kullanılır?
En basit örnek olarak veritabanlarında kullanıcı şifrelerini tutmak söylenebilir. Örneğin bir forum sitesinde üyeliğinize ait şifreniz veritabanında olduğu gibi tutulmaz. Şifreniz veritabanına kayıt edilmeden önce özet fonksiyonundan geçirilir ve neticede kimsenin anlamayacağı bir ifadeye dönüştürülür. Şifreniz işte bu haliyle veritabanında tutulur. Ve siz foruma her giriş yapmaya çalıştığınızda ‘password’ kısmına yazdığınız metin yine özet fonksiyonundan geçirilir ve bu hali veritabanındaki şifre alanıyla eşleşiyor mu diye bakılır.
Bazen telif hakkı araştırmasında da kullanılır. Örneğin size ait olan bir kitabın özet fonksiyonundan geçirlimiş halini alıp saklayabilirsiniz. Ve ileride bir gün bir başkası, size ait olan eseri kendisine aitmiş gibi paylaşırsa telif hakkınızdan dolayı dava açabilir ve kitabınızın özet fonksiyonundan geçirilmiş halini sunabilirsiniz. Yeni şahısın paylaşımının özeti alındığında ve sizinki ile eşleştiğinde ispat etmiş olursunuz.
Bir başka durum da verilerin doğruluğunu ölçmektir. Örneğin İnternet’ten bir dosya indiriyorsunuz ve inme işleminin hatalı olma olasılığına karşın orijinal dosyanın özeti ile kendi indirdiğiniz dosyanın özetini karşılaştırabilirsiniz. Eğer eşleşiyorsa dosyanın doğruluğu anlaşılmış olur. Bunu ISO dosyalarında sıklıkla kullanıyoruz.
Özetten Verinin Aslına Dönülür Mü?
Özet fonksiyonları tek yönlü çalışır. Yani özetten verinin aslına bir dönüş yoktur. Ancak bazı kelimelerin, cümlelerin Hash Tablosu vardır. Yani saldırganlar sızdıkları veritabanlarındaki şifrelerin aslını öğrenemk için bazı kelimelerin, cümlelerin özetlerini bu tabloya kaydederler. Ve sizlerin özet şifrelerini bu tablodakilerle karşılaştırırlar. Eğer bir eşleşme olursa şifrenizin de ne olduğunu anlamış olurlar. Bu gibi durumlardan kaçınmak için tahmin edilemeyen, basit olmayan güçlü şifreler kullanmanız tavsiye edilir.