Actuellement je travaille sur un projet embarqué. Le côté client est un MCU 8bits et le côté serveur est un ordinateur.Comment un microcontrôleur de faible puissance peut-il s'authentifier auprès d'un serveur?
Dans le cadre de l'objectif, je veux minimiser les chances des gens copient notre produit. Pendant la phase d'initialisation, le serveur envoie son numéro de série au client et le client fait un calcul simple avec son numéro de série puis renvoie le résultat au serveur. Le serveur vérifie le résultat à une valeur pré-calculée, codée en dur, si le client est authentique.
Le problème est le numéro de série a calculé que renvoyé au serveur est toujours fixe. Toute entreprise de copie peut le comprendre assez facilement avec un analyseur logique. Je veux rendre le numéro de série de transmission semble bits aléatoires de temps en temps, mais être toujours en mesure de décrypter à sa valeur d'origine. A good example using AES encryption (notez chaque fois que vous appuyez sur la chiffrez bouton un texte apparemment aléatoire est généré, mais comme vous le déchiffrer, il revient au texte original.)
En raison de ROM/RAM et limitation de puissance du processus 8bits MCU Je ne peux pas y intégrer une routine AES complète, donc AES est hors de question. Existe-t-il un algorithme simple et efficace juste pour randomiser la transmission?
côté serveur est le codage dans le client C# – wei
(8bits MCU) côté est le codage en C avec la bibliothèque de mathématiques et véritable générateur de nombres aléatoires (TRNG) disponibles. – wei