it-swarm-tr.com

Karma İşlevi ile Şifreleme Karma İşlevi arasındaki fark nedir?

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?

56
Mr.Eddart

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.

62
CodesInChaos

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:

  • preimage direnci (karma h verildiğinde, karma olduğunda m ileten h mesajı bulmak zor olmalıdır
  • zayıf çarpışma direnci (bir mesaj verildi m1 farklı bir mesaj bulmak zor olmalı m2 Böylece m1 ve m2 aynı hash ver)
  • güçlü çarpışma direnci (herhangi bir mesaj bulmak zor olmalıdır 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).

21
jupp0r

Burada anlaşılması gereken iki önemli şeyin şöyle olduğunu söyleyebilirim:

  1. "Karma işlevi" terimi belirsizdir - ya da daha doğrusu polisimsi: yakından ilişkili fakat farklı anlamların "ailesine" sahiptir. Birisi bir işlevi "karma işlevi" olarak etiketlerse, etiket size işlevin hangi özelliklere sahip olması gerektiğini söylemez. Terimin kullanıldığı bağlamı ve bu bağlamın gerekliliklerini incelemeniz gerekir.
  2. "Kriptografik karma işlevi" terimi hafif bir yanlış adlandırmadır - bir tanım gibi görünür, ancak terimin kendisinin aslında tanımlamadığı ilgili teknik bir tanımı vardır. Basitçe söylemek gerekirse, mesaj kimlik doğrulama kodları (MAC) genellikle karma işlevler olarak etiketlenen ve bazı şifreleme güvenliği biçimi sunan, ancak gelenekselde "şifreleme karma işlevleri" olmayan işlevler vardır tanım.

"Ş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):

  • İkinci önleme direnci: Dürüst bir taraf tarafından seçilen rastgele bir değer m1 İçin, bir saldırganın herhangi bir değer bulması çok maliyetli m2 ≠ m1 Öyle ki hash(m1) = hash(m2).
  • Önleme direnci: Dürüst bir taraf tarafından seçilen rastgele bir _ h değeri için, bir saldırganın m öyle ki hash(m) = h.
  • Çarpışma direnci: Bir saldırganın 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'ın ayırt edilemezliği: Bunları kısaca açıklamak imkansız, ancak bunu buna daldıralım: Bir saldırganın herhangi bir olmayanı bulması çok maliyetli - seçtikleri girdilerin çıktıları arasındaki değişim korelasyonları.

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.)

3
Luis Casillas