Как защитить андроид для приложения кошелек
В данной статье мы кратко расскажем о том, как можно защитить свою программу от взлома, не интегрируя стандартное решение от Google и предоставим пример рабочего кода. Интересно? Просим под кат!
В чём слабость Google Application Licensing?
Как реализовать свою собственную защиту?
Очевидно, что любую защиту можно сломать. Данный метод не является серебрянной пулей, но он имеет право на жизнь. Для проверки уникальности приложения есть смысл проверить сертификат, которым это приложение было подписано. Информацию о сертификате можно прочитать из PackageInfo:
Нулевой элемент массива будет содержать необходимую информацию о ключе, которым было подписано приложение. Сохраните сам ключ, он вам понадобится совсем скоро.
Логично, что делать такую проверку в Java не имеет смысла, так как аналогичный приём с использованием apktool похоронит вашу защиту за несколько минут. Поэтому данную проверку стоит перенести на нейтив уровень.
Что делать дальше?
Необходимо вынести часть своего функционала в ту же библиотеку и перед тем как вернуть значение проверить сертификат на подлинность. И не забываем про фантазию, которая необходима для того, чтобы сбить с толку потенциального хакера. Допустим, вы определили, что данная копия приложения — не подлинная. Нет смысла явно говорить об этом, намного веселее добавить случайный элемент в действия программы. К примеру, если у вас игра, то можно добавить силы соперникам или сделать игрока более уязвимым. Также можно добавить случайные падения, к примеру в 10% случаев (справедливое замечание от хабраюзераzagayevskiy: случайные падения испортят карму вашей программы. ). Тут всё зависит только от вас.
Вот простой пример возможной реализации:
Для начала пишем класс, который делает вызов библиотеки для получения некоторых данных.
Метод init нужен для того, чтобы не вызывать проверку подлинности сертификата каждый раз.
Реализация нейтив методов:
Данный вариант защиты также может быть взломан путём дизасемблирования, но для этого нужен совсем другой уровень знаний и намного больше времени, чем в случае с реализацией защиты на уровне Java. При наличии определённых средств есть смыл приобрести обфускатор для С кода, в этом случае взлом будет далеко не тривиальной задачей.
Защита приложения при наличии серверной части.
Если часть логики приложения реализована на сервере, есть смысл вынести проверку подлинности сертификата на сервер. Как вариант, можно использовать такой алгоритм действий:
- Сервер генерирует приватный и публичный RSA ключи;
- Клиент отправляет запрос на сервер и получает публичный ключ;
- На клиенте реализовываем нативную библиотеку с функцией вида String getInfo(String publicKey); функция должна считать сертификат, добавить к нему некоторую случайную величину, затем зашифровать полученную строку используя публичный RSA ключ;
- Клиент делает новый запрос на сервер, отправляя полученную строку. Сервер производит декодирование, отделение сертификата от случайной величины и проверку его на подлинность;
- В зависимости от результатов проверки сервер реагирует на все следующие запросы клиента.
Надеемся, данный механизм поможет читателям Хабра повысить заработок со своих Android приложений.
Чтобы безопасно оплачивать покупки через Google Pay, нужно включить и настроить блокировку экрана.
Важно! Пользователи из Японии, которые расплачиваются электронными деньгами, а также картами QUICPay и iD, могут пользоваться Google Pay, даже когда блокировка экрана не включена.
Разблокировать приложение Google Pay можно несколькими способами. Вот они:
- PIN-код;
- графический ключ;
- пароль;
- отпечаток пальца;
- радужная оболочка глаза;
- 3D-фейсконтроль.
Такие способы, как 2D-фейсконтроль, Smart Unlock и Knock to Unlock не поддерживаются.
Как включить блокировку экрана
О том, как выбрать нужный способ блокировки экрана и включить ее, написано здесь.
В некоторых странах повысилась максимальная сумма транзакций, которые можно выполнять бесконтактно, не снимая блокировку экрана. Новые лимиты начнут действовать в начале апреля и только в отдельных регионах.
Как настроить автоматическую блокировку экрана
Для дополнительной безопасности советуем настроить автоматическую блокировку экрана. Вот как это сделать:
- Откройте настройки устройства .
- Нажмите Экран блокировки и безопасностьНастройки блокировки экранаБлокировать автоматически.
- Выберите, через какое время будет включаться автоматическая блокировка.
В каких случаях для оплаты не нужно снимать блокировку экрана
Важно! Количество транзакций при заблокированном экране ограничено.
Обычно для совершения бесконтактных платежей нужно снимать блокировку экрана. Исключение составляют случаи, когда сумма покупки незначительна.
Совет. Чтобы ещё надежнее защитить данные, настройте на смартфоне разблокировку экрана для бесконтактной оплаты.Чтобы включить эту функцию, выполните следующие действия:
- Перейдите в настройки .
- Выберите Подключенные устройстваНастройки подключенияNFC.
- Включите параметр Запрашивать разблокировку устройства для использования NFC.
Если этой настройки нет, обновите ОС Android до последней версии.
Максимальная сумма оплаты на заблокированном устройстве
Страна | Сумма |
---|---|
Австралия | 100 австралийских долларов |
Австрия | 50 евро |
Бельгия | 25 евро |
Бразилия | Разблокировать экран необходимо при совершении любых транзакций (кроме оплаты в общественном транспорте) |
Болгария | 100 болгарских левов |
Канада | 100 канадских долларов |
Чили | 12 000 чилийских песо (при оплате кредитной картой) |
Хорватия | 350 хорватских кун |
Чехия | 500 чешских крон |
Дания | 350 датских крон |
Эстония | 50 евро |
Финляндия | 25 евро |
Франция | 30 евро |
Германия | 50 евро |
Греция | 50 евро |
Гонконг | 1000 гонконгских долларов |
Венгрия | 15 000 венгерских форинтов |
Ирландия | 50 евро |
Италия | 25 евро |
Япония (при оплате картой VISA Touch) | 10 000 японских иен |
Латвия | 50 евро |
Литва | 50 евро |
Нидерланды | 50 евро |
Новая Зеландия | 80 новозеландских долларов |
Норвегия | 200 норвежских крон |
Польша | 100 польских злотых |
Португалия | 50 евро |
Румыния | 200 румынских леев |
Россия | 1000 российских рублей |
Сингапур | 200 сингапурских долларов |
Словакия | 20 евро |
Испания | 50 евро |
Швеция | 400 шведских крон |
Швейцария | 80 швейцарских франков |
Украина | 500 украинских гривен – при оплате картой Mastercard 1500 украинских гривен – при оплате картой Visa |
Объединенные Арабские Эмираты | 300 дирхамов ОАЭ |
Великобритания | 45 британских фунтов стерлингов* |
США | Разблокировать экран необходимо при совершении любых транзакций (кроме оплаты в общественном транспорте) |
*Важная информация. В Великобритании максимальная сумма транзакции зависит от того, какой банк выпустил карту. Подробнее о способах оплаты, поддерживаемых в Великобритании…
Примечание. На некоторых терминалах не поддерживается оплата с заблокированным экраном. Если вы столкнулись с этой проблемой, разблокируйте экран и повторите попытку. Если сумма транзакции превышает ту, что указана выше, вы все равно можете расплатиться через Google Pay. Для этого разблокируйте экран устройства и поднесите его к терминалу.
В 21 веке не нужно носить с собой множество карт, чтобы расплачиваться и получать скидки в магазинах. Достаточно установить приложение-кошелёк и добавить туда все свои карты – банковские, скидочные, транспортные и другие. Как работают такие приложения и безопасны ли они, расскажем в статье.
Функции приложений-кошельков
Приложение избавляет пользователя от необходимости носить скидочные карты с собой. Просто загрузите их в систему и отправляйтесь за покупками. На кассе выберите из списка нужную карту и предъявите кассиру на экране мобильного телефона. Сотрудник торговой точки считает штрих-код и сделает скидку. В этом же кошельке удобно хранить платёжные карты. Достаточно выбрать из списка карту, которой хотите расплатиться, и поднести к терминалу.
Многие приложения позволяют хранить также другие виды карт:
- транспортные (например, «Тройка» или «Подорожник»);
- клубные;
- ключ-карты (для доступа в помещение, например в офисное) и др.
Приложения сотрудничают с магазинами и предлагают пользователям получить дополнительную скидку или купить подарочный сертификат. Кроме того, в некоторых приложениях можно выпустить карту, если её ещё нет. Для этого зайдите на страницу магазина-партнёра и подайте заявку. Она добавится в кошелёк.
Итак, вот плюсы приложений-кошельков:
- карты хранятся в одном месте;
- карты не потеряются;
- пользователь видит количество бонусов на каждой карте;
- при смене или утрате смартфона карты легко восстановить, установив приложение на другом устройстве;
- открывается доступ к скидкам и акциям магазинов-партнёров;
- доступен выпуск новой карты за пару минут, не выходя из дома;
- можно покупать подарочные сертификаты в приложении;
- можно сканировать и сохранять чеки для контроля за расходами.
Безопасно ли это
О безопасности подобных сервисов мы спросили у Павла Фетисова, начальника Управления фрод мониторинга, претензионной работы и расчётов ПАО «МТС-Банк»: «Все организации, которые хранят и обрабатывают карточные данные, должны соответствовать стандартам безопасности данных индустрии платежных карт (PCI DSS). В целях проверки соответствия PCI DSS регулярно проводится аудит процедуры оценки безопасности. Следовательно, при условии соответствия этим требованиям кошельки являются безопасными приложениями. Риски компрометации, кражи или утери учётных данных из кошелька идентичны с аналогичными рисками из систем дистанционного банковского обслуживания (ДБО).
Чтобы обезопасить себя, вносить реквизиты карт следует только на официальных сайтах и в мобильных приложениях крупных поставщиков услуг с надёжной репутацией».
Чем выгодны банкам приложения-кошельки
Напрямую банки не зарабатывают на приложениях-кошельках, но косвенный доход есть. Для кредитного учреждения добавление карт в подобные приложения выгодно тем, что в перспективе оно может зарабатывать на увеличении числа покупок по своей карте в этом кошельке. Кроме того, банки активно сотрудничают с разработчиками и продают свои продукты прямо в кошельках. Клиент может выпустить виртуальную карту и подать заявку на оформление реальной, не выходя из дома и буквально за пару минут.
Удобные приложения-кошельки
В магазинах приложений масса продуктов, предлагающих хранение скидочных и банковских карт. Мы собрали несколько надёжных и вкратце рассказали о функциях каждого.
«Кошелёк»
У приложения уже больше 5 млн скачиваний. Оно доступно для iOs и Android.
Хранить в «Кошельке» можно не только скидочные, но и банковские карты. Чтобы добавить новую, сфотографируйте лицевую сторону или просто поднесите карточку к своему мобильному телефону. Карта автоматически будет добавлена в кошелёк. Расплачиваться ею вы сможете прямо из приложения бесконтактным способом. Не беспокойтесь за сохранность данных – они защищены стандартом PCI DSS.
Через «Кошелёк» можно выпустить новую карту – как дебетовую, так и кредитную. В каталоге видно, предложения каких банков доступны. С «Кошельком» сотрудничают Сбербанк, Кредит Европа банк, Тинькофф, Альфа-Банк, Хоум Кредит, ВТБ, Открытие и другие. Выберите понравившуюся карту, ознакомьтесь с условиями выпуска, кликнув на неё, и подайте заявку на оформление.
Cards
Приложение скачали более 1 млн раз. Оно бесплатное и даёт возможность хранить все виды карт – банковские, скидочные, транспортные, ключ-карты и даже некоторые документы – права, студенческие, а также билеты в кино. Минус приложения в том, что оно на английском. Русский перевод доступен, но не очень качественный. С безопасностью проблем нет – информация зашифрована.
SecureCard
У приложения пока чуть больше 5 тыс. скачиваний, но хорошие отзывы. Оно предназначено для хранения только банковских карт. Информация пользователей защищена AES-шифрованием. Ключ длиной 256 бит генерируется на устройстве, больше его никто не знает, даже разработчики приложения. То есть доступ к сведениям о картах имеет только владелец устройства.
Если опасаетесь сообщать подобным приложениям сведения о картах, но хотите платить с помощью телефона, пользуйтесь проверенными приложениями, такими как Google Pay и Apple Pay.
Как устроена бесконтактная система оплаты на смартфоне
Суть любой системы платежей с помощью смартфона, будь то приложение «Кошелёк», о котором идет речь в этой статье, Apple Pay или что-то еще, такова. Информация о новом банковском продукте клиента записывается в специальный чип (либо в защищенное облачное хранилище) вместо записи на чип, размещенный на пластиковой карте. Фактически, смартфон и является банковской картой с рядом исключений – его нельзя «прокатать» через терминал или вставить, очевидно, в разъем для работы с чиповыми картами. В случае со смартфоном мы говорим об оплате через терминалы, поддерживающие бесконтактный метод приема платежей. Сегодня все больше банковских пластиковых карт оснащаются поддержкой этого способа оплаты, так что и число терминалов в точках продаж, принимающих такие карты, растет.
Далеко не каждый смартфон может служить «карточкой». Во-первых, это только модели с NFC чипом, ведь именно он используется для проведения бесконтактных операций, во-вторых, это наличие модуля Secure Element, где хранятся банковские данные продуктов, выпущенных пользователем для своего смартфона. Карта привязывается к SE, то есть к конкретному устройству, и не может быть использована на другом устройстве. Здесь можно провести аналогию с обычным «пластиком» – вы выпускаете банковскую карту и пользуетесь ей, чтобы проводить платежи.
В случае с приложением «Кошелёк» используется собственная платформа компании – CardsMobile TSM. TSM является посредником между поставщиками услуг (банками, транспортными компаниями, магазинами) и различными смартфонами, оснащенными NFC. Платформа позволяет удаленно загружать выбранный тип платежной карты в чип совместимого устройства. Пользователю остается зайти в приложение «Кошелёк» и выбрать продукт (банковскую, транспортную, скидочную карту) из списка.
Важно понимать, что выпущенная на смартфоне карта, привязанная к чипу SE – это аналог физических пластиковых карт, а не виртуальных, таких как QIWI-кошелек или Tinkoff Mobile Wallet, например.
Приложение «Кошелёк»
Рассмотрим, как устроена программа и что она умеет. При первом запуске пользователь видит простейшие инструкции, как проводить оплату: каким местом прикладывать смартфон к считывающему устройству. Это важный момент, потому что в смартфонах NFC чип находится в разных местах корпуса, где-то по центру, где-то ближе к основной камере или к нижнему торцу устройства.
Затем вы можете просмотреть список всех доступных для выпуска продуктов и выбрать тот, что вам нужен. Я выпускал карту «Тинькофф Банк», весь процесс занимает около 10-20 минут. Вначале нужно вбить основные данные (ФИО, дата рождения), затем почту и номер телефона, далее данные отправляются в банк, и затем идет процесс активации карты. Выбирается пароль для входа в программу и кодовое слово для созданной банковской карты.
Все, на этом процесс завершен, карта выпущена, активирована и готова к работе.
Далее ее нужно пополнить. Есть несколько вариантов. Первый – посмотреть реквизиты карты и далее перевести средства на нее обычным банковским переводом через интернет-банк, например. Второй вариант – отсканировать камерой карту, с которой вы хотите выполнить перевод, и осуществить его по системе «Card-to-Card». Третий вариант работает также по этой системе, но еще проще: вам нужно просто приложить к спинке смартфона карту с поддержкой технологий MasterCard PayPass или Visa PayWave, с которой будет делаться перевод, система считает данные, останется ввести CVC2 код, и платеж будет завершен.
Когда на карте есть определенная сумма, можно начинать пользоваться ей как обычной банковской картой: оплачивать покупки в магазинах, кафе, покупать кофе, заправлять машину и так далее.
В приложении можно создать карты нескольких банков и пользоваться ими в разных ситуациях, но пока на выбор доступны всего две – карта от «Тинькофф Банк» и карта от банка «Русский Стандарт». Обе карты выпускаются бесплатно, комиссии за облуживание в них также нет, карты дебетовые, то есть для начала работы с ними нужно положить на счет деньги. Разница между картами в комиссии за пополнение счета – «Тинькофф Банк» комиссию не берет, банк «Русский Стандарт» берет 4 %. В ближайшее время должны появиться карты новых банков и скидочные карты крупных розничных сетей – каких именно, пока неизвестно.
Также можно открыть карту болельщика РФПЛ для прохода на стадионы. Интересная в будущем возможность – транспортные карты, сейчас ее можно открыть, если вы проживаете в Чебоксарах, Вологде и Ангарске. Карты для Москвы, Санкт-Петербурга и Екатеринбурга обещают запустить в ближайшее время.
Если честно, для меня транспортная карта в приложении станет самой полезной, и, вероятно, как только введут возможность оформления такой карты для Москвы, я стану использовать «Кошелёк» постоянно. Почему? Все просто. К банковской карте на смартфоне еще нужно привыкнуть: запомнить, как правильно прикладывать ее к терминалу, смириться с иногда удивленными взглядами кассиров и других покупателей в магазине, всегда проверять перед оплатой, что терминал поддерживает бесконтактные платежи. Я хочу сказать, что сама система очень классная, но инфраструктура под нее все еще в процессе развития, и время от времени, пользуясь банковской картой на смартфоне, вам все равно придется доставать привычный пластик или наличные купюры.
Другое дело – транспортная карта. Записав на смартфон проездной, вы избавляетесь от бумажных временных билетов и пластиковой карты типа «Тройка». Все терминалы стандартизированы, у вас не возникнет ситуации, когда вы не сможете попасть в метро, автобус или троллейбус по карте на смартфоне. Она будет работать во всех случаях, и вы, выпустив ее, как минимум экономите место в бумажнике и необходимость вынимать при входе в транспорт пластиковую карточку или сам бумажник. А смартфон почти у всех всегда в руках, таковы реалии современного мира.
Хочется немного поворчать по поводу интерфейса программы и ее оформления. Даже во времена Android 4.4 на смартфонах HTC с их красивым и аккуратным Sense программа «Кошелёк» выглядела немного инородно, скажем так. Сейчас, на Android 5.0, эта разница между дизайном кошелька и остальными элементами интерфейса стала еще заметнее. Надеюсь, в ближайшее время разработчики озаботятся изменением внешнего вида программы и приведением его к стандартам Material Design из Android 5.0.
Поддерживаемые смартфоны
Основная сложность, с которой сталкиваются разработчики таких приложений, как «Кошелёк», это их интегрирование в смартфоны. Речь идет о банковском продукте, здесь необходим определенный уровень защищенности и доступ к чипу, соответственно, пользователь любого смартфона с NFC не может просто так взять, установить программу и получить готовую связку «смартфон плюс банковская карта» внутри. Компания договаривается с конкретными производителями о совместимости «Кошелька» с их устройством.
На февраль 2015 года «Кошелек» доступен на следующих смартфонах:
- HTC One (M8)
- HTC One Dual-SIM (M8)
- HTC One (E8)
- HTC One Max
- HTC One (M7)
- HTC One SV
- Philips Xenium W8555
- Philips Xenium W336
- Sony Xperia Z (C6603)
В 2015 году было запущено тестирование новой технологии бесконтактных платежей от компании MasterCard – CloudBased Payments. Благодаря этой технологии в ближайшее время выпуск банковских карт станет доступен на всех смартфонах с NFC и Android KitKat 4.4 и выше.
Принять участие в тестировании этой технологии можно уже сейчас.
Заключение
Идея использования смартфона как банковской и транспортной карты очень классная. Более того, за счет активного развития компаниями VISA и MasterCard систем бесконтактных платежей (Visa PayWave и MasterCard PayPass) все больше старых терминалов в магазинах, кафе и других местах по всему миру сменяются новыми, с поддержкой этого интерфейса. Соответственно, растут и возможности по смене «пластика» на банковские карты внутри смартфона. Да, пока это необычно: выбор продуктов в том же «Кошельке» ограничен, как и число смартфонов с этим приложением, но начало положено.
Замечу, что пока технология не слишком популярна в России еще и потому, что совершенно не рекламируется. Я не встречал рекламу «Кошелька» такими компаниями, как HTC, Sony или Philips, например, хотя для HTC, судя по числу поддерживаемых моделей, такая реклама была бы логичной. Все-таки возможность использовать смартфон как настоящую банковскую или транспортную карту – неплохое преимущество перед конкурентами, согласитесь.
Нам остается наблюдать за развитием сервиса в России, я очень надеюсь, что в этом году «Кошелёк» получит нормальный красивый дизайн приложения, а также серьезно расширит список банковских продуктов и запустит транспортную карту для Москвы. В этом случае лично я точно стану одним из пользователей этого сервиса.
Читайте также: