{"id":81,"date":"2026-09-29T13:50:51","date_gmt":"2026-09-29T13:50:51","guid":{"rendered":"https:\/\/578bd2a683.7a9.mcms.ovh.net\/?article=anti-tearing-principe-et-mecanismes"},"modified":"2026-09-29T13:50:51","modified_gmt":"2026-09-29T13:50:51","slug":"anti-tearing-principe-et-mecanismes","status":"publish","type":"article","link":"https:\/\/578bd2a683.7a9.mcms.ovh.net\/?article=anti-tearing-principe-et-mecanismes&lang=fr","title":{"rendered":"L&#8217;anti-tearing : principe et m\u00e9canismes"},"content":{"rendered":"<h3>Tearing et anti-tearing<\/h3>\n<p>Une carte \u00e0 puce sans contact est un objet \u00e9lectronique d\u00e9pourvu de sa propre source d&#8217;alimentation : elle ne fonctionne que lorsqu&#8217;elle est t\u00e9l\u00e9aliment\u00e9e par le champ RF du lecteur.<\/p>\n<p>Or l&#8217;utilisateur qui tient la carte peut, \u00e0 tout moment, l&#8217;\u00e9loigner du lecteur. C&#8217;est ce que l&#8217;on appelle le tearing (l&#8217;arrachement). La source d&#8217;alimentation qui fait fonctionner la puce est par nature fragile, puisque l&#8217;utilisateur peut la faire dispara\u00eetre \u00e0 tout instant. Si l&#8217;alimentation dispara\u00eet pendant que la puce \u00e9crit dans une m\u00e9moire non volatile (E2PROM ou flash), la zone m\u00e9moire concern\u00e9e peut se retrouver \u00e9crite partiellement, voire corrompue.<\/p>\n<p>Cette probl\u00e9matique existe aussi pour les cartes \u00e0 contact, mais elle y est moins g\u00eanante : l&#8217;utilisateur a l&#8217;habitude de laisser sa carte dans le lecteur jusqu&#8217;\u00e0 la fin de la transaction. Les distributeurs automatiques de billets ou les horodateurs disposent d&#8217;ailleurs souvent d&#8217;un lecteur motoris\u00e9 qui \u00ab retient \u00bb la carte le temps de la transaction.<\/p>\n<p>L&#8217;anti-tearing d\u00e9signe l&#8217;ensemble des contre-mesures, mat\u00e9rielles et\/ou logicielles, qui \u00e9vitent qu&#8217;un arrachement pendant une \u00e9criture ne corrompe le contenu stock\u00e9 en m\u00e9moire.<\/p>\n<p>Prenons l&#8217;exemple d&#8217;une carte stockant un nombre de points ou de jetons, dont la valeur initiale est 12345. Le terminal souhaite ajouter 1 pour obtenir 12346. Si la carte ne dispose d&#8217;aucune mesure d&#8217;anti-tearing et qu&#8217;elle est arrach\u00e9e pendant que sa logique interne r\u00e9\u00e9crit la valeur en m\u00e9moire, la valeur finale pourrait devenir 12300, 123FF, 00000, FFFFF, ou toute autre valeur incoh\u00e9rente.<\/p>\n<p>Cette valeur est g\u00e9n\u00e9ralement associ\u00e9e \u00e0 une somme de contr\u00f4le ou \u00e0 un contr\u00f4le d&#8217;int\u00e9grit\u00e9 et d&#8217;authenticit\u00e9 cryptographique (CMAC), qui permet de d\u00e9terminer plus tard si elle est correcte. Mais si elle ne l&#8217;est pas, comment retrouver la valeur qui aurait d\u00fb \u00eatre \u00e9crite ?<\/p>\n<h3>Les m\u00e9thodes d&#8217;anti-tearing<\/h3>\n<p>La m\u00e9thode la plus simple consiste \u00e0 utiliser une technique de \u00ab miroir \u00bb : doubler la m\u00e9moire de stockage et \u00e9crire successivement dans une zone puis dans l&#8217;autre.<\/p>\n<p>Si l&#8217;\u00e9criture est interrompue, l&#8217;ancienne valeur reste disponible dans l&#8217;une des deux zones, utilis\u00e9e comme sauvegarde, ce qui permet de restaurer un \u00e9tat coh\u00e9rent au prochain rallumage. En contrepartie de cette simplicit\u00e9, cette m\u00e9thode peut augmenter le co\u00fbt de la carte, puisque la taille de la m\u00e9moire de stockage doit \u00eatre doubl\u00e9e.<\/p>\n<p>Pour les cartes qui ne disposent pas d&#8217;anti-tearing natif, il est possible d&#8217;impl\u00e9menter le m\u00eame principe de \u00ab miroir \u00bb au niveau applicatif, en stockant chaque donn\u00e9e en double. En contrepartie, la m\u00e9moire utile est divis\u00e9e par deux et le temps de transaction est doubl\u00e9.<\/p>\n<p>Une autre m\u00e9thode consiste \u00e0 doter la puce d&#8217;un condensateur et d&#8217;une m\u00e9moire tampon. Lorsque le terminal demande une \u00e9criture, celle-ci n&#8217;est pas r\u00e9alis\u00e9e directement dans la m\u00e9moire de stockage non volatile, mais plac\u00e9e en attente dans la m\u00e9moire tampon volatile. Une fois toutes les donn\u00e9es attendues re\u00e7ues, la carte v\u00e9rifie sa source d&#8217;alimentation et le niveau de charge de son condensateur. Si celui-ci a accumul\u00e9 suffisamment d&#8217;\u00e9nergie, l&#8217;\u00e9criture peut d\u00e9buter car la carte sait qu&#8217;elle pourra la terminer m\u00eame en cas d&#8217;arrachement. Si l&#8217;alimentation n&#8217;est plus pr\u00e9sente et que le condensateur n&#8217;a pas assez d&#8217;\u00e9nergie, l&#8217;\u00e9criture n&#8217;a tout simplement pas lieu.<\/p>\n<p>Ces deux m\u00e9thodes peuvent se combiner pour aboutir, sur certaines cartes, \u00e0 un m\u00e9canisme transactionnel puissant. Plut\u00f4t que de prot\u00e9ger chaque \u00e9criture individuellement, l&#8217;anti-tearing coupl\u00e9 \u00e0 un m\u00e9canisme transactionnel garantit l&#8217;atomicit\u00e9 d&#8217;une cha\u00eene de plusieurs \u00e9critures : soit elles r\u00e9ussissent toutes, soit le contenu pr\u00e9c\u00e9dent est pr\u00e9serv\u00e9.<\/p>\n<p>L&#8217;int\u00e9r\u00eat d&#8217;un tel m\u00e9canisme transactionnel est aussi d&#8217;acc\u00e9l\u00e9rer la reprise sur erreur, ce qui compte pour des applications comme le transport. Si l&#8217;utilisateur retire sa carte pendant la transaction, le terminal signale l&#8217;erreur et refuse l&#8217;acc\u00e8s ; l&#8217;utilisateur repr\u00e9sente alors sa carte et le terminal doit relancer un traitement complet, ce qui prend du temps et risque de compter deux trajets au lieu d&#8217;un. Si la carte dispose d&#8217;un anti-tearing transactionnel, le terminal peut simplement relire le dernier \u00e9v\u00e9nement inscrit dans son journal de transactions : s&#8217;il est coh\u00e9rent avec son propre historique, il peut imm\u00e9diatement laisser passer l&#8217;utilisateur.<\/p>\n<p>Les cartes sans contact de milieu et de haut de gamme int\u00e8grent le plus souvent un m\u00e9canisme d&#8217;anti-tearing qui prot\u00e8ge leurs m\u00e9tadonn\u00e9es : zones de configuration, cl\u00e9s cryptographiques, organisation du syst\u00e8me de fichiers. En revanche, l&#8217;anti-tearing appliqu\u00e9 aux zones de donn\u00e9es n&#8217;est pas syst\u00e9matique : il doit, le cas \u00e9ch\u00e9ant, \u00eatre activ\u00e9 fichier par fichier d\u00e8s le formatage initial.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Comment prot\u00e9ger les donn\u00e9es d&#8217;une carte \u00e0 puce sans contact contre une \u00e9criture interrompue : le principe de l&#8217;anti-tearing.<\/p>\n","protected":false},"featured_media":0,"template":"","class_list":["post-81","article","type-article","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/578bd2a683.7a9.mcms.ovh.net\/index.php?rest_route=\/wp\/v2\/article\/81","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/578bd2a683.7a9.mcms.ovh.net\/index.php?rest_route=\/wp\/v2\/article"}],"about":[{"href":"https:\/\/578bd2a683.7a9.mcms.ovh.net\/index.php?rest_route=\/wp\/v2\/types\/article"}],"wp:attachment":[{"href":"https:\/\/578bd2a683.7a9.mcms.ovh.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=81"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}