2009-12-15 2 views
4

GUID обычно используются для однозначной идентификации всех видов сущностей - запросов от внешних систем, файлов, любых. Работайте как магия - вы называете функцию «GiveMeGuid()» (UuidCreate() в Windows), и новый ключ GUID здесь находится у вас на службе.Есть ли какие-либо неочевидные способы злоупотребления идентификаторами GUID?

Учитывая, что мой код действительно вызывает функцию «GiveMeGuid()» каждый раз, когда мне нужен новый идентификатор GUID, есть ли какой-либо не столь очевидный способ злоупотребления им?

+0

Все работает. Или есть проблема, которую вы хотите решить? – Tobu

+0

вы скоро не сбегаете из GUID =) –

+0

Что вы подразумеваете под «неправильным использованием»? Гид - это просто ценность, вы можете использовать его так, как хотите, точно так же, как и любое другое значение. Функция, которую вы вызываете, просто выполняет определенные вычисления, которые (почти) гарантируют уникальность значения, я не думаю, что это можно злоупотреблять. – Rory

ответ

4

Только что нашел ответ на старый вопрос: How deterministic Are .Net GUIDs?. Рекотировании его:

Это не полный ответ, но я могу вам сказать, что 13-шестнадцатеричная цифра всегда 4, потому что это обозначает версию алгоритма, используемого для генерации GUID (EST ID, v4); Кроме того, цитирую Википедия:

криптоанализа генератора WinAPI GUID показывает, что, так как последовательность V4 GUIDs является псевдослучайной, учитывая начальное состояние можно предсказать до ближайшего 250 000 GUIDs, возвращенного функция UuidCreate. Вот почему GUID не должны использоваться в криптографии, например, как случайные ключи.

Так что, если вам повезло и получить тот же семя, ты разобьешь 250K зеркала в последовательности. По словам другого Wikipedia piece:

В то время как каждая из которых сформирована GUID, не гарантируется быть уникальным, общее количество уникальных ключей (2 или 3,4 × 10) настолько велика, что вероятность того же самого число, генерируемое дважды, крайне мало.

Итог: может быть, форма неправильного использования его рассматривать GUID всегда уникальным.

+0

Это утверждение Wikipedia оказалось ложным: вы можете делать эти прогнозы только с доступом к полному внутреннему состоянию генератора, а не из списка GUID. –

1

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

2

Это зависит. Некоторые реализации генерации GUID зависят от времени, поэтому быстрый вызов CreateGuid МОЖЕТ создавать конфликты GUID.

Редактировать: Я теперь помню проблему. Я когда-то работал над некоторым кодом php, где функция генерации GUID повторяла RNG с системным временем каждого вызова. Не делай этого.

1

Возможно, с энтропией можно управлять с помощью некоторых параметров, используемых для генерации GUID в первую очередь (например, идентификаторов интерфейса).

1

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

Смежные вопросы