Домой Android разработкаUI и UX. Графика в Android Экран блокировки пин кодом для вашего приложения

Экран блокировки пин кодом для вашего приложения

by dilix
Экран ввода пин кода

Защита от несанкционированного доступа к смартфону — обязанность владельца. Наша задача, как разработчика приложения, дать возможность пользователю ограничить доступ к программе. Один из способов — добавить экран ввода пин кода (pinlock screen). Поговорим о том, как правильно  его реализовать и что надо учитывать при разработке.

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

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

Алгоритм защиты приложения пин кодом

С точки зрения пользователя приложения схема работы защиты паролем выглядит просто

  • При установке пароля приложение сохраняет пин код
  • Потом при следующем вводе программа сравнивает вновь введенный код с запомненным ранее

Выглядит все просто, не так ли?

Но давайте рассмотрим этот алгоритм с точки зрения безопасности. Если злоумышленник завладел вашим устройством, что помешает ему получить доступ к памяти программы и достать оттуда пин код?

Усложнить получение пароля можно следующими способами

  • Не хранить пароль в чистом виде
  • Защитить место хранения пин кода
  • Ограничить число попыток взлома

Хэширование и шифрование пароля

Допустим хакеру удалось получить доступ ко всем данным которое хранит приложение. Пароли и коды должны быть в таком виде, в котором они будут бесполезны сами по себе. В то же время необходимо иметь возможность проверить корректность вводимого значения. Этого можно достигнуть с помощью хеширования.

Отличия хэширования и шифрования

Шифрование подразумевает наличия ключа (или ключей) и возможность восстановить исходную строку. Хэширование же осуществляется известным алгоритмом, который работает в одну сторону. Оно гарантирует, что одна и та же строка всегда будет выдавать один и тот же результат. Например алгоритм хэширования sha-1 для строки пароль вернет строку 5670b4358ae287fe8e74c2ff6f6293f905409077. Возможность коллизий, когда две разных строки дают один и тот же результат, зависят от качества алгоритма.


При хранения пин кода следует использовать именно хэширование. Ведь перед нами не стоит задачи восстановить сохраненный пароль. Проверить правильно ли пользователь повторил раннее введенный возможно имея лишь хэш.

Безопасное хранение пин кода

Хэш пароля может быть полезен для подбора кода перебором. Допустим код состоит из 4 символов. Тогда существует всего 10 000 вариантов. Это значит, что за 10 000 итераций, зная алгоритм хеширования, можно подобрать изначальный пинкод. Для этого достаточно на каждом шаге проверять посчитанный хэш с тем, что достали из памяти.

Узнать алгоритм хэширования можно, например, при реверс инжиниринге. Частично защитить от этого поможет обфускация вашего android приложения.

Усложнить доступ к хранимому пин коду можно, храня его в Android Keystore. Он позволяет хранить данные в зашифрованном (именно таком, а не хэшированном) виде. Всегда помним.

Обеспечить 100% безопасность невозможно физически.

В Android 4.3 KeyStore, например, имел уязвимость.

Защита от брутфорса

Можно максимально ограничить доступ к внутренностям вашего Android приложения. Но не стоит забывать, что злоумышленник может просто те же 10 000 раз попробовать ввести пинкод руками.

Робот вводит пин код

Для защиты достаточно ввести прогрессивный таймаут. Например после 3его неправильного ввода заставить подождать 5 секунд. Каждая неправильна i-ая попытка будет добавлять i*5 секунд ожидания.

Библиотеки экрана ввода пин кода

Теперь вы знаете на что нужно обращать внимание при реализации экрана ввода пин кода. Самое время посмотреть какие существуют готовые решения. Список библиотек можно найти на android-arsenal. По гибкости настроек и реализации, последнее из того, что я использовал — это Lollipin.

Качество приложения зависит не от только от его защищенности, но и производительности. Читайте также как ее измерять и какие есть для этого инструменты.

Хочешь обсудить Android разработку?
Заходи к нам Вконтакте, на Facebook и в Телеграм!

Добавить комментарий

Может быть интересно

Этот сайт использует Cookie файлы для улучшения вашего пользовательского взаимодействия. Используя данный сайт вы соглашается с этим. Принять Читать

Политика конфиденциальности и Cookies