ВАЖНОЕ ЗАМЕЧАНИЕ
Данный документ представляет собой свободный перевод официального даташита от Phillips (ссылка), поэтому тем, кто знаком с английским, мы рекомендуем ознакомиться с документом в оригинале. Данный же перевод - не полный, он ориентирован в первую очередь на интеграторов (а не на разработчиков ридеров), поэтому некоторые технические подробности в нем опущены. Данный документ можно свободно распространять и публиковать, но только при сохранении ссылки на сайт http://www.rfidchip.info/.

1 ВОЗМОЖНОСТИ
1.1 Радиочастотный интерфейс Mifare (ISO/IEC 14443A)

  • Бесконтактная передача данных и питание по радиоканалу (не требует батарей)
  • Рабочее расстояние до 100мм (зависит от геометрических параметров антенны)
  • Рабочая частота: 13,56МГц
  • Быстрая передача данных: 106Кбит/сек
  • Высокая надежность передачи (16-битовая CRC, проверка на четность...)
  • Настоящая антиколлизия (поддержка нескольких карт в поле одновременно)
  • 7-байтовый уникальный серийный номер
  • Время типовой транзакции менее 35мс
  • Быстрая транзакция счетчика: менее 10мс

    1.2 EEPROM
  • Размер 512бит, организована в виде 16 страниц, по 4 байта каждая
  • Возможность программирования постраничной блокировки записи
  • 32битовая область "одноразового" программирования (для нужд пользователя) -OTP (One Time Programmable)
  • 384битовая (48байт) область чтения-записи (12 страниц)
  • Срок хранения данных - 5лет
  • 10000 циклов записи

    1.3 Защита
  • Уникальный 7байтовый серийный номер каждой карты
  • 32битовая область OTP
  • Функция блокировки записи отдельных страниц
    Серийный номер UID программируется в каждую карту в процессе производства. Он не может быть изменен, что является эффективной защитой от клонирования. Он может быть использован для организации криптозащиты хранимых данных.
    32битовая область OTP (одноразового программирования) обеспечивает возможность однократной записи (т.е. данные записанные в нее, не могут быть изменены впоследствии).

    2 ОБЩЕЕ ОПИСАНИЕ
    Phillips разработал карты MIFARE Ultralight для использования с ридерами стандарта ISO/IEC14443A. Радиоинтерфейс (MIFARE RF) соответствует частям 2 и 3 стандарта ISO/IEC14443A. В основном Ultralight разработан для применения в сфере транспортных услуг в качестве бесконтактных билетов на одну поездку.

    2.1 Антиколлизия
    Функция антиколлизии позволяет работать с более чем одной картой в поле. Алгоритм антиколлизии выбирает каждую карту индивидуально, тем самым гарантирую, что дальнейшая работа будет вестись именно с нужной картой.

    2.2 Каскадный уникальный номер (UID)
    Функция антиколлизии основана на уникальном номере карты (UID). UID карты Ultralight состоит из 7байти поддерживает каскадный уровень 2 по стандарту ISO/IEC14443-3.

    3 ПРИНЦИПЫ РАБОТЫ С КАРТОЙ
    Команды посылаются ридером, в ответ на них карта меняет внутреннее состояние и генерирует соответствующий ответ.

    Примечание: на диаграмме не отмечено: если карта получает неожиданную команду (для данного состояния), то карта возвращается в состояние Halt (останов).


    3.1.1 IDLE (ожидание)
    После сброса при подаче питания (POR - Power On Reset), карта переходит в состояние ожидания. По командам REQA или WUPA, она выходит из этого состояния. Все остальные данные, полученные в состоянии ожидания интерпретируются как ошибка и карта остается в состоянии ожидания (IDLE). После корректного выполнения команды HALT (останов), карта переходит в состояние HALT (останов), из которого она может быть выведена командой WUPA.

    3.1.2 READY1 (готовность 1)
    Когда карта находится в этом состоянии, предполагается чтение первых 3 байт номера командами Anticollision (антиколлизия) или Select(выбор) первого каскадного уровня.
    Корректный выход из состояния готовность 1 (Ready1) выполняется одной из следующих команд:
  • Select (выбор) каскадного уровня 1 от ридера переводит карту в состояние готовность 2 (ready 2), для получения второй части серийного номера.
  • С помощью команды Read (чтение) с адреса 0 может быть пропущено завершение процедуры антиколлизии и карта переходит в режим Active (активность).
    Примечание: Если в поле находится более одной карты, то чтение с нулевого адреса вызовет коллизию, несмотря на разные номера карт, т.к. в этом случае выбираются все карты, находящиеся в поле.
    Любые другие данные в режиме Ready1 воспринимаются как ошибка и карта переходит в режим IDLE или HALT (в зависимости от предыдущего состояния).

    3.1.3 READY2 (готовность 2)
    В этом состоянии (которое схоже с Ready 1), карта поддерживает выдачу второй части номера (4 байт) с помощью команды Anticollision (антиколлизия) второго каскадного уровня. Выход из этого состояния осуществляется обычно по команде SELECT (выбор) уровня 2.
    Состояние Ready 2 может быть пропущено командой чтения с нулевого адреса, как это было описано выше.
    В ответ на команду SELECT (выбор) второго уровня карта выдает SAK (Select Acknowledge) - байт подтверждения выбора, в соответствие с ISO/IEC14443. По стандарту этот байт сигнализирует об успешном завершении процедуры антиколлизии. Вдобавок, для платформы Mifare он указывает тип выбранной карты.
    После этого, выбирается только одна карта и вся дальнейшая работа происходит только с ней (даже если в поле несколько карт).

    3.1.4 ACTIVE (активность)
    В состоянии активности карта воспринимает команды чтения (16 байт) или записи (4 байт). Корректный выход из этого состояния осуществляется командой HALT (останов). Любые другие данные, принятые в этом режиме воспринимаются как ошибка и карта переходит в состояние ожидания.

    3.1.5 HALT (останов)
    Кроме состояния IDLE (ожидание), состояние HALT (останов) фактически является вторым состоянием ожидания. Карта, с которой уже закончилась работа может быть переведена в состояние останова командой HALT (останов). Это состояние способствует ридеру на стадии антиколлизии (чтобы можно было различить карты которые уже были обработаны, от карт, которые еще не выбирались). Единственный выход из состояния HALT - команда WUPA (пробуждение).

    3.2 ОРГАНИЗАЦИЯ ПАМЯТИ
    512 бит перепрограммируемой памяти организовано в виде 16 страниц по 4 байта каждая. В стертом состоянии ячейки читаются, как логический ноль, в записанном - как 1.

    Блоки, выделенные жирной рамкой доступны для пользовательской записи.

    3.2.1 Серийный номер (UID)
    Уникальный 7-байтовый серийный номер и два байта контрольной суммы запрограммированы в первые 9 байт памяти. Таким образом, серийный номер занимает страницы 0,1 и первый байт страницы 2. Второй байт страницы 2 зарезервирован для внутреннего использования. По соображениям безопасности эти байты защищены от записи производителем.

    3.2.2 Lock-байты (байты защиты)
    Биты байтов 2 и 3 второй страницы являются средством запрета записи соответствующих страниц. Каждая страница X из диапазона 3..15, может быть индивидуально заблокирована для записи путем установки соответствующего бита Lx в 1. После блокировки, страница становится доступна только для чтения.

    Биты BLx нужны для того, чтобы блокировать дальнейшую несанкционированную блокировку областей памяти. Например, если установить BL15-10 в 1, то биты L15..L10 больше нельзя будет изменить.
    Биты блокировки устанавливаются стандартной командой записи во вторую страницу. Байты 2 и 3 в команде записи и фактическое значение lock-байтов логически складываются (т.е. если какой-либо бит в Lock-байте был установлен в 1, он больше не может быть сброшен!).
    Примечание: чтобы новая конфигурация Lock-битов вступила в силу, необходимо выполнение команд REQA или WUPA.

    3.2.3 OTP-область (байты одноразовой записи)
    Страница 3 представляет собой область одноразовой записи. При установке 1 в каком-либо бите из байт области OTP, его становится невозможно сбросить в ноль. По умолчанию (с завода) байты OTP установлены в 0.
    Примечание: область OTP может быть использована как одноразовый счетчик до 32 ;-)

    3.2.4 Страницы данных (область чтения-записи)
    Страницы 4..15 могут использоваться по усмотрению пользователя для чтения-записи. Для записи - если только не установлены соответствующие Lock-биты.

    3.3 НАБОР КОМАНД
    Карты Mifare UltraLight поддерживает нижеследующий набор команд.

    3.3.1 REQA (запрос)
    Команда имеет семибитовый код 0x26, параметров не имеет. В ответ на команду карта посылает ATQA (0x0044) - подтверждение запроса. REQA и ATQA реализованы полностью в соответствии с ISO/IEC14443-3. Команда отрабатывает, только если карта находится в состоянии IDLE (ожидания).

    3.3.2 WUPA (запрос с пробуждением)
    Команда аналогична предыдущей, за исключением того, что имеет код 0x52 и выполняется не только в режиме IDLE, но и HALT (останов).

    3.3.3 Антиколлизия и выбор уровня 1
    Эти команды воспринимаются картой только в состоянии Ready 1 (готовность 1), в ответ на команду антиколлизия карта высылает первую часть серийного номера. Затем для перехода в состояние Ready 2 (готовность 2), необходимо выполнить команду SELECT (выбор), указав в параметрах первую часть серийного номера карты, с которой нужно работать.

    3.3.4 Антиколлизия и выбор уровня 2
    Эти команды выполняются только в состояние Ready 2 (готовность 2). Антиколлизия второго уровня служит для завершения цикла антиколлизии. Выбор (SELECT) второго уровня, в параметрах которого указывается вторая часть серийного номера, переводит карту в состояние активности (ACTIVE).

    3.3.5 Чтение (Read)
    Чтение карты UltraLight совместимо с картами Mifare Standart. В качестве параметра указывается номер страницы. В ответ на команду, карта посылает 16 байт (содержимое 4 страниц), поэтому нет необходимости выполнять команду чтения для каждой страницы, если требуется последовательное чтение.

    3.3.6 Останов (Halt)
    Команда переводит карту в режим Halt (останов), из которого она может быть выведена только командой WUPA. Команда полезна для обнаружения всех карт в радиополе.

    3.3.7 Запись (Write) - четырехбайтовый вариант UltraLight
    Команда записи используется для программирования байтов защиты (на второй странице), области OTP (на странице 3), или области данных (страницы 4..15). Команда записывает 4 байта в указанную страницу.

    3.3.8 Запись (Write) - команда, совместимая с Mifare Standart
    Эта команда, аналогична предыдущей, но принимает 16 байт данных для записи (как в Mifare Standart).
    Примечание: несмотря на прием 16 байт, из них записываются только первые 4 байта (страница) в указанный адрес.