2013-07-01 17 views
5

Przeszukałem wiele zasobów w Internecie, ale jak dotąd nie udało się znaleźć ostatecznej odpowiedzi na pytanie, czy mechanizm generowania GUID Microsoftu jest wystarczająco bezpieczny, aby zagwarantować, że jest używany jako unikatowy identyfikator w całej aplikacji .Czy generator GUID Microsoftu jest kryptograficznie bezpieczny?

Aby wyjaśnić, "wystarczająco bezpieczny", mam na myśli pytanie, czy algorytm użyty do wygenerowania identyfikatora GUID ma jakieś znane słabości lub luki w zabezpieczeniach, które mogłyby zmniejszyć efektywną losowość identyfikatora GUID , co powoduje, że liczba nie jest nieistotna. kolizje. Jeśli nie, oznacza to, że GUID jest całkowicie nie do zniesienia, a jeśli tak, to jest jakiś sposób na zaszczepienie funkcji generatora GUID, aby skutecznie zwiększyć losowość wygenerowanego identyfikatora GUID.

Na podstawie informacji podanych w przewodniku MSDN tutaj (http://msdn.microsoft.com/en-us/library/system.guid.aspx) istnieje jakiekolwiek wskazanie, że system użyty do wygenerowania identyfikatora GUID można uznać za wystarczająco losowy.

Dzięki!

Odpowiedz

7

nr Celem GUID ma być wyjątkowy, ale kryptograficznie bezpieczne oznacza, że ​​jest to nieprzewidywalne. Te cele czasami, ale nie zawsze, są wyrównane.

Jeśli chcesz kryptograficznie bezpieczne, należy użyć coś takiego RNGCryptoServiceProvider

Zobacz także:

Kluczową kwestią w obu powyższych linków jest że Guid firmy Microsoft jest implementacją UUID i UUID spec indicates that they should not be used as security tokens:

Nie zakładaj, że numery UUID są trudne do odgadnięcia; nie powinny być używane jako funkcje bezpieczeństwa (np. identyfikatory, których posiadanie zapewnia dostęp). Przewidywalne źródło liczb losowych zaostrzy sytuację.

+0

Dzięki @explunit. Przeczytałem dwa linki, które opublikowałeś (pojawiły się jako sugerowane duplikaty, gdy pisałem to pytanie). – raTM

+0

To powiedziawszy, zdarza się, że niektóre implementacje, w tym w Pythonie, Javie i Ruby, generują szyfrowane guids. Zobacz https://news.ycombinator.com/item?id=10631806 –