Сегодня мы с вами, уважаемые читатели, рассмотрим тему узкую и специфическую — таксофонные карты на базе Eurochip всех модификаций — в первой части проведем исторический экскурс и восстановим типовой сценарий практического применения. Принципиальное отличие данной серии статей от многочисленных других в том, что во второй части наконец-то будет осуществлена активная аутентификация карты с публикацией детального прокомментированного лога. Однако низкоуровневая работа полностью оставлена за рамками изыскания: паять ничего не будем, а картридеры используем готовые. Таксофон для экспериментов тоже не понадобится.

Автор наивно предполагает, что читатель хотя бы поверхностно знаком с устройством таксофонов и карт. Если нет — ниже подборка стоящих статей, последовательно и качественно раскрывающих тему в достаточной мере.
Низкоуровневая часть — легендарный Phrack Magazine #48
Вся значимая информация приводится со ссылками на открытую документацию ли��о хотя бы на рекламные материалы производителей карт, считывателей и таксофонов (ссылки в конце статьи). Некоторые двусмысленные формулировки из скудной документации дополнительно проверены автором собственноручно.
Внимание! Вся информация, представленная в настоящей серии статей, публикуется исключительно в образовательных целях. Детально описанные действия ни при каких обстоятельствах не приводят к компрометации ключей, а любые упоминания общеизвестных методов криптоанализа даются в ознакомительных целях без инструкций по их осуществлению. Аутентификация выполняется исключительно на примере карт с истекшим сроком годности, выведенных из эксплуатации и приобретенных законным образом. Значения ключей не публикуются. Автор не побуждает читателя ни к каким противозаконным действиям и настоятельно рекомендует самостоятельно изучить законы перед проведением каких-либо экспериментов с электронным оборудованием.

О семействе
Говоря Eurochip, подразумеваем SLE4436. Говоря SLE4436, подразумеваем Eurochip. Народная мудрость. И действительно, на уцелевших форумах последней четверти прошлого века больше всего информации о SLE4436.
SLE4436 — чип для карт памяти (на основе ЭСППЗУ), который ставился в пластик размера ID-1 (тот, который размером с кредитку). Выпускался он небезызвестной компанией Siemens, из которой позже выделился (и продолжил развитие семейства) Infineon. Чип в семействе не один, оно достаточно обширное: это и SLE4428 с SLE4442, производство аналогов которых заново освоено китайцами в XXI веке, и многочисленные вариации вроде SLE5528, SLE4436E, SLE5536 и т. д. Исторически верное значение аббревиатуры SLE автору, к сожалению, неизвестно, но следующие две цифры, которые всегда одинаковые и последовательно возрастали от 4 до 7, явно отражали номер поколения чипов по мере выполнения работы над ошибками.
SLE4436 выбивается из семейства тем, что это целевой чип памяти с нереверсивным счетчиком попугаев (единиц, units). Полная документация на него находилась в закрытом доступе и, по всей видимости, не утекла по сей день (в отличие от, например, SLE4442, документация на который публична). Изначально чип позиционировался для применения в таксофонных картах. Фактически на просторах интернета упоминаются и побочные применения: платные лифты, вендинговые автоматы. С позиций карты это одно и то же, она лишь учитывает расход абстрактных единиц и ничего не знает о бизнес-логике. SLE4436 стал самым известным, но не был первым. Ему предшествовал SLE4406, с него и начнем.
SLE4406
Существовали две версии: SLE4406 и SLE4406S, которые идентичны по заявлениям производителя, для каждой из версий была модификация с буквой E на конце, о чем чуть ниже.
Физический интерфейс выполнен по ISO/IEC 7816, карта синхронная. Проще говоря, при чтении чип похож на сдвиговый регистр. Интерфейс в рамках стандарта исключительно однобитный, поэтому организация пам��ти в байты достаточно условна. И в описании, и в прикладном ключе оперировать приходится зачастую отдельными битами.
В целях безопасности чип имеет некоторые ограничения по напряжениям логических уровней и по частоте тактирования. Точные пороги срабатывания защит не опубликованы.

