Криптохвост в DataMatrix: разбираем структуру кода маркировки

Криптохвост в коде маркировки DataMatrix: что это, как устроен и зачем нужен. Структура кода, криптографическая подпись, защита от подделки. Разбор для интеграторов.
main-ban
qr

Криптохвост в маркировке DataMatrix - это та самая «магическая» часть кода, которая отличает легальный товар от подделки. Для обычного пользователя это просто набор символов в конце штрихкода. Для интегратора - криптографическая подпись, которую нужно корректно обработать, передать и верифицировать. Разберём структуру по байтам.

Снимем головную боль с маркировкой за 1 звонок!

Экспертная помощь по маркировке товаров производителей, импортеров, для розницы и маркетплейсов (Wildberries, Ozon). Опыт 5+ лет, работаем без ошибок и штрафов.

📞 Звоните, мы на связи:

Решаем 100% задач по маркировке:


С нами выгодно и безопасно:

Молниеносно
Решение вашей задачи в день обращения

💡 Экспертно
5+ лет практики в маркировке

🛡️ Без штрафов
100% соблюдение законодательства

"Хватит тратить часы на поиск ответов в интернете! Получите четкий план действий от эксперта за 15 минут. Просто позвоните!"

— Команда MarkGuru

Что такое криптохвост и почему он критически важен

Код маркировки в системе «Честный Знак» - это не просто идентификатор товара. Это криптографически защищённая строка, подлинность которой можно проверить математически, без обращения к базе данных.

Криптохвост (crypto tail) - неофициальное, но устоявшееся название последней части кода маркировки. Официально в документации ЦРПТ это называется «код проверки» или «verification code». Но среди разработчиков прижился именно «криптохвост» - ёмко и понятно.

Технически криптохвост представляет собой цифровую подпись, сгенерированную на основе:

  • GTIN товара (14 цифр)
  • Серийного номера (уникальный для каждой единицы)
  • Секретного ключа оператора ЦРПТ

Подделать криптохвост без доступа к ключу ЦРПТ невозможно. Именно это делает систему маркировки устойчивой к фальсификации - даже если злоумышленник сгенерирует правильный GTIN и серийник, без валидной подписи код не пройдёт проверку.

Полная структура DataMatrix-кода маркировки

Прежде чем разбирать криптохвост, нужно понять контекст - как устроен весь код целиком. DataMatrix для маркировки товаров в РФ следует формату GS1 с расширениями ЦРПТ.

Общая схема кода

Код маркировки состоит из нескольких логических блоков, разделённых специальными символами:

01 + GTIN(14) + 21 + Serial + GS + 91 + Key + GS + 92 + Crypto

Разберём каждый элемент:

  • 01 - Application Identifier (AI), указывает что далее идёт GTIN
  • GTIN - 14 цифр, глобальный идентификатор товара
  • 21 - AI серийного номера
  • Serial - серийный номер, переменной длины (до 20 символов)
  • GS - символ-разделитель (ASCII 29, Group Separator)
  • 91 - AI ключа проверки
  • Key - ключ проверки (4 символа)
  • GS - ещё один разделитель
  • 92 - AI криптохвоста
  • Crypto - собственно криптографическая подпись (44 символа в base64)

Общая длина кода - от 83 до 102 символов в зависимости от длины серийного номера.

Символ GS: невидимый, но критичный

Главная головная боль интеграторов - символ GS (Group Separator, код 29 в ASCII). Он непечатаемый и при копировании кода в текстовый редактор часто теряется или заменяется на другие символы.

При работе со сканерами нужно убедиться, что GS передаётся корректно. Некоторые сканеры заменяют его на ]d2 или вовсе игнорируют. В результате код невозможно распарсить.

Практический совет: настройте сканер на передачу GS как \x1D или эквивалента в вашей среде. Проверьте hex-дамп получаемой строки - там должен быть байт 0x1D в нужных позициях.

Пример реального кода

Возьмём условный код (GS заменён на [GS] для читаемости):

010460043993125621JgXJ5.T>lFqX[GS]91EE06[GS]92dGVzdCBzaWduYXR1cmUgZm9yIGRlbW8gcHVycG9zZXM=

Парсинг:

  • GTIN: 04600439931256
  • Серийный номер: JgXJ5.T>lFqX
  • Ключ проверки: EE06
  • Криптохвост: dGVzdCBzaWduYXR1cmUgZm9yIGRlbW8gcHVycG9zZXM=

Криптографическая подпись: алгоритм и верификация

