Vous avez peut-être déjà vu le terme KeeLoq rolling code ou hopping code en référence aux émetteurs et aux récepteurs. Mais qu'est-ce que cela signifie et comment cela fonctionne-t-il ?
Pour en savoir plus
Le code tournant KeeLoq, parfois également appelé code sautillant, est couramment utilisé comme mesure de sécurité pour le cryptage des transmissions par radiofréquence. On peut le trouver dans une grande variété de contextes tels que les ouvreurs de portes de garage, les systèmes de contrôle d’accès, les entrées de voitures sans clé, les déclencheurs de portails automatiques, etc.
Le code tournant fonctionne en empêchant l’enregistrement et la sauvegarde de la transmission, puis en la rejouant ultérieurement pour inciter le récepteur à déverrouiller la porte ou la barrière.
Le code transmis fonctionne comme un mot de passe. Lorsqu’il est activé, un émetteur génère et envoie un signal contenant le mot de passe à son récepteur apparié. Le récepteur analyse le mot de passe pour voir s’il est acceptable. S’il est accepté, le récepteur déclenche alors un relais, permettant le déverrouillage et l’ouverture de la porte ou de la barrière.
Dans un système à code fixe, le mot de passe ne change jamais. Cela rend le système vulnérable aux attaques, car si quelqu’un parvenait à trouver le mot de passe, il pourrait l’utiliser pour accéder sans autorisation. Le code tournant réduit considérablement le risque d’entrée non autorisée car le mot de passe change à chaque utilisation.
Les systèmes de transmission par code tournant utilisent des méthodes de cryptage des données qui permettent à l’émetteur et au récepteur de partager des mots de passe, mais qui rendent leur découverte beaucoup plus difficile pour un attaquant. KeeLoq® est un code à blocs propriétaire qui est l’une des méthodes de cryptage les plus utilisées pour la transmission par radiofréquence.
Le code à sauts KeeLoq utilise un code de transmission de 66 bits, dont 32 bits sont chiffrés. Rien que dans la partie cryptée, il existe près de 4 milliards de combinaisons de codes possibles, ce qui nécessiterait environ 17 ans pour une analyse complète. Les mots de passe transmis ne peuvent être réutilisés régulièrement, afin d’éviter toute interception et tout accès illicite. Une fois qu’un code a été utilisé, il ne sera plus valide jusqu’à ce qu’environ 65 000 autres codes valides aient été utilisés. Dans des scénarios d’utilisation normale, il faudrait plus de 20 ans pour qu’un code redevienne valide.
Pour que le rolling code fonctionne, l’émetteur et le récepteur doivent synchroniser leur génération de code. S’ils ne le font pas, le mot de passe aléatoire envoyé par l’émetteur ne correspondra pas au mot de passe aléatoire attendu par le récepteur. En tant que tel, le terme aléatoire est légèrement trompeur ici. En réalité, l’émetteur et le récepteur utilisent des générateurs de nombres pseudo-aléatoires (Pseudo Random Number Generators, PRNG) pour produire une série de codes de passe apparemment aléatoires pour les personnes extérieures et donc imprévisibles pour les attaquants.
Le PRNG est un algorithme qui garantit que la série de chiffres générés par l’émetteur et le récepteur est identique. Ainsi, chaque fois qu’un code d’accès est produit par l’émetteur, il correspondra à celui généré par le récepteur et permettra l’accès. La séquence de codes n’est donc pas vraiment aléatoire ; l’émetteur et le récepteur doivent partir du même code de départ pour se synchroniser correctement.
Un code est généré chaque fois que l’on appuie sur le bouton de l’émetteur, même s’il est hors de portée du récepteur. S’il est hors de portée, le récepteur ne génère pas de code – l’émetteur et le récepteur ne sont donc pas synchronisés.
Pour surmonter cette limitation, le récepteur stocke une liste des mots de passe à venir, prédéterminés par le PRNG. Dans le code à sauts de KeeLoq, la liste peut compter jusqu’à 1 000 mots de passe futurs. Lorsque l’émetteur revient à portée du récepteur et que l’on appuie sur le bouton, le récepteur peut toujours identifier le code comme l’un des mots de passe à venir et autoriser l’accès. Les codes “manqués” qui ont été générés par l’émetteur alors qu’il était hors de portée sont simplement invalidés et les codes sont à nouveau synchronisés.
KeeLoq bénéficie également de mesures de sécurité supplémentaires en matière de synchronisation. Si le bouton de l’émetteur est pressé 16 fois ou plus alors qu’il est hors de portée du récepteur, le récepteur ne déverrouillera pas la porte ou la barrière lors de la première pression sur le bouton une fois revenu à portée. La resynchronisation ne se produira que lorsque le récepteur recevra deux codes consécutifs correspondants de la liste des codes futurs valides. Dans un système typique, si le bouton de l’émetteur est pressé quelques milliers de fois alors qu’il est hors de portée, il sera définitivement verrouillé par le récepteur et devra être resynchronisé manuellement.