Являются ли повышенные идентификаторы UUID, сгенерированные с использованием стандартного RNG mt19937, для идентификаторов сеансов?

Мне нужно сгенерировать UUID для использования в качестве непредсказуемых / угадываемых идентификаторов сеанса.

Это может быть легко достигнуто с помощью UUID библиотека Boost:

boost::uuids::uuid newUUID()
{
static boost::uuids::random_generator gen;
return gen();
}

Возвращенный UUID может быть легко преобразован в строку.

Приведенный выше код эквивалентен:

boost::uuids::uuid newUUID()
{
static boost::uuids::basic_random_generator<boost::mt19937> gen;
return gen();
}

Итак, мы используем генератор псевдослучайных чисел Mersenne Twister 19937. Похоже, буст берет на себя задачу правильно посеять серьезно.

Тем не менее, мне интересно, если что-то важное — с точки зрения безопасности — достигается с помощью недетерминированного RNG, такого как повышение :: random_device вместо этого, а также как это повлияет на скорость генерации UUID.

boost::uuids::uuid newUUID()
{
static boost::uuids::basic_random_generator<boost::random_device> gen;
return gen();
}

Совет от людей с пониманием безопасности приветствуется.

0

Решение

MT не является криптографически безопасным ГСЧ.

boost::random_device гарантированно (документально) существует только в том случае, если он является кроптографически безопасным и недетерминированным. Обратите внимание, что это не так std::random_device,

Для любого серьезного применения вы не можете доверять простой документированной гарантии. Но для небольшого масштаба это неважно.

Написание собственного криптографически безопасного кода или системы обычно является плохой идеей. Опишите, как плохо, что кто-то побеждает вашу систему, так как это действительно важно для того, сколько усилий вы должны приложить к ней.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]