web-dev-qa-db-fra.com

Vérifiez que les données soumises par l'utilisateur ont été produites par mon application

Je concevons une application (pour PC), qui est destinée à exécuter des machines d'utilisateurs et à générer un fichier avec certaines données. L'utilisateur téléchargera ensuite le fichier sur le serveur et je souhaite vérifier que ce fichier a été produit par mon application et n'a pas été modifié. Peut-il être fait de manière fiable du tout?

Choses que j'ai envisagées:

  • générer une clé publique sur le serveur et l'envoyer à l'application (la clé peut être reniflé et utilisée pour signer des données arbitraires)
  • données de flux de l'application tel qu'il est généré (mais toujours, des données arbitraires peuvent être envoyées)
  • conservez la clé secrète dans l'application et utilisez-la pour générer un jeton unique (l'application peut être décompilée et récupérée)

Les sources d'applications sont prévues pour être ouvertes à l'utilisateur, mais au cas où il existe une solution qui s'appuie sur l'utilisateur qui ne connaît pas les sources, elles peuvent être fermées. Bien sûr, il y a une option pour tout courir complètement sur le serveur, mais nous envisageons également de l'utilisateur maintenant.

3
Peter Trifanov

Vous devrez l'exécuter entièrement du serveur. La sécurité côté client n'est pas une option viable.

Il n'y a aucun moyen de contrôler les logiciels fonctionnant sur le côté du client. Stockage des clés sur le client, quelle que soit sa protection, est inutile contre un attaquant dédié.

Avoir l'utilisateur d'entrer dans une application en ligne hébergée sur votre serveur est le moyen le plus simple: vous contrôlez le serveur, vous contrôlez tout ce que l'utilisateur peut accéder et vous pouvez vérifier les données sur le serveur avant de vous connecter.

1
ThoriumBR