Насколько легко вы можете угадать GUID, который может быть сгенерирован?

StackOverflow https://stackoverflow.com/questions/643445

  •  22-07-2019
  •  | 
  •  

Вопрос

Идентификаторы GUID часто используются при создании сеансовых ключей для веб-приложений.Я всегда задавался вопросом о безопасности этой практики.Поскольку GUID генерируется на основе информации, полученной от компьютера, и времени, а также нескольких других факторов, насколько сложно угадать вероятные GUID, которые появятся в будущем?Допустим, вы запустили 1000 или 10000 новых сеансов, чтобы получить хороший набор данных генерируемых GUID.Упростит ли это создание GUID, который может быть использован для другого сеанса?Вам даже не нужно будет угадывать конкретный GUID, а просто продолжать пробовать GUID, которые могут быть сгенерированы в определенный период времени.

Это было полезно?

Решение

Веб-приложения .NET вызывают Guid.NewGuid () для создания GUID, который, в свою очередь, в конечном итоге вызывает CoCreateGuid () COM-функция на несколько кадров глубже в стеке.

Из библиотеки MSDN:

  

Функция CoCreateGuid вызывает   Функция RPC UuidCreate , которая создает   GUID, глобально уникальный 128-бит   целое число. Используйте функцию CoCreateGuid   когда вам нужен абсолютно уникальный   номер, который вы будете использовать в качестве   постоянный идентификатор в распределенном   окружающая среда. Очень высокая степень   определенность, эта функция возвращает   уникальное значение - нет другого вызова, на   та же или любая другая система   (в сети или нет), должен вернуть   то же значение.

И если вы посмотрите страницу UuidCreate :

  

Функция UuidCreate создает    UUID , который нельзя отследить до   Ethernet / Token Ring адрес   компьютер, на котором он был создан. Это   также не может быть связан с другими    UUID созданы на том же компьютере.

Последнее предложение содержит ответ на ваш вопрос. Поэтому я бы сказал, что довольно сложно догадаться, если в реализации Microsoft нет ошибки.

Другие советы

Вот некоторые материалы из Википедии ( первоисточник ):

  

V1 GUID, которые содержат MAC-адрес   и время может быть определено   цифра "1" в первой позиции   третья группа цифр, например   {2f1e4fc0-81fd-11da-9156-00036a0f876a}.

Насколько я понимаю, они этого не скрывают.

  

V4 GUID используют более поздний алгоритм,   который является псевдослучайным числом. Эти   иметь "4" в том же положении, для   пример   {38a52be4-9352-453e-af97-5c3b448652f0}.   В частности, бит data3   шаблон будет 0001xxxxxxxxxxxx в   первый случай, и 0100xxxxxxxxxxxx   во-вторых. Криптоанализ   Генератор WinAPI GUID показывает, что   поскольку последовательность идентификаторов GUID V4   псевдослучайный, с учетом начального состояния   можно прогнозировать до следующих 250 000   GUID, возвращаемые функцией   UuidCreate 1 . Вот почему GUID   не должен использоваться в криптографии, e.   как случайные ключи.

GUID гарантированно будут уникальными, и это все. Не гарантировано быть случайным или трудно угадать.

Чтобы ответить на ваш вопрос, по крайней мере для алгоритма генерации GUID V1, если вы знаете алгоритм, MAC-адрес и время создания, вы, вероятно, могли бы сгенерировать набор GUID, один из которых был бы тем, который был фактически сгенерирован. И MAC-адрес, если это GUID V1, можно определить по образцам GUID с того же компьютера.

Дополнительная новость из Википедии:

  

Указанный OSF алгоритм для   генерация новых GUID была широко распространена   критика. В этих (V1) GUID   MAC-адрес сетевой карты пользователя   используется в качестве базы для последней группы   Цифры GUID, что означает, например,   что документ можно отследить до   компьютер, который его создал. это   дыра конфиденциальности была использована при поиске   создатель червя Мелисса. Наиболее   другие цифры основаны на   время генерации GUID.

Если кто-то продолжит использовать сервер с непрерывным потоком идентификаторов GUID, это будет скорее атака типа «отказ в обслуживании», чем все остальное.

Вероятность того, что кто-то угадает GUID, равна нулю.

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

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

" GUID гарантированно будут уникальными, вот и все. GUID не гарантируется быть уникальным. По крайней мере, сгенерированные CoCreateGuid: «Для очень высокой степени уверенности эта функция возвращает уникальное значение - никаких других вызовов в той же или любой другой системе (сетевой или нет), < strong> должен возвращать то же значение. "

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top