# Çarpışma saldırısı
Kriptografide, bir kriptografik hash üzerindeki bir çarpışma saldırısı, aynı hash değerini üreten iki girdi bulmaya çalışır, yani bir hash çarpışması . Bu, belirli bir hedef karma değerinin belirtildiği bir ön görüntü saldırısı nın aksine bir saldırıdır.
Kabaca iki tür çarpışma saldırısı vardır:
Klasik çarpışma saldırısı
 hash(m1) = hash(m2) olacak şekilde iki farklı mesaj m1 vem² bulun.
Daha genel olarak:
Seçilmiş önek çarpışma saldırısı
 İki farklı p1 ve p2 öneki verildiğinde, hash(p1 ∥ m1) = hash(p2 ∥ m2) olacak şekilde iki ek m1 vem² bulun; burada ∥ birleştirme işlemini gösterir.


## Klasik çarpışma saldırısı.
Matematiksel olarak ifade edildiğinde, bir çarpışma saldırısı, hash(m1) = hash(m2) olacak şekilde iki farklı m1 vem² mesajı bulur. Klasik bir çarpışma saldırısında, saldırganın her iki mesajın içeriği üzerinde hiçbir kontrolü yoktur, ancak bunlar algoritma tarafından keyfi olarak seçilir.
Simetrik anahtar şifrelerinin kaba kuvvet saldırılarına karşı savunmasız olması gibi, her kriptografik karma işlevi, doğası gereği bir doğum günü saldırısı kullanan çarpışmalara karşı savunmasızdır. Doğum günü sorunu nedeniyle, bu saldırılar kaba kuvvetten çok daha hızlıdır. n bitlik bir karma, 2n/2 zaman adımlarında kırılabilir (karma fonksiyonunun değerlendirmeleri).
Belirli hash işlevlerine kriptanaliz uygulayarak daha verimli saldırılar mümkündür. Bir çarpışma saldırısı keşfedildiğinde ve bir doğum günü saldırısından daha hızlı olduğu tespit edildiğinde, bir hash işlevi genellikle "bozuk" olarak kınanır. NIST özet işlevi rekabeti, büyük ölçüde, çok yaygın olarak kullanılan iki özet işlevine, MD5 ve SHA-1 'e karşı yayınlanan çarpışma saldırıları tarafından başlatıldı. MD5'e yönelik çarpışma saldırıları o kadar gelişti ki, 2007'den itibaren normal bir bilgisayarda sadece birkaç saniye sürüyor. Bu şekilde oluşturulan karma çarpışmalar genellikle sabit uzunluktadır ve büyük ölçüde yapılandırılmamıştır, bu nedenle yaygın belge biçimlerine veya protokollere saldırmak için doğrudan uygulanamaz.
Ancak, birçok biçimde bulunan dinamik yapıları kötüye kullanarak geçici çözümler mümkündür. Bu şekilde, aynı hash değerine sahip olmak için mümkün olduğunca benzer iki belge oluşturulacaktır. Bir belge imzalanmak üzere bir yetkiliye gösterilecek ve ardından imza diğer dosyaya kopyalanabilecekti. Böyle kötü niyetli bir belge, aynı belgede iki farklı mesaj içerir, ancak dosyada yapılan küçük değişikliklerle şartlı olarak birini veya diğerini görüntüler:
  - PostScript gibi bazı belge biçimleri veya Microsoft Word'deki makrolar koşullu yapılara sahiptir. (if-then-else) görüntülenenleri kontrol etmek için dosyadaki bir konumun şu veya bu değere sahip olup olmadığının test edilmesini sağlar.
  - TIFF dosyaları, karma değerini etkilemeden görüntünün farklı bir bölümünün görüntülendiği kırpılmış görüntüler içerebilir.
  - PDF dosyaları, renk değeri kullanılarak çarpışma saldırılarına karşı savunmasızdır (bir mesajın metni, arka plana karışan beyaz bir renkle görüntülenir ve diğer mesajın metni koyu renkle görüntülenir) bu metin daha sonra imzalanan belgenin içeriğini değiştirmek için değiştirilebilir.


