Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

OSDP-NAK-0x05 IP-Телефония и СКУД

Ошибка OSDP NAK 0x05: Отклонен повтор пакета (Sequence Number Replay)

Обновлено: 21.08.2026 · Официальная документация ↗

Механизм защиты от повторов (Anti-Replay) в OSDP и код 0x05

Для предотвращения атак типа «Replay Attack» (когда злоумышленник записывает легитимный зашифрованный пакет разблокировки двери и посылает его повторно) протокол SIA OSDP использует двухуровневый механизм нумерации:

  • 2-битный счетчик кадров (Sequence Number, SEQ): Расположен в битах 0–1 байта CTRL (циклические значения 0, 1, 2, 3).
  • Криптографический счетчик сообщений (SQN / Crypto Sequence): 32-битный монотонно возрастающий счетчик внутри зашифрованного блока Secure Channel.

Если считыватель или контроллер получает пакет со значением счетчика SQN меньшим или равным уже обработанному в рамках текущей сессии, либо если нарушена базовая последовательность SEQ (например, после пакета с SEQ=1 сразу пришел SEQ=3 без признака переинициализации), устройство немедленно отвергает пакет с ответом NAK 0x05 (Cryptographic Sequence Number Replay Rejected).

Бизнес-риски

Контроллер СКУД фиксирует попытку взлома или физического вмешательства в линию связи. Происходит мгновенный разрыв сессии Secure Channel, дверь блокируется, а оператор службы безопасности получает сигнал тревоги Security Breach / Line Tamper.

Диагностика и устранение причин ошибки OSDP NAK 0x05

Сценарий 1: Диагностика дублирования пакетов из-за задержек и Retries

В большинстве штатных систем ошибка NAK 0x05 вызывается не хакерами, а багами сетевых шлюзов RS-485 to Ethernet (Serial Device Servers):

  1. Если преобразователь интерфейсов (Moxa, Tibbo, USR) накапливает пакеты в буфере и сбрасывает их пачкой (Nagle algorithm), контроллер отправляет повтор пакета по таймауту.
  2. Считыватель получает сначала оригинальный пакет, а затем задержанный повтор с тем же номером SQN и генерирует NAK 0x05.
  3. Решение: В настройках Serial Device Server включите режим Force Transmit (Packing length = 1 byte, Delimiter timeout = 2ms) и отключите буферизацию TCP (TCP_NODELAY).

Сценарий 2: Анализ счетчиков SEQ в логе анализатора шины

# Анализ дампов OSDP через Wireshark / TShark (с плагином OSDP)
tshark -i /dev/ttyUSB0 -d serial.baud:9600 -V -Y "osdp.nak.code == 0x05"
# Обратите внимание на поля:
# OSDP Control: Sequence Number (SEQ: 0x01 -> Expected: 0x02)
# OSDP Secure Channel: Message Sequence Counter (SQN received <= SQN current)

Сценарий 3: Сброс и повторная синхронизация сессии контроллером

Проверьте прошивку контроллера СКУД. При получении ошибки NAK 0x05 ACU обязан сбросить счетчики SEQ/SQN в 0 и отправить команду начальной инициализации osdp_POLL с SEQ=0 (Sequence Zeroing) без шифрования перед возобновлением Secure Channel.

Типовые ошибки администраторов

  • Параллельное подключение двух контроллеров к одной шине со считывателем: Оба мастера шлют опросы со своими независимыми счетчиками, что мгновенно вызывает постоянный шквал NAK 0x05.
  • Использование конвертеров RS-485 с полудуплексным эхо (Local Echo On): Считыватель принимает свое собственное эхо-сообщение как входящий пакет с некорректной последовательностью.
Ложные тревоги саботажа и сбои шины OSDP?
Инженеры ITSTM настроят параметры сетевых шлюзов, исключат коллизии опроса и проведут аудит устойчивости СКУД к сетевым атакам.
💡 Практика специалистов: При использовании виртуализированных серверов СКУД с пробросом USB-RS485 адаптеров задержки гипервизора (DPC latency) могут вызывать нерегулярные пропуски циклов опроса. Настройте на виртуальной машине режим с низкими задержками (Low Latency PCI Passthrough) для USB-контроллера.

Частые вопросы (FAQ)

Почему sequence number сбрасывается в 0 при каждом новом рукопожатии?

При отправке команды osdp_CHLNG / osdp_SCRYPT сессия Secure Channel создается заново, а 32-битный криптографический счетчик SQN обнуляется по обе стороны канала связи.

Является ли появление NAK 0x05 признаком реальной кибератаки?

В изолированной СКУД это чаще всего результат аппаратных сбоев (потеря питания считывателя на доли секунды, баги буферизации шлюзов). Однако в потенциально уязвимых местах это указывает на попытку Replay-атаки (replay attack).

Как счетчик SEQ в байте CTRL защищает от потери пакетов?

Счетчик принимает значения 0..3. Если контроллер отправил SEQ=1, а считыватель ответил SEQ=1, следующий пакет мастера обязан иметь SEQ=2. Любое выпадение номера фиксируется как потеря кадра.

Что делать, если считыватель зависает в состоянии NAK 0x05?

Необходимо выполнить цикл сброса питания считывателя (Power Cycle) через управляемый выход реле контроллера или перезапустить порт опроса.

Полезные материалы
Рекомендуем