2009-09-09 12 views
7

Moja aplikacja internetowa działa tylko za pośrednictwem protokołu SSL i ustawia plik cookie z ograniczeniami czasowymi dla każdego użytkownika po pomyślnym zalogowaniu przy użyciu nazwy użytkownika i hasła. Największe słabości w systemie stanowią zagrożenie dla pliku cookie istniejącego użytkownika. I dwa zgadywanie identyfikatora GUID sesji.Czy identyfikatory GUID generowane w systemie Windows 2003 są bezpieczne do użycia jako identyfikatory sesji?

Znam mechanizmy na pierwszą słabość, ale zastanawiam się, jak bardzo muszę się martwić o szansę, aby atakujący odgadł identyfikator GUID sesji na podstawie identyfikatora GUID, który wcześniej uzyskali, logując się na konto, które ustawili w górę? Serwer internetowy w tym przypadku to Windows 2003, a identyfikatory GUID są generowane z .Net 3.5.

Odpowiedz

6

Identyfikatory GUID nie mają być kryptograficznie bezpieczne, tylko unikatowe. Dość dużo formatu jest przewidywalne - 48-bitowy adres MAC, znacznik czasu, który jest w pewnym stopniu przewidywalny, jeśli wiesz, jak jest generowany i kilka innych bitów do radzenia sobie z kolizjami znacznika czasu. Zaawansowany technicznie atakujący ma duże szanse na inżynierię odwrotną GUID.

Naprawdę potrzebujesz cryptographically secure PRNG dla bezpiecznego klucza sesji.

+0

Algorytm tworzenia GUID został zmieniony. Nie używają już adresów MAC. Są to tylko 128-bitowe liczby pseudolosowe. I mają wiele problemów z bezpieczeństwem. –

+0

Nie ma adresu MAC, a nie znacznika czasu w .NET 3.5 guids. –

+1

Czy identyfikator GUID .net 3.5 jest opisany przez dostawcę jako bezpieczny kryptograficznie? – ConcernedOfTunbridgeWells

0

.NET 3.5 Identyfikatory GUID są praktycznie niemożliwe do odgadnięcia. Sama liczba identyfikatorów GUID jest olbrzymia - jest więcej identyfikatorów GUID niż ziarn na piasku we wszechświecie itp. Nie są one ściśle "gwarantowane" jako unikatowe (chociaż najwyraźniej gwarantowane jest SQL NEWID)

Jeśli chcesz przetestować to dla siebie, wygenerować kilkaset milionów, a następnie znaleźć duplikaty (nie znajdziesz żadnych).

+1

To prawda, że ​​identyfikatory GUID są pseudolosowe, ale komputer nigdy nie może wygenerować prawdziwych wartości losowych. Spieram się, że są "łatwe" do odgadnięcia. Czy możesz wyjaśnić swoje wyjaśnienie, że możesz obliczyć wszystkie następujące identyfikatory GUID? (przykład lub źródło) –

Powiązane problemy