Ils ont dévoilé une méthode pour cloner des clés de jeton sur des puces NXP

Chercheurs en sécurité NinjaLab ont développé une nouvelle attaque canal latéral (CVE-2021-3011) pour cloner des clés ECDSA stockées sur des jetons USB basés sur des puces NXP.

L'attaque démontré pour les jetons d'authentification à deux facteurs Google Titan basé sur la puce NXP A700X, mais s'applique théoriquement aux jetons cryptographiques Yubico et Feitian utilisant la même puce.

La méthode proposée permet à un attaquant de recréer les clés ECDSA stockées dans le token sur la base des données obtenues par l'analyse du signal électromagnétique émis par le jeton lors de la génération de signatures numériques.

Les chercheurs ont montré que le signal électromagnétique est en corrélation avec les informations de clé éphémère de l'ECDSA, ce qui est suffisant pour récupérer la clé secrète à l'aide de techniques d'apprentissage automatique.

En particulier, la nature du changement de signal permet d'extraire des informations sur des bits individuels lors de la multiplication par un scalaire dans des opérations avec une courbe elliptique.

Pour ECDSA, définir même quelques bits avec des informations sur le vecteur d'initialisation (nonce) il suffit d'effectuer une attaque et de récupérer séquentiellement toute la clé privée. Pour récupérer la clé secrète dans le jeton Google Titan, il suffit d'analyser environ 6.000 opérations de signature numérique en fonction de la clé ECDSA utilisée pour l'authentification à deux facteurs FIDO U2F lors de la connexion à un compte Google.

Pour trouver des faiblesses dans l'implémentation de l'algorithme ECDSA sur les puces NXP ECDSA, une plate-forme ouverte a été utilisée pour créer des cartes à puce NXP J3D081 (JavaCard), qui est très similaire aux puces NXP A700X et utilise une bibliothèque cryptographique identique, mais offre en même temps plus d'opportunités pour étudier le fonctionnement du moteur ECDSA. Pour récupérer la clé JavaCard, il suffisait d'analyser environ 4000 opérations.

Pour mener une attaque, vous devez avoir un accès physique au jeton, c'est-à-dire que le jeton doit être disponible pour que l'attaquant puisse enquêter pendant une longue période. De plus, la puce est blindée avec un écran en aluminium, le boîtier doit donc être démonté, ce qui rend difficile de cacher les traces de l'attaque, par exemple, les jetons Google Titan sont scellés dans du plastique et ne peuvent pas être démontés sans traces visibles. (Comme une option, il est proposé d'imprimer sur une imprimante 3D du nouveau boîtier).

Il faut environ 6 heures pour récupérer la clé d'un compte FIDO U2F et nécessite environ 4 heures supplémentaires pour démonter et assembler le jeton.

L'attaque nécessite également un équipement assez coûteux, qui coûtent environ 10 XNUMX euros, des compétences en rétro-ingénierie de microcircuits et des logiciels spéciaux qui ne sont pas diffusés publiquement (la possibilité de l'attaque est confirmée par Google et NXP).

Pendant l'attaque, Complexe de mesure Langer ICR HH 500-6 utilisé pour tester les microcircuits pour la compatibilité électromagnétique, l'amplificateur Langer BT 706, le micromanipulateur Thorlabs PT3 / M avec une résolution de 10 μm et l'oscilloscope à quatre canaux PicoScope 6404D.

En tant que méthode mise en œuvre côté serveur pour une protection partielle contre l'utilisation de jetons clonés pour l'authentification à deux facteurs, il est proposé d'utiliser le mécanisme de compteur décrit dans la spécification FIDO U2F.

La norme FIDO U2F implique dans un premier temps la présence d'un seul jeu de clés, ce qui est dû au fait que le protocole ne prend en charge que deux opérations de base: l'enregistrement et l'authentification.

Au stade de l'inscription, une nouvelle paire de clés est générée, la clé privée est stockée dans un token et la clé publique est transmise au serveur.

L'opération d'authentification côté jeton crée une signature numérique ECDSA pour les données transmises par le serveur, qui peut ensuite être vérifiée sur le serveur à l'aide de la clé publique. La clé privée reste toujours dans le jeton et ne peut pas être copiée, donc si un nouveau jeton doit être lié, une nouvelle paire de clés est créée et l'ancienne clé est placée dans la liste des clés révoquées.

source: https://ninjalab.io


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.