Analyste technique du pass Vigik universel

Nous allons voir et comprendre toutes les données présentes dans un pass universel Vigik lorsque nous en extrayons les données et analysons son contenu par rétro-ingénierie.

Explications des données contenues dans le pass Vigik

Contenu d'un pass Vigik
Données contenues dans un Pass Universel

Dans le block 0 du secteur 0, on retrouve l’UID, ainsi que la clé de contrôle correspondante (Checksum en anglais), sur les cinq premiers octets. Le restant du block 0 correspond aux données constructeur, sans grande importance. L’octet 0x52 à l’offset 0x00000010 n’a pas été identifié, il n’est d’ailleurs pas utile pour le fonctionnement.

La valeur 0x1049 à l’offset 0x00000012 indique à la centrale d’aller lire dans le secteur 1 : la centrale comprend à ce moment-là que le badge qu’elle lit est un passe Vigik universel. Au tout début, elle essaie de lire le secteur 0 avec la clé Hexact 0x484558414354 (le test ayant été effectué sur une centrale Hexalight) ou bien avec la clé par défaut 0XA0A1A2A3A4A5. Dans le cas d’une clé par défaut, elle sait que c’est un pass.

Les trois valeurs 0x1649 sont de simples aides mémoire (pour qui ?), car ignorées par la centrale. Je pensais d’abord qu’elles faisaient le lien avec les trois secteurs contenant la signature RSA, mais la centrale ouvre la porte tout de même si l’on supprime ces trois valeurs.

Par la suite, la centrale va lire les données en clair du secteur 1 : si la date est périmée, ou bien si des données nécessaires sont erronées ou manquantes, la centrale refuse le badge et arrête sa lecture. En clair, elle vérifie si la date et le timestamp correspondent bien à une période n’excédant pas 84 h : Exemple, nous sommes le 19 août, si le timestamp indique 72 h de validité, soit trois jours, et que le badge a été rechargé le 17, alors c’est ok, car 19-17 = 2 jours, on est bien dans le timestamp de trois jours de validité.

Pour les horaires d’ouverture, on va se référer au code service : ici on est sûr un code natif la Poste Service Universel, car la valeur à l’offset 0x00000050 indique 0xAA070000. Ainsi, on sait que cette carte ne fonctionne que les jours de semaine, le samedi. Interdiction le dimanche et la nuit.

La centrale note ensuite la version de clé utilisée, il s’agit là de la version 2 qui correspond à la clé RSA 1024 bits, la version 1 était chiffrée en 768 bits.

Enfin, la centrale va vérifier si les données en clair ont bien été signées numériquement : la borne qui a chargé la carte dispose de la clé privée RSA qui permet de signer les données en clair, sous forme d’une signature RSA sur 1024 bits. On rappelle que 8 bits est égal à 1 octet. On constate que la signature contenue dans les secteurs 3, 4 et 5 contient bien 128 octets.

128×8 = 1024, on a donc bien notre signature de 1024 bits.

Contenu du dump d'un pass Vigik

Sur ce second schéma, toutes les données nécessaires à l’ouverture de la porte ont été surlignées en rouge. Toutes les autres données peuvent être supprimées ou modifiées sans incidence sur l’ouverture de la porte. L’UID est pris en compte lors de la génération de la signature, la Poste avait anticipé les copies de ses badges. Par ailleurs, les Access conditions du secteur 0 indiquent l’interdiction d’écrire sur le block 0 qui naturellement est en lecture seule, encore une fois, la Poste avait probablement anticipée l’arrivée des tags à block 0 modifiable.

La signature contenue dans les secteurs 3, 4 et 5 est générée à partir des données en clair du secteur 1 surlignées : il y en a très peu, et pour des raisons de sécurité, lorsque la borne signe le badge, elle prend toutes les données en clair du secteur 1 surlignées, puis ajoute du padding de seize 0, puis recommence jusqu’à atteindre 1024 bits de données, qui sont signés dans la foulée.

Bien entendu, les Crypto1 et les Access Conditions ne sont pas pris en compte pour la signature, mais restent néanmoins vitales pour lire le pass Vigik.

On constate que lorsqu’un pass Vigik valide est présenté devant une centrale d’immeuble Vigik, celle-ci incrémente le compteur situé à l’offset 0x00000040. Ce compteur est sur 2 octets, ce qui fait une valeur max de 0xFFFF, soit 65536 passages.

Il est important de noter également que l’incrémentation est obligatoire pour ouvrir la porte : si la centrale ne peut pas écrire sur le compteur, Access conditions modifiées en conséquence, la porte refuse le pass. Il est possible que ce système ait été mis en place pour contrôler le nombre de passages des postiers et prestataires de services.

Après des tests d’ouverture sur des centrales récentes, on constate que celles-ci ignorent le pass Vigik s’il est équipé d’une backdoor, de la même manière qu’un badge résident cloné sur un « Chinese Magic Tag », envoi d’une commande 0x40 pour interroger la backdoor, une carte classique ne reconnaît pas cette commande et ne répondra pas, donc s’il y a réponse = backdoor et donc le pass est à ignorer.

Conclusion

Seule la clé RSA 1024 bits empêche la fabrication d’un pass universel, néanmoins les centrales d’immeubles équipées de ce système ne permettent pas qu’un pass Vigik possède une validité de fonctionnement supérieure à 84 h, si c’était le cas, celui-ci serait refusé par la centrale Vigik. Même si la clé venait à être cassée, Il serait impossible de générer un pass universel à validité permanente.

Autres sujets

Pass Vigik et badge d'immeuble
Date de création
Nom de l'article
Pass Vigik Universel
Note
51star1star1star1star1star
Logiciel
Pass Vigik Universel
Logiciel
Windows
Software Category
Vigik