2010-08-29 9 views
8

Używam coldfusion i chciałbym wygenerować losowe pole soli dla moich haseł. Zastanawiam się, czy funkcja CreateUUID() jest przydatna tutaj. Znalazłem wiele przykładów, które wykorzystują oddzielną funkcję do utworzenia ciągu soli; ale dlaczego to zrobić, gdy zamiast tego można użyć funkcji rand() lub CreateUUID()? Nie jestem pewny.Czy używanie funkcji CreateUUID() jest dobrym pomysłem na sól?

Czy to przesada, czy dobry pomysł? Czy zamiast tego powinienem użyć rand() lub znacznika czasu?

+0

patrz również: http://stackoverflow.com/questions/1194318/is-a-guid-a-good-salt-is-my-register-login-process-nie-nie-flame – Kip

Odpowiedz

6

To nie dobry pomysł - gwarancje CreateUUID wyjątkowość, nie losowość; jeśli zrobiłeś analizę statystyczną CreateUUID, najprawdopodobniej nie byłaby to dystrybucja uważana za wystarczająco przypadkową dla kryptografii, ponieważ nie została w ten sposób specjalnie zaprojektowana.

Na przykład, pierwsze n bajtów CreateUUID jest adresem MAC - tj zawsze to samo dla każdej soli. W ten sposób znacznie zmniejszyłeś ilość entropii twoich soli, dzięki czemu łatwiej je złamać. Użyj bibliotek, aby obsłużyć cały scenariusz auth, jeśli to możliwe, a jeśli nie, użyj prawdziwej funkcji rand().

+2

Nie jestem pewne, że wszystko, co powiedziałeś, spowodowałoby, że UUID to zła sól. Wyjątkowość soli jest w rzeczywistości ważniejsza niż przypadkowość. Cały punkt soli polega na zapobieganiu hackom tęczy. – Kip

+0

@Kip Jeśli możesz przewidzieć sól dla nowego użytkownika (lub dla istniejącego użytkownika), możesz znacząco obniżyć kluczową przestrzeń rzeczy, które musisz brutalnie wymusić. To jest złe ™ –

Powiązane problemy