Önceki yazımda Hash(Özetleme) fonksiyonlarının temel özelliklerini ve kullanım alanlarını açıklamaya çalışmıştım. Eğer hash fonksiyonu hakkında yeterli önbilginizin olduğunu düşünmüyorsanız bu yazıyı anlayabilmek için Hash (Özetleme) Fonksiyonları Nedir? yazımı okumanızı öneririm.
Kriptoloji yazı dizisi;
- Simetrik ve Asimetrik Şifreleme Arasındaki Farklar
- Hash (Özetleme) Fonksiyonları Nedir?
- Hash Fonksiyonu Zaafiyetleri’nin Sebebi: Hash Collision nedir? Şu an buradasınız 🙂
Bu yazımda hash fonksiyonlarında geçmişteki ve gelecekteki zaafiyetlerin çıkışının en önemli kaynağı olan Hash Collision(Özet Çakışması)’nın ne olduğu ve sebeplerini inceleyeceğim.
Hash Collision nedir ?
En kısa tanımlamasıyla hash collision, hash fonksiyonuna giren iki farklı girdiden aynı özet sonucunun üretilmesidir. Örnek olarak ;
hash(akademikbulten) = 12ab34cd
hash(asgf) = 12ab34cd
Farklı girdilerin özet değerlerinin aynı olması(çakışması) durumunda bu hash fonksiyonlarının geniş kullanım alanlarında bir zaafiyete neden olabilir.
İlk olarak hash collision gözünüze çok aptalca yapılşmış bir hatadan kaynaklı bir zaafiyet gibi gelebilir. Ama bu durum bir hata değil kaçınılmaz bir genetik özelliktir. Hash fonksiyonları girdi olarak çok farklı dosya formatlarında ve teorik olarak sonsuz uzunlukta aldığı girdiyi, sınırlı uzunluktaki bir değere özetler.

Teorik bir hash fonksiyonu yaratalım ve potansiyel collision sıklığını anlamaya çalışalım.
Türkiye’de yaşayan insan sayısı yaklaşık olarak 2^26 diyebiliriz.
- Eğer Türkiye’deki insanları doğdukları il merkezine göre (yaklaşık olarak 2^7) özetlediğimizi hayal edelim.
- Türkiye’deki insanları doğdukları ilçe merkezine göre (yaklaşık olarak 2^10) özetlediğimizi hayal edelim.
- Türkiye’deki insanları doğdukları mahalleye göre ( yaklaşık olarak 2^15) özetlediğimizi hayal edelim.
- Ve sizinle aynı il merkezinde, ilçe merkezinde, mahallede doğan insan sayısını hayal etmeye çalışarak potansiyel çakışma sayısını hayal etmeye çalışın.
Yukarıda da görüldüğü gibi hash collision, hash fonksiyonu temel amacı olan çok büyük miktardaki bir veri kümesini çok daha küçük bir veri kümesiyle eşleştirmeye çalışmasının kaçınılmaz bir sonucudur. Bu konunun matematiksel altyapısı hakkında daha fazla bilgi almak isterseniz Birthday Problem konusunu incelemenizi öneririm.
İki farklı dosyanın aynı hash değerinin oluşturulması Hash Algoritmalarında zaafiyetlere neden olur.
Hash fonksiyonu alınan girdinin boyutu ve türünden bağımsız olarak önceden belirlenmiş boyutta bir özet değeri verdiğini önceden belirtmiştim. Yukarıdaki teorik hash fonksyonumuz için bu çıktı boyutları büyüdükçe potansiyel collision sayısında azalma olduğunu görebiliriz.
Bu örnekten de anlayabileceğimiz üzere hash algoritmalarında Collision Resistance(Çakışma Direnci) algoritmanın matematiksel işleyişine de bağlı olsa da büyük çoğunlukla hash algoritmasının standart çıktı boyutu arttığında (potansiyel çıktı kümesi genişlediğinde) hash algoritmasının güvenilirliği artar.
Peki gerçekte kullanılan hash fonksiyonu çıktı boyutu ne kadar ?
Zamanında en sık kullanılan ve 2006-2008 yılları arasında işlemci gücündeki artışlarından dolayı brute force ile çakışmalarının bulunmaya başlanabilmesinden dolayı güvenlik endişeleri ve zaafiyetler doğuran SHA-1 160 bit ve MD5 128 bit çıktılar oluşturabiliyordu. Çakışmalara rağmen SHA-1 ve MD5 sektörün geniş bir aralığında 2012-2013 yıllarına kadar kullanılmaya devam edildi. Günümüzde ise Whirlpool(512bit) ve SHA’nın 256,384 ve 512 bitlik serileri yaygın olarak kullanılmaktadır.
Peki Gelecekte durum ne olacak ?
Gelişen işlemci güçlerinden de yararlanılarak brute force ile günümüzdeki hash algoritmalarının Collision Table(Çakışma Haritaları) çıkarılılmaya çalışılıyor ve satılıyor. Aynı zamanda daha gelişmiş hash algoritmaları araştırmaları da sürmektedir. 2008-2012 arasındaki hash algoritma değişiminde yavaş kalan sistemler bundan zarar gördüler. Ama hash fonksiyonları artık hayatımızın çok daha içinde ve gelecekti hash algoritmalarının değişim sürecinde yavaş kalan sistemler çok daha büyük zararlara uğrayabileceğini düşünüyorum.
Bunların yanında daha karmaşık,gelişmiş ve çıktı uzunluğu büyüklüğüne rağmen performansı yüksek bir hash algoritması bulunması durumunda bile bu tam anlamıyla Hash Collision zaafiyeti ortadan kaldırabildiğimiz anlamına gelmeyecektir. Kriptoloji paradigmasında bir değişiklik olana kadar bu yarış devam edecektir.
Gelecek yazımda Hash (Özetleme) Fonksiyonları Nedir ? yazımda belirttiğim Hash Fonksiyonlarının kullanım alanlarında ;
- Hash Collision zaafiyetinden kaynaklı yapılabilecek saldırıları
- Blockchain teknolojisinde hash fonksiyonların önemini ve hash collision’den kaynaklı riskleri anlatacağım.
Güvenle kalın diğer yazılarımda görüşmek üzere
- Penguen’in Yolculuğu| Uzay Yolculuğuna Çıkalım|Bölüm 2 - 18/12/2020
- Penguen’in Yolculuğu |Linux’un Atası UNIX |Bölüm 1 - 17/12/2020
- Penguen’in Çekirdeği - 15/12/2020
Gerçekten anlaşılır olmuş tebrikler🙂
Teşekkürler yorumunuz için 🙂