Quelqu'un pourrait-il expliquer comment fonctionnent les protocoles de code évolutif tels que KeeLoq? Je comprends la prémisse de base selon laquelle ils utilisent un code différent à chaque fois, vous ne pouvez donc pas simplement utiliser l'attaque de relecture, mais je ne comprends pas comment un côté vérifie le bon code, etc.
De plus, comment effectuent-ils une synchronisation initiale si l'index dans les codes glissants n'est pas connu / partagé au préalable?
Si vous devez utiliser Keeloq comme exemple pour expliquer cela, c'est bien, mais je préfère une explication générale des codes roulants.
Réponses:
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é.
la source
J'ai rencontré KeeLoq pour la première fois lors de mes recherches sur la puce d'un ouvre-porte de garage. La fiche technique Microchip explique bien comment cela fonctionne.
En un mot:
L'ajout d'un nouvel émetteur à la base de données du récepteur est vaguement analogue, à un niveau élevé, à la méthode de configuration par pression de bouton pour ajouter des clients à un point d'accès Wi-Fi. Le récepteur est en quelque sorte mis dans un mode par lequel il accepte un nouvel émetteur.
Un nouvel émetteur peut être accepté à partir d'informations transmises dans des messages d'activation ordinaires, si le récepteur et l'émetteur partagent le même ID secret de fabricant. En effet, la clé de chiffrement 64 bits est dérivée de l'ID du fabricant et des informations de série du récepteur. (Voir Sec. 7.1).
Il existe une alternative plus sûre à cela: le "Secure Learn". Ceci est initié d'une manière spéciale sur l'émetteur (trois boutons pressés à la fois). L'émetteur envoie un paquet spécial: une valeur de départ de 60 bits à partir de laquelle la clé de cryptage est dérivée, probablement sans dépendre de l'ID du fabricant ou du numéro de série.
Lorsque le récepteur n'est pas en mode d'apprentissage, il rejette bien sûr les transmissions d'émetteurs qu'il ne connaît pas.
la source