Bu çok iyi bir soru. Her yerde UUID kullanmak için aceleyle yeterince düşünülmüş olduğuna inanmıyorum. Hiç sağlam bir araştırma bulamadım.
Bir öneri: çok dikkatli bir şekilde burada bas ve şifrelemeni iyi bil. 128 bitlik bir UUID kullanıyorsanız, 'doğum günü etkisi' bize, her bir tuşta 128 bit entropi olması koşuluyla , bir çarpışmanın yaklaşık 2 ^ 64 anahtar oluşturduktan sonra olduğunu söyler .
Durumun böyle olmasını sağlamak aslında oldukça zor. Gerçek rassallık (a) radyoaktif bozunma (b) rastgele arka plan radyo gürültüsünden, (c) dikkatli bir şekilde seçilen bir elektronik gürültü, örneğin ters-taraflı bir Zener diyotundan alınmadıkça, sıklıkla kontamine olan rasgele arka plan radyo gürültüsünden üretilebilir. (Sonuncuyla oynadım ve bir çekicilik gibi çalışıyor, BTW).
Kullanıcı 2 ^ 64 (yaklaşık 10 ^ 19) tuşa yaklaşan bir şey üretmediği ve hepsinin birbirine karşı kontrol ettiği sürece, "Bunu bir yıl boyunca kullanmadım" gibi bildirimlere güvenmezdim. önemsiz egzersiz.
Sorun bu. Diyelim ki sadece 100 bit entropiye sahipsin, anahtarlarınızı diğer tüm anahtarlarla karşılaştırırken herkesin ortak bir anahtar boşlukta ürettiği. Yani, yaklaşık 2 ^ 50'de çarpışmaları görmeye başlayacaksınız. yaklaşık 10 ^ 15 tuş. Veritabanınızı yalnızca 1000 milyar anahtarla doldurduysanız bir çarpışma görme şansınız hala göz ardı edilebilir. Ve kontrol etmezseniz, daha sonra peta-satır boyutundaki veritabanınıza sürünen beklenmedik hatalar alırsınız. Bu zor ısırır.
Bu tür UUID'lerin üretilmesinde çok sayıda yaklaşım olduğu gerçeği, kaygılı bir anlık spazmaya yol açmalıdır. Çok az sayıda jeneratörün tip 4 UUID için yeterli entropiye sahip 'gerçekten rastgele' işlemleri kullandığını fark ettiğinizde , jeneratörün entropi içeriğini dikkatlice incelemediğiniz sürece aşırı derecede endişe duymalısınız. (Çoğu insan bunu yapmaz, hatta nasıl yapılacağını bile bilmez; DieHarder süiti ile başlayabilirsiniz). Sahte rasgele sayı oluşumunu gerçek rasgele sayı oluşturma ile karıştırmayın.
İçine koyduğun entropinin, sahip olduğun entropi olduğunu fark etmen çok önemli, ve şifreli bir işlev uygulayarak anahtarı bozmak entropiyi değiştirmiyor. Eğer tüm alanım 0 ve 1 rakamını içeriyorsa entropi içeriğinin aşağıdaki iki dizeninkiyle aynı olduğu sezgisel olarak anlaşılmayabilir: "Bu gerçekten çok karmaşık bir dizedir 293290729382832 * ! @@ # & ^% $$) ,. m} "ve" Ve ŞİMDİ TAMAMEN FARKLI BİR ŞEY İÇİN ". Hala sadece iki seçenek var.
Rastgele olma, haklı olmak için zordur ve basitçe "uzmanların baktığı için bu nedenle tamam" olduğuna inanmak yeterli olmayabilir. Uzman kriptografları (ve gerçekten de yeteri kadar az sayıda var) sık sık yanlış anladıklarını itiraf eden ilk kişilerdir. Heartbleed, DigiNotar vb.
Bence Paul Tomblin uygun bir önlem alıyor. Benim 2c.