Открыть сервис

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 →