Бесконтактные платежи
Java Card
Прежде всего рассмотрим технологию Java Card. Эта технология представляет собой интерфейс для создания приложений, работающих на смарт картах. То есть чип в SIM карте телефона, чип внутри пластиковой карты: внутри они имеют Java машину со сборкой мусора и запускают только код, вшитый на заводе. В дополнение к этому, информацию, добавленную на этот чип, крайне сложно прочесть: необходимо будет использовать дорогостоящий микроскоп и аккуратно снимать слой за слоем с карты. Для сравнения: данные с чипа внутри модема Yota считывают программатором едва ли не в домашних условиях. А SIM карту сотового оператора так легко не склонировать.
Итого, что имеем от этой технологии:
- Можно запускать свой код (прописанный производителем).
- Можно соединяться с терминалом оплаты.
- Данные с чипа не снять без его существенной деформации, следовательно данные не могут быть скопированы незаметно.
Сразу отмечу, что изначально технология JavaCard не использовала радиопередачу данных: SIM карты работают только при контакте с телефоном. Потом к технологии добавили возможность зарядки от магнитного поля, создаваемое терминалом, и беспроводную передачу данных в высокочастотном диапазоне.
Алгоритм работы
Итак, Вы подошли к терминалу оплаты, и с Вас хотят взять 100 рублей за гамбургер. Далее следуют действия:
- Терминал составляет структуру со следующими данными:
- Сумма к оплате.
- Временный token терминала (она образуется с помощью алгоритма согласования: терминал запрашивает сервер для создания временного token`а, сервер создает и подписывает его). Фактически, сервер подписывает информацию, что доверенный терминал хочет снять со счета 100 рублей. И этот token действителен только ограниченное время.
- Терминал просит Вас провести каточкой перед ним. Из-за малого радиуса действия, общение с карточкой на большом расстоянии невозможно, следовательно просто так у Вас никто данные не считает.
- Создается соединение с картой отплаты:
- Терминал отсылает карте данные временный token (напомню: подписанный сервером).
- Карта всё проверяет и подписывает своим паролем. Этот же пароль знает главный сервер. Подписанная структура отсылается обратно терминалу.
- Терминал отправляет данные на сервер.
- Сервер отвечает одним из вариантов:
- Если сумма меньше N рублей и всё хорошо со счетом – Accepted
- Если со счета деньги не могут быть сняты – Fail
- Если необходима дополнительная авторизация: сервер говорит, что еще необходимо (pin-код, подпись + паспорт)
Отличия от магнитной пластиковой карты
Как Вы видите, основная разница: в том, что пока Вашу карту не украли и не склонировали, у Вас не могут снять более N рублей за раз и M рублей в сутки. Чтобы склонировать карту, необходимо её деформировать. Клонирование старых карточек делается с помощью магнитофона – считывающее устройство аналогично такому же для старых кассет.
Так что безопасность усиливается – это факт. Но остается одна из уязвимостей: подмена монитора, где Вы видете сумму. Вам могут показать там совершенно другие деньги. К сожалению, эта проблема до сих пор решается только правовым способом: жалоба, суд и пр. Напомню, что за подобные действия во многих странах полагается уголовная ответственноть и большие штрафы.
Данные взяты с MasterCard Paypass