Hash Length Extension Attack
Summary of the attack
Bir sunucunun bazı bilinen açık metin verilerine bir gizli ekleyerek imzaladığı bazı verileri hayal edin ve ardından bu verileri hash'lediğini düşünün. Eğer şunları biliyorsanız:
Gizlinin uzunluğu (bu, belirli bir uzunluk aralığından da brute force ile elde edilebilir)
Açık metin verisi
Algoritma (ve bu saldırıya karşı savunmasız)
Padding biliniyor
Genellikle varsayılan bir padding kullanılır, bu nedenle diğer 3 gereklilik karşılandığında bu da geçerlidir
Padding, gizli+veri uzunluğuna bağlı olarak değişir, bu yüzden gizlinin uzunluğu gereklidir
O zaman, bir saldırganın veri eklemesi ve önceki veri + eklenen veri için geçerli bir imza üretmesi mümkündür.
How?
Temelde, savunmasız algoritmalar hash'leri önce bir veri bloğunu hash'leyerek oluşturur ve ardından, önceden oluşturulmuş hash (durum) üzerinden bir sonraki veri bloğunu ekleyip hash'ler.
O zaman, gizli "secret" ve veri "data" ise, "secretdata"nın MD5'i 6036708eba0d11f6ef52ad44e8b74d5b'dir. Eğer bir saldırgan "append" dizesini eklemek isterse, şunları yapabilir:
64 "A"nın MD5'ini oluştur
Önceden başlatılmış hash'in durumunu 6036708eba0d11f6ef52ad44e8b74d5b olarak değiştir
"append" dizesini ekle
Hash'i tamamla ve sonuçta elde edilen hash, "secret" + "data" + "padding" + "append" için geçerli olacaktır
Tool
References
Bu saldırıyı iyi bir şekilde açıklanmış olarak https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks adresinde bulabilirsiniz.
Last updated