SORU
29 NİSAN 2009, ÇARŞAMBA


Hangi şifreleme karma işlevi seçmeliyim?

.6 algoritmalar karma: farklı NET çerçeve ile birlikte gelir

  • MD5: 16 bayt (karma 500 MB Süre: 1462 ms)
  • SHA1: 20 bayt (ms 1644)
  • SHA256: 32 bayt (5618 ms)
  • SHA384: 48 bayt (3839 ms)
  • SHA512): 64 bayt (3820 ms)
  • KARMA: 20 bayt (7066 ms)

Bu işlevlerden her biri farklı; MD5 olan en hızlı gerçekleştirir ve yavaş olması KARMA.

MD5 yerleşik-Guıd türü uyuyor avantajı. Gerçekten kolay tanımlama için kullanmayı kolaylaştırır.

MD5 ancak savunmasız collision attacks, SHA1 da savunmasız ama az derecede.

Hangi koşullar altında karma algoritma hangi kullanmalıyım?

Özellikle gerçekten cevap çok merak ediyorum soruları

  • MD5 güvenilir değil mi? Hiçbir kötü niyet ile MD5 algoritması kullanın ve hiçbir üçüncü tarafın herhangi bir kötü niyet varsa normal durumlarda altında ki HERHANGİ bir çarpışma bekliyor (iki rasgele bayt anlam[] aynı hash üreten)

  • Ne kadar iyi SHA1 daha KARMA? daha iyi kendi halinde) 5 kez hesaplamak için yavaş ama karma SHA1 boyutu aynıdır.

  • Dosya adları karma zaman niyetli olmayan çarpışmalar alma ihtimali (veya başka bir kısa dize) nedir? (Örn. Niyetli olmayan çarpışma olasılığı nedir 2 rasgele dosya adları ile aynı MD5 hash) (MD5 / SHA1 / SHA2xx) genel Olarak?

Bu kullandığım karşılaştırma

    static void TimeAction(string description, int iterations, Action func) {
        var watch = new Stopwatch();
        watch.Start();
        for (int i = 0; i < iterations; i  ) {
            func();
        }
        watch.Stop();
        Console.Write(description);
        Console.WriteLine(" Time Elapsed {0} ms", watch.ElapsedMilliseconds);
    }

    static byte[] GetRandomBytes(int count) {
        var bytes = new byte[count];
        (new Random()).NextBytes(bytes);
        return bytes;
    }


    static void Main(string[] args) {

        var md5 = new MD5CryptoServiceProvider();
        var sha1 = new SHA1CryptoServiceProvider();
        var sha256 = new SHA256CryptoServiceProvider();
        var sha384 = new SHA384CryptoServiceProvider();
        var sha512 = new SHA512CryptoServiceProvider();
        var ripemd160 = new RIPEMD160Managed();

        var source = GetRandomBytes(1000 * 1024);

        var algorithms = new Dictionary<string,HashAlgorithm>();
        algorithms["md5"] = md5;
        algorithms["sha1"] = sha1;
        algorithms["sha256"] = sha256;
        algorithms["sha384"] = sha384;
        algorithms["sha512"] = sha512;
        algorithms["ripemd160"] = ripemd160;

        foreach (var pair in algorithms) {
            Console.WriteLine("Hash Length for {0} is {1}", 
                pair.Key, 
                pair.Value.ComputeHash(source).Length);
        }

        foreach (var pair in algorithms) {
            TimeAction(pair.Key   " calculation", 500, () =>
            {
                pair.Value.ComputeHash(source);
            });
        }

        Console.ReadKey();
    }

CEVAP
29 NİSAN 2009, ÇARŞAMBA


Şifreleme, hash fonksiyonları üç ayrı işlevleri sağlar.

  1. Çarpışma direnciSabit iki mesaj bulmak için birisi için (herhangi biraynı karma, iki mesaj).
  2. Preimage Direnç: Karma düşünürsek, ne kadar zor aynı sağlamalarının başka bir mesaj bulmak için? Ayrıca olarak bilinirtek yönlü hash fonksiyonu.
  3. İkinci preimage direnç: Bir mesaj verilmiş, aynı sağlamalarının başka bir mesaj bulacaksınız.

Bu özellikleri ile ilgili bağımsız. Örneğin, çarpışma direnci ikinci preimage direnç, ama tersi anlamına gelir. Herhangi bir uygulama için, farklı gereksinimleri, bu özelliklerden bir ya da daha fazla ihtiyacı olacak. Bir sunucu şifre güvenliğini sağlamak için bir karma işlev genellikle sadece mesaj özetleri üç ihtiyaç duyarken preimage direnç gerektirir.

MD5 çarpışma direnci gerektiren uygulamalarda kullanımı engellemez bu çarpışma dayanıklı, ancak olmadığını göstermiştir. Nitekim, MD5 çoğu hala küçük anahtar boyutu ve hızı yararlı olduğu uygulamalarda kullanılır. O, kendi kusurları nedeniyle araştırmacılar yeni senaryolar diğer hash fonksiyonları kullanmanızı tavsiye ederiz. " dedi.

SHA1 vardır çarpışmalar teorik olarak bulunabilir için izin veren bir kusur uzunluğu güvenli karma fonksiyon gerektirecektir 2^80 adımları çok daha az. Saldırı sürekli revize ediliyor ve şu anda hesaplanabilirlik geçerli ülke içinde ~2^63 adımları - zar zor yapılabilir. Bu nedenle HAYATİ-SHA1, SHA2 aile 2010'dan sonra kullanılması gerektiğini belirten kullanımını devre dışı bırakılması.

SHA2 karma SHA1 fonksiyonları aşağıdaki oluşturulan yeni bir aile. Şu anda SHA2 fonksiyonları karşı bilinen saldırıları yok. SHA256, 384 ve 512 SHA2 aile, farklı anahtar uzunlukları kullanılarak parçasıdır.

KARMA SHA aileler, ve çok yakından incelemiş oldu gibi yaygın olarak kullanılan şifreleme araştırmacılar tarafından değil dikkat etmek dışında çok fazla yorum yapamam. Bu nedenle tek başına üstesinden SHA işlevleri kullanmayı tavsiye ederim. Uygulamada daha az yararlı hale getirir çok yavaş göründüğü gibi iyi kullanıyorsunuz.

Sonuç olarak, hiç kimse en iyi işlevi var - bunun için ihtiyacınız ne bağlıdır. Her ile kusurları dikkatli olmak ve doğru hash işlevini seçmek için en iyi mümkün olacakseninsenaryo.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alfredo Garcia

    Alfredo Garc

    25 Mayıs 2007
  • bunliu

    bunliu

    2 Mayıs 2007
  • FrankJavCee

    FrankJavCee

    29 Kasım 2008