rails - Создание безопасного идентификатора / пароля - PullRequest
0 голосов
/ 25 ноября 2010

Я ищу RAIL способ создания очень безопасного UID, который будет действовать как маркер аутентификации.

Я использовал UUID, но мне сказали, что они не безопасны.Я хотел бы узнать, каков метод выбора в наши дни в ruby ​​/ rails 3?

1 Ответ

2 голосов
/ 25 ноября 2010

Этот вопрос никак не связан с Rails.

UUID небезопасен по той простой причине, что он является уникальным идентификатором и содержит «постоянные» части данного компьютера (например, он может использовать MAC-адрес для компьютера),что упрощает угадывание.

Если вы хотите, чтобы строки по 100k + не были угаданы, вы должны иметь возможность распределять ваши ключи по большому пространству ключей.Позвольте мне объяснить:

Если вам нужен только 1 ключ (давайте), вы можете выбрать «А».В ключевом пространстве AZ у вас есть шанс 1:26 угадать это.Теперь, если вы расширите свое пространство клавиш до A-Za-z, у вас есть шанс угадать 1:52.

Нужна еще безопасность?Используйте более длинную клавишу: «AA» 1: 2704 шанс.

Теперь, если вы хотите иметь 2000 ключей и использовать длину ключа 2 (например, «AA»), есть шанс 2000:2704 => 1:1.352кто-то может догадаться.Довольно плохо.

Итак, ключ здесь - это выбрать очень длинный размер ключа.С Digest::SHA1 вы получаете 40-символьные ключи (используя Hex, с 16 различными значениями на символ).Это 1.46150164e48 уникальные значения.Ваши 100k значений должны быть достаточно случайными.

Редактировать:

С 40-значными значениями HEX SHA1 у вас есть 1:461501640000000000000000000000000000000000000000000 шанс угадать одно.Это занимает много времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...