С тех пор, как я начал изучать мобильные компьютеры, я часто пропускал дискуссии о безопасности. Однако мне кажется, что это главная тема для мобильных компьютеров. У разработки защищенного мобильного приложения есть определенные аспекты:
- Как создать сохранить связь между устройством и сервером?
- Как идентифицировать устройство и как аутентифицировать пользователя на мобильном устройстве?
- Как справиться с возможностью кражи устройства и последующего неправомерного использования данных, хранящихся на устройстве, и доступа, предоставленного устройству?
Возможно, есть и другие, но это ключевые вопросы, я думаю. До сих пор я придумал это решение:
- SSL.
- Используйте OAuth для предоставления доступа к устройству, затем сохраните маркер доступа AES-зашифрованный . Проверьте личность пользователя, прежде чем разрешить ему доступ к приложению, запросив ключ расшифровки (скорее всего, PIN-код, так как его легче ввести на мобильном устройстве).
- Если хранение данных неизбежно, используйте AES шифрование . Либо используйте ключ, упомянутый в 2., либо, альтернативно, сохраните ключ дешифрования на сервере и попросите приложение каждый раз запрашивать его оттуда. В случае кражи отозвать ключ OAuth. (Это также предотвратит получение вором ключа дешифрования с сервера.)
Видите ли вы какие-либо недостатки в этом подходе или видите какие-то моменты, где стратегия может быть улучшена? Я попытался найти баланс между юзабилити и безопасностью, так как кажется, что они противоречат друг другу.
Примечание. Это общая концепция, специально не предназначенная для одной операционной системы.