2009-11-19 4 views
1

Je veux empêcher les utilisateurs d'altérer les données générées dans mon application iPhone, telles que les scores élevés. Donc, je pense à l'aide d'un hachage MD5 des données pertinentes, et un sel de sécurité dur codé dans l'application. Lorsque les données sont relues, je crée un nouveau hachage et le compare à l'ancien hachage. S'il y a une différence, je sais que quelqu'un a triché avec les données.Quelle est la sécurité d'un sel de sécurité dans une application iPhone?

Je devine qu'il va toujours être un moyen pour les gens de la contourner, mais cette méthode faire;

  • Très difficile.
  • Tricky de contourner.
  • Cela ne fait aucune différence.
+0

Pour évaluer vraiment ce besoin d'informations supplémentaires au sujet de l'ancien hachage, où est-il stocké, comment est-il sécurisé. – zaph

Répondre

2

Je dirais que difficile, mais pas très difficile. Il est encore assez simple de passer à travers un débogueur et de regarder le sel chargé dans la mémoire, bien que cela suffise certainement à éloigner la grande majorité des utilisateurs.

Malheureusement, c'est le problème de DRM classique, et n'a pas de solution contre un attaquant suffisamment motivé. Votre meilleur pari est de créer autant d'obstacles que possible, de sorte que cela ne vaille pas le temps de quelqu'un.

Peut-être que le score élevé pourraient en outre quelques détails sur l'état du jeu, qui vous permettra de vérifier les incohérences qui pourraient donner un utilisateur. Par exemple, si vous voyez qu'un utilisateur a atteint 1 000 000 de points mais n'a atteint que le niveau 2, alors vous savez que quelque chose est en place!

Une victoire rapide qui va au moins vaincre un utilisateur exécutant strings contre votre binaire est de s'assurer que la chaîne de sel ne semble pas évidente; n'utilisez pas "saltsaltsalt"!

+1

MD5 a une longueur qui est à court et ne devrait vraiment pas être utilisé dans de nouveaux modèles, SHA-1 ou un ou ses cousins ​​plus récents tels que SHA-256 doivent être utilisés. – zaph

+0

Dans ce cas, le problème n'est pas les collisions mais la dissimulation du sel lui-même. Il est beaucoup plus facile pour un utilisateur d'extraire le sel avec un débogueur que de calculer des collisions (ou d'essayer d'extraire le sel par force brute) donc ce n'est pas un vecteur d'attaque viable. – jnic

+0

SHA-1 n'a pas de sel, aucun n'est nécessaire donc il n'y a pas de problème avec un pirate qui trouve le sel. Les sels sont utilisés avec MD5 car le résultat est trop court. – zaph

Questions connexes