Как добиться высокого уровня безопасности в мобильных приложениях? - PullRequest
4 голосов
/ 25 октября 2011

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

  1. Как создать сохранить связь между устройством и сервером?
  2. Как идентифицировать устройство и как аутентифицировать пользователя на мобильном устройстве?
  3. Как справиться с возможностью кражи устройства и последующего неправомерного использования данных, хранящихся на устройстве, и доступа, предоставленного устройству?

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

  1. SSL.
  2. Используйте OAuth для предоставления доступа к устройству, затем сохраните маркер доступа AES-зашифрованный . Проверьте личность пользователя, прежде чем разрешить ему доступ к приложению, запросив ключ расшифровки (скорее всего, PIN-код, так как его легче ввести на мобильном устройстве).
  3. Если хранение данных неизбежно, используйте AES шифрование . Либо используйте ключ, упомянутый в 2., либо, альтернативно, сохраните ключ дешифрования на сервере и попросите приложение каждый раз запрашивать его оттуда. В случае кражи отозвать ключ OAuth. (Это также предотвратит получение вором ключа дешифрования с сервера.)

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

Примечание. Это общая концепция, специально не предназначенная для одной операционной системы.

1 Ответ

3 голосов
/ 25 октября 2011

Это открытый и очень общий характер, поэтому SO может быть не лучшим местом. Вы действительно думаете, что можете суммировать это в 3 пункта? Вы даже не можете попытаться пообещать безопасность, не указав конкретные рекомендации, параметры и методы.

  1. «Использовать SSL» само по себе ничего не значит. Существует сто способов неправильного использования SSL: доверять каждому сертификату, использовать слабые шифры, использовать уязвимые версии протокола (SSLv2 и т. Д.), Не проверять отзыв и т. Д. И т. Д.
  2. Использование AES также не гарантирует многого: вы можете быть открыты для атак, если вы используете режим ECB или повторно используете тот же IV в режиме CBC, или ваш IV не является действительно случайным (реальный пример: TLS пытался сократить углы с этим) и т. д. и т. д.
  3. Если вы храните свой ключ шифрования на сервере, это просто еще один вектор атаки: действительно ли вы доверяете серверу (как вы убедитесь, что это ваш собственный?) Для хранения / управления вашим ключом?

Итак, да, множество потенциальных недостатков, и ответ прост: это не так просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...