Où plus de 20 millions de cartes de transport sont vulnérables en Russie: nous démontons et développons MIFARE Classic

La norme de carte sans contact MIFARE Classic a été créée il y a plus de 20 ans et, malgré un certain nombre de vulnérabilités constatées depuis, elle est encore largement utilisée (notamment à Moscou et Saint-Pétersbourg). Dans cet article, nous allons rappeler quelles vulnérabilités ont été trouvées et décrire comment les corriger.


Source: Instagram @ pro.ticketing

Traditionnellement, pour de tels articles, nous rappelons que la contrefaçon et la vente de billets en Russie sont poursuivies en vertu de la loi (articles 327 et 165 du Code pénal de la Fédération de Russie), et exhortons les lecteurs à rester du bon côté de la force.

Structure classique MIFARE


La norme MIFARE Classic de NXP est une famille de cartes. Il comprend MIFARE Classic 1K, 4K, EV1 1K, EV1 4K, MIFARE ID, MIFARE Mini. En outre, cette norme peut être émulée par d'autres cartes NXP plus récentes (MIFARE Plus, JCOP et autres).

Le fonctionnement de la carte avec les lecteurs est basé sur la norme ISO 14443A, fréquence 13,56 MHz.
Les cartes MIFARE Classic 1K offrent une zone mémoire organisée en secteurs de 64 octets. Chaque secteur est divisé en 4 blocs de 16 octets de taille:



Pour les cartes 4K, les 2048 premiers octets sont organisés en 32 secteurs de 64 octets, et le reste en 8 secteurs de 256 octets (ou 16 blocs). Le dernier bloc de chaque secteur est appelé une remorque de secteur, il contient les clés et les paramètres d'accès au secteur. Le bloc zéro du secteur zéro est un bloc spécial, verrouillé pour l'écriture, il contient l'identifiant et les informations du fabricant de la carte. Pour qu'une carte ait plusieurs utilisations différentes - par exemple, pour une carte sociale avec des informations sur les avantages, les tickets de métro et de train - les blocs restants du secteur zéro enregistrent comment chaque secteur est utilisé - le répertoire d'application MIFARE (MAD) .

Avant d'accéder au secteur en lecture ou en écriture, il est nécessaire d'autoriser l'utilisation d'une clé à 6 octets. L'autorisation se déroule selon un protocole en trois étapes similaire à celui décrit au chapitre 5.2.2. norme ISO / IEC 9798-2: 1999. L'algorithme de cryptage de streaming propriétaire CRYPTO1 est utilisé:



  1. Le lecteur envoie une demande d'autorisation, indiquant le numéro du secteur sur lequel l'autorisation a lieu.
  2. La carte lit la clé d'accès dans la mémoire interne, génère une séquence aléatoire et la renvoie au lecteur.
  3. Le lecteur calcule la réponse à l'aide de la clé d'accès au secteur et de l'algorithme de cryptage CRYPTO1, puis l'envoie avec une nouvelle séquence aléatoire générée.
  4. La carte vérifie la réponse calculée par le lecteur. Il calcule ensuite la réponse à l'appel du lecteur et la renvoie.
  5. Le lecteur vérifie la réponse de la carte.

La transmission ultérieure du contenu des secteurs s'effectue sous forme cryptée. Si vous devez vous connecter à un autre secteur (la soi-disant autorisation secondaire), une nouvelle autorisation est effectuée. La principale différence est que l'ensemble de l'échange est d'abord chiffré avec l'ancienne puis avec la nouvelle clé.

Vulnérabilités connues de MIFARE Classic


La cryptographie cartographique est bien documentée. La vulnérabilité de l'implémentation de la carte générateur de nombres pseudo aléatoires (PRNG) et la vulnérabilité de l'algorithme CRYPTO1 sont trouvées. En pratique, ces vulnérabilités sont utilisées dans les attaques suivantes:

  1. Côté obscur - l'attaque exploite la vulnérabilité PRCH. Fonctionne sur les cartes MIFARE Classic jusqu'à la génération EV1 (dans EV1, la vulnérabilité PRNG a déjà été supprimée). Pour une attaque, vous n'avez besoin que d'une carte, vous n'avez pas besoin de connaître les clés.
  2. Nested - l'attaque exploite la vulnérabilité CRYPTO1. L'attaque est faite sur des autorisations secondaires, donc pour une attaque, vous devez connaître une clé de carte valide. En pratique, pour le secteur zéro, ils utilisent souvent des clés standard pour travailler avec MAD - ils partent de lui. Fonctionne pour toutes les cartes sur CRYPTO1 (MIFARE Classic et son émulation). L'attaque a été démontrée dans l'article «Vulnérabilité de la carte Psyllium: vulnérabilité dans la carte de transport terrestre de Saint-Pétersbourg».
  3. Attaque en écoutant l'échange - l'attaque utilise la vulnérabilité CRYPTO1. Pour attaquer, vous devez espionner l'autorisation principale entre le lecteur et la carte. Cela nécessite un équipement spécial. Fonctionne pour toutes les cartes sur CRYPTO1 (MIFARE Classic et son émulation). L'attaque a été démontrée dans l'article «Hacking Citycard transport cards (Nizhny Novgorod)».

Tout cela en pratique vous permet d'obtenir des clés d'accès à tous les secteurs de la carte, n'ayant qu'une carte en main, initialisée avec des clés d'accès. En outre, une attaque de relecture sur le contenu de la carte peut être effectuée ou un clone de la carte peut être effectué sur des blancs spéciaux avec un identifiant de carte réinscriptible.

De plus, il existe une vulnérabilité dans l'infrastructure des clés d'accès. Comme la cryptographie sur CRYPTO1 est implémentée du côté d'un lecteur de carte (CRYPTO1 est implémentée uniquement dans le matériel), il s'ensuit que les clés d'accès:

  • soit transféré sur un lecteur avant de travailler avec la carte,
  • soit stocké sur le lecteur lui-même dans un stockage matériel sécurisé (par exemple, MIFARE SAM ),
  • soit stocké dans la mémoire morte du lecteur.

Et si, dans des équipements spéciaux tels que des terminaux d'informations ou des tourniquets, vous pouvez utiliser un stockage sécurisé des clés matérielles, dans le cas des applications Android, il n'y a que la possibilité de transférer des clés et de les stocker dans la mémoire de l'appareil. Cela permet d'intercepter ces clés en piratant l'application ou en analysant le trafic de l'application. Ce qui a été démontré dans l'article «Étude de la sécurité de la carte Troïka».

Méthodes de gestion des vulnérabilités MIFARE Classic


Diversification des clés d'accès


La diversification est le processus d'obtention de clés d'accès par une clé principale en utilisant des données d'entrée uniques à la carte. Le processus d'obtention des clés peut être implémenté dans un logiciel d'application qui fonctionne avec des lecteurs, ou au moyen d'un module SAM.

