
Спасибо правительству Москвы и лично товарищу Гаеву
Введение
Как известно, всем студентам, пенсионерам и школьникам в Москве оформляется социальная карта москвича (СКМ), которая одновременно служит банковской карточкой и проездным на всевозможных видах транспорта.
Технически, карта представляет из себя RFID-карту Mifare Classic одной из двух модификаций, 1K или 4K.
Карта Mifare Classic поделена на секторы (16 и 40 соответственно), доступ к каждому из которых предоставляется по ключу (6 байт). Карта Mifare Classic реализует проприетарное шифрование и ограничивает доступ к секторам самостоятельно.
В СКМ сектора поделены между различными организациями.
Некоторые сектора (13-14) являются открытыми, доступ к ним осуществляется по определённому в описании карточек стандартному ключу A0...A5.
По мнению разработчиков системы, знать этот стандартный ключ может только «организация, зарегистрированная ГУП МСР как акцептант со��иальной карты», что, мягко говоря, не соответствует действительности.
Впрочем, ничего серьёзного открытые сектора карты не содержат: на них записано только ФИО держателя карты, пол и дата рождения и номер социальной карты, естественно не имеющий ничего общего с номером банковской составляющей карты.
Остальные сектора карты, например содержащие проездные на транспорте, являются закрытыми и получить доступ к ним можно лишь зная соответствующие ключи.
Ключи
Начиная с 2008 года, когда был восстановлен проприетарный алгоритм шифрования, получить доступ к данным на карте можно и без ключей. Известно как минимум три типа атаки на ключи:
- с перехватом информации, передающейся по эфиру между картой и считывателем, «знающим» ключи
- с использованием уязвимости программного ГСЧ и алгоритма шифрования, используя только карту
- ускоренная модификация предыдущего метода, использующая только карту и знание ключа к хотя бы одному сектору
Т.к. в СКМ есть открытые секторы, то самым простым является использование третьей атаки.
Восстановление ключей
Атака этого типа осуществляется, например, утилитой MFOC. Для проведения атаки понадобится считыватель, поддерживаемый libnfc, например SCM SCL3711 . Более доступны в России считыватели ACR122T или ACR122U на том же чипе.
Восстановление ключей ко всем закрытым секторам занимает около 5 минут. Результатом работы будет полный дамп памяти карточки, содержащий в том числе ключи ко всем секторам. С помощью этого дампа можно затем свободно читать и записывать дампы
Смотрим внутрь
Внутри ничего интересного. Из всех закрытых секторов информация содержится только в секторах метро, электричек и автобусов. Просматривать эту информацию можно, а вот изменять, а тем более копировать на другие карты нельзя в соответствии со ст. 327 УК РФ.
Самое интересное
Оказалось, что начиная с недавнего времени, вероятно с прошлого года, СКМ основаны на Mifare Classic 4K, а не на 1K, как это было раньше. Восстановив ключи к такой карточке и посмотрев содержимое новых закрытых секторов (17-40), в 17 секторе можно наткнуться на следующее:

Здесь
- XX, YY, ZZ — фамилия, имя и отчество в CP-1251
- BB — дата рождения в формате YYYYMMDD, записанный цифрами в hex, т.е. 2012-05-13 будет кодироваться как 0x20 0x12 0x05 0x13
- NN — номер социальной карточки, формат тот же.
- EE — дата окончания (месяц, две цифры года), RR — регион выдачи (0177).
- ?? — неизвестно, 0x21 (тип документа?)
- PP — номер и серия паспорта, ASCII
- СС — код подразделения, цифры в hex
- DD — дата выдачи, YYYYMMDD, цифры в hex
- далее — кем выдан, CP1251 большими буквами, оставлено в дампе
- байт в конце — 0x8C — неизвестно.
В дампе личные данные замазаны.
Т.е. в этом недокументированном секторе записаны полные паспортные данные человека! Следует отметить, что эта информация появилась на СКМ после 2008 года, т.е. когда шифрование Mifare Classic уже было скомпроментировано, а на одноразовых билетиках метро и в электричках уже применялись стойкие методы шифрования.
Чем это опасно?
Восстановить ключи к СКМ может каждый желающий, имеющий $30 на покупку считывателя. Напомню, эти ключи одинаковые для всех социальных карт. Зная эти ключи, злоумышленник может считать данные с СКМ, лежащей в вашем кармане с расстояния до нескольких метров, используя внешнюю антенну. Полученные паспортные данные можно было бы использовать далее в преступных целях, если бы не ФЗ-152.
Как дальше жить?
Предотвратить это можно двумя способами. Во-первых, можно, восстановив ключи, перезаписать этот сектор, заполнив его мусором или паспортными данными соседа.
Во-вторых, можно воспользоваться старым, проверенным способом: обернуть карту фольгой и доставать при необходимости. Можно заодно обернуться фольгой самому.
