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