Par exemple, cela pourrait fonctionner comme ceci:

  1. Comme entrée pour la diversification, l'identifiant de la carte et le numéro de secteur sont utilisés, la clé à laquelle nous voulons recevoir;
  2. Ces données sont chiffrées (dans le module SAM ou le logiciel d'application) avec une clé principale, le résultat est tronqué à 6 octets et utilisé comme clé d'accès au secteur correspondant.



En conséquence, chaque carte reçoit ses clés d'accès de secteur uniques. Même si les clés d'une carte particulière sont compromises, cela n'entraînera pas l'utilisation massive de ces clés. Mais vous devez comprendre que la diversification est une demi-mesure et ne protège pas les cartes uniques contre la rupture et la possibilité de modifier une application Android afin d'intercepter et d'utiliser des clés diversifiées.

Transition vers le niveau de sécurité MIFARE Plus et SL3


Pour résoudre les vulnérabilités de CRYPTO1, la famille de cartes MIFARE Plus a été développée. Les cartes de structure sont similaires à MIFARE Classic, seule la cryptographie des cartes est mise à jour. Ils peuvent fonctionner selon deux modes:

  1. Mode d'émulation MIFARE Classic (ce mode de fonctionnement est appelé niveau de sécurité 1 ou SL1), qui vous permet de les utiliser sur votre infrastructure existante de lecteurs de cartes et ne nécessite aucune modification du logiciel qui fonctionne avec les cartes;
  2. Mode de niveau de sécurité 3 (SL3), qui nécessite l'autorisation des secteurs et le cryptage des échanges de données à l'aide de l'algorithme AES avec l'ajout facultatif d'un insert de sécurité.

La vulnérabilité PRNG a été éliminée sur ces cartes, et donc, en mode SL1, ces cartes sont toujours vulnérables aux attaques sur CRYPTO1, mais en mode SL3 il n'y a actuellement aucune attaque connue.

Contrairement à SL1, l'autorisation et le chiffrement dans SL3 peuvent être implémentés dans le logiciel. Grâce à cela, vous pouvez vous protéger contre l'interception de clés via le client Android. Pour ce faire, le serveur doit effectuer une autorisation et un chiffrement. Ensuite, les clés ne quittent pas le serveur et le client Android se contente de mandater les demandes et les réponses de la carte. Cela nécessitera que l'application se connecte à Internet, ce qui peut être gênant, vous pouvez donc configurer la carte pour que le secteur soit lu avec une clé et l'enregistrement avec une autre clé. Ensuite, l'utilisateur pourra consulter les informations sur la carte hors ligne et il pourra reconstituer le solde ou acheter des billets pour celle-ci uniquement en ligne.

N'oubliez pas que pour la diversification des clés AES, vous pouvez modifier l'algorithme pour les clés de 16 octets de long.

Les cartes de transport existantes basées sur les cartes MIFARE Plus SL1 peuvent être commutées en mode SL3 en deux étapes:

  1. L'infrastructure des appareils fonctionnant avec des cartes (tourniquets, caisses, distributeurs automatiques, terminaux) est en cours de préparation pour fonctionner avec MIFARE Plus. Le logiciel pour les lecteurs est en cours de finalisation en termes de travail avec les cartes.
  2. Les cartes de transport déjà émises basées sur MIFARE Plus sont transférées en mode SL3 - cela peut se produire lors d'une utilisation normale de la carte, par exemple en passant par un tourniquet ou en attachant une carte au terminal d'information. Le processus de transfert de carte est invisible pour le passager et prend environ 100 ms.

Passer à MIFARE DESFire


La cryptographie de la carte MIFARE DESFire est similaire à MIFARE Plus - avant de travailler avec l'application, l'autorisation en trois étapes est effectuée selon l'un des algorithmes de choix de l'émetteur de la carte: DES, 3DES, AES. D'autres échanges avec la carte se produisent sous forme cryptée avec des inserts d'imitation en option.

La carte est fonctionnellement différente de MIFARE Classic. La mémoire de la carte est organisée dans un système de fichiers. Il peut y avoir plusieurs applications sur une carte; chaque application peut avoir plusieurs fichiers.



Le travail avec la carte commence par la sélection de l'application par son identifiant et son autorisation. Vient ensuite le travail avec les fichiers - créer, supprimer, lire, écrire. Les fichiers peuvent être de différents types, par exemple une zone plate de mémoire, un solde de portefeuille, un fichier réinscriptible de façon cyclique.

La principale difficulté de la transition est que vous devez mettre à niveau le logiciel qui fonctionne avec les cartes. Il est nécessaire de passer de l'utilisation de la mémoire divisée en secteurs aux applications et fichiers, et, en conséquence, de changer l'ordre d'autorisation des secteurs en autorisation à l'application et / ou aux fichiers. En termes de matériel, les cartes imposent la même restriction à l'infrastructure des lecteurs que MIFARE Plus.
L'avantage par rapport à MIFARE Plus est qu'il est plus facile de mettre en œuvre des cartes multimarques basées sur MIFARE DESFire - différentes combinaisons de cartes sur un même support: Troika-Strelka, Troika-Podorozhnik, cartes sociales avec la possibilité d'enregistrer des billets pour le transport). Chez MIFARE Plus, cela passe par l'allocation administrative des secteurs sur la carte pour différentes applications. Ici, chaque système peut fonctionner avec l'application dont il a besoin et peut ne pas savoir qu'il existe d'autres applications sur la carte. Le deuxième avantage est que des types de fichiers supplémentaires vous permettent de mettre en œuvre certains scénarios spéciaux - par exemple, pour reconstituer le solde du portefeuille avec une clé d'accès et dépenser l'argent du solde de l'autre ou rembourser le montant dépensé.

Aujourd'hui, les fabricants de cartes SIM (STM, Gemalto, G&D, Oberthur) ont des cartes SIM disponibles dans le commerce et des fonctions de sécurité intégrées avec l'émulation MIFARE DESFire.

La carte Oyster (carte des transports publics de Londres) a été transférée à MIFARE DESFire en 2009; depuis 2010, les cartes MIFARE Classic ne sont plus utilisées. La carte de transport SUBE (Argentine) est en cours de transition vers MIFARE Plus SL3. Dans les transports publics de Dublin, 3 types de cartes: Luas (tram), Dublin Bus et DART (train de banlieue) - ont été construites sur la base de MIFARE Classic et ont été remplacées par une carte Leap déjà basée sur MIFARE DESFire. Les solutions de transport modernes sont le plus souvent initialement construites sur des supports sécurisés.

Passage à d'autres cartes de transport (CALYPSO, CIPURSE, FeliCa)


Du point de vue de la sécurité, ces cartes sont similaires aux cartes MIFARE Plus et DESFire - cryptographie basée sur AES, autorisation en trois étapes, travail avec des simulations, stockage matériel sécurisé - Secure Access Module (SAM) , un certain nombre de cartes peuvent émuler MIFARE Classic. Ils fonctionnent également sur la base de la norme ISO / IEC 14443A.

MIFARE - champion



ABI Research Q1 2017

La part des cartes MIFARE dans les transports dans le monde en 2017 était de 75% et, selon les prévisions, d'ici 2021 ne tombera pas en dessous de 70%.

La part de MIFARE dans le monde est réduite principalement en raison de la croissance des autres cartes, qui incluent principalement les cartes bancaires (EMV) et la virtualisation des cartes (passage aux smartphones) pour remplacer la fonction de transporteur de billets. Les cartes bancaires sont mieux protégées que les cartes de transport - mais vous devez les payer. Le service des cartes bancaires nécessite en ligne, les lecteurs sont plus chers en raison des exigences de certification bancaire, l'opérateur de transport perd du cash en réapprovisionnant ses cartes de transport. Tout cela crée un certain équilibre des forces, grâce auquel les deux standards (MIFARE et EMV) trouvent leurs niches et les occupent.

Le volume des cartes de transport sur des normes autres que NXP (Calypso, CIPURSE) est aujourd'hui inférieur à 5%. Fondamentalement, ces technologies sont concentrées dans des pays où les cartes se sont historiquement développées - le Japon et la France - et jusqu'à présent ne les ont pas dépassées. Cela est compréhensible - la création d'un écosystème local pour la production et le support des cartes n'est pas toujours économiquement justifiée et devrait être soutenue par le marché. Il est possible que la Russie rejoigne un certain nombre de pays qui ont soutenu ces normes. Pour cela, tout d'abord, une solution politique est nécessaire.

Cliquez sur les liens ci-dessous pour plus d'informations sur Mifare Classic:


Conclusion


Nous serons heureux de répondre aux questions dans les commentaires de l'article et sur instagram @ pro.ticketing . En janvier 2019, notre entreprise a ouvert un certain nombre de postes vacants pour un nouveau projet dans le domaine des transports à Moscou, y compris la possibilité d'attirer des équipes de 3-4 personnes . Un accélérateur de startups dans le domaine des nouvelles technologies de paiement et de validation des déplacements dans les transports publics a été ouvert.

Source: https://habr.com/ru/post/fr437414/


All Articles