Phillips разработал карты Mifare 1K для использования со считывателями стандарта ISO/IEC14443A. Радиоинтерфейс (MIFARE RF) соответствует частям 2 и 3 стандарта ISO/IEC14443A. Слой безопасности поддерживает доказанный для поля шифр потока CRYPTO1 для безопасного обмена данными mifare классического семейства.
Специальный акцент был сделан на безопасности против подделок. Настоящая двусторонняя идентификация и шифрование данных сообщения защищают карту от любого вида вмешательства и поэтому делают ее привлекательной в качестве билетов. Серийные номера не могут изменяться, что гарантирует уникальность каждой карты.
1024x8 бит перепрограммируемой памяти организовано в виде 16 секторов с 4 блоками в каждом по 16 байт в каждом блоке.
В стертом состоянии ячейки читаются, как логический ноль, в записанном - как 1.
Нулевой блок хранит данные производителя. Уникальный (гарантировано Philips) ID, или серийный номер карты - байт 0..3. Четвертый байт - контрольная сумма номера. Блок данных производителя доступен только для чтения.
Сектора 0..15 содержат по 3 блока данных. Блоки данных могут быть сконфигурированы с помощью битов доступа (access bits) для чтения-записи или для хранения значения (value).
Блоки значения позволяют выполнять команды read (чтение), write(запись), increment (увеличение), decrement (уменьшение), restore (восстановление) и transfer (сохранение). Блок значения имеет фиксированный формат, позволяющий обнаружение и исправление ошибок. Блок значения может быть сгенерирован только командой записи.
Номер байта | 0 1 2 3 | 4 5 6 7 | 8 9 10 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|
Описание | значение (value) | НЕ значение (not value) | значение (value) | Адр. | НЕ адр. | Адр. | НЕ адр. |
Значение (value) - 4 байтовое знаковое целое число. (not value) - 4 байтовое инверсное к value знаковое целое число. Адресс (адр) - 1-байтовый адрес, который может быть использован для реализации функции бэкапа. Изменяется только командой записи.
Каждый сектор имеет "прицеп", расположенный в блоке №3 каждого сектора. Каждый прицеп хранит секретные ключи А и Б, условия доступа для всех блоков в секторе (байты 6..9).
Номер байта | 0 1 2 3 4 5 | 6 7 8 9 | 10 11 12 13 14 15 |
---|---|---|---|
Описание | Ключ А (key A) | Биты доступа | Ключ Б (key B) |
Карта состоит из 16 независимых секторов. Каждый сектор состоит из 4 блоков (3 информационных и 1 для хранения ключей и условий доступа). Блок является самым малым компонентом, к которому адресуется пользователь, и состоит из 16 байт. Каждый сектор имеет свой набор ключей доступа, что позволяет разграничивать доступ к различным приложениям. Доступ к секторам памяти может настраиваться пользователем при различных его условиях.
Условия доступа к областям данных и к прицепу задаются тремя битами, которые хранятся в прицепе. Биты доступа задают, какие ключи необходимы для операций над областью.
№ области (=№ блока) | Описание | Биты доступа | Допустимые команды |
---|---|---|---|
0 | область данных | C10 C20 C30 | read, write, increment, decrement, transfer, restore |
1 | область данных | C11 C21 C31 | read, write, increment, decrement, transfer, restore |
2 | область данных | C12 C22 C32 | read, write, increment, decrement, transfer, restore |
3 | прицеп сектора | C13 C23 C33 | read, write |
ВНИМАНИЕ: если биты доступа записаны неверно, то сектор становится недоступен - то есть необратимо блокируется и использовать его в дальнейшем НЕ сможет никто!!!
В зависимости от значения битов доступа, прицеп сектора может быть сконфигурирован для чтения/записи, как "никогда", "ключ А", "ключ Б" или "ключ А или Б". Для новых карт, ключ А задается производителем (для Филипса: FF FF FF FF FF FF).
ВНИМАНИЕ: так как биты доступа могут блокировать доступ к самим себе, следует быть внимательным при разметке новой карты!
Биты доступа | Условия доступа для... | Примечания | |||||||
---|---|---|---|---|---|---|---|---|---|
ключ А | биты доступа | ключ Б | |||||||
C1 | C2 | C3 | чтение | запись | чтение | запись | чтение | запись | |
0 | 0 | 0 | никогда | ключ А | ключ А | никогда | ключ А | ключ А | Ключ Б может быть прочитан |
0 | 1 | 0 | никогда | никогда | ключ А | никогда | ключ А | никогда | Ключ Б может быть прочитан |
1 | 0 | 0 | никогда | ключ Б | ключ А или Б | никогда | никогда | ключ Б | |
1 | 1 | 0 | никогда | никогда | ключ А или Б | никогда | никогда | никогда | |
0 | 0 | 1 | никогда | ключ А | ключ А | ключ А | ключ А | ключ А | Ключ Б может быть прочитан (новая карта) |
0 | 1 | 1 | никогда | ключ Б | ключ А или Б | ключ Б | никогда | ключ Б | |
1 | 0 | 1 | никогда | никогда | ключ А или Б | ключ Б | никогда | никогда | |
1 | 1 | 1 | никогда | никогда | ключ А или Б | никогда | никогда | никогда |
В зависимости от значений битов доступа, данные могут быть доступны для чтения/записи: "никогда", по ключу А, по ключу Б или по ключу А или Б. Установка битов доступа определяет допустимые команды и применение карты. блок чтения-записи: доступен и на чтение, и на запись блок значения (value): дополнительно позволяет операции increment, decrement, transfer и restore. В случае единицы (001) только чтение и декремент допустимы (для "не пополняемой" карты). В случае 110, "пополнение" возможно с помощью ключа Б. блок данных производителя всегда доступен на чтение, вне зависимости от битов доступа.
Биты доступа | Условия доступа для... | Применение | |||||
---|---|---|---|---|---|---|---|
C1 | C2 | C3 | чтение | запись | инкремент | декремнт, transfer, restore | |
0 | 0 | 0 | ключ А или Б* | ключ А или Б* | ключ А или Б* | ключ А или Б* | новая карта* |
0 | 1 | 0 | ключ А или Б* | никогда | никогда | никогда | блок для чтения-записи* |
1 | 0 | 0 | ключ А или Б* | ключ Б* | никогда | никогда | блок для чтения-записи |
1 | 1 | 0 | ключ А или Б* | ключ Б* | ключ Б* | ключ А или Б* | блок значения |
0 | 0 | 1 | ключ А или Б* | никогда | никогда | ключ А или Б* | блок значения* |
0 | 1 | 1 | ключ Б* | ключ Б* | никогда | никогда | блок для чтения-записи |
1 | 0 | 1 | ключ Б* | никогда | никогда | никогда | блок для чтения-записи |
1 | 1 | 1 | никогда | никогда | никогда | никогда | блок для чтения-записи |
При попытке авторизоваться ключом Б, карта будет отвечать отказом в любом последующем доступе.