Malicious Apps In Play Store

SHA-1, SHA-2 ve SHA-256 Hash Algoritmaları Arasındaki Farklar

 

SHA-1, SHA-2, SHA-256, SHA-384 – Tüm bunların anlamı ne?

SHA’yı pek çok farklı formda duyduysanız fakat tam olarak ne anlama geldiğinden emin değilseniz ya da neden önemli olduğunu merak ediyorsanız, okumaya devam edin. İlk olarak hash ne demektir konusuna değineceğiz, ardından SSL sertifikalarının dijital imzalar için nasıl hashleri kullandığını anlatacağız. SHA-1 ve SHA-2’nin ne olduğunu anlamak için bu arkaplan önemli.

Hadi başlayalım.

Hash Nedir?

Hash algoritması, verileri belli bir boyuta sığdırmak için kullanılan matematiksel fonksiyondur. Örneğin ‘Hızlı kahverengi tilki, tembel köpeğin üzerinden atladı’ cümlesini alalım ve bunun CRC32 olarak da bilinen bir hash algoritmasıyla üstünden geçelim. Elimize ‘07606bb6’ gibi bir kodlama gelecektir ve bu sonuç da hash olarak bilinir.

Hash kullanımı, bilgisayarların tanımlama, karşılaştırma ya da başka verilere karşı yürüttüğü hesaplamalarda uygundur. Orijinal dosyalar yerine önce hesaplamayı hash haline getirip daha sonra karşılaştırmak bilgisayar için daha kolaydır.

Hashing algoritmalarının en temel özelliklerinden birisi de determinizmdir. Dünyadaki her bilgisayar sizin hash örneğinizi algılar ve aynı yanıtı alır. Hash algoritmaları pek çok yöntem için kullanılır. Şifre saklamak, bilgisayar vizyonu ve veritabanları en bilinen örneklerdir.

Şu anda da yüzlerce farklı hashing algoritması bulunurken, hepsinin de belli amaçları vardır. Kimisi belli veri tipleri için optimize edilmiştir, kimisi hız, güvenlik gibi sebeplerden kullanılır.

Bugün bakacağımız konu ise SHA algoritmaları. SHA, Secure Hashing Algorithm kelimesinden gelirken anlamı güvenlik hashing algoritması ve kriptografik güvenlik için kullanılır.

Kriptografik hash algoritmaları için en önemli faktörler, bunların tersine çevrilemez ve benzersiz hashler üretmeleridir. Tersine çevrilemeyen hashler sayesinde orijinal veri güvenli ve bilinmez kalır. Benzersiz olması ise iki veri parçasının aynı hashi üretmemesidir. Bir sonraki başlıkta bunu da açıklayacağız.

Dijital İmzalar

Artık hashlerin ne olduğunu biliyoruz ve sıra geldi bunların SSL sertifikalarında nasıl kullanıldıklarını açıklamaya.

SSL/TLS protokolünün amacı, internet üzerinde bir cihazdan diğerine gönderilen verilerin güvenli şekilde aktarımıdır. Kısa olması açısından, SSL genellikle ‘şifreleme’ olarak açıklanır fakat aynı zamanda SSL’in kimlik doğrulama sağladığını da unutmayın. SSL sertifika dosyası, kimlik doğrulaması gerektiğinde bilgi sağlar.

SSL/TLS protokolünün asimetrik şifreleme kullanarak bağlantıyı koruduğunu unutmayın. Bunun anlamı, iki şifreleme anahtarının olması ve her birinin işlemin yarısını halletmesidir. Bir public anahtar şifrelemeye, bir private anahtar da diğer şifrelemeye verilir. Her SSL sertifikasında sunucu tarafından kullanılabilecek bir public anahtar vardır ve bunla veri şifrelemesi sağlanır. Ve SSL sertifikasının sahibi de sunucusunda bir private anahtar barındırır, bunla da veri şifrelenir ve okunabilecek hâle sokulur.

SSL/TLS’in gerçekten anlamlı bir güvenlik sağladığından emin olmak için kimlik doğrulama inanılmaz derecede önemlidir. Sizin kullandığınız şifrelenmiş anahtarın kime ait olduğunu bilgisayarınızın anlayamadığını düşünün.

Dijital imzalar da SSL sertifikasının kimlik doğrulaması yapmasında önemli bir paya sahip. Bir sertifika verildiğinde, bu seçtiğiniz sertifika sağlayıcısı (örneğin Symantec, Comodo, DigiCert vb.) tarafından Sertifika Otoritesi (CA) ile dijital olarak imzalanır. Bu imza sertifika otoritesinin SSL sertifikasını imzaladığına dair kriptografik kanıt sunar ve sertifikanın değiştirilmediğini, yeniden üretilmediğini gösterir.

