Comment sécuriser les API (clé privée) pour les applications mobiles

Je suis en construction d'un service web qui doit être accessible uniquement pour les applications iOS.
Dans l'avenir, je souhaite développer un site web mobile pour faire mon service également disponible pour d'autres systèmes d'exploitation mobiles.

Maintenant, j'ai tout qui fonctionne grâce à une API. mes utilisateurs peuvent s'inscrire, de recherche, de sociétés, de commander des produits de ces entreprises et le suivi de leurs commandes. Il n'est pas encore activé, mais ça fonctionne..

Je suis confronté à un problème majeur: Comment sécuriser cet?

Depuis quelques jours, j'ai arrêté de codage et j'ai été constamment occupé avec la recherche sur le web, StackOverflow et la Sécurité de l'Information pour savoir comment faire cela. J'ai trouvé que la façon dont amazon sécurise leur API serait la meilleure solution pour moi. La façon dont amazon assure le service est expliqué ici. J'ai modifié un peu pour mon service:

  1. Utilisateur s'enregistre et obtient privée de la clé API + public (identification) clé
  2. Utilisateur entre des informations d'identification et les robinets "se connecter". Application crée de hachage de l'variables + clé privée. Application envoie des variables + horodatage + hash + clé publique de l'API
  3. API de recherche de la clé publique dans la base de données, trouve la clé privée appartenant à clé publique (public si la clé est valide). L'API crée ensuite de hachage de la même manière que l'application n'. Si les hachages sont les mêmes, la demande (log dans ce cas) est exécutée.

Cette manière de sécuriser un service fait sens pour moi, et je peux code plus. mais j'ai un problème majeur et je ne peux trouver aucune solution pour elle:

  • L'utilisateur obtient un public & privé de la clé API lorsqu'un compte est créé. La clé publique peut être envoyé depuis le serveur vers l'appareil de l'utilisateur, parce que ce n'est pas forcément un secret. Depuis l'API privée clé peut jamais être envoyés sur le fil, comment diable puis-je m'assurer qu'un compte connecté sur l'appareil d'un utilisateur connaît le privé clé API qui est créé sur le serveur?

Quelqu'un sait comment résoudre ce problème?? toute aide serait très appréciée!!

OriginalL'auteur Joris416 | 2013-12-09