Une application Android/Iphone accède aux données de l'application à partir du serveur. [Django-Python]
Comment sécuriser la communication avec l'application mobile ?
Attente : Suffisamment sûr pour les informations sensibles comme les mots de passe, il ne doit pas y avoir de moyen direct de décryptage, sauf par forçage brutal.
Mes exigences :
- Authentification [Seule l'application est autorisée].
- Intégrité [les messages ne doivent pas être modifiés entre les deux].
- Confidentialité [La communication ne doit pas être lisible si elle est reniflée].
Mon effort :
- SSL n'authentifie que le serveur, pas le client.
- Je ne peux pas utiliser un cryptage symétrique [Fournit uniquement la confidentialité].
- La signature numérique n'est pas possible [Manque de confidentialité].
- PGP remplit pleinement ces trois conditions.
Problème :
- PGP exige de stocker les clés dans l'application du client.
- Il semble qu'il n'y ait pas de moyen sûr de sécuriser les clés sur l'application client.
- Si la clé est perdue, alors PGP ou le cryptage symétrique sont tout aussi vulnérables.
- La rétro-ingénierie des clés PGP ou des clés symétriques est tout aussi difficile.
- Dans ce cas, PGP est une charge insensée pour le processeur mobile.
- OAuth est encore une fois inutile, puisqu'il a aussi une clé client.
Alors, comment puis-je/doit-on avancer sur ce sujet ? Comment l'industrie fait-elle face à cette situation ?
Dois-je mettre en œuvre une approche occasionnelle ?
- Utiliser un simple SSL et croiser les doigts ? Puisque l'authentification n'est pas possible si les clés sont volées ? (Seule l'authentification du serveur est possible avec ce système).
Mise à jour :
La conclusion a été d'utiliser AES, car si je peux garder la clé sécurisée, je suis aussi bon que SSL. De plus, je peux changer la clé au fil du temps pour une meilleure sécurité. Contribuez si vous pensez qu'il y a une meilleure solution, lisez l'intégralité du message avant de le poster.