Счетчик единиц выполнен на 40-битном фрагменте адресного пространства с довольно забавным методом хранения остатка. Старший бит не участвует в учете и служит для однократного вывода карты из транспортного режима при персонализации. Формально он находится в подпространстве счетчика. 40 битов организованы в пять классических (восьмибитных) байтов, байтам присвоен вес 1, 8, 64, 512, 4096. Хост читает данные в сыром виде, подсчитывает количество единиц в байте, умножает на вес, суммирует значение всех пяти разрядов, получая в итоге остаток на карте. Получается некое подобие восьмеричной системы счисления. Логика карты позволяет списать единицу, превратив единичный бит младшего байта в нулевой (и никак не наоборот). Когда в младшем байте единицы заканчиваются, выполняется перенос из следующего: единица из него списывается, а в младшем появляется восемь единиц, то есть при выполнении процедуры записи с переносом примитивная логика карты самостоятельно выполняет стирание нужного участка. Стереть же участок без списания из старшего байта логика карты не позволяет.
Остальные доступные для записи биты используются достаточно произвольно на усмотрение проектировщика (для хранения серийного номера, даты изготовления и т. п.) с той лишь оговоркой, что для чипов без буквы E в наименовании первые 24 бита записываются заводом-изготовителем (без возможности изменить их), а для чипов с буквой E таких битов лишь 16. Запись всегда означает перевод из 1 в 0. Стирание данных не предусмотрено. Формат хранимых данных никак не регламентируется, что и приводит, в частности, к появлению в сервисном меню таксофона необходимости выбора типа битовой карты в целях правильной интерпретации данных.
Детальное рассмотрение карты памяти (memory map) не приводится и имеет смысл лишь с привязкой к конкретному телеком-оператору, поскольку вариативность велика. Например, номер карты может храниться как в BCD, так и в истинно двоичной системе счисления, причем серия и номер могут лежать в разных полях либо интерпретироваться как единое целое. Формат даты тоже диктуется преимущественно воображением проектировщика системы, а не стандартами.
Стоит отметить, что написанное про SLE4406 справедливо и для более поздних чипов SLExx36(E): счетчик устроен идентично, назначение буквы E в наименовании всегда одинаково, внутренняя логика в целом наследуется и претерпевает лишь усовершенствования и доработки.
SLE4436 (Eurochip I)

Логика работы SLE4406 при выполнении переноса хромала: если карту вытащить из считывателя после записи в старший байт, но до стирания младшего байта, пользователь получал убыток в размере веса старшего байта. В SLE4436 и более поздних версиях этот недостаток устранен. При записи нуля в бит старшего байта (при «уничтожении» переносимой единицы) взводится флаг в сервисной ячейке ЭСППЗУ, что позволяет возобновить перенос в следующем цикле работы с картой. Функция названа counter tearing protection.
Следующая существенная доработка — механизм активной аутентификации. В специально отведенную область адресного пространства при персонализации записывается индивидуальный ключ карты, чтение которого штатными средствами не предусмотрено. Значение индивидуального ключа рассчитывается как DES-EDE2 от 64-битной области Personalization Data Memory (первые 64 бита хранимых в памяти карты данных) и секретного мастер-ключа оператора. Как правило, указанная область карты содержит ее серийный номер, поэтому ключ карты получается уникальным при использовании одного и того же мастер-ключа оператора. Значение мастер-ключа в SLE4436 отсутствует в принципе.
Сама процедура аутентификации выполняется аппаратным модулем, размещенным на кристалле SLE4436. На вход модуля аутентификации подается содержимое памяти (биты данных от 0 до 128 включительно), 48-битный ключ карты, а также 48-битный (псевдо-)случайный запрос, генерируемый SAM-модулем хоста. Карта (и модуль аутентификации в ней) тактируется до получения 16 битов ответа, однако тактирование может быть прекращено и ранее, что позволяет ускорить процесс ценой получения более короткого ответа. Ответ карты передается в SAM-модуль для проверки. Таким образом, хост не контактирует с ключами вовсе, а решение о подлинности и годности карты принимает SAM-модуль. Ни структура аппаратного модуля аутентификации, ни программная реализация для SAM-модуля не являются публичными.
Карта имеет возможность инициализации дополнительного 48-битного ключа. При аутентификации хост выбирает основной либо дополнительный ключ путем фиктивной записи в сервисный бит 110 либо 111 соответственно.
Запуск механизма аутентификации корректно реализован в считывателе, который будет рассмотрен в практической части. Поэтому низкоуровневая часть взаимодействия опущена.
SLE5536 (Eurochip II)

Отличия от SLE4436 минимальны.
Защита от сбоев при переносе (counter tearing protection) может быть отключена на этапе масочного программирования.
Реализована возможность не сбрасывать содержимое регистра между несколькими аутентификациями (cipher block chaining), что по замыслу разработчиков позволяет удостовериться в факте уменьшения счетчика путем проведения аутентификации до и после декремента. Значимость усовершенствования сомнительная.
SLE6636 (Eurochip 66)

Изменений вновь мало: меняется технология производства кристалла и сцепка блоков (CBC) при аутентификации становится опциональной.
SLE7736 (Eurochip 77)

На данном этапе развития случается непоправимое. Производитель добавляет Card trash mechanism, механизм, блокирующий модуль аутентификации и повышающий преобразователь на израсходованных картах. Пополнение пустых карт становится невозможным даже при наличии уязвимостей к тем или иным воздействиям, поскольку отсутствует даже напряжение для стирания. Также заявлено усовершенствование цепей обнаружения аномальных условий эксплуатации. Иными словами, обновление коснулось только защитных функций.
Ответвления
Серия оказалась столь интересной, что производство аналогов было освоено как минимум в Беларуси: это IZE4406, IZE4436 и некоторые другие чипы. Производство в РФ тоже имело место быть, но вышло ли за рамки экспериментального, автору неизвестно.
Полезные документы
Полная техническая документация на чипы отсутствует в открытом доступе, однако ключевые моменты можно почерпнуть из целого ряда документов.
Продолжение следует.
Во второй части будет более подробно рассмотрен подсчет остатка единиц, SAM-модуль и процесс аутентификации на практике.
В более отдаленной перспективе рассматривается создание SAM-модуля на основе Java-карты общего назначения.
