SHA-1 Algoritması 2

SHA-1 Algoritması 2

SHA-1 Algoritması 2

Sadıkcan TULUK
10.04.2025

SHA-1 (Secure Hash Algorithm 1), ABD Ulusal Güvenlik Ajansı (NSA) tarafından tasarlanmış ve NIST (National Institute of Standards and Technology) tarafından 1995 yılında yayımlanmış bir kriptografik özet fonksiyonudur. SHA ailesinin ilk üyelerindendir ve 160-bit (20 byte) uzunluğunda sabit bir çıktı üretir. Hash değeri, genellikle 40 karakterlik hexadecimal (onaltılık) bir dize olarak ifade edilir.

SHA-1, uzun yıllar boyunca dijital imzalar, sertifika doğrulama, parola saklama ve veri bütünlüğü denetimi gibi pek çok alanda standart olarak kullanılmıştır. Ancak, zamanla ortaya çıkan zafiyetler nedeniyle modern sistemlerde kullanımı tavsiye edilmemektedir.


🧠 SHA-1'in Temel Özellikleri

  • Çıktı Uzunluğu: 160-bit (40 karakterlik hexadecimal dize).

  • Deterministik: Aynı giriş, her zaman aynı çıktıyı üretir.

  • Tek Yönlüdür: Hash’ten girdiye geri dönülmesi beklenmez.

  • Çarpışma Direnci: Teorik olarak güçlüydü; ancak artık pratik saldırılara karşı savunmasız.

  • Performans: Orta hızda çalışır, çoğu sistemde yeterince hızlıdır.


🧪 SHA-1 Nasıl Çalışır?

SHA-1, veriyi sabit uzunlukta 512-bit’lik bloklar hâlinde işler. Her blok üzerinde belirli sayıda bit düzeyinde işlemler gerçekleştirilir. Aşamalar şu şekildedir:

1. Padding (Doldurma)

  • Veri, 512-bit'in katı olacak şekilde 1 ve ardından 0 bitleriyle doldurulur.

  • Son 64-bit, orijinal verinin uzunluğunu temsil eder.

2. Buffer Başlatma

  • 5 adet 32-bit uzunluğunda register (A, B, C, D, E) aşağıdaki değerlerle başlatılır:

    ini
    A = 0x67452301 B = 0xEFCDAB89 C = 0x98BADCFE D = 0x10325476 E = 0xC3D2E1F0

3. Ana Döngü (Main Loop)

  • Her 512-bit'lik blok, 80 tur işlemden geçirilir.

  • Bu işlemlerde bit düzeyinde döndürme, AND, OR, XOR gibi mantıksal işlemler uygulanır.

  • Her turda farklı sabitler (K) ve işlevler (f) kullanılır.

4. Hash Üretimi

  • A, B, C, D, E register’ları birleştirilerek toplamda 160-bit’lik hash değeri elde edilir.


🔢 SHA-1 Örnekleri

Girdi

SHA-1 Çıktısı

 hello

 aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d

 password

 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8

 mustafa

 4a464bb6dd0b2e9e0b61a7db5df0554f6c2895d2

 

 

⚠️ SHA-1 Güvenlik Zafiyetleri

SHA-1, yayımlandığı dönemde güvenli kabul edilse de günümüzde ciddi açıklar barındırmaktadır.

1. Çarpışma Saldırıları (Collision Attacks)

  • Tanım: İki farklı girdinin aynı hash değerini üretmesi.

  • 2005: Wang, Yin ve Yu, ilk teorik çarpışma saldırısını duyurdu.

  • 2017: Google ve CWI Amsterdam, ilk gerçek çarpışma örneğini sundu: SHAttered saldırısı.

🧪 SHAttered örneğinde, iki farklı PDF dosyası aynı SHA-1 hash değerini üretmiştir.

2. Preimage ve Second-Preimage Saldırıları

  • SHA-1’in preimage (hash'ten orijinal veriye ulaşma) saldırılarına karşı henüz pratik açıkları bulunmasa da çarpışma açıkları yeterli güvenlik riskini ortaya koymaktadır.

3. Brute-Force Saldırıları

  • 160-bit’lik çıktısı, teorik olarak 2¹⁶⁰ olasılığa sahiptir. Ancak çarpışma saldırıları ile bu sayı çok daha düşürülmüştür (~2⁶¹ karma hesaplamayla pratik çarpışma üretilebiliyor).


🔍 SHA-1 vs. Modern Hash Fonksiyonları

Özellik

SHA-1

SHA-256

SHA-3

Bcrypt/Argon2

 Çıktı Uzunluğu

 160-bit

 256-bit

 Değişken

 Değişken

 Çarpışma Direnci

 Zayıf

 Güçlü

 Güçlü

 Güçlü

 Hız

 Orta

 Yavaş

 Daha yavaş

 Kasıtlı yavaş

 Parola Hashlemeye Uygunluk

  Hayır

  Hayır

  Hayır

  Evet

 Durum

 Güvensiz

 Tavsiye edilir

 Modern standart

 Parola için ideal

 

🔧 SHA-1 Kullanımı: Python Örneği

python
import hashlib veri = "kriptoloji".encode() sha1_ozet = hashlib.sha1(veri).hexdigest() print(f"SHA-1 Özeti: {sha1_ozet}")

🚫 SHA-1 Kullanılmamalı! Peki Neden?

Kullanılmaması Gereken Yerler

  • Parola saklama

  • Dijital imza üretimi

  • SSL/TLS sertifikaları

  • Blok zinciri uygulamaları

Hâlâ Kullanıldığı Yerler

  • Eski sistemlerin güncellenememiş altyapıları

  • Geriye dönük uyumluluk gereken durumlar (legacy systems)

  • Eğitim ve akademik örnekler


✅ SHA-1 Yerine Ne Kullanılmalı?

  • SHA-256 / SHA-3: Genel amaçlı özetleme için.

  • Argon2 / Bcrypt / Scrypt: Parola saklama için özel olarak geliştirilmiş, zaman ve bellek açısından yavaş çalışan algoritmalar.


📚 Kaynakça (APA Formatı)

  • National Institute of Standards and Technology. (1995). Secure Hash Standard (SHA-1). FIPS PUB 180-1.

  • Wang, X., Yin, Y. L., & Yu, H. (2005). Finding collisions in the full SHA-1. In Annual International Cryptology Conference (pp. 17-36). Springer.

  • Stevens, M., Bursztein, E., Karpman, P., Albertini, A., & Markov, Y. (2017). The first collision for full SHA-1. https://shattered.io

  • Python Software Foundation. (n.d.). hashlib — Secure hashes and message digests. https://docs.python.org/3/library/hashlib.html

  • RFC 3174. (2001). US Secure Hash Algorithm 1 (SHA1). https://www.rfc-editor.org/rfc/rfc3174