Що таке UUID v1?
UUID версії 1 — це 128-бітовий ідентифікатор на основі часу (рядок з 36 символів) згідно з RFC 4122. Він поєднує:
- Мітка часу: 60 біт (точність 100 нс від 15.10.1582)
- Послідовність годинника: 14 біт лічильника для корекцій часу
- ID вузла: 48 біт (зазвичай MAC-адреса)
Приклад формату: 2ed6657d-e927-11eb-9a03-0242ac130003
Як працює UUID v1
- Обчислити поточну мітку часу (інтервали 100 нс від 15.10.1582)
- Отримати/збільшити 14-бітну послідовність годинника (для уникнення колізій при відкаті часу)
- Отримати 48-бітний ID вузла (зазвичай MAC-адреса)
- Встановити біти версії (0001) та біти варіанта (10)
- Зібрати у 32 шістнадцяткові цифри з дефісами: формат 8-4-4-4-12
Переваги та зауваження
Переваги | Зауваження |
---|---|
|
|
Структура UUID v1
Біти | Зміст |
---|---|
0-31 | Низькі 32 біти мітки часу |
32-47 | Середні 16 біт мітки часу |
48-59 | Високі 12 біт мітки часу |
60-63 | Версія (0001 для v1) |
64-65 | Варіант (10 за RFC4122) |
66-79 | Послідовність годинника (14 біт) |
80-127 | ID вузла (48 біт) |
UUID v1 проти інших версій
Версія | На основі | Випадок використання | Конфіденційність |
---|---|---|---|
UUID v1 | Час + MAC | Сортуються за часом | ⚠️ Розкриває MAC |
UUID v3 | Namespace + MD5 | Детерміновані ID | ✅ Приватні |
UUID v4 | Випадкові | Безпечні випадкові ID | ✅ Приватні |
UUID v5 | Namespace + SHA-1 | Детерміновані ID | ✅ Приватні |
UUID v6 | Час (реорганізований) | Сортуються за часом | ⚠️ Розкриває MAC |
UUID v7 | Час + випадкові | Сортуються за часом | ✅ Приватні |
Типові випадки використання
- Ключі бази даних: розподілені бази даних
- Аудит-логи: відстеження в хронологічному порядку
- ID транзакцій: бізнес-процеси
- Відстеження сесій: веб-додатки
- Адресація контенту: CMS системи
- Повідомлення IoT: зв’язок пристроїв
Поширені запитання
Чи є UUID v1 криптографічно безпечним?
Ні. UUID v1 передбачуваний, якщо відомі мітка часу та MAC-адреса. Для безпеки використовуйте UUID v4.
Чи можуть значення UUID v1 зіткнутися?
Колізії надзвичайно малоймовірні завдяки точності міток часу, лічильникам послідовності годинника та ID вузла.
Чи можна витягти час створення з UUID v1?
Так. Більшість бібліотек UUID надають алгоритми для витягнення мітки часу.
Чи сортуються UUID v1 за часом створення?
Так, але потрібні спеціальні функції сортування. Просте порівняння рядків не працює.
Чи розкриває UUID v1 мою MAC-адресу?
За замовчуванням так. Більшість реалізацій використовують MAC для ID вузла. Privacy-орієнтовані реалізації можуть використовувати випадкові ID вузла.