Les codes déroulants nécessitent plusieurs parties pour fonctionner correctement. Ici, je vais décrire une implémentation générique qui utilise toutes les parties d'une manière spécifique. D'autres systèmes sont des variations sur ce thème, mais utilisent généralement plusieurs des mêmes techniques de manière similaire. Plutôt que d'essayer de décrire l'implémentation complète et comment elle fonctionne à la fois, je vais décrire un système simple et ajouter de la complexité au fur et à mesure jusqu'à ce que nous atteignions un système cryptographiquement sécurisé.
Un code tournant non cryptographique est simplement un émetteur et un récepteur qui utilisent tous deux le même générateur de nombres pseudo-aléatoires (PRNG). Ce générateur contient deux informations importantes: un calcul et le nombre généré précédemment. Le calcul est généralement une équation de rétroaction linéaire qui peut être représentée par un seul nombre. En alimentant le PRNG avec le numéro précédent et en gardant le numéro de rétroaction identique, une séquence spécifique de nombres est générée. La séquence n'a pas de séquences répétées jusqu'à ce qu'elle ait parcouru tous les nombres qu'elle peut générer, puis elle recommence avec la même séquence.
Si la télécommande et l'émetteur connaissent le numéro de rétroaction et le numéro actuel, alors lorsque la télécommande transmet le numéro suivant, le récepteur peut le tester par rapport à son propre générateur. S'il correspond, il s'active. Si ce n'est pas le cas, il parcourt la séquence jusqu'à ce qu'il trouve le numéro envoyé par la télécommande. Si vous appuyez à nouveau sur la télécommande, elle devrait correspondre et elle s'activera car la transmission précédente a déjà synchronisé les générateurs de numéros. C'est pourquoi vous devez parfois appuyer deux fois sur le bouton de déverrouillage - votre récepteur ou émetteur n'est pas synchronisé.
C'est la partie continue du code. Si le PRNG est assez long, il est très difficile de trouver le numéro de rétroaction sans plusieurs nombres dans la séquence consécutive, ce qui est difficile à obtenir en utilisation normale. Mais ce n'est pas cryptographiquement sécurisé.
En plus de cela, vous ajoutez un cryptage typique. Le constructeur du véhicule utilise une clé secrète spécifique pour l'émetteur et le récepteur. Selon le fabricant, vous pouvez constater que chaque modèle et chaque année ont un code différent, ou ils peuvent partager le code entre plusieurs modèles de véhicules et sur plusieurs années. Le compromis est que chacun nécessite alors de stocker une télécommande différente, mais le problème avec le partage d'un code sur de nombreux modèles est que s'il est cassé, plus de voitures sont vulnérables.
Derrière le cryptage, vous avez des informations sur les boutons, le numéro généré par PRNG et quelques informations sur le numéro de rétroaction. Pas assez pour faire le PRNG à partir de zéro, mais assez pour qu'après un certain nombre d'appuis sur un bouton, et avec quelques informations internes sur l'espace limité, un numéro de rétroaction puisse impliquer (encore une fois, fabricant, spécifique à la ligne), puis le récepteur peut, après plusieurs formations transmissions, déterminer le numéro de rétroaction et commencer à suivre le PRNG pour cette télécommande.
Le code tournant est uniquement destiné à arrêter les attaques de relecture. Le cryptage est destiné à sécuriser le code tournant pour éviter qu'il ne soit cassé. Avec l'un ou l'autre, le système serait trop facile à casser. Étant donné que le fabricant contrôle à la fois l'émetteur et le récepteur, la formation n'implique pas la cryptographie à clé publique ni rien de particulièrement impliqué. Il empêche également les télécommandes du marché secondaire de fonctionner dans les voitures avec ce type de système.
Le roulement de code n'est cependant pas étanche. L'ancien système keeloq a été attaqué avec succès il y a seulement quelques années (après une décennie d'utilisation), de sorte que le code de cryptage du fabricant peut être trouvé et les codes de roulement peuvent être trouvés plus facilement. Plus tôt que cela, il a été attaqué de manière à permettre aux gens de prendre des véhicules sans réellement enfreindre le code. En réponse, la nouvelle clé de chiffrement est de 60 bits. Pas aussi sûr que de nombreux systèmes de chiffrement modernes, mais suffisamment sûr pour qu'il durera probablement encore de nombreuses années avant qu'il ne soit cassé.