В наших тегах используются чипы NXP NTAG 424 DNA. При каждом сканировании монотонный счётчик увеличивается, а чип генерирует код аутентификации AES-CMAC с помощью своего секретного ключа. Наша служба валидации проверяет код и счётчик. Уже проверенный код отклоняется. Без ключа скопированная ссылка не позволяет сгенерировать новый действительный код. Успешная проверка подтверждает подлинность тега, но не товара, к которому он прикреплён.
Как монотонный счётчик предотвращает клонирование
NFC-метки, предназначенные только для данных, например NTAG 216, предоставляют информацию, но не защиту. Они хранят статические данные, которые может скопировать любой считыватель. При каждом сканировании NFC-метки внутренний счётчик увеличивается на единицу. Его значение объединяется с уникальными данными метки и секретным ключом для создания криптографической подписи с помощью AES-CMAC — кода аутентификации сообщения на основе блочного шифра. Поскольку счётчик меняется при каждом сканировании, подпись каждый раз отличается, даже для одной и той же метки.
Формула аутентификации выглядит так.
CMAC = AES-CMAC(K, UID || Counter || Data)
Здесь K — секретный ключ, UID — уникальный идентификатор метки, Counter увеличивается при каждом сканировании, а Data — полезная нагрузка метки. Поддельная метка не может предсказать будущие значения счётчика или создать действительные подписи без знания секретного ключа, что делает клонирование математически неосуществимым.
Аппаратный модуль безопасности хранит мастер-ключ и вычисляет уникальный ключ каждого тега на основе этого мастер-ключа и UID тега. Мы однократно записываем этот ключ в чип NTAG 424 DNA этого тега. Считать ключ обратно из чипа нельзя. Ключ, извлечённый из одного тега, не позволяет генерировать действительные коды для другого.
Статические NFC-теги и наши теги NTAG 424 DNA
| Возможность | Статические NFC-теги | Наши теги NTAG 424 DNA |
|---|---|---|
| Статический серийный номер | Легко скопировать | Не используется сам по себе |
| Растущий счётчик | Без подписи (при наличии счётчика) | Растёт при каждом сканировании |
| Проверка AES-CMAC | Нет защиты | Проверяется по AES-CMAC |
| Обнаружение клонов | Недоступен | Расхождение счётчиков |
| Проверка чипа | Нет | ECC secp224r1 |
| Обнаружение физического вскрытия | Недоступен | Проводник TagTamper |