Теперь к самому интересному - как формируется и проверяется криптохвост.

Алгоритм генерации

ЦРПТ использует асимметричную криптографию на основе эллиптических кривых (ГОСТ Р 34.10-2012 или его аналоги). Упрощённая схема:

  • Входные данные: GTIN + серийный номер + дополнительные параметры
  • Хэширование по ГОСТ Р 34.11-2012
  • Подпись хэша закрытым ключом ЦРПТ
  • Кодирование результата в base64

Длина криптохвоста - 44 символа в base64, что соответствует 32 байтам бинарных данных после декодирования. Это укороченная подпись - полная была бы 64 байта, но для целей маркировки используется усечённая версия.

Ключ проверки (поле 91)

Четырёхсимвольный ключ в поле 91 - это не часть криптографии, а идентификатор ключевой пары, использованной для подписи. ЦРПТ периодически ротирует ключи, и по этому полю система понимает, каким публичным ключом проверять подпись.

Формат: два hex-символа + два символа проверочного кода. Например, EE06 означает ключ номер 0xEE с контрольной суммой 06.

Офлайн vs онлайн верификация

Критически важный момент: криптохвост позволяет проверить подлинность кода без обращения к серверам ЦРПТ. Публичные ключи распространяются заранее, и любое устройство с ними может верифицировать подпись локально.

Это отличает систему «Честный Знак» от простых баз данных. Даже без интернета касса может проверить - этот код выпущен ЦРПТ или сгенерирован злоумышленником.

Онлайн-проверка через API даёт больше информации: текущий статус кода (в обороте, выведен, заблокирован), историю операций, данные о товаре. Но криптографическая валидность проверяется офлайн.

Защита от подделки: почему это работает

Разберём типичные атаки и почему криптохвост их нейтрализует.

Атака 1: Копирование кода

Злоумышленник сканирует легальный код и печатает его на контрафакте. Криптохвост валиден, но при попытке продать оба товара одновременно система обнаружит дубликат - код уже выведен из оборота.

Защита: онлайн-проверка статуса + мониторинг аномалий (один код в разных городах).

Атака 2: Генерация произвольных кодов

Злоумышленник генерирует случайные GTIN + серийники. Без криптохвоста они бесполезны - офлайн-проверка сразу покажет невалидную подпись. А подделать подпись без закрытого ключа ЦРПТ математически невозможно (при текущем уровне технологий).

Атака 3: Модификация существующего кода

Изменить GTIN или серийник легального кода, сохранив криптохвост? Не выйдет. Подпись вычисляется от этих данных - любое изменение делает её невалидной.

Атака 4: Реверс-инжиниринг алгоритма

Асимметричная криптография на эллиптических кривых. Вычислить закрытый ключ по публичному - задача, требующая астрономических вычислительных ресурсов. При использовании ключей достаточной длины это нереально.

Практика парсинга: код на разных языках

Для интеграторов - примеры извлечения криптохвоста из сырых данных сканера.

Python

import re

def parse_datamatrix(code: str) -> dict:
    # Заменяем возможные представления GS
    code = code.replace(']d2', '\x1d')
    pattern = r'01(\d{14})21([^\x1d]+)\x1d91(.{4})\x1d92(.+)'
    match = re.match(pattern, code)
    if match:
        return {
            'gtin': match.group(1),
            'serial': match.group(2),
            'key': match.group(3),
            'crypto': match.group(4)
        }
    return None

JavaScript

function parseDataMatrix(code) {
  code = code.replace(/\]d2/g, '\x1d');
  const regex = /01(\d{14})21([^\x1d]+)\x1d91(.{4})\x1d92(.+)/;
  const match = code.match(regex);
  if (match) {
    return {
      gtin: match[1],
      serial: match[2],
      key: match[3],
      crypto: match[4]
    };
  }
  return null;
}

Типичные ошибки при парсинге

  • Потеря символа GS при копировании через буфер обмена
  • Неправильная кодировка - криптохвост содержит base64, где могут быть символы +, /, =
  • Обрезка строки - некоторые системы ограничивают длину, теряя конец криптохвоста
  • URL-encoding - при передаче через HTTP специальные символы экранируются

Команда Mark-Guru помогает с интеграцией систем маркировки любой сложности - от настройки сканеров до полноценных API-коннекторов.

Частые вопросы и ответы

Можно ли расшифровать криптохвост и увидеть исходные данные?

Нет. Криптохвост - это подпись, а не шифрование. Он не содержит данных в зашифрованном виде, он подтверждает их подлинность. Исходные данные (GTIN, серийник) и так доступны в открытом виде в коде.

