Обеспечение безопасности связи [Аутентичность, конфиденциальность и целостность] с помощью мобильного приложения?

Приложение Android / Iphone будет получать доступ к данным приложения с сервера. [Django-Python]

Как я могу защитить связь с мобильным приложением?

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

Мои требования :

  • Аутентификация [Только приложение авторизовано]
  • Целостность [Сообщения не должны изменяться в промежутках между ними]
  • Конфиденциальность [Сообщение не должно читаться при прослушивании]

Мои усилие :

  • SSL аутентифицирует только Сервер, но не клиента.
  • Я не могу использовать симметричное шифрование [Обеспечивает только конфиденциальность]
  • Цифровая подпись невозможна [Отсутствует конфиденциальность]
  • PGP выполняет все 3 требования.

Проблема :

  • PGP требует хранения ключей в клиентском приложении.
  • Похоже, нет надежного способа защиты ключей в клиентском приложении.
  • Если ключ отсутствует, то PGP или симметричное шифрование одинаково уязвимы.
  • Обратное проектирование ключей PGP или симметических ключей одинаково сложно.
  • В этом случае PGP является бессмысленной нагрузкой на мобильный процессор.
  • OAuth снова бесполезен, поскольку у него также есть клиентский ключ.

Итак, как я могу / должен двигаться дальше в этом направлении? Как отрасль решает эту проблему?

Следует ли мне применять случайный подход:

  • Использовать простой SSL и скрестить пальцы? , поскольку аутентификация невозможна, если ключи украдены? (При этом возможна только серверная аутентификация)

Обновление:

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

33
задан Yugal Jindle 10 February 2012 в 06:05
поделиться