Що таке UUID v5?
UUID версії 5 — це 128-бітний ідентифікатор на основі простору імен (рядок із 36 символів) згідно з RFC 4122. Він поєднує:
- UUID простору імен: попередньо визначений або власний UUID для обмеження сфери генерування
- Ім’я: рядок, що визначається користувачем у межах простору імен
- SHA-1-хеш: криптографічний алгоритм для генерації результату
Приклад формату: 2ed6657d-e927-5eb1-9a03-0242ac130003
Як працює UUID v5
- Вибрати UUID простору імен (попередньо визначений або власний)
- Об’єднати UUID простору імен з рядком імені
- Обчислити SHA-1-хеш від об’єднаного значення
- Встановити біти версії (0101) та біти варіанту (10)
- Сформувати 32 шестнадцяткові цифри з дефісами в форматі 8-4-4-4-12
Переваги та застереження
Переваги | Застереження |
---|---|
|
|
Структура UUID v5
Біти | Вміст |
---|---|
0-47 | Перші 48 біт SHA-1-хешу |
48-51 | Версія (0101 для v5) |
52-63 | Наступні 12 біт SHA-1-хешу |
64-65 | Варіант (10 для RFC4122) |
66-127 | Залишок 62 біт SHA-1-хешу |
UUID v5 vs. інші версії
Версія | На основі | Використання | Приватність |
---|---|---|---|
UUID v1 | Час + MAC | Порядок за часом | ⚠️ Виставляє MAC |
UUID v3 | Простір імен + MD5 | Детерміновані ID | ✅ Приватні |
UUID v4 | Випадковий | Безпечні випадкові ID | ✅ Приватні |
UUID v5 | Простір імен + SHA-1 | Детерміновані ID | ✅ Приватні |
UUID v6 | Час (переставлений) | Сортувані ID | ⚠️ Виставляє MAC |
UUID v7 | Час + випадковий | Сортувані ID | ✅ Приватні |
Попередньо визначені простори імен
Простір імен | UUID | Призначення |
---|---|---|
DNS | 6ba7b810-9dad-11d1-80b4-00c04fd430c8 | Для доменних імен |
URL | 6ba7b811-9dad-11d1-80b4-00c04fd430c8 | Для URL |
OID | 6ba7b812-9dad-11d1-80b4-00c04fd430c8 | Для ISO OID |
X.500 DN | 6ba7b814-9dad-11d1-80b4-00c04fd430c8 | Для X.500 DN |
Поширені випадки використання
- Адресація контенту: послідовні ID для однакового контенту
- Розподілені системи: іменовані ресурси між системами
- Відображення URL: перетворення URL у стабільні ідентифікатори
- Управління конфігурацією: відстеження іменованих елементів конфігурації
- Видалення дублікатів: ідентифікація однакових записів
- Федерація: послідовні міжсистемні ідентифікатори
Часті запитання
UUID v5 кращий за UUID v3?
Так, у більшості випадків. UUID v5 використовує SHA-1, який криптографічно сильніший за MD5 в UUID v3. Проте обидва забезпечують детерміновану генерацію.
Чи можуть значення UUID v5 колідувати?
Теоретично можливо, але на практиці через властивості SHA-1 майже нереально. Використання різних просторів імен або рядків майже повністю виключає ризик колізій.
Чи є SHA-1 достатньо безпечним для UUID v5?
Для цілей UUID SHA-1 попри слабкості залишається придатним. UUID v5 не призначений для безпеки, а для послідовних ідентифікаторів.
Чи можу створити власний простір імен для UUID v5?
Так. Хоча RFC 4122 визначає стандартні простори (DNS, URL, OID, X.500), ви можете створювати власні простори, використовуючи будь-який дійсний UUID, зазвичай випадковий v4.
Чи завжди однакове ім’я генерує однаковий UUID v5?
Так, але лише в межах одного простору імен. Однакове ім’я в різних просторах імен генерує різні UUID — це ключова властивість для організації ідентифікаторів.