Інструменти розробника · UUID генератор
Name-Based UUIDs (v3 і v5): Визначення ідентифікаторів з простору імен
· Підземелля
Опубліковано ToolAcre · Редакція журналу
Увійти криптографія веб-сайт

При однаковому зовнішньому записі завжди повинен отримати однаковий ідентифікатор, випадкові UUIDs не обійтися. Редагування 3 і 5 UUIDs має простір імен і ім'я в стабільний ідентифікатор; цей пост пояснює, як і коли їх використовувати.
Re-імпортування того ж замовника двічі — проблема дубліката, що вирішує детермінанти
За допомогою зовнішньої системи з зовнішніми ідентифікаторами, стабільними в межах цієї системи. Якщо ви створюєте новий випадковий UUID для кожного імпортування, імпортування того ж замовника двічі виробляє два різних ідентифікатори та дублікати записів. Цей дублікат протікає вниз по звітам, врахунках та системах підтримки. Якщо ви занурилися UUID від зовнішнього ідентифікатора замовника і стабільного простору імен, що представляє Ваш імпорт, кожен імпорт виробляє той самий UUID для того ж замовника, що дозволяє визначити та оновлювати існуючі записи. Цей детермінізм є визначальним характером v3 і v5 UUIDs: вони не генеруються самостійно, але отримані від входів, і той же вхід завжди виробляє ідентичні UUID.
Ім'я простору плюс ім'я — як здійснюється вхід і захоплюється, і чому простір імен запобігає зіткненню між різними джерелами
В3 або В5 UUID отримано з трьох компонентів: простір імен UUID (типово заданий), ім'я (будь-який рядокбайт), а також алгоритм хешу (MD5 для v3, SHA-1 для v5). Конкатувати 16 bytes простору імені UUID з UTF-8 bytes of the name, hash the concatenation, приймати перший 16 bytes виходу хешу і інтерпретувати такі байти як UUID з версією nibble встановити до 3 або 5. Простір імен перегородок ID: v5 UIDs від DNS простір імен ніколи не збігається з v5 UIDs з URL простір імен. RFC 9562 визначає чотири заданих просторів імен: від DNS ім'я, по URL, по OIDй X.500 названий. Організації можуть занурювати власний простір імен шляхом створення v4 UUID.
MD5 в v3 і SHA-1 в v5 — чому ослаблений хеш приймається тут, так як ID не є контролем безпеки
Редагування 3 зареєструватися MD5 і версія 5 зареєструватися SHA-1, вибірки знайомства з датами та наявними виконаннями. Для іменних UUIDs ця відмінність є нематеріальним, оскільки функція хешу не є обов'язковою умовою безпеки або криптографічним контролем. Про нас UUID не даючи автентичності або цілісності; це просто перетворення змінної довжини рядка в фіксовану 128-бітне значення. Модель атаки не є обов'язковою, оскільки UUIDs зберігаються і порівнюються як цінні папки, не як докази або контроль безпеки. Нові впровадження повинні використовувати v5 (SHA-1) не більше v3 (MD5), не для складання причин безпеки, але оскільки v5 є сучасним стандартом і широко доступні.
Визначені простори імен — DNS, URL, OID і X.500, і коли м'яти
RFC 9562 specifies точно чотири заданий простір імен UUIDs з певними байтовими уявленнями: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 для DNS, 6ba7b811-9dad-11d1-80b4-00c04fd430c8 для URL, 6ba7b812-9dad-11d1-80b4-00c04fd430c8 для OID, і 6ba7b814-9dad-11d1-80b4-00c04fd430c8 для X.500 назви. В5 UUID отримано з DNS простір імен та ім'я www.example.com завжди буде ідентичним і ніколи не збігається з v5 UUID з URL простір імен. Використання заздалегідь визначеного простору імен забезпечує взаємопроникність: якщо кілька команд самостійно використовують v5 з DNS простір імен, вони генерують ідентичні UUIDs для того ж DNS імена. Вибираючи або помітивши простір імен є частиною конструкції схеми.
Зароблений приклад — видалення v5 UUID концептуально з URL простір імен і запис URL, крок за кроком
В5 UUID концептуально з URL простір імен та ім'я https://example.com/api/users/42. Статус на сервери UUID як 16 bytes 6б a7 б8 11 9d оголошення 11 д1 80 б4 00 c0 4f д4 30 c8. Назва є UTF-8 увійти https://example.com/api/users/42, що таке 30 bytes. Конкатенат простору ім'я (байтів)16) і назва байтів (30) отримати 46 bytes загальний. Поповнити SHA-1 хеш, виробництво 20-byte хеш. Візьміть перший 16 bytes і інтерпретувати їх як UUID з версією nibble встановити до 5 і варіанти біт, встановлених до RFC стандарт. Складання його знову з ідентичними входами виробляє ідентичний результат. Більшість розробників використовують мову UUID бібліотека для компute v5.
Де перерву патерну — коли зміни назв, коли простір імен невідповідний по всій команді, і коли вводи секретні
Ім'я на основі UUIDs припускає, що ім'я стабільна і послідовна через системи і імпорт. Якщо ж зовнішній запис має різні назви в різних системах, що генерують v5 з кожного імені, виробляють різні UUIDs і не виявляти однакову людину. Якщо простір імен не погоджений по всій команді (корисна команда, що заміняє власний простір імен для того, що насправді є одним джерелом), вони генерують різні UUIDs і не відповідають записів. Якщо вхід є конфіденційними даними, генеруючи v5 UUID означає UUID є громадським, детермінованим значенням, яке хтось може виглядати, якщо вони знають вводи. Визначення проривів при зміні вводів або визначення простору імен невідповідні.
Що це не криється — ToolAcre генератор шухля від CSPRNG, так що іменні ідентифікатори потребують вашої мови UUID бібліотека
ToolAcre генерує v4 UUIDs тільки, що тягнеться з криптографічно захищеного генератора браузера за незалежність. Ім'я UUID деприація вимагає вашої мови UUID бібліотека або імплементація SHA-1 і формати результат правильно. Цей пост пояснює поняття та випадки використання; впровадження V5-генерації прямопередбачається в будь-якій мові з доступом до стандартних криптографічних бібліотек. Проста механіка відторгнення в5; завдання полягає в тому, щоб інтегрувати її в системну схему, де простір назв стабільний, ім'я є послідовним, і підхід добре до виконання вашої команди. Команди з розробки повинні вибрати простір імен документів.
Takeaway: детермінізм, коли вам потрібно, випадково інакше — використовувати v5 для стабільних картографій та ToolAcre генератор для всіх, які повинні бути нечутливими
Використовуйте v5 для стабільних картування між зовнішніми ідентифікаторами та внутрішніми записами. Детермінізм запобігає дублікати імпорту і робить відповідні записи через системи прямо вперед і надійні. Не використовуйте іменні UUID для ідентифікаторів, які повинні бути однозначними або для сценаріїв, які вимагають сильної конфіденційності та секретів. ToolAcre генерувати випадкові v4 UUID для ідентифікаторів, які повинні бути незалежними і чіткими без передбачуваності. Коли ваші системи потребують детермінованих ідентифікаторів, які вводять карти для фіксованих ідентифікаторів, ваша мова UUID бібліотека може їх складати. Визначення є потужною функцією, коли ви контролюєте вхід.