## Seçilmiş önek çarpışma saldırısı.
Çarpışma saldırısının bir uzantısı, Merkle-Damgård karma işlevlerine özgü olan, seçilen önek çarpışma saldırısıdır. Bu durumda, saldırgan keyfi olarak farklı iki belge seçebilir ve ardından tüm belgelerin eşit bir karma değerine sahip olmasıyla sonuçlanan farklı hesaplanmış değerler ekleyebilir. Bu saldırı, klasik bir çarpışma saldırısından çok daha güçlüdür.
Matematiksel olarak ifade edildiğinde, iki farklı p1, p2 öneki verildiğinde, saldırı hash(p1 ∥ m1) = hash(p2 ∥ m2) olacak şekilde iki uzantı m1 vem² bulur (burada ∥ birleştirme işlemidir).
2007'de, MD5'e karşı, MD5 işlevinin kabaca 25 değerlendirmesini gerektiren, seçilen bir önek çarpışma saldırısı bulundu. Makale ayrıca, farklı alan adları için çarpışan karma değerlere sahip iki X.509 sertifikasını da gösteriyor. Bu, bir sertifika yetkilisinden bir etki alanı için bir sertifika imzalamasının istenebileceği ve ardından bu sertifikanın (özellikle imzasının) başka bir etki alanını taklit etmek için yeni bir sahte sertifika oluşturmak için kullanılabileceği anlamına gelir.
Aralık 2008'de bir grup güvenlik araştırmacısı, MD5 karma işlevine karşı bir ön ek çarpışma saldırısından yararlanarak bir sertifika yetkilisini taklit etmek için kullanılabilecek sahte bir X.509 imzalama sertifikası yayınladığında gerçek dünya çarpışma saldırısı yayınlandı. Bu, bir saldırganın SSL güvenli herhangi bir web sitesini ortadaki adam olarak taklit edebileceği ve böylece elektronik ticareti korumak için her web tarayıcısında yerleşik olarak bulunan sertifika doğrulamasını bozabileceği anlamına geliyordu. Hileli sertifika, gerçek yetkililer tarafından iptal edilemeyebilir ve ayrıca keyfi bir sahte son kullanma süresine sahip olabilir. MD5'in 2004'te çok zayıf olduğu bilinmesine rağmen, sertifika yetkilileri Aralık 2008'de MD5 onaylı sertifikaları imzalamaya hala istekliydi ve Mayıs 2012'de en az bir Microsoft kod imzalama sertifikası hala MD5 kullanıyordu.
Flame kötü amaçlı yazılımı, bileşenlerinin, hala güvenliği ihlal edilmiş MD5 algoritmasını kullanan bir Microsoft kök sertifikası tarafından kod imzasını yanıltmak için seçilen önek çarpışma saldırısının yeni bir varyasyonunu başarıyla kullandı.
2019'da araştırmacılar, SHA-1 'e karşı 266.9 ile 269.4 arasında ve maliyeti 100.000 ABD dolarından daha düşük olan, seçilmiş bir önek çarpışma saldırısı buldular. 2020'de araştırmacılar, SHA-1'e karşı seçilen önek çarpışma saldırısının karmaşıklığını 263.4'e düşürdü.


## Saldırı senaryoları.
Kriptografik özet işlevlerinin çoğu uygulaması çarpışma direncine dayanmaz, bu nedenle çarpışma saldırıları güvenliklerini etkilemez. Örneğin, HMAC'ler savunmasız değildir. Saldırının faydalı olması için, saldırganın hash fonksiyonuna girdiyi kontrol etmesi gerekir.
Dijital imzalar
Dijital imza algoritmaları büyük miktarda veriyi verimli bir şekilde imzalayamadığından, çoğu uygulama, imzalanması gereken veri miktarını sabit bir boyuta indirmek ("sıkıştırmak") için bir karma işlevi kullanır. Dijital imza şemaları, genellikle, temeldeki karma işlevi pratik olarak bozulduğu anda karma çakışmalarına karşı savunmasız hale gelir; rastgele (tuzlu) karma gibi teknikler, daha sert ön görüntü saldırısını gerektirerek fazladan zaman alacaktır.
Her zamanki saldırı senaryosu şu şekildedir:
  - Mallory, aynı karma değere, yani bir çarpışmaya sahip iki farklı A ve B belgesi oluşturur. Mallory, görünüşte Alice'den gelen B belgesini kabul etmesi için Bob'u kandırmaya çalışır.
  - Mallory, A belgesini Alice'e gönderir, o da belgenin söylediklerini kabul eder, karmasını imzalar ve imzayı Mallory'ye gönderir.
  - Mallory, A belgesindeki imzayı B belgesine ekler.
  - Mallory daha sonra imzayı ve B belgesini Bob'a gönderir ve Alice'in B'yi imzaladığını iddia eder. Dijital imza, B belgesinin karma değeriyle eşleştiğinden, Bob'un yazılımı ikameyi algılayamaz.
2008'de araştırmacılar, sahte bir sertifika yetkilisi sertifikası üretmek için bu senaryoyu kullanarak MD5'e karşı seçilen bir önek çarpışma saldırısı kullandılar. Biri meşru görünen ve RapidSSL sertifika yetkilisi tarafından imzalanmak üzere gönderilen TLS ortak anahtar sertifikasının iki sürümünü oluşturdular. Aynı MD5 karma değerine sahip olan ikinci sürüm, web tarayıcılarına keyfi başka sertifikalar vermek için meşru bir otorite olarak kabul etmelerini işaret eden bayraklar içeriyordu.
Hash Taşması
Hash taşması (HashDoS olarak da bilinir), hash tablosu aramalarının en kötü durum (doğrusal araştırma) çalışma zamanından yararlanmak için hash çarpışmalarını kullanan bir hizmet reddi saldırısıdır . İlk olarak 2003'te tanımlanmıştır. Böyle bir saldırıyı gerçekleştirmek için, saldırgan sunucuya aynı değere sahip birden fazla veri parçası gönderir ve ardından sunucunun yavaş aramalar yapmasını sağlamaya çalışır. Hash tablolarında kullanılan hash fonksiyonlarının ana odak noktası güvenlik yerine hız olduğundan, çoğu büyük programlama dili etkilendi ve bu sınıfın yeni güvenlik açıkları orijinal sunumdan on yıl sonra hala ortaya çıkıyor.
Karma işlevini aşırı karmaşık hale getirmeden karma taşmasını önlemek için, anahtar bilinmediği sürece çarpışmaların bulunmasının zor olduğu güvenlik amacı ile daha yeni anahtarlı karma işlevleri tanıtıldı. Önceki karmalardan daha yavaş olabilirler, ancak yine de hesaplamaları kriptografik karmalardan çok daha kolaydır. 2021 itibarıyla Daniel J. Bernstein'ın SipHash (2012) en yaygın kullanılan hash fonksiyonu bu sınıftır. (Uygulamanın karma tablosu dışarıdan kontrol edilemediği sürece, anahtarsız "basit" karmaların kullanımı güvenli kalır.)
Bir (kısmi) ön görüntü saldırısı kullanarak Bloom filtrelerini doldurmak için benzer bir saldırı gerçekleştirmek mümkündür.<br>