Conversion d'un score en empreinte numérique

Pour un projet de jeu vidéo

Le problème exposé dans ce sujet a été résolu.

Bonjour tout le monde ! :)

Je finalise actuellement le développement d’un jeu vidéo mobile de chimie organique. Lorsque le joueur termine le jeu, j’aimerais convertir son score final en empreinte numérique qu’il pourrait m’envoyer par copier/coller via les réseaux sociaux et j’y publierais le classement des meilleurs joueurs.

Comme je n’y connais rien à tout ce qui est chiffrage, j’aimerais votre avis sur mon idée:

1) Je définis un sel (que je garde secret) à concaténer à chaque score (exemple: "356sel", "357sel", "358sel", etc.)

2) Lorsque qu’un joueur termine le jeu, le jeu lui donne le hash de son score (exemple: pour "356sel", md5 donne 1315d9259e73c9e9666c9f4be94fb2a9)

3) De mon côté, je fais les hash pour tous les scores possibles entre "1sel" et "1000sel", comme ça je sais si le score que le joueur m’envoie est authentique.

Pensez-vous que ça tient la route ? :honte: Sinon, avez-vous d’autres suggestions ?

Merci d’avance pour votre aide précieuse :)

Salut,

Ton problème est que ta méthode repose sur un sel secret que tu dois forcément donner au client. Donc ça va pas rester un secret.

De manière générale, si c’est le client du jeu seulement qui fait le chiffrement/qui calcule une empreinte, c’est mort pour le côté fiable puisque tu n’as aucun moyen de te protéger contre un type qui inverse le client pour connaitre la fonction de chiffrement/de calcul d’empreinte. Tu peux rendre la chose plus ou moins difficile, et ça dépend du niveau de protection que tu souhaites (peut être que ton idée suffit si tu t’atttends pas à avoir de la fraude solide), mais tu n’auras pas de protection parfaite sans avoir un protocole qui implique des aller-retours chiffrés entre un serveur et un client.

Dans ton cas, comme il semblerait que le score est calculé côté client, c’est probablement mort. Tu demandes à un client de générer un message d’une manière qui ne serait pas connue par le client, c’est pas possible, donc c’est juste une question d’à quel point tu veux rendre la fraude difficile.

Par ailleurs dans ta solution, pourquoi tu t’embêtes à calculer une table de tous les scores possibles ? Il suffit que la personne envoie le score et l’empreinte et que tu vérifies leur cohérence. Mais t’auras pas plus de sécurité que si ton jeu envoie directement un email avec le score chiffré avec une clé publique dont tu as la clé privée.

+2 -0

Merci pour ta réponse !

Mince je n’avais pas pensé que quelqu’un de motivé à tricher puisse cracker ma façon de hasher. Après il n’y a pas beaucoup d’enjeu à tricher et mon jeu ne sera pas grand public vu le public cible… mais autant écarter ce risque si c’est faisable simplement.

Effectivement, j’aimerais que tout reste côté client puisque le jeu ne nécessite aucune connexion à un serveur.

Par ailleurs dans ta solution, pourquoi tu t’embêtes à calculer une table de tous les scores possibles ? Il suffit que la personne envoie le score et l’empreinte et que tu vérifies leur cohérence.

Pas faux :honte:

Note: j’utilise Unity, il y a peut-être quelque chose qui a déjà été développé dans le genre de mon idée, je vais regarder.

J’ai envie de dire que la solution la moins prise de tête et la plus difficilement cassable est de demander aux gens qui veulent être classées d’enregistrer leur partie en vidéo. Quasi impossible à falsifier, mais tout est simple pour tout le monde.

L’intermédiaire est d’avoir le client qui enregistre un log complet (i.e. complexe et avec lequel tu peux recalculer le score et vérifier que la partie est humainement possible) et qui envoie ça. Difficile à falsifier également.

+2 -0

J’ai envie de dire que la solution la moins prise de tête et la plus difficilement cassable est de demander aux gens qui veulent être classées d’enregistrer leur partie en vidéo.

En fait le jeu contient 35 niveaux (à débloquer en marquant au moins 20 points à chaque niveau), et j’aimerais que je le joueur puisse partager son score final total. D’ailleurs ça me fait réaliser que les scores sont enregistrés dans un fichier (sérialisé mais pas sécurisé)…

L’intermédiaire est d’avoir le client qui enregistre un log complet (i.e. complexe et avec lequel tu peux recalculer le score et vérifier que la partie est humainement possible) et qui envoie ça. Difficile à falsifier également.

Je vais y réfléchir !

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte