Принимаем и анализируем радиосигнал платежного терминала с помощью SDR

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
Привет, Хабр.

Недавно мне выпала возможность потестировать платежный терминал с возможностью бесконтактной оплаты. Ну а раз оплата бесконтактная, значит сигнал передается по радио, и разумеется, я не смог отказаться от искушения посмотреть с помощью SDR-приемника, какие же данные передаются и принимаются во время совершения платежа.


Фото (с) Verifone

Для тех кому интересно как это работает, немного подробностей под катом.

Сразу нужно отметить, что никакого официального описания протокола обмена терминала с картой у меня нет, такие данные обычно распространяются только компаниям-партнерам после подписания NDA, но послушать эфир и сделать какие-то предположения нам никто не запрещает.

Итак, приступим.

Спектр сигнала


Начнем с самого простого — запустим приемник, включим терминал, произведем оплату и посмотрим, что есть в эфире. Поиск сигнала оказывается элементарным, виден огромный пик на частоте 13.56МГц:



Уровень сигнала неудивителен, ведь его должно быть достаточно для работы индуктивной связи с картой, которая собственного источника питания не имеет. Как подсказывает гугл, 13.56МГц это стандартная частота для RFID-устройств. Симметрия сигнала подсказывает на возможное использование АМ-модуляции.

Теперь, когда сигнал найден, несложно посмотреть на него подробнее и увидеть разные фазы оплаты:



Рассмотрим их подробнее.

1. Режим бездействия


В этом режиме терминал ничего не излучает, на экране только логотип банка или магазина.

2. Запрос платежа и ожидание карты


Кассир инициирует платеж на определенную сумму. В этот момент терминал переходит в режим ожидания оплаты. Оплата картой может быть совершена либо с помощью магнитной полосы, либо путем вставления карты, либо бесконтактным методом, который нас и интересует. Чтобы определить, когда карту поднесли к терминалу, запрос посылается каджые 0.12с. Короткие посылки в виде вертикальных линий на спектре, в увеличенном виде выглядят так:



Хорошо видно, что данные повторяются. Блок данных («на глаз», 24 или 32 бита) скорее всего содержит битовую маску, содержащую форматы карт, поддерживаемых данным ридером. По крайней мере, на другие карты (например на транспортную), ридер не «отзывается».

3. Обмен данными с картой


Когда карта обнаружена, её контроллер в ответ посылает свои данные — вероятно, номер карты и служебную информацию. В самой карте нет источника питания, поэтому ответ от неё очень слабый по мощности. Как можно видеть, на каждый запрос терминала карта посылает свой ответ, «радиообмен» между ними довольно активный:



Увеличенный сигнал, принятый от карты, выглядит примерно так:



4. Проверка карты


Когда данные о карте получены, терминал вероятно проверяет ключи шифрования на карте, процесс занимает порядка 0.6с. RFID-модуль в этот момент отключен. Возможно, терминал запрашивает статус карты онлайн.

5. Ожидание изъятия карты


В тот момент, когда терминал прочитал все данные и проверил карту, на экран выводится сообщение «уберите карту», каждые 5мс терминал проверяет на месте ли карта:



Мы видим одинаковые сообщения, также виден ответ карты. В увеличенном виде можно показать момент, как карта перестала отвечать:



На этом радиообмен заканчивается, и со всеми полученными данными, терминал посылает запрос на проведение платежа к банку. От банка приходит ответ, и если платеж прошел успешно, мы получаем наш товар.

Заключение


Как можно видеть, на бинарном уровне все довольно просто. В протоколе RFID используется обычная амплитудная модуляция, никакого rocket science. Но разумеется, основная работа выполняется на логическом уровне, проверка карты и выполнение платежа довольно сложный процесс, в котором также задействовано шифрование.

Напоследок, можно ответить на вопрос, который наверное интересует многих, возможно ли скрытное снятие денег с чужой карты. Судя по анализу радиосигнала, можно сказать что это очень маловероятно. Во-первых, сама карта не имеет встроенного источника питания — чтобы её процессор заработал, напряженность поля должна быть весьма большой. Нормальное расстояние чтения карты составляет 2-3см, чтобы увеличить его хотя бы до 100см, напряженность поля должна быть в третьей степени больше этой разницы. Второй момент, это получение ответа от карты — её сигнал очень слабый, и принять его на большом расстоянии тоже непросто (плюс не стоит забывать, что длина волны с частотой 13МГц составляет порядка 20 метров, и короткие антенны при таких длинах волн неэффективны). Наконец, не стоит забывать об организационных моментах — каждый платежный терминал привязывается к банковскому счету юридического лица, и если будут поступать жалобы на списание средств, этот счет могут просто заблокировать. Сам терминал кстати, имеет уникальный ID, и если его будут постоянно привязывать к разным счетам, это тоже будет подозрительно. В общем, хотя теоретически удаленное чтение RFID может быть возможным, судя по этой статье, реальных случаев такого снятия средств зарегистрировано не было. И наконец, лимит бесконтактных платежей весьма небольшой, так что «прибыль» вероятно не будет соответствовать риску и стоимости оборудования.
Источник: https://habr.com/ru/post/506456/


Интересные статьи

Интересные статьи

У физических симуляций есть одна невероятная особенность — их можно останавливать, перематывать назад и повторять. Это очень мощный инструмент который можно использовать для генер...
Disclaimer: Автор любит короткие и прямые костыли, а также нежно обожает свободный открытый софт за ту гибкость и масштабируемость, что тот дает. Целью данной статьи является желание попиариться...
По состоянию на 9 марта 2020 мы имеем резкое снижение рынков США начиная с исторического максимума в 20-числах февраля 2020, которое на данный момент составило около -16%. Новости пестрят заголов...
Руководство по использованию mergeMap и forkJoin вместо простых подписок для множественных запросов к API. В этой статье я покажу два подхода к обработке множественных запросов в Angular с...
Привет, Хабр. Недавно я выпендрился в комментариях и пообещал подробно ответить на вопрос о том, как дизайн-система упрощает взаимоотношения и нейтрализует конфликты между дизайнерами и верст...