İyi bir hash işlevi aşağıdaki özelliklere sahiptir:
Bir mesajın karması verildiğinde, bir saldırganın hash'lerinin aynı olacak şekilde başka bir mesaj bulması sayısal olarak mümkün değildir.
Bir çift mesaj verildiğinde, m 've m, h (m) = h (m') olacak şekilde iki tane bulmak sayısal olarak olanaksızdır.
İki durum aynı değil . İlk durumda, bir çakışma bulmaya çalıştığınız önceden var olan bir hash vardır. İkinci durumda, çakışan herhangi iki mesajı bulmaya çalışıyorsunuz . İkinci görev, doğum günü "paradoksu" nedeniyle önemli ölçüde daha kolaydır.
Performansın o kadar büyük bir sorun olmadığı durumlarda, her zaman güvenli bir hash işlevi kullanmalısınız. Bir hash'de çarpışmaları zorlayarak gerçekleştirilebilecek çok akıllı saldırılar vardır. Başlangıçtan itibaren güçlü bir şey kullanırsanız, kendinizi bunlara karşı koruyacaksınız.
Yeni tasarımlarda MD5 veya SHA-1 kullanmayın. Benim de dahil olmak üzere çoğu kriptograf onların bozuk olduğunu düşünür. Bu tasarımların her ikisinde de temel zayıflık kaynağı, yukarıda özetlediğim ikinci özelliğin bu yapılar için geçerli olmamasıdır. Bir saldırgan, m ve m 'olmak üzere iki mesaj oluşturabilirse, her ikisi de aynı değere karma bu mesajları size karşı kullanabilir. SHA-1 ve MD5 ayrıca, dikkatli olmazsanız uygulamanızı ölümcül şekilde zayıflatabilecek mesaj uzatma saldırılarından da muzdariptir.
Whirpool gibi daha modern bir hash daha iyi bir seçimdir. Bu mesaj uzantısı saldırılarından etkilenmez ve AES'in çeşitli saldırılara karşı güvenliği kanıtlamak için kullandığı matematiği kullanır.
Umarım yardımcı olur!