Можно ли доверять доверенным лицам для обеспечения безопасности, или они предсказуемы, если система может быть вынуждена генерировать множество известных команд?

Чтобы начать и определить guid, я использую .net framework Guid Это несколько гипотетическая ситуация У пользователей, когда выполняется предварительное формирование определенного действия, генерируются подсказки. Каждый пользователь может видеть свои собственные подсказки. Если пользователь должен был знать один из других пользовательских руководств, был бы компромисс в области безопасности.

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

Я понимаю, что слепо угадывать подсказки невозможно. Даже если бы у них было миллион значений успеха, у них все равно остался бы только шанс 10 ^ 20 успешной угадывания

Где я боюсь, что проблема может существовать, это предсказание руководства. Может ли пользователь генерировать большое количество запросов, посмотреть на полученные ему коды и узнать формулу генерации .net guid, значительно улучшить его шансы догадки? Могут ли эти факторы быть сведены до такой степени, что они будут проблемой безопасности? В этом случае, как ключи должны генерироваться уникальным образом неопределенным способом?

Я спрашиваю любого, кто упоминает вероятность догадок/коллизий, чтобы добавить к нему какой-то трудный смысл. Либо точное число для определения коэффициентов, либо что-то вроде этого: "его можно использовать для хранения данных учетной записи, но не для конфиденциальных данных"

ИЗМЕНИТЬ

этот вопрос, похоже, идет на территорию, которую я изначально пытался исследовать с этим вопросом Является ли GUID хорошим ключом для (временного) шифрования?

Ответ 1

GUID/UUID предназначены для генерации 128-битных номеров для использования в первую очередь как уникальный идентификатор (для всех целей и задач).

UUID не предназначены для генерации криптографически сильных последовательностей случайных чисел, и если вам нужна максимальная непредсказуемость, то криптографически сильные последовательности случайных чисел - именно то, что вы хотите. Для этого .NET предоставляет вам RNGCryptoServiceProvider, разработанный с нуля, чтобы быть столь же непредсказуемым, насколько это можно разумно реализовать с помощью алгоритмических средств, поэтому почему бы не использовать его?

Пример:

byte[] GenerateRandomBytes()
{
   byte[] key = new byte[16];

    System.Security.Cryptography.RNGCryptoServiceProvider c =
        new System.Security.Cryptography.RNGCryptoServiceProvider();

    c.GetBytes(key);

    return key;
}

Ответ 2

Afaik.net генерирует Версии 4 UUID как Гиды по умолчанию. Они случайны и трудно догадываться, если они правильно реализованы. Но так как будущие версии могут использовать другую реализацию, я бы не стал полагаться на это. Я думаю, что даже более ранние версии Windows или .net использовали Guids на основе Mac-Address, которые легче угадать.

Поэтому я бы просто использовал один из генераторов крипто-псевдослучайных чисел, встроенных в .net. Если вы создаете 16 байт, у вас есть замена замены для Guid.