REDUCTION D'INFLUENCE DES PERTURBATIONS D'UN TERMINAL DE LECTURE DE CARTE A PUCE SANS CONTACT
L'invention porte sur les communications radiofréquences entre un terminal de lecture sans contact et une carte à puce. L'invention vise plus précisément à réduire l'influence des perturbations électromagnétiques sur les communications faisant appel à un protocole par bloc entre le terminal et une carte.
Le standard ISO 14443 définit notamment un protocole de communication radiofréquences de proximité entre une carte sans contact et un terminal de lecture.
La communication comprend plusieurs phases successives. Lors d'une première phase, l'interface radiofréquence du terminal est allumée et réinitialisée. Le terminal émet avec une porteuse à 13,56 MHz. Les cartes situées dans le rayon d'émission redressent- la porteuse émise pour alimenter leurs circuits. Lors d'une deuxième phase, appelée phase d'anticollision, le terminal détermine la présence d'une ou plusieurs cartes dans son rayon d'émission. Le terminal détermine les caractéristiques de ces cartes et en sélectionne certaines. Le terminal échange des paramètres qui lui permettront de communiquer correctement avec les cartes sélectionnées . Les paramètres échangés sont par exemple la taille des trames transmises depuis ou vers le terminal de lecture. Ces deux phases sont définies notamment dans le standard ISO 14443-3.
Selon le standard ISO 14443, les échanges entre un terminal et une carte sont effectués au moyen de blocs 1 dont la structure est détaillée en référence à la figure 1. Chaque bloc comprend un entête, un corps encapsulé contenant des données Info et un épilogue contenant des bits de détection d'erreur EDC. L'entête comprend un champ PCB dont la structure définit soit un I-Bloc, soit un R-Bloc, soit un S-Bloc. L'entête comprend également un champ CID contenant un identifiant de la carte attribué par le terminal lors de la réinitialisation.
Les I-Blocs sont utilisés pour la transmission d'informations de la couche applicative. Des I-Blocs sont notamment transmis par le terminal pour commander l'exécution de tâches par la carte à puce. Les R-Blocs sont principalement utilisés pour la transmission de données de contrôle concernant la couche de transport. Les S-Blocs sont principalement utilisés pour la transmission de commandes non applicatives, notamment la désélection d'une carte par un terminal ou bien une requête de temps de la carte au terminal pour traiter une commande.
Lorsque les informations de la couche applicative sont trop volumineuses pour être transmises de la carte vers le terminal dans un unique I-Bloc, elles sont transmises dans plusieurs I-Blocs par un mécanisme de chaînage illustré à la figure 2. Les informations 2 de la carte sont transmises dans des I-blocs 11, 12, 13 dans la couche de transport. Avant de transmettre chaque nouvel I-Bloc, la carte attend un R-Bloc du terminal contenant un accusé de réception du précédent
I-Bloc. Les R-Blocs 14 et 15 sont donc envoyés par le terminal à réception des I-Blocs 11 et 12.
Lorsqu'un I-Bloc n'est pas reçu de façon satisfaisante par le terminal (notamment lorsque la vérification avec les bits de détection d'erreur signale une erreur) , celui-ci renvoie un R-Bloc signalant une non-réception. La carte émet à nouveau le I-Bloc. Ce fonctionnement est illustré par le diagramme de la figure 3. Le bloc I-Bloc 2 n'étant pas reçu correctement, le terminal émet le R-Bloc R-NOK. La carte émet alors une nouvelle fois I-Bloc2.
Lorsqu'un I-Bloc n'est pas reçu de façon satisfaisante par la carte, celle-ci reste muette afin de ne pas encombrer le canal de communication radiofréquences. Après une certaine durée sans émission de la carte, le terminal transmet à nouveau le I-Bloc, jusqu'à ce qu'il reçoive un I-Bloc provenant de la carte. Ce fonctionnement est illustré par la diagramme de la figure 4. le I-BlocO n'étant pas reçu correctement par la carte, la carte reste muette. Au bout d'une certaine durée sans réponse de la carte, le terminal émet à nouveau I-BlocO. I-BlocO étant correctement reçu par la carte, celle-ci émet une réponse I-Blocl.
Des perturbations environnementales peuvent ainsi conduire à de multiples erreurs de transmission. Les erreurs de transmission de la carte vers le terminal conduisent à la transmission d'un grand nombre de blocs supplémentaires. Le temps d'exécution d'une application
et le temps de transmission entre la carte et le terminal augmentent alors considérablement.
Les erreurs de transmission du terminal vers la carte conduisent également aux mêmes inconvénients. La carte ne répondant pas, le terminal la désélectionne ou interrompt la communication. Un temps considérable est ainsi perdu du fait de cette perturbation, en particulier lors d'une désélection de la carte.
II existe donc un besoin pour un procédé de transmission radiofréquences par blocs entre des première et seconde entités comprenant les étapes suivantes :
-transmission d'un bloc présentant une taille donnée de la première vers la seconde entité ;
-détermination d'un problème de transmission du bloc par une des entités ;
-sélection par une des entités d'une taille de bloc inférieure à la taille de bloc donnée lorsqu'un problème de transmission a été déterminé ;
-transmission ultérieure d'un bloc de la taille sélectionnée par la première entité.
Selon une variante, l'étape de sélection est réalisée seulement si un nombre prédéfini de problèmes de transmission de bloc a été atteint.
Selon encore une variante, le procédé comprend en outre les étapes suivantes :
-mesure d'une période sans problème de transmission ;
-sélection d'une nouvelle taille de bloc supérieure à la taille de bloc sélectionnée précédemment lorsque la période mesurée dépasse un seuil prédéterminé ;
-transmission ultérieure d'un bloc de la nouvelle taille par ladite première entité.
Les entités sont par exemple une carte à puce et un terminal.
Dans un cas, les première et deuxième entités sont respectivement le terminal et la carte à puce. Selon une variante, on prévoit alors qu'un problème de transmission est déterminé lorsque le terminal ne reçoit pas de bloc valide de la carte à puce pendant une durée prédéfinie, et que le terminal effectue ladite sélection de taille de bloc inférieure et transmet un bloc de la taille inférieure sélectionnée à la carte à puce à l'expiration de la durée prédéfinie.
Dans un autre cas, les première et deuxième entités sont respectivement la carte à puce et le terminal.
On peut alors prévoir que : -le terminal détermine le problème de transmission et transmet un bloc signalant le problème à la carte à puce ;
-la carte à puce transmet un bloc de la taille inférieure sélectionnée à réception du bloc signalant le problème.
Selon une variante:
-le terminal détermine le problème de transmission, effectue ladite sélection de taille de bloc inférieure et transmet un bloc indiquant la taille de bloc inférieure sélectionnée ;
-la carte à puce transmet ultérieurement des blocs à la taille inférieure sélectionnée.
Selon encore une variante:
-la carte à puce transmet un bloc de confirmation, à réception du bloc indiquant la taille de bloc inférieure sélectionnée ;
-la carte à puce transmet ensuite des blocs à la taille inférieure sélectionnée.
Selon une autre variante, la transmission est conforme au standard ISO 14443.
On peut prévoir que le bloc indiquant la taille de bloc sélectionnée, et le cas échéant le bloc de confirmation, sont des blocs du type S-Bloc identifiés spécifiquement par les troisième et quatrième bits de leur champ PCB.
Selon une variante, le bloc indiquant la taille de bloc sélectionnée identifie cette taille de bloc dans son champ d'information.
Selon encore une variante, les blocs transmis ultérieurement avec la taille sélectionnée sont du type I-Bloc.
L'invention porte également sur un terminal de communication apte à mettre en œuvre un quelconque procédé ci-dessus. L'invention porte encore sur une carte à puce apte à mettre en œuvre un quelconque procédé ci-dessus.
L'invention sera mieux comprise à la lecture de la description qui suit, accompagnée des dessins annexés qui représentent :
-Figure 1, différentes structures de blocs de données transmis sur la couche transport ;
-Figure 2, un mode classique de chaînage de données transmises de la carte vers le terminal ; -Figure 3, le fonctionnement classique en cas de problème de réception par le terminal ;
-Figure 4, le fonctionnement classique en cas de problème de réception par la carte ;
-Figure 5 à 7, des chronogrammes illustrant les transmissions entre la carte et le terminal selon plusieurs variantes de l'invention;
-Figure 8, la structure d'un S-Bloc mis en œuvre dans le cadre d'une variante.
L'invention propose de réduire la taille des blocs transmis d'une première entité vers une seconde entité lorsqu'un problème de transmission de bloc a été détecté. Ainsi, en présence de perturbations, la probabilité qu'un bloc de taille inférieure subisse un problème de transmission est réduite. De plus, même si un problème affecte également la transmission de blocs de taille inférieure, la taille du bloc à retransmettre est également réduite. De plus, on évite de nombreux cas de désélection d'une entité telle qu'une carte à puce par un tel mécanisme. Le gain de temps et de bande passante peut donc se révéler important dans un environnement perturbé.
Plus précisément, le procédé est mis en œuvre de la façon suivante : un bloc est transmis entre deux entités, en particulier une carte à puce et un terminal. Ce bloc est transmis dans un sens donné et
présente une taille donnée. Un problème de transmission du bloc est déterminé par une des entités. Une taille de bloc inférieure est alors sélectionnée par une des entités, puis utilisée pour les blocs suivants dans le sens de transmission donné.
Par la suite, la première lettre d'une référence de bloc identifiera son type défini dans le standard ISO 14443. Ainsi, les références des blocs commençant par I identifieront des I-Blocs, les références commençant par R identifieront des R-Blocs et les références commençant par S identifieront des S-Blocs.
La figure 5 illustre un exemple de procédé mis en œuvre pour adapter la taille des blocs transmis du terminal vers la carte. Le terminal émet tout d'abord un bloc I-BO d'une taille donnée de 128 octets. La carte reçoit correctement ce I-Bloc et renvoie donc un bloc de confirmation R-OK. A réception du bloc de confirmation, le terminal émet le bloc I-Bl. La réception de I-B 1 par la carte est perturbée par un phénomène extérieur. La carte à puce ne réceptionne donc pas I-Bl correctement et reste alors muette.
Le terminal ne reçoit donc pas de bloc valide provenant de la carte pendant une certaine durée. Le terminal mesure le temps depuis sa dernière émission. Si le terminal n'a pas reçu de bloc valide pendant une durée prédéfinie, il sélectionne une taille de bloc inférieure qu'il utilisera pour les blocs ultérieurs. Dans l'exemple, le terminal transmet le contenu du bloc I-Bl dans les blocs I-Bla et I-Blb présentant une taille de 64 octets seulement. A réception d'un bloc de
64 octets, la carte détermine que les blocs ultérieurement reçus présenteront également cette taille. L'homme du métier déterminera les tailles des blocs à sélectionner en fonction des circonstances .
Les figures 6 et 7 illustrent des exemples de procédé mis en œuvre pour adapter la taille des blocs transmis de la carte à puce vers le terminal. Dans l'exemple de la figure 6, le terminal transmet le bloc I-BO à la carte. En réponse, la carte transmet le bloc I-Bl d'une taille de 128 octets. En réponse, le terminal transmet un bloc de confirmation R-OK. En réponse, la carte à puce émet le bloc I-B2. Ce bloc n'est pas réceptionné correctement par le terminal. Le terminal détermine un problème de transmission du bloc I-B2. Le terminal émet donc un bloc R-NOK signalant le problème et requérant une nouvelle transmission du bloc I-B2. La carte à puce ou le terminal sélectionnent une taille pour les blocs ultérieurs à transmettre. La carte à puce transmet alors les blocs I-B2a et I-B2b, présentant respectivement une taille réduite à 64 octets et contenant les informations du bloc I-B2. Dans cet exemple, c'est la taille du bloc I-B2a qui définit la taille des blocs ultérieurs transmis par la carte.
Dans l'exemple de la figure 7, le terminal détermine un problème de transmission et utilise des S- Blocs pour redéfinir la taille des blocs ultérieurs. Le terminal transmet tout d'abord un bloc I-BO et la carte répond en transmettant le bloc I-Bl (d'une taille de 128 octets) . Le terminal répond par le bloc R-OK pour
confirmer la réception correcte du bloc I-Bl. En réponse, la carte à puce émet le bloc I-B2. Ce bloc n'est pas transmis correctement au terminal. Le terminal détermine donc un problème de transmission de bloc. Le terminal transmet alors le bloc R-NOK à la carte à puce pour signaler le problème et requérir une nouvelle transmission du bloc I-B2. La carte à puce transmet alors à nouveau le bloc I-B2. Lorsqu'un nouveau problème de transmission (non illustré) est déterminé par le terminal, un seuil de problèmes peut être franchi et le terminal peut sélectionner une taille de bloc réduite. Le terminal transmet à la carte un bloc S-FSR dans lequel il indique la taille de bloc sélectionnée. En réponse, la carte fournit un bloc de confirmation de réception S-AR. Le terminal requiert une nouvelle transmission du dernier bloc ayant posé problème par le bloc R-NOK. En réponse, la carte émet un bloc I-B3 présentant une taille de 64 octets.
Afin de limiter la variété de blocs utilisés, on pourra prévoir que le bloc indiquant la taille de bloc souhaitée et le bloc de confirmation aient un contenu identique (aux identifiants de destinataire près) .
La figure 8 illustre un exemple de structure de S- Bloc utilisable dans la variante de la figure 7. La combinaison des troisième et quatrième bits du champs
PCB identifie un bloc de sélection de taille ou un bloc de confirmation de sélection de taille. La taille sélectionnée peut être fixée par la valeur d'un champ de la zone d'informations. Il est notamment possible
d'utiliser des bits RFU (Reserved For Use en langue anglaise) pour identifier la taille sélectionnée.
Cette taille peut par exemple être codée de la façon suivante sur 4 bits :
Pour plus de précision sur la taille souhaitée, on pourrait également coder la taille sur 16 bits.
Différentes lois de réduction de tailles de blocs peuvent être utilisées. On peut notamment envisager une réduction de taille de bloc lorsqu'un compteur -de problèmes de transmission ou le rapport nombre de problèmes de transmission sur le temps dépassent un seuil prédéfini.
Inversement, la carte à puce ou le terminal peuvent déterminer que l'environnement est peu perturbé et que la taille des blocs est inutilement réduite. Dans ce cas, lorsque aucun problème n'a été déterminé pendant une période ou lorsque le rapport nombre de problèmes de transmission sur temps tombe sous un certain seuil, une taille de bloc supérieure peut être sélectionnée et être utilisée pour les blocs transmis ultérieurement.
On obtient ainsi un procédé de transmission qui s'adapte automatiquement et de façon optimale aux conditions de transmission entre la carte à puce et le terminal.
Bien que les exemples détaillés correspondent à un procédé de transmission au standard ISO 14443, on peut également appliquer cette invention à toute transmission radiofréquence par blocs entre un terminal et une carte à puce ou entre deux entités.
Par ailleurs, bien que l'on ait décrit une adaptation de taille de bloc en fonction de problèmes rencontrés, on pourrait également envisager d'adapter préventivement la taille des blocs en fonction d'une mesure de perturbations environnementales.