Bonjour,
Pour un projet personnel je commence à pointer une problématique assez importante à propos d'une fonctionnalité d'un programme que je dois réaliser.
En vue d'une communication réseau entre plusieurs acteurs (différents programmes aux buts divers), les machines doivent être identifiables. Un client lorsqu'il parle à un serveur doit indiquer qui il est en premier lieu. Ainsi mon programme doit générer un identifiant aléatoire au premier lancement (une sorte d'installation du programme). Cette génération passée, tout lancement du programme doit utiliser cet identifiant !
Les problématiques sont les suivantes :
- Le programme doit générer un identifiant (l'utilisation de l'ip+port de la machine n'est pas envisagée)
- L'identifiant une fois généré ne doit plus être modifiable, d'aucune façon que ce soit, par l'utilisateur du programme (c'est probablement impossible, mais il faut que cet identifiant soit suffisamment protégé).
Le programme générant un id sera codé en c++ (ce qui importe peu en fait), mais je me pose des questions sur la façon de rendre la plus compliquée possible la modification ultérieure d'un tel identifiant.
J'ai d'abord pensé à un fichier - le client pourrai écrire cet identifiant dans un fichier. Mais ce fichier doit être caché, dans un dossier particulier. Alors le programme pourra regarder à cet endroit si un identifiant existe, alors il pourra l'utiliser. Seulement un fichier est très facilement modifiable, il suffit de trouver le chemin où est stocké l'id pour le modifier.
Idéalement cet id doit pouvoir être récupérable par le programme, qu'il soit visible par l'utilisateur n'est pas un problème en soi, cependant la modification est un problème majeur pour mon programme.
Je me dis qu'il existe forcémment des applications utilisant un tel système, comment tout cela fonctionne, comment faire en sorte de stocker des informations de façon à ce qu'elles soient difficilement modifiables ?
J'espère être clair dans ce que je dis, le problème n'est pas forcemment simple à expliquer
Merci d'avance pour vos réponses, j'ai hâte de vous lire !
edit : y a t'il une carte à jouer si on regarde la date de derniere modification de l'id stocké en fichier ? Un exécutable peut-il se modifier lui-même afin de stocker l'id/cette date de modification directement en lui-même ?
edit2 : si le programme crypte l'identifiant de façon à ce que seul lui sache retrouver cet id s'il le souhaite ? quid de la clé utilisée pour crypter l'id alors ? L'id pourrait être crypté avec clé qui peut être retrouvée par le programme (par le calcul) ?