Category Archives: Misc

Comment sont cryptées les transactions EMV ?

La question suivante a été posée aujourd’hui sur StackOverflow : Quel mécanisme d’encryption est utilisé pour les transactions EMV ?

La réponse est simple : aucun. Les communications entre une carte EMV et un lecteur sans-contact ne sont pas cryptées. Il est facile d’enregistrer les APDUs échangés pendant le dialogue, par exemple à l’aide de l’espion sans-contact Fime SmartSpy.

Pour autant, ça ne signifie pas qu’il est possible d’utiliser ces informations pour cloner la carte ou réaliser des transactions. L’interception du dialogue donne accès à certaines informations (ex : le numéro de carte, l’équivalent des données de la second piste magnétique), mais:

  • il n’y a pas toutes les informations nécessaires au clonage d’une carte magnétique
  • le numéro CVV inscrit au dos de la carte n’est pas disponible, et ne permet donc pas de réaliser des achats en ligne.
  • il est impossible de “rejouer” la transaction, car les données de transaction contiennent deux numéros aléatoires générés par la carte et le terminal, différents pour chaque transaction, et signés par la carte.

Ce dernier point – la signature de la transaction – est le moment où la cryptographie intervient. La carte de paiement contient une clé privée/un certificat utilisé pour signer la transaction, afin que l’acquéreur puisse l’authentifier et la valider. Ce certifcat n’est jamais transmis au lecteur sans-contact, et n’est pas accessible avec les commandes EMV. C’est ce certificat qui est protégé et crypté sur la carte et permettrait de cloner une carte.

Compiler du code .Net en exécutable natif

Aujourd’hui, je suis tombé sur cette annonce de Microsoft   :  la première version bêta de .NET Native.

En bref, .Net Native permet de compiler du code c#/.Net dans un exécutable natif. Les principaux avantages :

  • un gain de performance significatif (ex : les applications du Windows Store utilisant .Net Native démarrent 60% plus rapidement)
  • une empreinte mémoire réduite
  • tout cela en conservant les gains de productivité offerts par C# et .Net par rapport au C/C++

Ces avantages sont particulièrement intéressants. Il y en a un autre moins évident mais tout aussi intéressant : plus de dépendance sur la version du framework .Net installé sur la machine client. Il devient possible de coder avec la dernière version du framework sans obliger les utilisateurs à mettre à jour leur version du framework.

Exemple de transaction EMV InteracFlash

Pour comprendre les mécanismes EMV, il est toujours intéressant d’avoir des exemples d’APDU et de dialogues. Ci-dessous, un exemple d’une transaction EMV réussie (achat sans-contact Interac Flash). Inutile de récupérer les infos de la carte, c’est une carte de test invalide dans le monde réel 🙂 PCD identifie les commandes du terminal, PICC les réponses de la carte InteracFlash :
Continue reading

Example of an Interac Flash EMV transaction

When working on EMV transactions, it’s always interesting to have some APDU examples and dialog sequences. Below is an example of a successful EMV transaction (an Interac Flash purchase). Don’t bother trying to use the card info, it is dummy test info 🙂 PCD identifies the terminal commands, PICC the InteracFlash card responses : Continue reading