Почему криптохвост разной длины у разных товаров?

Длина криптохвоста фиксирована - 44 символа base64. Если вы видите разную длину, проблема в парсинге: вероятно, часть кода обрезается или захватывается лишнее.

Что делать, если криптохвост не проходит валидацию?

Проверьте: 1) корректность передачи символа GS, 2) полноту строки (не обрезана ли), 3) актуальность публичных ключей в вашей системе. Если всё в порядке - код может быть поддельным или повреждённым при печати.

Где взять публичные ключи для офлайн-проверки?

На портале ЦРПТ в разделе технической документации. Ключи публикуются в формате PEM и обновляются при ротации. Для продакшн-систем рекомендуется автоматическая синхронизация.

Отличается ли криптохвост для разных товарных групп?

Алгоритм единый для всех групп. Отличия могут быть в ключах подписи и дополнительных параметрах, но формат криптохвоста стандартен.

Можно ли сгенерировать валидный криптохвост самостоятельно?

Нет. Для генерации нужен закрытый ключ ЦРПТ, который никому не передаётся. Это и есть основа безопасности системы. Коды маркировки выпускает только оператор.

Зачем нужен ключ проверки (поле 91), если есть криптохвост?

Ключ проверки указывает, какой публичный ключ использовать для верификации подписи. ЦРПТ ротирует ключевые пары, и без этого идентификатора система не знала бы, каким ключом проверять.

Влияет ли качество печати на криптохвост?

На сам криптохвост - нет, он генерируется до печати. Но при плохой печати сканер может некорректно распознать символы base64, и проверка не пройдёт.

Как проверить криптохвост через API ЦРПТ?

Метод /api/v3/true-api/codes/check принимает полный код маркировки и возвращает результат валидации, включая проверку криптографической подписи.

Что означает ошибка «Invalid signature» при проверке?

Криптохвост не соответствует данным GTIN+серийник. Причины: код повреждён, подделан, или ошибка при сканировании/передаче данных.

Есть ли SDK для работы с криптохвостом?

Официального SDK нет, но есть open-source библиотеки на GitHub для популярных языков. Также ЦРПТ предоставляет примеры кода в документации.

Сколько времени занимает верификация криптохвоста?

Офлайн-верификация - миллисекунды. Это чистая математика, никаких сетевых запросов. Онлайн-проверка через API - зависит от сети, обычно 100-500 мс.

Главное для интегратора

Криптохвост - не просто «какие-то символы в конце кода». Это криптографическое ядро всей системы маркировки. При интеграции убедитесь: символ GS передаётся корректно, строка не обрезается, base64 не портится при URL-encoding. Три простых правила, которые сэкономят дни отладки.

Нужна помощь с интеграцией систем маркировки? Специалисты Mark-Guru разбираются в технических деталях - от настройки сканеров до разработки полноценных коннекторов с API «Честного Знака». Консультация по интеграции - первый шаг к работающему решению.

Снимем головную боль с маркировкой за 1 звонок!

Экспертная помощь по маркировке товаров производителей, импортеров, для розницы и маркетплейсов (Wildberries, Ozon). Опыт 5+ лет, работаем без ошибок и штрафов.

📞 Звоните, мы на связи:

Решаем 100% задач по маркировке:

  • Маркировка остатков (обувь, одежда, текстиль) по правилам 2025 года.
  • Настройка выгрузки товаров с Wildberries и Ozon без ошибок.
  • Получение кодов маркировки через "Честный ЗНАК" за 24 часа.
  • Оформление GTIN для производителей и импортеров (быстрая регистрация).
  • Правильный ввод товаров в оборот без риска штрафов.
  • Регистрация в "Честном ЗНАКе" и GS1 "под ключ".

С нами выгодно и безопасно:

Молниеносно
Решение вашей задачи в день обращения

💡 Экспертно
5+ лет практики в маркировке

🛡️ Без штрафов
100% соблюдение законодательства

"Хватит тратить часы на поиск ответов в интернете! Получите четкий план действий от эксперта за 15 минут. Просто позвоните!"

— Команда MarkGuru

Информация актуальна на 2025 год. Технические спецификации могут обновляться - сверяйтесь с официальной документацией ЦРПТ на docs.crpt.ru.

Оставьте заявку
на консультацию по маркировке товаров

Наш специалист по маркировке свяжется с вами, подробнее расскажет о предложении и поможет подобрать решение.

Выберите удобный способ связи:

Телефон Telegram WhatsApp