Карта MIFARE Classic перестала открывать домофон после копирования на «болванку» — типичный признак того, что система проверяет не только UID, но и защищённые сектора, а ключи доступа не совпали. Такие ситуации возникают постоянно при работе с картами стандарта NXP MIFARE Classic: без понимания структуры памяти и механизма аутентификации диагностика превращается в гадание. Эта статья разбирает устройство чипа, принципы чтения и записи, известные уязвимости и безопасные приёмы работы.
MIFARE Classic — семейство бесконтактных смарт-карт производства NXP Semiconductors, работающих на частоте 13,56 МГц по стандарту ISO/IEC 14443 Type A. Карты массово применяются в транспортных системах, СКУД, домофонах и системах лояльности. Несмотря на возраст технологии и известные проблемы с криптографией, парк таких карт остаётся огромным, поэтому навыки работы с ними востребованы у инженеров, интеграторов и энтузиастов DIY-электроники.
Структура памяти MIFARE Classic
Память карты организована в сектора, каждый из которых делится на блоки по 16 байт. В модификации MIFARE Classic 1K доступен 1 Кбайт памяти, разделённый на 16 секторов по 4 блока. Версия MIFARE Classic 4K содержит 4 Кбайт: первые 32 сектора имеют по 4 блока, остальные — по 16 блоков.
Последний блок каждого сектора называется трейлером сектора (sector trailer). В нём хранятся два ключа доступа — Key A и Key B — а также биты условий доступа, определяющие, какие операции разрешены с каждым блоком сектора. Нулевой блок нулевого сектора содержит UID карты и данные производителя — в оригинальных картах NXP он доступен только для чтения.
- 🗂️ Блок данных — 16 байт пользовательской информации или значения-счётчика
- 🔑 Трейлер сектора — ключи Key A / Key B и биты доступа
- 🆔 Блок 0 — UID и данные изготовителя, защищён от записи
- 📦 Сектор — минимальная единица с собственными ключами и правами
Механизм аутентификации и ключи
Доступ к каждому сектору защищён процедурой аутентификации: считыватель доказывает знание Key A или Key B, после чего открывается сеанс обмена данными. Шифрование канала и проверка ключей реализованы на проприетарном алгоритме CRYPTO1 с 48-битными ключами. Именно ограниченная длина ключа и особенности протокола стали причиной известных атак, опубликованных исследователями ещё в конце 2000-х годов.
На заводе карты поставляются со стандартными ключами. Часто встречается ключ FFFFFFFFFFFF, однако конкретные значения по умолчанию зависят от поставщика и партии — сверяйтесь с документацией на вашу партию карт. Системы СКУД и транспортные операторы обычно заменяют заводские ключи на собственные, поэтому «свежая» карта из метро читается не так, как только что купленная заготовка.
Перед любыми экспериментами с записью снимите полный дамп карты, пока она в рабочем состоянии. Резервная копия позволит восстановить данные, если биты доступа будут настроены ошибочно.
Чем читать и записывать карты
Для работы с MIFARE Classic подойдёт несколько классов устройств. Наиболее доступный вариант — NFC-модуль PN532 или считыватель на базе RC522, подключаемый к Arduino, ESP32 или Raspberry Pi. Также используются USB-считыватели для ПК и смартфоны с NFC, хотя поддержка MIFARE Classic в телефонах зависит от конкретного NFC-чипа: не все контроллеры умеют работать с этим проприетарным протоколом.
Типовая последовательность чтения сектора выглядит так: сначала выполняется антиколлизионная процедура и выбор карты, затем аутентификация по известному ключу, после чего считываются блоки. В библиотеках для RC522 это соответствует вызовам вида PCD_Authenticate() и MIFARE_Read(), но точные имена функций зависят от используемой библиотеки.
☑️ Базовая проверка карты MIFARE Classic
Известные уязвимости и их последствия
Алгоритм CRYPTO1 был вскрыт исследовательским сообществом: опубликованы атаки, позволяющие восстановить ключи секторов за разумное время при наличии специального оборудования. Компания NXP официально не рекомендует использовать MIFARE Classic в новых системах, где требуется защита от клонирования, и предлагает переходить на MIFARE DESFire или MIFARE Plus с современной криптографией AES.
⚠️ Внимание: копирование чужих карт доступа, транспортных карт или карт оплаты без разрешения владельца системы может нарушать закон и договор с оператором. Используйте описанные методы только на собственных картах и в тестовых стендах.
Практический вывод для интеграторов: если система опирается только на UID или на данные MIFARE Classic, её нельзя считать защищённой от подделки. Для новых проектов корректнее выбирать карты с AES-аутентификацией, а существующие парки — по возможности мигрировать.
Запись данных и типовые ошибки
Запись в блок данных выполняется после успешной аутентификации сектора. Критический момент — работа с трейлером сектора: случайная запись некорректных битов доступа способна навсегда заблокировать сектор, сделав его недоступным ни для чтения, ни для записи. Такая ошибка необратима, восстановить сектор программными средствами не получится.
⚠️ Внимание: перед записью трейлера сектора вручную рассчитайте и перепроверьте биты доступа по официальному даташиту NXP на MIFARE Classic. Ошибка в этих битах — самая частая причина «убитых» карт у новичков.
Ещё одна типовая проблема — попытка записи в блок 0. На оригинальных картах NXP он защищён аппаратно, и команда записи просто не выполнится. Существуют китайские «магические» карты с перезаписываемым нулевым блоком, но это отдельный класс изделий, и работа с ними отличается от штатной.
- 🧱 Запись в трейлер без расчёта битов доступа — риск блокировки сектора
- 🚫 Попытка изменить UID на оригинальной карте — операция не поддерживается
- 🔍 Чтение без аутентификации — считыватель вернёт ошибку доступа
- 📱 Использование смартфона без поддержки MIFARE — карта не определится корректно
Сравнение модификаций семейства
Внутри семейства и в соседних линейках NXP есть несколько вариантов, которые часто путают. Таблица ниже помогает сориентироваться, но точные характеристики конкретной карты уточняйте в даташите производителя.
| Параметр | MIFARE Classic 1K | MIFARE Classic 4K | MIFARE Ultralight |
|---|---|---|---|
| Объём памяти | 1 Кбайт | 4 Кбайта | десятки байт |
| Структура | 16 секторов × 4 блока | 32 сектора × 4 + 8 секторов × 16 блоков | страницы по 4 байта |
| Криптография | CRYPTO1 | CRYPTO1 | ограниченная / зависит от версии |
| Типовое применение | СКУД, домофоны | транспорт, кампусные карты | билеты, метки |
| Стойкость к клонированию | низкая | низкая | низкая |
MIFARE Classic удобна для обучения и интеграции в DIY-проекты, но не обеспечивает защиту от клонирования. Для систем, где важна безопасность, выбирайте MIFARE DESFire или Plus.
Диагностика: карта не читается
Когда считыватель не видит карту или не проходит аутентификация, действуйте по шагам. Сначала убедитесь, что карта вообще отвечает: антиколлизионная процедура должна вернуть UID. Если UID не читается, возможная причина — неисправная карта, слишком большое расстояние до антенны или несовместимый тип карты (например, 125 кГц вместо 13,56 МГц).
Если UID читается, но сектора недоступны, наиболее вероятная причина — неизвестные ключи. Система, выдавшая карту, заменила заводские ключи собственными. В этом случае легальный путь — запросить ключи или доступ у оператора системы. Проверьте также, поддерживает ли ваше оборудование именно MIFARE Classic: часть NFC-чипов в смартфонах работает только с тегами стандарта NDEF.
Почему смартфон видит карту, но не читает данные
Многие телефоны определяют MIFARE Classic как NFC-метку и показывают UID, но полноценная работа с секторами требует поддержки протокола на уровне NFC-контроллера. Если чип телефона её не имеет, приложения смогут показать только базовую информацию. Проверить возможности конкретной модели поможет её спецификация или тестовое NFC-приложение.
FAQ: частые вопросы о MIFARE Classic
Можно ли изменить UID карты MIFARE Classic?
На оригинальных картах NXP нулевой блок с UID защищён от записи аппаратно. Смена UID возможна только на специальных картах с перезаписываемым блоком 0, которые выпускают сторонние производители.
Чем MIFARE Classic отличается от MIFARE DESFire?
DESFire использует современную криптографию (включая AES), файловую структуру вместо секторов и считается безопасной платформой. Classic опирается на взломанный CRYPTO1 и не рекомендуется для новых защищённых систем.
Карта перестала отвечать после записи — это обратимо?
Если были испорчены биты доступа в трейлере сектора, сектор блокируется необратимо. Если пострадал только блок данных, сектор обычно можно перезаписать после аутентификации. Восстановление из дампа — самый надёжный способ отката.
Подойдёт ли модуль RC522 для работы с MIFARE Classic?
Да, RC522 — один из самых распространённых и недорогих модулей для чтения и записи MIFARE Classic в проектах на Arduino и ESP32. Для работы потребуется библиотека с поддержкой аутентификации MIFARE.
Безопасно ли использовать MIFARE Classic для домофона?
Технология подвержена клонированию, поэтому для объекта с повышенными требованиями к безопасности она не подходит. Для частного использования риск оценивайте самостоятельно и по возможности комбинируйте с другими мерами контроля доступа.