Является ли использование функции CreateUUID() в качестве соли хорошей идеей?

Я использую coldfusion и хочу создать случайное поле соли для своих паролей. Мне было интересно, полезна ли здесь функция CreateUUID(). Я нашел много примеров, в которых используется отдельная функция для создания строки соли; но зачем это делать, если вместо этого можно использовать функции rand() или CreateUUID()? Я не уверен.

Это излишество или хорошая идея? Или я должен вместо этого использовать rand() или временную метку?


person Mohamad    schedule 29.08.2010    source источник
comment
см. также: stackoverflow.com/questions/1194318/   -  person Kip    schedule 01.03.2013


Ответы (1)


Это не хорошая идея — CreateUUID гарантирует уникальность, а не случайность; если бы вы провели статистический анализ CreateUUID, скорее всего, это распределение не считалось бы достаточно случайным для криптографии, потому что оно не было специально разработано таким образом.

Например, первые n байтов CreateUUID — это ваш MAC-адрес, т. е. всегда один и тот же для каждой соли. Сделав это, вы значительно уменьшили количество энтропии, которое имеют ваши соли, тем самым облегчив их взлом. Используйте библиотеки для обработки всего сценария аутентификации, если это вообще возможно, а если нет, используйте настоящую функцию rand().

person Ana Betts    schedule 29.08.2010
comment
Я не уверен, что все, что вы сказали, свидетельствует о том, что UUID - плохая соль. Уникальность соли на самом деле важнее случайности. Весь смысл соли в том, чтобы предотвратить взлом радужного стола. - person Kip; 01.03.2013
comment
@Kip Если вы можете предсказать соль для нового пользователя (или для существующего пользователя), вы можете значительно уменьшить ключевое пространство вещей, которые вам нужны для грубой силы. Это плохо™ - person Ana Betts; 01.03.2013