Платежи на смартфоне. Насколько это безопасно?

Мобильные приложения для приема платежей пока еще не так привычны, как классические способы эквайринга и их безопасность вызывает вопросы у тех, кто платит и у тех, кто эту оплату принимает. Однако, механизмы, обеспечивающие защиту приложения и безопасность оплаты не только отлично справляются со своей задачей, но и помогают вычислить недобросовестных сотрудников.

Кирилл Хаустов, 
директор инновационной лаборатории Эвотора

Наше мобильное приложение “Мобильный кассир” умеет принимать платежи, как банковский терминал, и пробивать чеки, как касса. Его используют как курьеры, так и сотрудники на выезде на своих или корпоративных смартфонах. Сервис позволяет принимать от покупателя наличные, безналичные - банковская карта, Мир Pay или SberPay и оплату по QR-коду через Сбер. Дополнительно можно подключить и фискализацию ― с помощью обычной кассы “Эвотор”, если она уже есть, или облачной кассы.

Во время оплаты картой, особенно при вводе пин-кода в приложении, возникают вопросы: могут ли украсть данные моей карты? Безопасно ли вводить пинкод в приложении и т.п. Я расскажу, как устроена безопасность в нашем мобильном приложении и как перестать беспокоиться при оплате на смартфоне.

Вход в приложение

Первый эшелон безопасности “Мобильного кассира” - механизм аттестации устройства, на котором запускается приложение. Это набор комплексных проверок, основной задачей которых является проверка как самого приложения: проверка имени пакета, версии приложения, целостности всех его данных и контрольных сумм, так и самого устройства, на котором приложение запускается: наличие актуальных патчей безопасности ОС, наличие root доступа, защита от запуска на эмуляторе и множество других проверок.

После успешного завершения всех этапов, пользователю приложения необходимо осуществить вход при помощи OTP (one time password), действие кода ограничено по времени, а превышение лимита по количеству ввода или времени приводит к блокировке приложения. После подтверждения, пользователь должен будет использовать биометрию, либо код доступа для дальнейшего входа, подобно банковским приложениям.

Помимо этого, каждое устройство имеет собственный цифровой отпечаток, в генерации которого участвует множество его параметров и его проверка также осуществляется при каждом запуске приложения.

Шифрование данных

Данные карты никогда не хранятся на устройстве, а их передача производится исключительно в зашифрованном виде, шифрование обеспечивают, как стандартные механизмы (SSL, Certificate Pinning), так и дополнительные, применяемые на обычных терминалах эквайринга: шифрование с использованием ключей терминала, использование HSM (аппаратного модуля шифрования) и прочие.

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

В целом, все наше решение соответствует международным требования сертификации PCI MPoC, в рамках которого предъявляются повышенные требования ко всем механизмам защиты приложения и передачи данных, поэтому платить на смартфоне и вводить пин настолько же безопасно, как при оплате на обычном банковском терминале в магазинах.

Платежи на смартфоне. Насколько это безопасно?

Как защита платежей на смартфонах случайно раскрыла хитрости курьеров

Однажды мы заметили, что у одного из наших пользователей, продуктовой сети, периодически стали блокироваться устройства курьеров. Мы стали анализировать проблему и разобрались в хитрой схеме махинации курьеров.

Выяснилось, что у курьеров действовали жесткие kpi по времени доставки. И если они не укладывались в промежуток, то получали штраф. Некоторые из них пытались схитрить и выставить другое время на своих смартфонах так, чтобы время платежа в чеке входило в установленный период. Но нет, фокус не прошел ― платеж блокировался.

Почему так? Дело в том, что при каждом взаимодействии с сервером приложение передает свое время, и если вдруг при следующем запросе к серверу устройство передает значение в меньшую сторону, то устройство блокируется. Так работает технология Application Nonce ― при каждом запросе приложение отправляет на сервер в заголовке постоянно растущее значение app_nonce. Само значение генерируется из временной метки unix при запуске приложения и увеличивается с каждым запросом к серверу. Сервер ожидает, что значение всегда будет больше, чем в предыдущем запросе. А если оно меньше ― то это непорядок. Так, приложение блокировало попытки схитрить с временем доставки.

2525
1 комментарий

Главное что "соответствует международным требования сертификации PCI MPoC". Можно было просто с этого начать :)
Всё остальное пересказ, как реализуется соответствие некоторым из этих требований.

1