Analyse de la technologie Keeloq™ Microchip

 

La technologie Keeloq de Microchip. Keeloq™ est une marque déposée par Microchip.

 

Codeurs

 

Les circuits codeurs sont :

 


Format des 66 bits envoyés par un HCS300/301 :

 



Le codage utilisé est un PWM, avec une durée bit de 1200 µs typique (TE=400 µs +/- 30%). Un codage manchester, plus robuste pour la transmission RF, est disponible sur les codeur HCS36x.

 



Circuit

TPreamble

Theader

Thop

Tfix

TGuard

Total

HCS300/301

23 TE

10 TE

96 TE

102 TE

39 TE

270 TE

HCS36x (mode 0 PWM)

31 TE

10 TE

207 TE

10 TE

220 TE


La séquence se répète tant qu'une touche est appuyée, avec une période de 270TE soit 108ms typique. Le bit repeat est à zéro sur la première transmission et à un sur toutes les suivantes.

 


Algorithmes

Les algorithmes de cryptage et de décryptage sont confidentiels, et ne sont pas disponibles librement, ils nécessitent une licence.Noter que les algorithmes de décryptage ont été diffusés en 1998, AN642, AN645, AN652, AN659, AN672... mais ne sont plus disponibles

 

Chaque circuit comporte une E2PROM où sont stockés :

La mise en oeuvre d'un codeur implique forcément une procédure de programmation afin d'initialiser ces valeurs. Microchip proposait une méthode pour générer la clé de cryptage à partir du numéro de série et d'un code constructeur unique sur 64 bits. Noter que c'est le même algorithme qui est utilisé pour générer la clé de cryptage ou pour décrypter la deuxième partie du message. Cet algorithme travaille sur des mots de 32 bits, utilise une clé sur 64 bits, et il utilise des tabulations afin de le rendre non linéaire.







Apprentissage

Une fois que l'émetteur est programmé avec son numéro de série (SN) et sa clé, il doit être déclaré sur les récepteurs.

Le processus d'apprentissage proposé par Microchip est simple et repose sur 2 réceptions successives sans erreurs. Il suppose aussi que le discriminant est déduit du numéro de série, car c'est la seule indication claire disponible pour le récepteur. Typiquement le discriminant sera la partie basse du SN.

Ceci implique aussi que le processus, et en particulier l'algorithme de décryptage (utilisé 3 fois dans la première branche) soit assez rapide pour ne pas rater le deuxième message émis ~100ms après le premier.

 



Pour chaque émetteur, le récepteur doit stocker SN, key et synchro (noter que ce mot est doublé car il est le seul à être réécrit périodiquement dans l'E2PROM, et donc risque d'erreur), soit 4+8+2+2=16 octets par émetteur, ou encore 80 octets pour 5 émetteurs, ou 176 octets pour 11 émetteurs. En plus, chaque récepteur soit posséder le code constructeur (64 bits) pour lui permettre de calculer les clés.

Les exemples de Microchip considèrent toujours des E2PROM externes pour ranger ces données, le code constructeur étant lui dans le code. Il suffirait donc d'espionner le flux entre le micro et l'E2PROM externe pour lire en clair les clés des émetteurs ; cela ne permet pas de remonter au code constructeur, mais cela permet de programmer un clone parfait...

 

Liens