Brevet FR3039948A1 — publié le 20170210

PROCEDE DE SECURISATION D'UNE TRANSACTION A PARTIR D'UN TERMINAL NON SECURISE La présente invention concerne un procédé d'authentification entre un terminal et un serveur distant. De plus en plus de services sont accessibles par l'intermédiaire d'un terminal connecté au réseau Internet, y compris des services bancaires. En particulier, le commerce électronique a connu un fort développement. Les terminaux utilisés dans ce contexte peuvent être de type ordinateur personnel, tablette numérique, téléphone mobile intelligent ("smartphone"). Généralement, ces terminaux comprennent un processeur principal, un processeur graphique GPU (Graphics Processing Unit) connecté ou susceptible de se connecter à un écran d'affichage, des circuits de connexion à un réseau de transmission de données tel que le réseau Internet, et des organes de commande tels qu'un clavier, une souris, ou une surface tactile associée à l'écran d'affichage. L'accès à des services dits "en ligne" au moyen de tels terminaux soulève des problèmes de sécurité. En effet, il est possible d'installer dans le terminal, et de faire exécuter par le processeur principal du terminal, un programme dit "malveillant" ayant accès à l'ensemble de la mémoire accessible par le processeur principal, ainsi qu'aux données affichées et introduites au moyen d'un clavier ou de positions désignées sur une image affichée à l'écran. Un tel programme malveillant peut être configuré pour espionner d'éventuelles transactions conduites à partir du terminal et de récupérer d'éventuelles données secrètes introduites ou manipulées durant ces transactions pour les transmettre par le réseau. Pour assurer la sécurité de telles transactions, il a déjà été proposé d'utiliser comme élément de sécurité et de calcul cryptographique un processeur sécurisé tel que le processeur d'une de carte SIM (Subscriber Identification Module) équipant en général les téléphones mobiles. Pour pouvoir exécuter une ou plusieurs applications de paiement, le processeur sécurisé doit pouvoir mémoriser autant de clés cryptographiques secrètes que d'applications de paiement. Or le chargement d'une application dans la mémoire d'un processeur sécurisé est une opération complexe devant être 3039948 2 hautement sécurisée. A cet effet, elle nécessite des intervenants externes comme un Gestionnaire de Service de Confiance ("Trusted Service Manager"). Comme les cartes SIM sont émises par un opérateur de téléphonie mobile, celui-ci peut refuser l'installation de telles applications 5 dans la carte. En outre, en cas de vol ou lors d'une opération de maintenance du téléphone, le processeur de la carte SIM peut faire l'objet d'attaques par un fraudeur visant à découvrir les clés secrètes qu'il mémorise. L'accès à des fonctions sécurisées installées dans le processeur 10 d'une carte SIM nécessite généralement la saisie d'un code secret (code PIN) au moyen de l'organe de commande connecté au processeur principal du terminal. Il en résulte qu'un code secret saisi par l'utilisateur transite nécessairement par le processeur principal. Un logiciel malveillant exécuté par le processeur principal peut donc avoir accès à ce code secret. 15 Pour la saisie d'un code secret, il a également été proposé d'afficher l'image d'un clavier dont les touches ont des positions définies aléatoirement. Cette solution n'empêche pas un programme malveillant d'obtenir la combinaison de touches introduite par l'utilisateur en procédant à une copie d'écran pour obtenir l'image du clavier et en interceptant la position de 20 chacune des désignations effectuées par l'utilisateur au moyen d'une souris ou d'un écran tactile. On a également proposé d'envoyer à l'utilisateur un code à usage unique par une autre liaison de communication (par exemple par SMS), ce code devant être saisi par l'utilisateur pour valider une transaction en cours. 25 Cette solution implique des manipulations supplémentaires pour l'utilisateur, et un coût supplémentaire pour l'envoi du code à usage unique. Cette solution s'avère également peu adaptée aux transactions conduites à partir d'un téléphone mobile intelligent ou d'une tablette numérique. Par ailleurs, il a déjà été proposé d'utiliser la puissance de calcul des 30 processeurs graphiques installés dans les ordinateurs pour effectuer des calculs cryptographiques. En effet, un tel processeur dispose d'une architecture de calcul parallèle qui s'avère adaptée à la réalisation de certains calculs cryptographiques comme des calculs de chiffrement et déchiffrement symétriques ou asymétriques. Toutefois, un processeur graphique ne dispose généralement pas de mémoire non volatile. Il n'est 3039948 3 donc pas possible d'y stocker une application ou une clé secrète, sans que celles-ci disparaissent à chaque extinction de l'ordinateur. Il en résulte un problème de conservation de données secrètes nécessaires à la conduite de transactions sécurisées. 5 En outre, le processeur graphique ne peut pas communiquer directement avec un serveur externe. Toutes les données d'une transaction doivent donc être relayées par le processeur principal de l'ordinateur assurant la gestion de circuits de communication de l'ordinateur. Il en résulte qu'un programme malveillant installé dans l'ordinateur peut récupérer et 10 mémoriser toutes les données de transaction échangées entre le processeur graphique et le serveur. Même si les données de transaction sont chiffrées avant d'être transmises, le programme malveillant peut réutiliser les données de transaction chiffrées pour conduire une transaction identique à celle correspondant aux données mémorisées. 15 La demande de brevet WO 2012/107698 (US 2014/0040633) décrit un procédé de transaction faisant intervenir le processeur graphique pour établir une liaison sécurisée avec un serveur distant ou un processeur sécurisé. Le processeur graphique est configuré pour afficher une image d'un clavier dont les touches sont à des positions aléatoires. Cette image est 20 décomposée différentes en trames inintelligibles générées par un procédé de cryptographie visuelle, qui sont affichées successivement par le processeur graphique. La fréquence d'affichage des trames est ajustée pour exploiter la rémanence rétinienne de l'utilisateur pour que ce dernier puisse reconstituer l'image à partir de plusieurs trames affichées successivement. Ainsi, un 25 programme malveillant exécuté par le processeur principal du terminal ne peut pas récupérer l'image reconstituée par rémanence rétinienne, en effectuant une copie d'écran, étant donné que la fréquence d'affichage des trames est très supérieure à la cadence à laquelle le processeur principal peut effectuer des copies d'écran. 30 Cependant, cette solution ne garantit pas qu'un attaquant ne puisse pas reconstituer l'image affichée ou la partie présentant des données sensibles, à partir de copies d'écran partielles successives. Il est donc souhaitable de protéger des données secrètes, et plus généralement, des données sensibles comme des données de transaction, 3039948 4 lors de leur transit dans un terminal disposant d'un processeur graphique, ou lors de leur transmission entre un tel terminal et un serveur. Des modes de réalisation concernent un procédé de partage d'une donnée secrète, comprenant des étapes consistant à : générer dans un 5 processeur graphique d'un terminal une donnée secrète, chiffrer la donnée secrète, et transmettre la donnée secrète chiffrée à un processeur sécurisé, les étapes de génération et de chiffrement de la donnée secrète étant réalisées par un circuit brouillé exécuté par le processeur graphique et comprenant des portes logiques réparties en plusieurs rangs ordonnés, 10 comprenant un premier rang rassemblant des portes logiques recevant exclusivement des valeurs d'entrée du circuit brouillé, les portes logiques d'un certain rang recevant exclusivement des valeurs issues de portes logiques appartenant à des rangs inférieurs ou des valeurs d'entrée du circuit brouillé, chaque porte logique étant associée à des valeurs brouillées 15 représentant chaque valeur binaire possible de chaque bit d'entrée et de chaque bit de sortie de la porte logique, chaque porte logique étant associée à une table de vérité comprenant pour chaque combinaison possible des valeurs binaires d'entrée de la porte logique une valeur obtenue par chiffrement de la valeur brouillée représentant la valeur de sortie de la porte 20 logique correspondant à la combinaison des valeurs binaires d'entrée de la porte logique, l'exécution du circuit brouillé par le processeur graphique comprenant des étapes consistant à : exécuter successivement les rangs de portes logiques en respectant l'ordre des rangs, l'exécution de chacun des rangs de portes logiques consistant à exécuter simultanément toutes les 25 portes logique du rang, l'exécution d'une porte logique comprenant des étapes de sélection d'une ligne de la table de vérité associée à la porte logique, en fonction des valeurs brouillées d'entrée de la porte logique, et de déchiffrement de la ligne sélectionnée pour obtenir une valeur brouillée de sortie de la porte logique, et transférer les valeurs brouillées de sortie 30 obtenues, qui sont appliquées à une entrée d'une porte logique appartenant à un rang supérieur, d'une mémoire de sortie du processeur graphique vers une mémoire d'entrée du processeur graphique, de manière à être prises en compte lors de l'exécution du rang supérieur. 3039948 5 Selon un mode de réalisation, la donnée secrète est générée aléatoirement ou pseudo-aléatoirement, le circuit brouillé comprenant un circuit de génération de nombres aléatoires ou pseudo-aléatoire. Selon un mode de réalisation, la donnée secrète est générée 5 aléatoirement en lançant simultanément l'exécution de plusieurs opérations identiques s'exécutant en parallèle, la donnée secrète dépendant de l'ordre dans lequel se terminent les opérations. Selon un mode de réalisation, la donnée secrète est générée à l'aide d'un circuit brouillé configuré pour générer des nombres aléatoires ou 10 pseudo-aléatoires, le circuit brouillé comprenant un premier rang de portes associées à des tables de vérité présentant des lignes identiques mais ordonnées différemment, de manière à fournir des données de sortie différentes pour de mêmes données d'entrée, les données de sortie du rang de portes étant fournies à un rang de portes suivant en fonction d'un ordre 15 dans lequel elles sont fournies par le premier rang de portes. Selon un mode de réalisation, l'exécution du circuit brouillé est réalisée par un interpréteur réalisé lui-même au moins en partie sous la forme d'un circuit brouillé. Selon un mode de réalisation, le procédé comprend une étape 20 d'établissement d'une liaison entre le processeur graphique et le processeur sécurisé, la liaison étant sécurisée au moyen de la donnée secrète partagée uniquement entre le processeur graphique et le processeur sécurisé. Des modes de réalisation concernent également un procédé d'authentification d'un utilisateur par un serveur, à partir d'un terminal 25 connecté au serveur, le terminal comprenant un processeur principal, un processeur graphique contrôlant un écran d'affichage, et un organe de commande, le procédé comprenant des étapes consistant à : charger dans le processeur graphique un programme configurant le processeur graphique pour exécuter le procédé de partage tel que défini précédemment, afin de 30 générer une donnée secrète partagée uniquement entre le processeur graphique et le serveur, et pour afficher à l'écran d'affichage une image d'un clavier ayant une répartition de touches définie et déterminable à l'aide de la donnée secrète partagée, exécuter le programme par le processeur graphique pour générer la donnée secrète partagée et afficher l'image du 35 clavier à l'écran d'affichage, l'image du clavier étant affichée sous la forme 3039948 6 de trames complémentaires non intelligibles individuellement pour un utilisateur, générées par un algorithme de cryptographie visuelle et affichées successivement à une cadence adaptée pour exploiter la rémanence du système visuel de l'utilisateur afin qu'une image combinant les trames 5 complémentaires apparaisse d'une manière intelligible pour l'utilisateur, recueillir par le processeur principal des positions de l'écran d'affichage désignées par l'utilisateur au moyen de l'organe de commande, en relation avec le clavier virtuel affiché, transmettre par le processeur principal au serveur les positions désignées par l'utilisateur, et vérifier une cohérence 10 entre les positions désignées, et un code secret d'authentification de l'utilisateur, connu du serveur, l'utilisateur étant authentifié si la cohérence est vérifiée. Selon un mode de réalisation, la donnée secrète partagée définit la répartition des touches de l'image du clavier. 15 Selon un mode de réalisation, l'affichage de l'image du clavier comprend : des étapes successives de sélection d'une décomposition en motifs de pixels complémentaires pour chaque pixel ou groupe de pixels de l'image du clavier, représentant des libellés de touches du clavier, des étapes successives de génération de motifs de pixels complémentaires pour 20 chaque décomposition sélectionnée, de manière à ce que les libellés des touches ne soient visibles à l'écran d'affichage que si les motifs de pixels complémentaires sont superposés, et des étapes successives d'affichage des motifs de pixels générés à des instants sélectionnés aléatoirement, espacés d'une durée variable telle que le système visuel humain puisse les 25 combiner bien qu'ils soient affichés successivement, les instants d'affichage des motifs de pixels formant une image affichée du clavier étant distincts et indépendants les uns des autres. Selon un mode de réalisation, l'affichage de l'image du clavier est effectué par un circuit brouillé exécuté par le processeur graphique. 30 Des modes de réalisation concernent également un terminal configuré pour mettre en oeuvre l'un ou l'autre des procédés définis précédemment. Des modes de réalisation concernent également un programme d'ordinateur qui, lorsqu'il est chargé et exécuté par un terminal comprenant un processeur principal et un processeur graphique, configure le terminal 35 pour mettre en oeuvre l'un ou l'autre des procédés définis précédemment. 3039948 7 la figure 1 représente schématiquement un terminal classique en communication avec un serveur de transaction, la figure 2 représente schématiquement un processeur graphique 5 classique, la figure 3 représente schématiquement une architecture fonctionnelle d'un programme chargé dans le processeur graphique, selon un mode de réalisation, la figure 4 représente schématiquement un module du programme 10 chargé dans le processeur graphique, selon un mode de réalisation, la figure 5 représente schématiquement un module d'affichage cryptographique du programme chargé dans le processeur graphique, selon un mode de réalisation, la figure 6A représente un exemple d'image produite par le module 15 d'affichage cryptographique, telle que pouvant être visualisée par un utilisateur, la figure 6B représente un exemple d'image produite et affichée par le module d'affichage cryptographique, à un instant donné, la figure 7 représente schématiquement des motifs de pixels d'image 20 affichés successivement sur un écran d'affichage par le module d'affichage cryptographique, selon un mode de réalisation, la figure 8 représente schématiquement sur une échelle temporelle des instants d'affichage et de rafraîchissement de motifs de pixels générés par le module d'affichage cryptographique, 25 la figure 9 représente schématiquement un module de chiffrement du programme chargé dans le processeur graphique, selon un mode de réalisation, la figure 10 représente des étapes exécutées par le terminal et le serveur de transaction, selon un mode de réalisation. 30 La figure 1 représente un terminal MT classique, susceptible de communiquer avec un serveur SRV par l'intermédiaire d'un réseau de transmission de données tel que le réseau Internet. Le serveur SRV peut être configuré pour conduire des transactions avec des terminaux auxquels il peut être connecté. 3039948 8 Le terminal MT est équipé de circuits de connexion avec un réseau tel que le réseau Internet. Le terminal MT est par exemple du type téléphone mobile notamment du type intelligent ou PDA (assistant personnel) ou tout autre type de dispositif, comme un ordinateur personnel équipé de circuits de 5 connexion à un réseau tel que le réseau Internet. Le terminal MT comprend également un processeur principal HP, des circuits NIT de connexion à un réseau NT, connectés au processeur HP, un écran d'affichage DSP, un processeur graphique GP assurant la gestion de l'écran DSP, connecté au processeur HP, et un organe de commande CM connecté au processeur HP. 10 L'organe de commande peut comprendre un clavier ou une surface tactile, par exemple une surface tactile transparente disposée sur l'écran DSP, et éventuellement un dispositif de pointage tel qu'une souris. Le processeur HP peut être le processeur principal du terminal ("Base band processor"). Le terminal peut comprendre également un processeur sécurisé SE 15 qui peut être implanté dans une carte à circuit intégré UICC ("Universal Integrated Circuit Card"). Le processeur SE peut être par exemple de type carte SIM ("Subscriber Identity Module"), ou mini-SIM ou micro-SIM, permettant l'accès à un réseau de téléphonie mobile. Le processeur sécurisé peut comprendre un circuit NFC ("Near Field Communication") pour pouvoir 20 communiquer avec une borne sans contact. Le circuit NFC peut être implanté dans une carte SIM (SIM-NFC) ou UICC, ou dans un circuit SoC ("System on Chip") ou dans une carte mémoire externe, par exemple de type "SD card". Les circuits NIT peuvent comprendre des circuits de radiotéléphonie donnant accès à un réseau de téléphonie mobile, et au 25 réseau Internet par l'intermédiaire du réseau de téléphonie mobile, et/ou un circuit de connexion à un réseau sans fil (WiFi, Bluetooth), et/ou tout autre moyen de connexion avec ou sans fil à un réseau de transmission de données tel que le réseau Internet. Le serveur SRV est configuré pour offrir des services de transaction à 30 des utilisateurs. Il peut comprendre un dispositif de sécurité, un programme de gestion de services de transaction, et une zone mémoire dédiée au stockage de programme et de données de transaction. Le dispositif de sécurité protège le serveur et notamment l'accès à la zone mémoire dédiée aux données de transaction et au programme de gestion de services de 35 transaction. 3039948 9 Dans ce qui suit, le terme "transaction" désigne généralement l'accès par un utilisateur à un service ou à des données, par l'intermédiaire d'une liaison, cet accès nécessitant une authentification de l'utilisateur. La figure 2 représente un exemple de processeur graphique GP. Sur 5 la figure 2, le processeur GP présente une architecture parallèle comprenant plusieurs unités de traitement multiples MPU. Chaque unité de traitement MPU comprend plusieurs processeurs de fil (thread processor) TP et une unité de fonctions spéciales SFU. Les unités SFU sont configurées pour exécuter des opérations peu fréquentes et coûteuses en ressources de 10 calcul, telles que la division, la racine carrée, etc. Les processeurs TP d'une même unité MPU peuvent communiquer entre eux par l'intermédiaire d'une mémoire locale LMEM propre à l'unité MPU. En revanche, des processeurs TP appartenant à différentes unités MPU ne peuvent pas communiquer entre eux ou se synchroniser. Les processeurs TP d'une unité MPU n'ont donc pas 15 accès aux mémoires locales LMEM des autres unités MPU du processeur GP. Les unités MPU sont gérées par une unité de contrôle de d'exécution de fil (Thread Execution Control Unit) TPU. Le processeur GP comprend également une mémoire vidéo VMEM et une mémoire principale GMEM qui 20 n'est pas accessible directement de l'extérieur du processeur GP. Réciproquement, la mémoire HMEM du processeur HP n'est pas directement accessible par le processeur GP. Les transferts de données entre les mémoires GMEM et HMEM sont cependant possibles par l'intermédiaire d'un port d'entrée / sortie du processeur GP et d'une procédure de type DMA 25 (Direct Memory Access). La figure 3 représente l'architecture fonctionnelle d'un programme AUTP chargé dans l'unité de traitement PU du processeur graphique GP et exécuté par ce dernier, lors l'exécution d'une application de transaction AP (figure 1) par le processeur principal HP du terminal MT. Selon un mode de 30 réalisation, ce programme comprend une multiplicité de modules d'affichage FCC exécutés en parallèle, chaque module d'affichage FCC étant chargé de l'écriture et du rafraichissement dans la mémoire vidéo d'un motif de pixels VCP à afficher à l'écran d'affichage DSP. Le programme chargé dans le processeur graphique GP comprend également des modules de chiffrement 35 ENC et des modules de génération de nombres aléatoires RNG1 fournissant 3039948 10 des nombres aléatoires aux modules d'affichage FCC et aux modules de chiffrement ENC. Les modules de chiffrement ENC fournissent à l'extérieur du processeur GP des nombres chiffrés correspondant aux nombres aléatoires fournis par les modules RNG1. La figure 4 représente l'un des 5 modules d'affichage FCC du programme AUTP chargé dans le processeur graphique GP, selon un mode de réalisation. Le module FCC comprend un module de génération de pixels d'une image d'un clavier KGN, ET un module de cryptographie visuelle KD. L'un des modules de génération de nombres aléatoires RNG1 reçoit en entrée un nombre D1 utilisé en tant que graine 10 ("seed"). Le module RNG1 fournit un nombre aléatoire ou pseudo-aléatoire RN1 à m x p modules FCC. Le nombre aléatoire RN1 qui est fourni en entrée de module KGN spécifie un caractère tel qu'un caractère numérique ou alphanumérique, ou une icône d'une image, d'un clavier à afficher. Le module KGN fournit la valeur d'un pixel PX, noir ou blanc, d'une image 15 formant le caractère correspondant au nombre RN1. Le nombre aléatoire RN2 est fourni en entrée du module KD. Le module KD fournit successivement des motifs de pixels PT à afficher en fonction du pixel PX fourni par le module KGN. Tous les modules KGN chargés dans le processeur GP permettent 20 ainsi de générer ensemble dans la mémoire vidéo VMEM une image complète d'un clavier formée de d images de touches de clavier juxtaposées, chaque image de touche comportant l'image d'un caractère différent associé à la touche. Ainsi, l'ensemble des modules KGN chargés dans le processeur GP comprend un groupe de m x p modules KGN par touche du clavier à 25 afficher, chacun de ces groupes de modules KGN produisant une image de m x p pixels représentant une touche avec le caractère associé à la touche. Chacun de ces d groupes de m x p modules KGN reçoit du module RNG1 un nombre distinct correspondant à l'image du caractère à afficher sur la touche. Selon un mode de réalisation, un premier des d groupes de modules 30 KGN chargés d'afficher l'image d'une touche, reçoit du module RNG1 correspondant un nombre RN11 choisi aléatoirement entre 1 et le nombre d de touches du clavier à afficher. Un second des groupes chargés d'afficher l'image d'une touche reçoit en entrée un nombre RN12 choisi aléatoirement entre 1 et le nombre de touches du clavier à afficher, diminué de 1, d-1, le 35 nombre RN12 correspondant alors à un rang de caractère parmi les 3039948 11 caractères restant à attribuer aux touches restantes. Les nombres RN1i sont ainsi choisis aléatoirement en fonction du nombre de caractères restant à affecter à une touche, jusqu'à l'avant dernier caractère à affecter à une touche du clavier. Le dernier caractère à affecter à une touche est affecté à 5 la touche restante. Le module KGN peut également recevoir la position du pixel généré par le module KGN dans l'image affichée par l'écran DSP. Cependant, la position PXPi peut ne pas être nécessaire, la position du module FCCi dans l'unité de traitement PU pouvant définir cette position. 10 Le module KD applique une transformation de type cryptographie visuelle au pixel PXi, en fonction d'un nombre aléatoire ou pseudo-aléatoire RN2. Une telle transformation est par exemple décrite dans les documents "Visual Cryptography", Moni Naor, Adi Shamir, Eurocrypt 94, et "Construction and Bounds for Visual Cryptography", G. Ateniese, C Blundo, A. De Santis, 15 G. G. Stinson. Cette transformation consiste à décomposer une image d'origine, par exemple intelligible humainement, en un ensemble de plusieurs trames complémentaires, de telle manière que l'image d'origine ne puisse être restituée qu'en superposant toutes les trames de l'ensemble de trames complémentaires, et qu'il soit très difficile de reconstituer l'image d'origine en 20 l'absence de l'une quelconque des trames complémentaires. Ainsi, le module KD génère pour chaque trame à afficher à l'écran DSP un motif d'un ou plusieurs pixels EPi correspondant à une forme cryptée du pixel PXi. Ainsi, la valeur du pixel PXi peut apparaître à l'écran DSP en affichant successivement les motifs complémentaires EPi du pixel PXi, avec une 25 fréquence d'affichage de trame adéquate pour exploiter la rémanence rétinienne du système visuel de l'utilisateur. Selon un mode de réalisation, les motifs de pixels complémentaires EPi sont affichés séparément à des instants définis aléatoirement dans une limite compatible avec le système visuel humain. La figure 5 représente le 30 module KD selon un mode de réalisation. Le module KD comprend un module PSL de génération de motifs de pixels, et un circuit de comptage comprenant un registre RG, un module de calcul de modulo MOD, un comparateur CMP et un module d'incrémentation INC. Le registre RG reçoit une partie RN21 du nombre aléatoire RN2, qui définit une valeur initiale du 35 circuit de comptage. Le module MOD calcule le modulo du nombre dans le 3039948 12 registre RG. Le module INC incrémente de un la valeur de sortie du module MOD et introduit la valeur incrémentée dans le registre RG. La valeur de sortie du module MOD est également fournie en sortie du module KD et en entrée du comparateur CMP. Le comparateur CMP compare la valeur de 5 sortie du module MOD à une partie RN22 du nombre aléatoire RN2. Le comparateur CMP fournit au module PSL un signal de validation d'affichage DS qui est actif lorsque les deux valeurs d'entrée du comparateur CMP sont égales. Le module PSL sélectionne un motif de pixel parmi plusieurs motifs de pixel en fonction d'une partie RN23 du nombre aléatoire RN2. Lors d'une 10 première activation du signal DS, le module PSL fournit en sortie du module KD en tant que premier pixel EP1 d'un ensemble de pixels complémentaires le motif de pixel sélectionné. Lors d'une seconde activation du signal DS, le module PSL fournit en sortie du module KD en tant que second pixel EP2 de l'ensemble de pixels complémentaires, soit le motif de pixel sélectionné, soit 15 le motif de pixel complémentaire du motif de pixel sélectionné, en fonction de la valeur du pixel PX fourni en entrée du module KD. Par exemple, le second motif de pixel EP2 est le motif de pixel sélectionné si la valeur du pixel PX fourni en entrée du module KD est à zéro, ou le motif de pixel complémentaire du motif de pixel sélectionné, si la valeur du pixel PX est à 20 un. Bien entendu, un choix inverse peut être effectué en fonction de la valeur du pixel PX. Ainsi, grâce au circuit de comptage, l'instant de fourniture en sortie du module KD d'un premier motif de pixel est choisi aléatoirement grâce au nombre aléatoire RN21. L'instant de fourniture des motifs de pixels suivants sont également choisis aléatoirement en fonction du nombre 25 aléatoire RN22 qui peut changer à chaque fois qu'un motif de pixel EP1, EP2 est fourni en sortie du module KD. La valeur du modulo utilisé par le module MOD est choisie de manière à ce que les instants d'affichage des motifs de pixel EP1, EP2 soient espacés d'une durée compatible avec le système visuel humain, c'est-à-dire une durée telle que le système visuel humain 30 puisse combiner les motifs de pixels complémentaires. A cet effet, cette durée peut varier entre 50 à 80 ms. Le premier motif de pixel EP1 est également choisi aléatoirement à chaque fois que deux motifs de pixels ont été fournis en sortie du module KD. Dans l'exemple de la figure 5, les motifs de pixel comportent quatre 35 pixels dont deux pixels noirs et deux pixels blancs. La sélection du premier 3039948 13 motif de pixel EP1 est effectuée parmi 6 motifs, à savoir deux motifs horizontaux, deux motifs verticaux et deux motifs diagonaux. Bien entendu, il peut être envisagé d'autres motifs et d'autres combinaisons de motifs complémentaires pour former un pixel noir ou blanc (gris) dans le système de 5 vision de l'utilisateur. L'ensemble des modules FCC permet de générer et d'afficher une image telle que celle présentée sur la figure 6A, comportant des zones affichées en cryptographie visuelle et des zones affichées en clair. Ainsi, dans l'exemple de la figure 6A, l'image IM telle que perceptible par un 10 utilisateur est celle d'un clavier comportant douze touches, comprenant des touches portant un numéro de "0" à "9", une touche d'annulation "C" et une touche de validation "V". Ainsi, dans l'exemple de l'image de la figure 6A, le programme AUTP comporte dix modules RNG1 et 10 x m x p modules FCC (d = 10). L'image affichée comporte également une zone d'affichage RS de 15 données de transaction et/ou d'un caractère générique tel que "*" à chaque touche actionnée par l'utilisateur. Les touches portant un numéro de "0" à "9", sont présentées dans un ordre quelconque et sont affichées en cryptographie visuelle, en affichant successivement des motifs de pixel EP1, EP2 à des instants choisis aléatoirement. La figure 6B présente une image 20 IM1 réellement produite et affichée par le module PSL. L'image IM1 ne comporte que l'un des deux motifs de pixels EP1, EP2 d'un des ensembles de motifs de pixels complémentaires générés pour chaque pixel PX des zones affichées en cryptographie visuelle de l'image produite par le module KGN. Les libellés des touches portant un numéro de "0" à "9" ne sont donc 25 pas visibles dans l'image IM1. Selon un mode de réalisation, les modules KGN sont exécutés une fois pour générer l'image d'un clavier avec une répartition de touches définie, et les modules RNG2 et KD sont exécutés plusieurs fois, à une cadence de l'ordre de une fois par période T, T étant de l'ordre de deux à une dizaine de 30 millisecondes pour pouvoir déclencher la fourniture d'un motif de pixels VCP dans la mémoire VMEM toutes les 50 à 80 ms, par exemple jusqu'à ce que l'utilisateur active la touche d'annulation "C" ou de validation "V". La valeur du modulo appliqué par le module MOD dépend de la valeur de la période T et de la durée maximum entre les instants d'affichage successifs d'un motif 3039948 14 de pixels. Selon un mode de réalisation, l'affichage du contenu de la mémoire VMEM est effectué à chacune des périodes T Selon un mode de réalisation, les modules KGN sont exécutés à une certaine cadence, pour générer des images différentes, mais sans changer la 5 répartition des touches de 0 à 9 dans l'image du clavier, de manière à rendre encore plus difficile la détermination par un attaquant de la répartition des touches de 0 à 9. Les images différentes ainsi générées peuvent par exemple changer la position du libellé (de "0" à "9") de chaque touche dans chaque zone délimitée pour une touche, et/ou la taille de ce libellé, et/ou la 10 police de caractère utilisée pour présenter ce libellé. La figure 7 représente l'image IM visualisée par l'utilisateur à l'écran DSP du terminal. Selon un mode de réalisation, au moins une partie de l'image IM résulte du rafraichissement de motifs de pixels, à des fréquences différentes, les motifs pixels d'une première image étant affichés à des 15 instants différents. La figure 7 représente des motifs de pixels P1 , P1 , P1 , P1 affichés successivement en une position P1 de l'écran d'affichage DSP, des motifs de pixels P2 , P2 , P2 , P2 affichés successivement en une position P2 de l'écran d'affichage, et des motifs de pixels P3 , P3 , P3 , P3 affichés 20 successivement en une position P3 de l'écran d'affichage. Les motifs de pixels Pi (j = n, n+1, n+2, n+3, ...) sont issus de décompositions successives différentes, par cryptographie visuelle, d'un pixel ou groupe de pixels en une position Pi d'une image d'origine, en ensembles de motifs de pixels complémentaires. Cette décomposition est réalisée par les modules 25 KD des modules FCC, de telle manière que l'image d'origine ne puisse être restituée qu'en superposant tous les motifs de pixels d'un ensemble de motifs de pixels complémentaires, et qu'il soit très difficile de déterminer la valeur d'un pixel dans l'image d'origine en l'absence de l'un quelconque des motifs de pixels de l'ensemble de motifs de pixels complémentaires ou en 30 présence d'un motif de pixels appartenant à un autre ensemble de motifs de pixels complémentaires. Selon un mode de réalisation, chaque motif de pixels Pi est affiché pendant une durée respective distincte TPi (i = 1, 2, 3, ... et j = n, n+1, n+2, n+3, ...) déterminée de manière à ce que la rémanence rétinienne ou 35 visuelle de l'utilisateur recombine les motifs de pixels de chaque ensemble 3039948 15 de motifs de pixels complémentaires et donc, de manière à ce que l'utilisateur perçoive l'image d'origine IM constituée par la superposition de tous les motifs de pixels complémentaires formant cette image. Par exemple, les motifs de pixels Pi et Pi (i = 1, 2, 3, ...) 5 forment un premier ensemble de motifs de pixels complémentaires, issu d'une première décomposition par cryptographie visuelle, et Pi et Pi (i = 1, 2, 3, ...) forment un second ensemble de motifs de pixels complémentaires, issu d'une seconde décomposition par cryptographie visuelle, distincte de la première décomposition. Bien entendu, un pixel ou 10 groupe de pixels d'une image d'origine peut être décomposé par cryptographie visuelle en plus de deux motifs de pixels complémentaires. Les pixels ou groupes de pixels de l'image d'origine affichés sous la forme de motifs de pixels complémentaires sont répartis dans l'image de manière à rendre tout ou partie de l'image inintelligible si l'on ne superpose 15 pas des motifs de pixels complémentaires. Ainsi, l'image IM de la figure 6 (telle qu'elle apparaît à l'utilisateur) présente un clavier numérique dont les touches sont disposées dans un ordre quelconque, par exemple déterminé aléatoirement. Selon un mode de réalisation, les pixels délimités par la forme des touches et représentant les libellés des touches sont décomposés en 20 motifs de pixels complémentaires obtenus par cryptographie visuelle. Bien entendu, il peut être prévu de décomposer par cryptographie visuelle tous les pixels de l'image IM. Selon un mode de réalisation, la durée d'affichage TPi (i = 1, 2, 3, ... et j = n, n+1, n+2, n+3, ...) de chaque motif de pixel est fixée à une valeur 25 qui varie dans le temps et d'un motif de pixels à l'autre, entre 50 et 80 ms. Selon un mode de réalisation, des premiers motifs de pixels affichés au début de la présentation d'une image à l'écran d'affichage DSP, sont affichés à des instants distincts. Ainsi, la figure 8 représente le long d'un axe temporel des instants d'affichage t1, t2, t3 de premiers motifs de pixels P1 , P2 , 30 P3 affichés aux positions P1, P2, P3 de l'image d'origine IM. Les instants t1, t2, t3 sont séparés d'un instant tO de début d'affichage de l'image, de moins d'une durée tM qui peut être choisie inférieure ou égale à 50 ms, sachant que certains motifs de pixels de l'image peuvent être affichés dès l'instant tO. Des seconds motifs de pixels P1 , P2 , P3 sont affichés 35 après les premiers motifs de pixels P1 , P2 , P3 à des instants 3039948 16 variables d'un motif de pixels à l'autre, séparés des instants d'affichage des premiers motifs de pixels de durées respectives TP1 , TP2 , TP3 comprises entre 50 et 80 ms. Ainsi, si chaque pixel ou groupes de pixels de l'image d'origine est 5 décomposé en deux motifs de pixels complémentaires successifs, et en admettant que deux copies d'écran successives puissent être réalisées et mémorisées par le processeur HP en 50 ms ou moins, la seconde copie d'écran ne peut pas contenir tous les motifs de pixels complémentaires des motifs de pixels se trouvant dans la première copie d'écran. En effet, comme 10 les motifs de pixels sont affichés à partir d'instants distincts et sont rafraîchis selon des périodes de rafraîchissement variables différentes, la première copie d'écran contient nécessairement des motifs de pixels complémentaires de motifs de pixels précédemment affichés, et donc la seconde copie d'écran contient nécessairement des motifs de pixels complémentaires de motifs 15 pixels qui seront affichés après seconde la copie d'écran. Une troisième copie d'écran peut être effectuée pour obtenir ces motifs de pixels complémentaires. Cependant, il n'est pas possible de déterminer si un pixel de l'image d'origine, par exemple P1, est reconstitué à partir du motif de pixels correspondant des premières et secondes copies d'écran (P1 , 20 P1 ) ou celui des secondes et troisièmes copies d'écran (P1 , P1 ). Si tous les pixels de l'image d'origine sont ainsi décomposés en deux motifs de pixels complémentaires, la reconstitution de l'image d'origine nécessite de sélectionner, pour chaque motif de pixel de l'image transformée par cryptographie visuelle, la bonne paire de motifs de pixels 25 complémentaires parmi la paire comprenant les motifs de pixels correspondants dans les première et seconde copies d'écran et la paire comprenant les motifs de pixels correspondants dans les seconde et troisième copies d'écran. Dans ce cas, il faut que le processeur HP soit capable d'effectuer et de mémoriser au moins trois copies d'écran 30 successives à moins de 50 ms d'intervalle, chaque copie d'écran nécessitant de lire la mémoire vidéo VMEM et d'écrire les données lues dans une mémoire HMEM accessible au processeur HP. Si chaque pixel de l'image d'origine est transformé par cryptographie visuelle en un ensemble de trois ou davantage de motifs de pixels 3039948 17 complémentaires, le problème de reconstituer l'image d'origine à partir de copies d'écran successives est encore plus complexe. La figure 9 représente l'un des modules de chiffrement ENCj installés dans le processeur GP, selon un mode de réalisation. Le module ENCj reçoit 5 un nombre aléatoire RN1 transmis par l'un des modules RNG1 et le chiffre en lui appliquant un algorithme de chiffrement pour calculer une signature ERN1. Toutes les signatures ERN1 ainsi calculées par les modules ENCj sont transmises en dehors du processeur GP, par exemple à destination du serveur SRV. 10 Dans l'exemple de la figure 9, le module ENCj met en oeuvre l'algorithme AES (Advanced Encryption Standard). Ainsi, le module ENC exécute plusieurs (r+1) rondes de chiffrement. A la première ronde, le module ENCj combine par une fonction LC1 réalisant une opération OU Exclusif (XOR), bit à bit, une partie de clé initiale KOj avec le nombre 15 aléatoire RN1 qu'il a reçu du module RNG1. Le résultat de cette combinaison est transmis à une fonction de substitution non linéaire BSUB remplaçant chaque octet de la combinaison par un autre conformément à une table de correspondance. Le résultat de la substitution est transmis à une fonction de transposition SHR consistant à décaler de manière cyclique un certain 20 nombre de fois les trois dernières lignes du résultat de substitution disposé sous la forme d'un bloc de plusieurs lignes et plusieurs colonnes. Le résultat de la transposition est transmis à une fonction de mélange MXCL. La fonction MXCL est appliquée par colonne au bloc issu de la transposition et combine les quatre derniers octets de chaque colonne du bloc. Le résultat du 25 mélange est combiné à une nouvelle clé K1j dérivée de la clé initiale par une fonction LC2 réalisant également une opération OU Exclusif (XOR), bit à bit. Ces fonctions BSUB, SHR, MXCL sont exécutées à chaque ronde i avec une nouvelle clé Kij dérivée de la clé utilisée à la ronde précédente par une fonction de dérivation de clé KDN. A la dernière ronde r, lorsqu'un nombre 30 maximum de rondes MXR est atteint, la fonction MXCL n'est pas exécutée, le résultat de la fonction de transposition SHR étant combiné à une dernière clé Krj dérivée de la clé utilisée à la ronde précédente. Il peut être observé que si la fonction de chiffrement mise en oeuvre par chaque module ENCj est réversible, comme c'est le cas de l'algorithme 35 AES, les modules ENCj peuvent être utilisés pour établir un canal de 3039948 18 transmission entre le serveur SRV et le processeur GP, qui est sécurisé par un chiffrement symétrique à l'aide d'une clé secrète connue seulement du serveur SRV. Ici et dans ce qui suit, le terme "sécurisé" signifie protégé contre des accès frauduleux par des éléments matériels et/ou logiciels. 5 Selon un mode de réalisation, les modules RNG1, ENC et FCC sont réalisés sous la forme de circuits ou de code exécutable impénétrable ("obfuscated"), de manière à ce que leur fonctionnement soit totalement masqué et ne soit pas modifiable. Les modules RNG1, ENC et FCC peuvent être générés par le serveur SRV de manière à intégrer dans leur structure 10 interne une clé secrète respective spécifique d'un identifiant de l'utilisateur. Selon un mode de réalisation, les modules RNG1, ENC et FCC sont réalisés sous la forme de circuits logiques constitués de portes logiques telles que AND, NAND, OR, NOR, XOR, puis transformés par la technique des circuits brouillés ("garbled circuits"). La transformation des modules 15 RNG1 et FCC en circuits logiques peut être effectuée à l'aide d'outils de conversion de programmes écrits par exemple en langage C ou C++, en langages tels que VHDL ou Verilog. Cette technique de transformation en circuit brouillé consiste à générer aléatoirement des valeurs brouillées représentant chaque valeur binaire 0 et 1 de chaque bit d'entrée du circuit et 20 de chaque bit de sortie de porte logique du circuit, certaines sorties de porte logique correspondant à des sorties du circuit, à représenter chaque porte par sa table de vérité, et à chiffrer chaque table de vérité, en chiffrant la valeur brouillée représentant la valeur binaire de sortie de chaque ligne de la table de vérité, en utilisant comme clés, les valeurs brouillées d'entrée de la 25 porte logique correspondant à la ligne de la table de vérité. Un bit de rang déterminé de chaque valeur brouillée, par exemple le bit de poids faible (LSB), peut être utilisé pour déterminer la correspondance entre une valeur brouillée et sa valeur binaire 0 ou 1 correspondante. Ainsi, ce bit déterminé peut être utilisé pour sélectionner dans la table de vérité d'une porte logique 30 la valeur brouillée chiffrée de sortie correspondant aux valeurs brouillées d'entrée de la porte logique. La valeur brouillée de sortie de chaque porte peut donc être obtenu en appliquant un algorithme de déchiffrement correspondant à l'algorithme de chiffrement utilisé, à la valeur brouillée chiffrée de sortie ainsi sélectionnée en utilisant comme clés les valeurs 35 brouillées appliquées en entrée de la porte logique. La topologie du circuit 3039948 19 (connexions entre les entrées du circuit, les sorties de porte logique et les entrées de porte logique) peut être définie dans une table. De cette manière, il n'est pas possible de déterminer le fonctionnement des modules RNG1, ENC et FCC une fois transformés en 5 circuits brouillés, et les circuits ne fonctionnent qu'avec certaines valeurs d'entrée parmi un grand nombre de valeurs possibles. Pour plus de détails sur la technique de transformation en circuit brouillé, on peut se référer par exemple au document "Foundations of Garbled Circuits", Mihir Bellare, Viet Tung Hoang, Phillip Rogaway. 10 Ces techniques de génération et d'exécution de circuits brouillés peuvent être aisément adaptées à une mise en oeuvre par un processeur présentant une architecture SIMD (Simple Instruction Multiple Data), tel que les processeurs graphiques. A cet effet, les portes logiques du circuit brouillé sont réparties en rangs, les portes logiques de premier rang étant celles 15 recevant exclusivement des valeurs d'entrée du circuit brouillé, et les portes logiques d'un certain rang n, recevant exclusivement des valeurs issues de portes logiques de rang inférieur ou des valeurs d'entrée du circuit brouillé. Selon un mode de réalisation, les valeurs brouillées sont définies sur 4 pixels de 4 octets, soit 16 octets. Les tables de vérités des portes logiques 20 sont donc définies par quatre valeurs brouillées, soit 64 octets correspondant à chaque combinaison (0, 0), (0, 1), (1, 0), (1, 1) des valeurs binaires d'entrée. La topologie du circuit brouillé peut être définie à partir d'une numérotation de chaque connexion du circuit, comprenant les entrées du circuit, de 1 à n, puis chaque sortie de porte logique du circuit, de n+1 à n+q, 25 les sorties du circuit étant associées aux numéros les plus élevés, de n+q-m+1 à n+q, et les portes logiques étant référencées par le numéro de leur connexion de sortie, de n+1 à n+q. La topologie du circuit brouillé peut ainsi être mémorisée sous la forme d'une table rassemblant pour chaque porte logique du circuit les numéros des connexions d'entrée de la porte 30 logique. L'exécution du circuit brouillé par le processeur GP peut être effectuée par un module interpréteur de circuit brouillé GCI configuré pour fonctionner par itération, en exécutant à chaque itération les portes logiques d'un rang, en commençant par les portes logiques de premier rang. Avant 35 l'exécution des portes logiques du premier rang, les tables de topologie, les 3039948 20 tables de vérité des portes logiques et les valeurs brouillées d'entrée sont chargées dans une mémoire d'entrée du processeur GP, c'est-à-dire la mémoire GMEM. A chaque exécution des portes logiques appartenant à un rang, le module GCI est configuré pour transférer les valeurs brouillées 5 obtenues à la suite de l'exécution des portes logiques du rang d'une mémoire de sortie du processeur GP, c'est-à-dire de la mémoire VMEM, dans la mémoire d'entrée GMEM, pour les fournir aux entrées des portes logiques du rang suivant à exécuter. Lors de ce transfert, seules les valeurs brouillées de sortie utilisées comme valeurs d'entrée des portes logiques du 10 rang suivant sont transférées. A la fin de l'exécution du circuit brouillé, les valeurs brouillées de sortie se trouvent dans la mémoire VMEM, et peuvent être transférées au processeur HP. De cette manière, le circuit de chiffrement ENC qui contient la clé de chiffrement, reste connu seulement de l'entité qui l'a généré, en l'occurrence 15 le serveur SRV. Il est à noter que le processeur HP peut obtenir le contenu des mémoires VMEM et GMEM par l'intermédiaire de commandes de lecture transmises au processeur GP. Le module RNG1 peut être réalisé en circuit brouillé par exemple par un circuit comprenant un premier rang de portes logiques obtenues en 20 dupliquant un grand nombre de fois une porte logique brouillée et en intervertissant pour chaque table de porte logique du premier rang, les lignes de la table de vérité de cette porte logique, contenant les valeurs brouillées de la porte. Le module RNG1 peut comprendre un second ou davantage de rangs de portes logiques comprenant chacun des portes logiques obtenues 25 également en dupliquant une autre porte logique brouillée ou la porte logique brouillée utilisée pour générer les portes logiques du niveau précédent, et en intervertissant pour chaque table de porte logique du premier rang, les lignes de la table de vérité de cette porte logique. Chaque porte logique du second rang et des éventuels rangs supérieurs combine des sorties de portes 30 logique du rang inférieur. Selon un mode de réalisation, la source d'entropie du module RNG1 est obtenue en exploitant l'architecture parallèle du processeur GP qui exécute les portes logiques brouillées d'un même rang en parallèle. Dans une telle architecture, il n'est pas possible de déterminer à l'avance dans quel ordre seront fournies les valeurs brouillées de sortie des 35 portes logiques brouillées du rang en cours d'exécution. Les valeurs 3039948 21 brouillées de sortie des portes logiques en cours d'exécution sont injectées en entrée des portes logiques brouillées du rang suivant, dans l'ordre où elles sont obtenues. Ainsi, les valeurs brouillées obtenues en sortie du dernier rang de portes logiques présentent un certain caractère aléatoire. 5 Il est également possible de réaliser le module RNG1 comportant plusieurs rangs constitués à partir d'une même porte logique dupliquée, chaque porte logique dupliquée comportant une table de vérité dont les lignes peuvent être ordonnées différemment de la table d'une autre porte logique. Ainsi, les entrées du module RNG1 peuvent être utilisées en entrée 10 de plusieurs des rangs de portes logiques du module RNG1. Le module RNG1 peut être également réalisé sous la forme d'un circuit brouillé implémentant des compteurs, certains compteurs commandant l'arrêt d'autres compteurs. Les valeurs des compteurs ainsi arrêtés constituant une base de définition d'une valeur aléatoire. 15 Le module RNG1 peut également comprendre des rangs de portes logiques implémentant un algorithme de chiffrement tel que AES appliqué aux valeurs de sorties des portes logiques appartenant à des rangs inférieurs. Le module RNG2 peut être réalisé sous une forme analogue à celle 20 du module RNG1, en dupliquant une porte logique et en réordonnant les lignes des tables de vérité des portes logiques dupliquées. Le module RNG2 peut être également réalisé sous la forme d'un circuit brouillé configuré pour dériver des valeurs brouillées à partir des valeurs brouillées RN1. Dans ce cas, les valeurs RN1 sont également appliquées en entrée du module RNG2 25 à la place des valeurs S2, sur la figure 4. Tout ou partie du module GCI peut également être réalisé sous la forme d'un circuit brouillé. Par exemple, la fonction du module GCI chargée de déchiffrer une ligne de la table de vérité de chaque porte logique du rang en cours d'exécution pour obtenir la valeur brouillée de sortie de la porte 30 logique, peut être réalisée sous la forme d'un circuit brouillé, tel que décrit précédemment. La figure 10 représente des étapes exécutées pour authentifier l'utilisateur du terminal, selon un mode de réalisation. Des étapes S1 à S4 sont prévues pour installer une application AP comportant une fonction 35 d'authentification de l'utilisateur. A l'étape S1, le processeur HP du terminal 3039948 22 MT transmet une requête Rq de téléchargement de l'application AP associée à un identifiant UID de l'utilisateur. A l'étape S2, le serveur SRV reçoit cette requête Rq et génère un programme APG à charger dans le processeur graphique GP du terminal MT. Le programme APG est généré au moins en 5 partie sous la forme de code impénétrable à partir de données secrètes générées spécifiquement pour l'identifiant UID de l'utilisateur. A l'étape S3, le serveur SRV transmet au terminal MT, en réponse à la requête Rq, l'application AP et le programme APG à installer dans le processeur HP et dans le processeur GP. A l'étape S4, le processeur HP reçoit l'application AP 10 et le programme APG et les stocke dans sa mémoire non volatile, puis installe l'application AP. Des étapes S11 à S29 sont exécutées lors d'une transaction ou d'un accès à un service nécessitant une authentification de l'utilisateur. A l'étape S11, des traitements préliminaires à la conclusion d'une transaction sont 15 réalisés par le processeur HP et le serveur SRV ou un autre serveur. A l'étape S12, le terminal MT reçoit une requête d'authentification de l'utilisateur Rqauth. A l'étape S13, le processeur HP du terminal MT lance l'exécution de l'application AP en réponse à la réception de la requête RqAuth. A noter que la conduite de la transaction ou de l'accès à un service 20 peut être effectuée par l'application AP. Dans ce cas, l'application AP a été lancée avant l'étape S11. A l'étape S14, l'application AP exécutée par le processeur HP transmet au serveur une requête de programme APG1 pour le processeur graphique, cette requête contenant l'identifiant UID de l'utilisateur, et éventuellement des informations relatives à la transaction, 25 devant être présentées à l'utilisateur sur l'écran DSP du terminal MT. A l'étape S15, le serveur SRV reçoit cette requête et génère un programme APG1 à charger dans le processeur graphique GP du terminal MT, en complément ou en remplacement de tout ou partie du programme APG. Ici encore, le programme APG1 est généré au moins en partie sous la forme de 30 code impénétrable ou de circuits brouillés à partir de données secrètes générées spécifiquement pour l'identifiant UID de l'utilisateur. Le programme APG1 comprend des programmes formant des modules FCC qui peuvent être conçus pour afficher des données de transaction telles qu'un prix à payer et le destinataire du paiement. Certains modules FCC du programme 35 APG1 peuvent également remplacer des modules d'affichage de touches de 3039948 23 clavier figurant dans le programme APG, notamment pour afficher des libellés de touche différemment (positions, tailles et police de caractères des libellés). A l'étape S16, le serveur SRV transmet le programme APG1 qu'il a 5 généré pour l'identifiant d'utilisateur UID. A l'étape S17, le terminal MT reçoit le programme APG1 et le charge dans la mémoire volatile du terminal MT en complément ou en remplacement de tout ou partie du programme APG déjà stocké dans cette mémoire non volatile pour former un programme APGAPG1. A l'étape S18, le processeur HP transmet le programme APG-APG1 10 de la mémoire non volatile à la mémoire GMEM du processeur GP. A l'étape S19, le processeur GP charge et lance le programme APG-APG1. Durant les étapes S20 et S24, le processeur GP est contrôlé par le programme APGAPG1. A l'étape S20, le processeur GP déclenche l'affichage à l'écran DSP d'un clavier dont les touches sont situées à des positions choisies 15 aléatoirement, en exécutant les modules RNG1, FCC précédemment décrits. Ainsi, l'affichage du clavier par le processeur GP est réalisé en appliquant un algorithme de cryptographie visuelle de manière à ce qu'une copie d'écran ne permette pas d'obtenir la configuration des touches du clavier, comme expliqué précédemment. 20 Durant l'exécution de l'étape S20 par le processeur GP, le processeur HP exécute les étapes S21 et S22. A l'étape S21, le processeur HP acquiert des positions POS(i) sur l'écran DSP, activées par l'utilisateur au moyen d'une souris ou de la surface tactile CM. A l'étape S22, si l'une des positions activées correspond à la position de la touche de validation 'V" ou 25 d'annulation "C", le processeur HP envoie à l'étape S23 au processeur GP un message de validation ou d'annulation, indiquant au processeur GP qu'il peut retirer l'image du clavier de l'image affichée à l'écran DSP. La réception de ce message par le processeur GP met fin à l'étape S20 d'affichage du clavier, et si le message reçu est un message de validation, le processeur 30 GP exécute l'étape S24 où les modules ENC du programme APG-APG1 chiffrent les valeurs aléatoires brouillées RN1 générées par les modules RNG1, pour générer l'image du clavier à afficher.. A l'étape S26, le processeur GP fournit les valeurs chiffrées ERN1 qu'il a calculée à l'étape S24, au processeur HP. A l'étape S27, le processeur HP transmet au serveur 35 SRV les valeurs brouillées ERN1, les positions POS(i) introduites par 3039948 24 l'utilisateur, ainsi que l'identifiant UID de l'utilisateur. A l'étape S28, le serveur SRV reçoit et vérifie ces informations, puis les traite pour les vérifier en déchiffrant les valeurs chiffrées ERN1. Le déchiffrement des valeurs chiffrées ERN1 est effectué par le serveur SRV en exécutant un circuit brouillé 5 correspondant au module ENC, et en utilisant des clés Krj stockées en association avec l'identifiant UID de l'utilisateur. Cette opération de déchiffrement permet d'obtenir les valeurs aléatoires brouillées RN1. Le décodage des valeurs brouillées RN1 pour déterminer les valeurs binaires d'origine de ces valeurs permet de déterminer l'ordre des touches du clavier 10 affiché. Le code secret SC introduit par l'utilisateur est déterminé à partir des positions saisies POS(i) et de l'ordre des touches du clavier affiché. A l'étape S29, le serveur SRV vérifie que le code secret SC ainsi introduit par l'utilisateur et obtenu correspond à un code secret SC' mémorisé en association avec l'identifiant UID de l'utilisateur. Si tel est le cas, le serveur 15 SRV considère que l'utilisateur a été authentifié. Le serveur SRV peut alors valider une transaction ou en informer un éventuel serveur partie à la transaction. A l'étape S30, le serveur SRV informe le terminal MT de la réussite ou de l'échec de l'authentification de l'utilisateur. Le processeur HP peut alors afficher une notification informant l'utilisateur du succès ou de 20 l'échec de la transaction. Selon un mode de réalisation, le programme APG-APG1 est configuré pour occuper au moins à 80% les ressources de calcul du processeur GP. De cette manière, le fonctionnement du processeur GP sera perturbé si un autre programme est chargé pour être exécuté par une ou plusieurs unités 25 TP ou SFU du processeur GP. Ainsi, on est assuré que l'image affichée à l'écran DSP n'est pas affichée par un autre programme exécuté par le processeur GP. Selon un mode de réalisation, le caractère de chaque touche peut être affiché dans l'image de la touche avec une position, une taille et une 30 police variables, définies dans le programme APG1 téléchargé à chaque transaction. Ainsi, le programme APG1 peut contenir la définition d'une seule ou de plusieurs des touches du clavier à afficher. Les étapes S11 à S30 peuvent être mises en oeuvre pour différentes applications, telles que l'accès à un service, la validation d'une opération de 35 paiement en ligne, ou encore un service de vote électronique. Dans le cas 3039948 25 d'un service de vote électronique, le programme APG1 fourni par le serveur SRV durant l'exécution de l'application AP peut comprendre des modules FCC permettant d'afficher les noms des candidats pour qui voter, associés chacun à une touche d'un clavier dont les touches sont réparties 5 aléatoirement dans l'image affichée par le terminal MT. L'utilisateur doit par exemple sélectionner un candidat en activant une touche du clavier correspondant au candidat pour lequel il souhaite voter et saisir un code secret en activant un ensemble de touches, permettant au serveur SRV de l'authentifier. 10 Par ailleurs, le module RNG1 couplé au module de chiffrement ENC, réalisés en circuit brouillé, peuvent être également mis en oeuvre dans une application d'établissement d'un canal de communication sécurisé entre le processeur GP et un processeur sécurisé ou le serveur SRV, sur la base d'une donnée secrète (les valeurs aléatoires brouillées RN1) partagée 15 seulement par le processeur GP et le serveur, et qui est non accessible en dehors du processeur GP et du serveur. Le canal de communication sécurisé peut être réalisé en utilisant un algorithme de chiffrement mis en oeuvre par le processeur GP et le serveur SRV, en utilisant la donnée secrète comme clé de chiffrement ou pour dériver une même clé de chiffrement par le 20 processeur GP et par le serveur SRV. Le programme APG, APG1 comporte alors un module de déchiffrement permettant de déchiffrer des données émises et chiffrées par le serveur SRV, à l'aide de la donnée secrète. Une procédure analogue à celle de la figure 10 peut être mise en oeuvre, cette procédure comportant les étapes S11 à S30, mais ne comportant pas 25 d'étape S20 d'affichage d'une image, ni d'étapes de détermination du code secret SC et de comparaison de ce code secret avec une valeur attendue. Les modules RNG1, ENC et FCC peuvent également être mis en oeuvre pour générer et afficher un code à usage unique à l'écran DSP du terminal. 30 Il est à noter que les nombres aléatoires en entrée du module KGN pour générer l'image du clavier à afficher ou pour générer un code à usage unique à afficher peuvent être transmis par le serveur SRV au processeur GP en utilisant le canal de communication sécurisé tel que décrit précédemment. 3039948 26 Il apparaîtra clairement à l'homme de l'art que la présente invention est susceptible de diverses variantes de réalisation et diverses applications. En particulier, l'invention n'est pas limitée à une réalisation sous la forme de circuits brouillés des modules RNG1, ENC et FCC. D'autres méthodes telles 5 que des méthodes d'obfuscation de programmes peuvent être employées pour masquer le fonctionnement des programmes chargés dans le processeur graphique, et/ou empêcher que ces programmes puissent être modifiés par une personne non habilitée. De telles méthodes sont par exemple décrites dans le document "Obfuscating Circuits via Composite-10 Order Graded Encoding" Benny Applebaumy, Zvika Brakerskiz, IACR-TCC 12/01/2015, ou bien dans le document "How to Obfuscate Programs Directly", Joe Zimmerman, IACR, 30/09/2014. Par ailleurs, l'affichage d'une image comportant des parties constituées de motifs de pixels rafraîchis individuellement à des instants 15 aléatoires et se combinant pour former une image intelligible en exploitant la persistance du système visuel humain constitue une invention à part entière pouvant être mise en oeuvre séparément du procédé de partage d'une donnée secrète. 20 REVENDICATIONS1. Procédé de partage d'une donnée secrète, comprenant des étapes consistant à : générer dans un processeur graphique d'un terminal (MT) une donnée secrète (RN1), chiffrer la donnée secrète, et transmettre la donnée secrète chiffrée à un processeur sécurisé (SRV, SE), caractérisé en ce que : les étapes de génération et de chiffrement de la donnée secrète (RN1) sont réalisées par un circuit brouillé (RNG1, ENC) exécuté par le processeur graphique (GP) et comprenant des portes logiques réparties en plusieurs rangs ordonnés, comprenant un premier rang rassemblant des portes logiques recevant exclusivement des valeurs d'entrée du circuit brouillé, les portes logiques d'un certain rang recevant exclusivement des valeurs issues de portes logiques appartenant à des rangs inférieurs ou des valeurs d'entrée du circuit brouillé, chaque porte logique étant associée à des valeurs brouillées représentant chaque valeur binaire possible de chaque bit d'entrée et de chaque bit de sortie de la porte logique, chaque porte logique étant associée à une table de vérité comprenant pour chaque combinaison possible des valeurs binaires d'entrée de la porte logique une valeur obtenue par chiffrement de la valeur brouillée représentant la valeur de sortie de la porte logique correspondant à la combinaison des valeurs binaires d'entrée de la porte logique, l'exécution du circuit brouillé par le processeur graphique comprenant des étapes consistant à : exécuter successivement les rangs de portes logiques en respectant l'ordre des rangs, l'exécution de chacun des rangs de portes logiques consistant à exécuter simultanément toutes les portes logique du rang, l'exécution d'une porte logique comprenant des étapes de sélection d'une ligne de la table de vérité associée à la porte logique, en fonction des valeurs brouillées d'entrée de la porte logique, et de déchiffrement de la ligne sélectionnée pour obtenir une valeur brouillée de sortie de la porte logique, et transférer les valeurs brouillées de sortie obtenues, qui sont appliquées à une entrée d'une porte logique appartenant à un rang 3039948 28 supérieur, d'une mémoire de sortie (VMEM) du processeur graphique vers une mémoire d'entrée (GMEM) du processeur graphique, de manière à être prises en compte lors de l'exécution du rang supérieur. 5 2. Procédé selon la revendication 1, dans lequel la donnée secrète (RN1) est générée aléatoirement ou pseudo-aléatoirement, le circuit brouillé (RNG1, ENC) comprenant un circuit (RNG1) de génération de nombres aléatoires ou pseudo-aléatoire. 10 3. Procédé selon l'une des revendications 1 et 2, dans lequel la donnée secrète (RN1) est générée aléatoirement en lançant simultanément l'exécution de plusieurs opérations identiques s'exécutant en parallèle, la donnée secrète dépendant de l'ordre dans lequel se terminent les opérations. 15 4. Procédé selon l'une des revendications 1 à 3, dans lequel la donnée secrète (RN1) est générée à l'aide d'un circuit brouillé (RNG1) configuré pour générer des nombres aléatoires ou pseudo-aléatoires, le circuit brouillé comprenant un premier rang de portes associées à des tables 20 de vérité présentant des lignes identiques mais ordonnées différemment, de manière à fournir des données de sortie différentes pour de mêmes données d'entrée, les données de sortie du rang de portes étant fournies à un rang de portes suivant en fonction d'un ordre dans lequel elles sont fournies par le premier rang de portes. 25 5. Procédé selon l'une des revendications 1 à 4, dans lequel l'exécution du circuit brouillé est réalisée par un interpréteur réalisé lui-même au moins en partie sous la forme d'un circuit brouillé. 30 6. Procédé selon l'une des revendications 1 à 5, comprenant une étape d'établissement d'une liaison entre le processeur graphique (GP) et le processeur sécurisé (SRV), la liaison étant sécurisée au moyen de la donnée secrète (RN1) partagée uniquement entre le processeur graphique et le processeur sécurisé. 3039948 29 7. Procédé d'authentification d'un utilisateur par un serveur (SRV), à partir d'un terminal connecté au serveur, le terminal (MT) comprenant un processeur principal (HP), un processeur graphique (GP) contrôlant un écran d'affichage (DSP), et un organe de commande (CM), le procédé comprenant 5 des étapes consistant à : charger dans le processeur graphique un programme (RN1, ENC, FCC) configurant le processeur graphique pour exécuter le procédé selon l'une des revendications 1 à 6, afin de générer une donnée secrète (RN1) partagée uniquement entre le processeur graphique et le serveur, et pour 10 afficher à l'écran d'affichage une image (IM) d'un clavier ayant une répartition de touches définie et déterminable à l'aide de la donnée secrète partagée, exécuter le programme par le processeur graphique pour générer la donnée secrète partagée et afficher l'image du clavier à l'écran d'affichage, l'image du clavier étant affichée sous la forme de trames complémentaires 15 (IM1) non intelligibles individuellement pour un utilisateur, générées par un algorithme de cryptographie visuelle et affichées successivement à une cadence adaptée pour exploiter la rémanence du système visuel de l'utilisateur afin qu'une image combinant les trames complémentaires apparaisse d'une manière intelligible pour l'utilisateur, 20 recueillir par le processeur principal des positions de l'écran d'affichage (Pos ) désignées par l'utilisateur au moyen de l'organe de commande, en relation avec le clavier virtuel affiché, transmettre par le processeur principal au serveur les positions désignées par l'utilisateur, et 25 vérifier une cohérence entre les positions désignées, et un code secret d'authentification de l'utilisateur, connu du serveur, l'utilisateur étant authentifié si la cohérence est vérifiée. 8. Procédé selon la revendication 7, dans lequel la donnée secrète 30 (RN1) partagée définit la répartition des touches de l'image du clavier (IM1). 9. Procédé selon la revendication 7 ou 8, dans lequel l'affichage de l'image du clavier (IM1) comprend : 3039948 30 des étapes successives de sélection d'une décomposition en motifs de pixels complémentaires pour chaque pixel ou groupe de pixels de l'image du clavier, représentant des libellés de touches du clavier, des étapes successives de génération de motifs de pixels 5 complémentaires (EP1, EP2) pour chaque décomposition sélectionnée, de manière à ce que les libellés des touches ne soient visibles à l'écran d'affichage que si les motifs de pixels complémentaires sont superposés, et des étapes successives d'affichage des motifs de pixels générés à des instants sélectionnés aléatoirement, espacés d'une durée variable telle 10 que le système visuel humain puisse les combiner bien qu'ils soient affichés successivement, les instants d'affichage des motifs de pixels formant une image affichée du clavier étant distincts et indépendants les uns des autres. 10. Procédé selon la revendication 9, dans lequel l'affichage de 15 l'image du clavier (IM1) est effectué par un circuit brouillé (FCC) exécuté par le processeur graphique (GP). 11. Terminal configuré pour mettre en oeuvre le procédé selon l'une des revendications 1 à 10. 20 12. Programme d'ordinateur qui, lorsqu'il est chargé et exécuté par un terminal comprenant un processeur principal (HP) et un processeur graphique (GP), configure le terminal pour mettre en oeuvre le procédé selon l'une des revendications 1 à 10. 25