Как проверить правильность сгенерированного UUID?

Моя компания получает изготовленную на заказ материнскую плату от поставщика. Недавно мы попросили их добавить UUID в наш SMBIOS. Они сделали это для нас. По их словам, они используют программу для генерации UUID версии 5 (хэш SHA-1). Подробности: http://en.wikipedia.org/wiki/Universally_unique_identifier

Когда мы получили материнскую плату и проверили данные SMBIOS, мы увидели длинные строки случайных символов. Тем не менее, как мы можем убедиться, что строки являются уникальными? Когда мы спросили их, есть ли диапазон или инструмент, который мы могли бы просто использовать (просто проверять каждые несколько месяцев, чтобы убедиться, что генерируется правильный UUID), они сказали нам, что у них нет никаких инструментов для проверки. В результате, прямо сейчас наш стандарт QC - "пока в SMBIOS есть строка в поле UUID, мы ПРОЙДЕМ плату". Однако я думаю, что мы не смогли бы предотвратить, если: - кто-то использовал неправильную программу для генерации неправильная строка UUId - кто-то выполнил неверный шаг и у него есть партия материнской платы с той же строкой (не уникальная).

Мы также проверяем MAC-адрес на этой плате. Для MAC-адреса, по крайней мере, назначен диапазон. Итак, мы могли бы по крайней мере проверить диапазон. Но для UUID диапазона нет.

Я также проверяю компьютер Dell. Я обнаружил, что 2 разных модели Dell имеют UUID с одинаковым содержимым на первых (6-8) символах.

Если возможно, пожалуйста, дайте мне знать, как мне попросить инженеров материнских плат предоставить нам инструмент для проверки строк раз в несколько месяцев.

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

Спасибо вам большое!

4 ответа

Решение

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

Причина, по которой Dell использует свой префикс, заключается в том, что они, скорее всего, используют последовательные UUID, возможно, вам следует вместо этого запросить их и отслеживать последний увиденный, а затем убедиться, что они действительны, просто проверив, что текущий больше, чем любой ранее замеченный.

Нет другого критерия для "правильного", кроме "уникального"?

Сделай это сам. По мере получения материнских плат проверяйте каждый UUID по всем ранее полученным системам.

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

Там нет никакого способа, которым вы можете просто произвольно проверить, что они "правильные". Когда дело доходит до этого, UUID - это просто случайно сгенерированная строка. Нет реального способа проверить, является ли он достаточно случайным, или что он не был выпущен ранее (если у вас нет базы данных со всеми UUID, сгенерированными на сегодняшний день).

У инструмента linux uuidgen есть два способа генерации UUID. Если они используют что-то похожее и используют случайные UUID, то вы увидите значения повсюду. Если они основали его на MAC-адресе генерирующей машины, вы можете проверить, что префикс не изменился (но даже если это произойдет, это, скорее всего, означает, что они выключили машину, которая их генерировала).

Другие вопросы по тегам