Daha önce bahsettiğimiz asimetrik anahtarlar burada tekrar kullanılıyor fakat imzanın amacı şifreleme değil. Matematiksel olarak burada veriler çevrilir ve anahtarlar da birleştirilir. Bunları bilgisayar için daha kolay hâle getirmek için, imzaları yaratın ve kontrol edin. Sertifika Otoritesi, önce sertifika dosyalarını hash haline getirir, daha sonra sonu hash’i imzalar. Bu bütün sertifikayı imzalamaktan daha verimlidir.

Daha sonra bu dijital imzalar sayesinde sertifikanın güvenilir bir otorite tarafından verildiğini kanıtlamış olursunuz. Ortada aldatmaca veya manipülasyon olmaz. Dijital imzalar inanılmaz derecede hassastır ve dosyadaki herhangi bir değişiklik, imzanın da değişmesine sebep olur. Örneğin başta verdiğimiz ‘Hızlı kahverengi tilki, tembel köpeğin üzerinden atladı’ cümlesini ele alalım ve bunun tamamen büyük harflerle yazıldığını düşünelim. Sonuç da tamamen farklı olurdu. Kısacası, en ufak bir dosya değişimi bile hash sonucunu farklı hâle getiriyor.

Bu sayede de kötü niyetli insanların meşru bir sertifikayı değiştirme ya da meşru gibi gözüken aldatıcı sertifika yaratma şansları imkansız hâle gelir. Orijinalden farklı hash’in anlamı, imzanın artık geçerli olmadığıdır. Ve bilgisayarınız da SSL sertifikasının kimlik doğrulamasını yaparken bunu fark eder. Eğer bilgisayarınız geçersiz imzayla karşılaşırsa, bir hata mesajı gelir ya da tamamen güvenli bağlantı oluşturur.

SHA-1 ve SHA-2

Artık arkaplanda neler döndüğünü anladınız, şimdi de SHA-1 ile SHA-2’den bahsedebiliriz.

Daha önce de söylediğimiz gibi, SHA’nın anlamı ‘Güvenli Hashing Algoritması’dır. SHA-1 ve SHA-2 bu algoritmanın iki farklı sürümüdür. İkisinin yapıları farklıdır ve imzanın bit uzunlukları da değişiklik gösterir. SHA-2’yi SHA-1’in halefi gibi görebilirsiniz ve biraz daha gelişmiştir.

Genellikle insanlar ayrım yaparken bit uzunluğuna dikkat ederler. SHA-1 160 bit hash’e sahipken, SHA-2’de ise bunlar değişim gösterir fakat en popüleri 256-bit olandır.

SHA-2 hashlerin çeşitliliği biraz kafa karıştırıcı olabilir çünkü web siteleri ve yazarlar farklı ifadeler kullanılırlar. Eğer SHA-2, SHA-256 ya da SHA-256 bit gibi ifadeler görürseniz, aslında bunların hepsi aynı şeyi ifade etmektedir. Eğer SHA-224, SHA-384 ya da SHA-512 gibi ifadeler görürseniz de, bunlar SHA-2’nin alternatif bit uzunluğunu göstermektedir. Ayrıca SHA-2 384 gibi ifadeler kullanarak hem algoritmayı, hem de bit uzunluğunu bir arada kullanan siteler de vardır.

SSL endüstrisi, SHA’yı dijital imzalar için hash algoritması olarak tercih ediyor. 2011-2015 yılları arasında ana algoritma SHA-1’di. SHA-1’in araştırmalar sonucu zayıflıkları ortaya çıkınca da yenilemek şart oldu. 2016’dan itibaren SHA-2 yeni standart hâlini alırken, bugünlerde yeni bir sertifika alacaksanız minimum böyle bir imza kullanmasına dikkat edin.

Genellikle sertifikaların SHA-2 384-bit kullandığını göreceksiniz. 224-bit çeşitleri nadiren karşınıza çıkar ve genellikle de güvenilir sertifikalar tarafından onaylanmazlar. Aynı zamanda 512-bit çeşitleri de yazılımlar tarafından nadir desteklenir.

Görünüşe göre SHA-2 en azından bir beş sene daha kullanılacak. Buna rağmen, algoritmaya karşı yapılan bazı beklenmeyen saldırılar erken bir dönüşüme sebep olabilir.

İşte SHA-1 ile SHA-2 ile hash edilmiş web site SSL sertifikalarının görünümü:

Evet, işte tüm bu yaygara da bunla ilgili. Çok fazla gözükmeyebilir fakat dijital imzaların SSL/TLS güvenliği sağlamakta önemi çok büyük.

