Приложение Android / Iphone будет получать доступ к данным приложения с сервера.
[Django-Python]
Как я могу защитить связь с мобильным приложением?
Ожидание : Достаточно безопасно для конфиденциальной информации, такой как пароли, не должно быть прямого способа дешифрования, кроме перебора.
Мои требования :
- Аутентификация [Только приложение авторизовано]
- Целостность [Сообщения не должны изменяться в промежутках между ними]
- Конфиденциальность [Сообщение не должно читаться при прослушивании]
Мои усилие :
- SSL аутентифицирует только Сервер, но не клиента.
- Я не могу использовать симметричное шифрование [Обеспечивает только конфиденциальность]
- Цифровая подпись невозможна [Отсутствует конфиденциальность]
- PGP выполняет все 3 требования.
Проблема :
- PGP требует хранения ключей в клиентском приложении.
- Похоже, нет надежного способа защиты ключей в клиентском приложении.
- Если ключ отсутствует, то PGP или симметричное шифрование одинаково уязвимы.
- Обратное проектирование ключей PGP или симметических ключей одинаково сложно.
- В этом случае PGP является бессмысленной нагрузкой на мобильный процессор.
- OAuth снова бесполезен, поскольку у него также есть клиентский ключ.
Итак, как я могу / должен двигаться дальше в этом направлении?
Как отрасль решает эту проблему?
Следует ли мне применять случайный подход:
- Использовать простой SSL и скрестить пальцы? , поскольку аутентификация невозможна, если ключи украдены? (При этом возможна только серверная аутентификация)
Обновление:
Вывод заключался в использовании AES, поскольку, если я могу сохранить ключ в безопасности, то я так же хорош, как SSL.
Кроме того, я могу постоянно менять ключ для большей безопасности.
Внесите свой вклад, если вы думаете, что есть лучший способ, прочитайте всю публикацию перед публикацией.
задан Yugal Jindle 10 February 2012 в 06:05
поделиться