ISO/IEC 9834-8:2014
ISO/IEC 9834-8:2014 — это международный стандарт, определяющий процедуры генерации универсальных уникальных идентификаторов (UUID) и их структуру в рамках систем идентификации объектов (OID). Стандарт является частью серии ISO/IEC 9834, регламентирующей процессы регистрации и присвоения идентификаторов в информационных технологиях. Он устанавливает единый алгоритм создания 128-битных идентификаторов, обеспечивающих уникальность без централизованного управления, что критически важно для распределённых систем, баз данных и протоколов передачи данных.
История и контекст разработки
Разработка стандарта началась в середине 2000-х годов в рамках деятельности совместного технического комитета ISO/IEC JTC 1 «Информационные технологии». Первая редакция была опубликована в 2008 году, а в 2014 году вышла обновлённая версия, которая уточнила алгоритмы генерации UUID и расширила поддержку различных версий идентификаторов. Основой для стандарта послужила спецификация UUID, впервые предложенная компанией Apollo Computer в 1980-х годах и позже формализованная в документе RFC 4122 (Internet Engineering Task Force). ISO/IEC 9834-8:2014 гармонизирует эту спецификацию с процедурами международной регистрации OID, что позволяет использовать UUID в системах, требующих совместимости с иерархическими идентификаторами.
Структура UUID
UUID (Universally Unique Identifier) представляет собой 128-битное число, обычно записываемое в виде 32 шестнадцатеричных цифр, разделённых дефисами на пять групп: 8-4-4-4-12 (например, 550e8400-e29b-41d4-a716-446655440000). Стандарт определяет строгую структуру битового поля, которая включает:
- Версию (4 бита) — указывает на метод генерации (версии 1–5).
- Вариант (2 бита) — определяет формат и совместимость с другими стандартами (например, вариант 1 по RFC 4122).
- Временную метку (60 бит, для версии 1) — количество 100-наносекундных интервалов с 15 октября 1582 года (даты введения григорианского календаря).
- Узел (48 бит, для версии 1) — MAC-адрес сетевого интерфейса или случайный идентификатор.
- Случайные или хешированные данные (для версий 3–5) — вычисляются на основе пространства имён и имени.
Версии UUID по стандарту
ISO/IEC 9834-8:2014 определяет пять основных версий UUID, различающихся алгоритмами генерации:
Версия 1 (на основе времени и MAC-адреса)
Генерируется с использованием временной метки и MAC-адреса устройства. Обеспечивает высокую уникальность в пределах одной сети, но может раскрывать информацию о времени создания и аппаратном обеспечении. Применяется в системах, где важна хронологическая упорядоченность.
Версия 2 (на основе DCE Security)
Расширение версии 1, добавляющее идентификатор локального домена безопасности (POSIX UID/GID). Редко используется на практике, в основном в средах Distributed Computing Environment (DCE).
Версия 3 (на основе MD5-хеша)
Генерируется путём хеширования пространства имён (UUID) и имени (строка) алгоритмом MD5. Позволяет получать детерминированные UUID для одинаковых входных данных. Применяется для идентификации объектов в фиксированных пространствах имён (например, DNS, URL).
Версия 4 (случайная)
UUID формируется из 122 случайных бит (остальные 6 бит зарезервированы под версию и вариант). Наиболее распространённая версия благодаря простоте и отсутствию зависимости от аппаратного обеспечения. Используется в базах данных (например, PostgreSQL, MongoDB), веб-приложениях и распределённых системах.
Версия 5 (на основе SHA-1-хеша)
Аналог версии 3, но с использованием алгоритма SHA-1 вместо MD5. Обеспечивает более высокую криптостойкость и рекомендуется для новых систем. Применяется для генерации идентификаторов в пространствах имён, где требуется устойчивость к коллизиям.
Процедуры генерации и регистрации
Стандарт описывает два подхода к генерации UUID:
- Локальная генерация — создание идентификатора на стороне клиента без обращения к центральному реестру. Уникальность обеспечивается комбинацией временных меток, случайных чисел и аппаратных идентификаторов. Вероятность коллизии (совпадения двух UUID) оценивается как пренебрежимо малая — порядка 10^-18 для версии 4 при генерации 10^18 идентификаторов.
- Регистрация через OID — UUID может быть зарегистрирован как часть иерархии объектных идентификаторов (OID) в соответствии с ISO/IEC 9834-1. Это позволяет использовать UUID в системах, требующих централизованного управления идентификаторами (например, в государственных реестрах или медицинских информационных системах).
Применение
UUID нашли широкое применение в различных областях информационных технологий:
- Базы данных — используются в качестве первичных ключей (например, в PostgreSQL тип
uuid, в Microsoft SQL Server типuniqueidentifier). Преимущество — возможность генерации на стороне клиента без конфликтов при репликации. - Распределённые системы — идентификация узлов, транзакций и сообщений в системах с децентрализованной архитектурой (например, в Apache Kafka, RabbitMQ).
- Файловые системы — уникальные идентификаторы для файлов и объектов в системах управления версиями (Git) и облачных хранилищах.
- Веб-протоколы — идентификаторы сессий, токенов и ресурсов в REST API и OAuth.
- Криптография — генерация одноразовых номеров (nonce) и идентификаторов для цифровых подписей.
Критика и ограничения
Несмотря на широкое распространение, стандарт имеет ряд недостатков:
- Размер — 128-битные UUID занимают больше места, чем традиционные 32- или 64-битные идентификаторы (например, автоинкрементные целые числа). В больших таблицах это может приводить к увеличению объёма индексов и замедлению операций вставки.
- Отсутствие упорядоченности — случайные UUID (версия 4) не гарантируют хронологического порядка, что усложняет индексирование в B-деревьях. Для решения этой проблемы используется версия 1 или специальные алгоритмы (например, UUID v7, не входящий в данный стандарт).
- Зависимость от MAC-адреса — версия 1 может раскрывать информацию о производителе сетевого оборудования и времени создания идентификатора, что создаёт риски для конфиденциальности. В современных реализациях рекомендуется заменять MAC-адрес случайным числом.
- Совместимость с RFC 4122 — стандарт ISO/IEC 9834-8:2014 полностью гармонизирован с RFC 4122, но некоторые реализации могут использовать устаревшие алгоритмы (например, версию 3 вместо версии 5).
Влияние на российские стандарты
В Российской Федерации стандарт ISO/IEC 9834-8:2014 не имеет прямого аналога в виде национального стандарта (ГОСТ Р), но его положения используются при разработке информационных систем, особенно в сфере электронного документооборота и государственных реестров. Например, в системе межведомственного электронного взаимодействия (СМЭВ) применяются UUID для идентификации запросов и ответов. Российские разработчики также учитывают требования стандарта при создании распределённых баз данных и облачных сервисов.
Источники
- ISO/IEC 9834-8:2014 «Information technology — Procedures for the operation of object identifier registration authorities — Part 8: Generation of universally unique identifiers (UUIDs) and their use in object identifiers».
- RFC 4122 «A Universally Unique IDentifier (UUID) URN Namespace» (Internet Engineering Task Force, 2005).
- ITU-T Recommendation X.667 «Information technology — Procedures for the operation of object identifier registration authorities — Part 8: Generation of universally unique identifiers (UUIDs) and their use in object identifiers» (идентичен ISO/IEC 9834-8:2014).
- Leach P., Mealling M., Salz R. «UUIDs and GUIDs» (RFC 4122), 2005.
- Документация PostgreSQL 16: «UUID Type» (официальное руководство по использованию UUID в СУБД).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →