Demek istediğim, sadece "mevcut teknolojiyle işlevi tersine çevirmek ne kadar zor" mudur?
Yoksa onları farklı kılan matematiksel bir kavram ya da özellik var mı?
"İşlevi tersine çevirmek ne kadar zor" meselesi ise, teknolojinin ilerlemesiyle bazı Şifreleme Karma İşlevlerinin yalnızca Karma İşlevler olmak için Şifreleme olmayı bıraktığını söylemek doğru mudur? MD5'e olan bu mu?
Her şifreleme karma işlevi bir karma işlevidir. Ancak her karma işlevi kriptografik bir karma değildir.
Bir kriptografik karma işlevi, bir dizi güvenlik özelliğini garanti etmeyi amaçlamaktadır. En önemlisi, çarpışma veya ön görüntü bulmak zor ve çıktı rastgele görünüyor. (Birkaç özellik daha var ve "zor" bu bağlamda iyi tanımlanmış sınırlara sahip, ancak burada önemli değil.)
Kriptografik olmayan karma işlevler, kötü niyetli olmayan girdiler için çarpışmalardan kaçınmaya çalışır. Bazıları verilerdeki (CRC'ler) yanlışlıkla değişiklikleri tespit etmeyi amaçlar, diğerleri ise nesneleri bir karma tabloda farklı kovalara mümkün olduğunca az çarpışma ile koymaya çalışır.
Daha zayıf garantiler karşılığında genellikle (çok) daha hızlıdırlar.
Güvenlik sağlamayı amaçladığı için MD5'e hala kriptografik bir karma işlevi diyorum. Ancak kırılmış ve bu nedenle artık bir şifreleme karması olarak kullanılamıyor. Öte yandan, kriptografik olmayan bir karma fonksiyonunuz olduğunda, ilk başta güvenli olmaya çalışmadığı için gerçekten "kırık" diyemezsiniz.
Kriptografik olarak güvenli karma işlevlerinin güçlü bir şekilde gerektirdiği, kriptografik olarak güvenli olmayan karma işlevler için bu kadar güçlü olması gerekmeyen bazı özellikler vardır:
h
verildiğinde, karma olduğunda m
ileten h
mesajı bulmak zor olmalıdırm1
farklı bir mesaj bulmak zor olmalı m2
Böylece m1
ve m2
aynı hash ver)m1
ve m2
aynı hash değerini verir)Bu noktalarda, nicel yerine nitel bir ölçü olan zor bir sürü görürsünüz. Burada en iyi cevap fizibilite: bir şey uygulanabilir hale geldiğinde ve bu çizgiler zaman içinde hareket ettiğinde bulanık bir çizgi var (hesaplama yetenekleri Moore Yasası'na göre katlanarak büyüdükçe, zor problemler artık cep telefonunuz tarafından çözülebiliyorsa).
Genel olarak zor bir hedefe ulaşma zamanının NP-tamamlanmış olduğunu varsaymak iyi bir uygulamadır. Bu, karma uzunluğunu artırdıkça karma kırmak için gereken sürenin güçlü bir şekilde büyüdüğü anlamına gelir.
Başka bir nokta, kriptografik olarak güvenli bir karma algoritmanın bazı uygulamalarda yararlı olabileceği, ancak diğerlerinde yararlı olamayacağıdır. Saldırganınızın modeline, korumak istediğiniz bilgilerin doğasına ve performans gereksinimleri gibi şeylere bağlıdır (genel bir kural olarak, bir karma'nın şifreleme özellikleri ne kadar iyi olursa, çalışma zamanı davranışı o kadar kötüdür).
Burada anlaşılması gereken iki önemli şeyin şöyle olduğunu söyleyebilirim:
"Şifreleme karma işlevi" terimi geleneksel olarak genel olan çarpışmaya dayanıklı karma işlevler olarak daha iyi etiketlenebilecek öğeleri belirtmek için kullanılır. Bu üç özelliğe sahip olması gereken işlevler ("genel" = gizli anahtar gerektirmez):
m1
İçin, bir saldırganın herhangi bir değer bulması çok maliyetli m2 ≠ m1
Öyle ki hash(m1) = hash(m2)
.h
değeri için, bir saldırganın m
öyle ki hash(m) = h
.hash(m1) = hash(m2)
olacak şekilde herhangi bir değer çifti m1 ≠ m2
Bulması çok maliyetlidir.Eski şifreleme karma işlevlerinin önemsiz bir şekilde başarısız olduğu ancak SHA-3 ve Blake2 gibi daha yenilerinin elde etmek için tasarlandığı dördüncü bir özellik var:
Rastgele Oracle özelliği (doğru şekilde formüle edildiğinde) önceki üç özelliğin yanı sıra verimli zunluk uzatma saldırıları olmaması gibi ek özellikleri de içerir. (Uzunluk uzantıları, SHA-256 ve SHA-512 gibi eski karma işlevlerin rasgele Oracle özelliğinde başarısız olmasının en belirgin nedenidir.)