SHA 1 algoritması, özetleme fonksiyonları verilen, uzunluğu belli olmayan bir metnin sabit uzunluktaki özetini oluşturur. Bu fonksiyonlar, tek yönlü oldukları için SHA 1 algoritması, veri bütünlüğü ve kimlik doğrulaması ile ilgili uygulamaların yapıtaşı haline gelmiştir.
SHA, (Secure Hash Algorithm) NSA (National Security Agency) tarafından tasarlanmıştır. SHA'nın, SHA-0, SHA-1, SHA-2 olmak üzere üç versiyonu vardır. 1993 yılında NSI tarafından, SHA-0'ın sürümü yapılmıştır. 1995 yılında, bir güvenlik eksikliğinden dolayı geri çekilen SHA-0'ın yerine SHA-1'in sürümü yapıldı. SHA-1, SHA'nın kullanımı en yaygın olan sürümüdür[1].
SHA-1, uzunluğu en fazla 264 bit olan verileri girdi olarak alır ve 160 bitlik mesaj özeti üretir. Veri blokları, 512 bitlik parçalara bölünür, bu uzunluğa sahip değilse veri 512 bite tamamlanır. SHA-1'in çalışması MD5 algoritmasına benzemektedir. Her iterasyonda bir sıkıştırma fonksiyonu kullanır. Algoritma, verinin 512 bitlik bloğunu alır ve 16 bitlik kelimelere çevirir. Daha sonra içindeki fonksiyon kullanılarak 2560 bite genişletilir; her biri 20 matematiksel fonksiyon içeren 4 tur çalıştırılır ve 160 bitlik mesajın özeti elde edilir[2].
Kriptolojinin temelinde olduğu gibi e-imza uygulamalarında da algoritmaların hızlı çalışması önemlidir. Bunun için de verinin kendisi değil özeti imzalanır. Tebliğde referans olarak verilen ETSI TS 102 176-1 standardına göre; e-imza uygulamalarında, Türkiye'de, SHA-1 algoritmasının kullanılması önerilmektedir. Ancak 2005 yılında, SHA-1 özetleme fonksiyonu ile ilgili zayıflıklar yayımlanmıştır [3]. Bu çalışmada, e-imza uygulamalarında da standart olarak verilen SHA-1 algoritmasının zayıflıkları ve alınması gereken önlemler belirtilmiştir. Bu da SHA-2 algoritmasının geliştirilmesine zemin hazırlamıştır.
SHA-1'İN KRİPTANALİZİ
Özet algoritmalarını kullanışlı kılan özelliklerden biri de mesaj özetlerinin farklı olmasıdır. Mesaj özeti aynı olan iki farklı mesajın bulunması durumuna "çakışma" adı verilmektedir. Yani matematiksel olarak N elemanlı bir popülasyonda, bir çakışma gerçekleşebilmesi için ortalama √n tane rastgele örnekleme yapılması beklenmektedir. Dolayısıyla, 2n/2'lik karmaşıklıktan daha az işlemle çakışma bulan bir algoritma, özet fonksiyonunu kırmış sayılır. 2005 yılında indirgenmiş versiyonu üzerinde 280 işlemden daha az işlem ile çakışma oluşturuldu. Şubat 2005'te bir grup araştırmacı tarafından SHA-1'in tam sürümü üzerinde 269 işlemden daha az işlem ile çakışma oluşturan saldırılar duyuruldu. Ağustos 2005'te, CRYPTO konferansında, çakışma oluşturmak için gerekli saldırı sayısının 263 işleme düşürüldüğü belirlendi[3]. Genellikle elektronik imzalarda kullanılan bir algoritmanın bu seviye çakışma vermesi büyük bir güvenlik açığı olarak kabul edilebilir. İşlem sayısı fazladır ama bunları gerçekleştirecek bilgisayarlar bulunmaktadır. Örnekleyecek olursak, 160 bitlik çıktı üreten algoritmanın çakışmalara karşı 80 bitlik güvenlik sağlaması gerekir. Ancak SHA-1 algoritması için bu sayı 39 bite kadar düşürülmüştür[4]. Yaşanan bu gelişmelerden sonra, 2010 yılından itibaren SHA-2 algoritmasına geçilmesi önerilmeye başlanmıştır.
SHA-2
SHA-1 algoritmasının verdiği kırılma tedirginliği ile SHA-2 algoritmaları geliştirilmiştir. SHA özet fonksiyon kapsamında veri özeti uzunluğu daha uzun olan ve aralarında ufak farklar içeren ve SHA-2 ailesi olarak adlandırılan dört farklı algoritma (SHA-224, SHA-256, SHA-384 ve SHA-512) bulunur. Bu algoritmaların özellikleri Tablo 1'de özetlenmiştir. SHA-0 ve SHA-1 için geliştirilmiş ataklar SHA-2 versiyonları için herhangi bir zayıflık belirtmemiştir. Ancak SHA-2 algoritmasının yapısı SHA-1'e benzemediğinden bu algoritmaların da yakın zamanda kırılma ihtimallerine karşı araştırmacılar yeni bir algoritma tasarlamaya karar vermişlerdir ve SHA-3 algoritması gündeme gelmiştir.
SHA-3
SHA-1 algoritmasındaki güvenlik açıklarından sonra, temeli aynı olduğu için, SHA-2 algoritmasının da güvenlik sorunu olacağını düşünen ABD Ulusal Standartlar ve Teknolojiler Enstitüsü (NIST), 2007 Kasımında yayımladığı genelge ile yeni bir özet fonksiyonu için uluslar arası bir yarışma açtığını duyurdu. Bu genelgede SHA-0, MD4 ve MD5 algoritmalarının çakışma nedeniyle artık güvenli olmadığını ve o gün itibarıyla SHA-1 algoritmasında henüz bir çakışma olmadığını ancak olabileceğini öngördüklerini belirttiler. Nitekim, günümüzde SHA-1 algoritmasında çakışma sayısı güvenli denecek sayıların altına kadar gerilemiştir. Bu gelişmeler çerçevesinde SHA-3 için bu yarışma düzenlenmiştir.
SHA-3 için yine uluslararası bir yarışma ile seçilmiş olan AES'in kullanılmasının daha uygun olduğu düşünüldü. Kasım 2007'de başlayan yarışma 31 Ekim 2009'da sona erdi. Toplam 64 tane yeni bulunmuş ya da geliştirilmiş algoritma sunuldu. 13 tanesi kurallara uygun bulunmadı ve yarışma 52 algoritma ile devam etti[5].
23-29 Şubat 2010 tarihinde Birinci SHA-3 Adayları Konferansı'nda sunumlar gerçekleştirildi. Bu konferansta çakışma bulunma durumları veya tam kırılmasa bile güvenli olmadığı için geri çekilen algoritmalar ile birlikte ikici turda 14 algoritma kalmıştır[5]. İkinci konferansta olmasa bile üçüncü konferansta adayların sayısı 5 veya 6'ya inecektir ve sonunda SHA-3 algoritması kullanıma sunulacaktır.
SHA-1 ve SHA-2 algoritmalarında olmasa da SHA-3 algoritmasında, yarışmacılar arasından Çetin Kaya Koç "Spectral Hash" algoritmasıyla, Orhun Kara "Shamata" algoritmasıyla, Kerem Varıcı "Sarmal" algoritmasıyla ve Özgül Küçük "Hamsi" algoritmasıyla ilk 51 algoritma arasına girmişlerdir. İkinci tura ise sadece, "Hamsi" adlı algoritmasıyla Özgül Küçük kalmıştır.
Kaynaklar:
- "Secure Hash Standard", FIPS PUB 180-1, 1995
-
X. Wang, Y. L. Yin, and H. Yu. "Finding Collisions in the Full SHA-1" Crypto, 2005
-
X. Wang, H. Yu, Y. L. Yin, "Efficient Collision Search Attacks on SHA-0", Crypto, 2005