Daha geniş bir hash aralığı çok daha fazla güvenlik sağlar çünkü kombinasyon – olasılık sayısı da artar. Ayrıca kriptografik hash algoritmasının bir diğer önemli fonksiyonunun da benzersiz hashler olduğunu unutmayın. Eğer iki farklı değer ya da dosya, aynı hash’i üretirse, buna çarpışma adı verilir.

Dijital imzaların güvenliği sadece çarpışma gerçekleşmediği müddetçe garanti edilir. Çarpışmalar inanılmaz derecede tehlikelidir çünkü iki farklı dosyanın aynı imzayı kullanmasına olanak tanırlar. Bu da dosya aslında imzalanmış olmasa bile bilgisayarın kontrol ederken meşru görmesine sebep olabilir.

Ne Kadar Hash Var?

Eğer bir hashing algoritması her muhtemel giriş için benzersiz hashler üretmekle yükümlüyse, toplamda ne kadar hash olasılığı var?

Bir bit değerinde, iki olası değer bulunur: 0 ve 1. Benzersiz hashlerin sayısı da, olası değerlerin bit haliyle ölçülür. SHA-256 için 2256 farklı olasılık bulunur.

Peki bu kombinasyon, toplamda ne kadardır? Açıkçası bu devasa bir rakam ve trilyonlarla ölçülüyor. Yani dünyada ne kadar kum tanesi var sorusuyla aynı anlamda diyebiliriz. Olası hashlerin sayısı ne kadar çoğalırsa, iki hash değerinin aynı olma şansı da o kadar azalıyor.

Teknik olarak sınırsız sayıda olası giriş var fakat çıkışlar için bir sınır var. Yani nihayetinde her hashing algoritması, güvenli olanlar da dahil çarpışmaya neden olabiliyor. Fakat bizim asıl endişelendiğimiz nokta bunun zorluğu. SHA-1 güvensiz kabul edildi çünkü hem boyut hem de yapı olarak çarpışma üretimine çok açıktı.

SHA-2’ye Geçiş

Geçtiğimiz yıl SSL endüstrisi SHA-2’ye geçiş yaptı. Bu yüzden binlerce var olan sertifika da değiştirilmek zorunda kaldı ve yeni dosyalar yaratılarak SHA-2 ile imzalandılar.

SHA-1 hashlerden yeni SSL sertifikasına geçiş için son tarih 31 Aralık 2015 olarak belirlenmişti. Genel anlamda endüstri için bu tarih sıkışıklık yarattı. O zamandan bu yana birkaç hata yapıldı ve bazı durumlar yaşandı.

Fakat önümüzdeki bir ya da iki yıl içinde güvenilir SHA-1 sertifikalarının büyük çoğunluğunun yok olacağını söyleyebiliriz. Şu anda 500.000 kadar SHA-1 sertifikası hâlâ varlığını sürdürüyor. Bir SHA-1 sertifikası gördüğünüzde aynı zamanda tarayıcıda karşınıza bir güvenlik uyarısı da çıkar ve size bu sertifikanın zayıf olduğunu belirtir. Çıkan ikona tıklayarak daha ayrıntılı bilgiye de ulaşabilirsiniz.

 

İmzaları Güvenli Tutmak

Zaman geçtikçe, kriptografiye karşı saldırılar da gelişecek ve bilgisayar işlemci hızları daha da ucuzlayacak. Bu da 2016 yılına göre, 2020 yılında SHA-2 dijital imzalarını daha güvensiz hâle getirecek. Bu sebepten ötürü, algoritma seçimlerinin kısa vadeli çözüm yarattığını ve sonsuza kadar güvenlik sağlamayacağını belirtmeliyiz.

Dünya üzerindeki çeşitli endüstri uzmanları ve güvenlik araştırmacıları da düzenli olarak SHA-2 ve diğer kriptografik hashing algoritmalarını analiz etmeye devam ediyor. Bu sayede şu anda var olan SSL sertifikalarının güvenli olup olmadığını gerçek zamanlı izliyorlar.

Elbette ki bunun anlamı kriptografi üreticileri bir sorun çıkana kadar beklemeye devam edecek değil. SHA-2’nin halefi konumunda olan SHA-3 çoktan kesinleşti. Başka bir imzaya geçmek gerektiğinde, muhtemelen SSL endüstrisi de bir dahaki seçim olarak SHA-3’ü tercih edecek ya da tamamen farklı bir algoritma deneyecek.

 

Düzgün bir araştırma ve yeni kriptografi standartları yıllar sürerken, ardından onları destekleyecek yazılımlar üretmek gerekiyor. Tüm bunlar kolay değilken, umuyoruz ki endüstri her zaman kötü niyetli insanların bir adım önünde olur.