FR 3038745 A1 20170113 FR 1501469 A 20150710 1 Description de l'invention : Clavier virtuel numérique ou alpha-numérique pour smartphone, tablette, pc avec un affichage dynamique et aléatoire muni d'un cryptage unique généré à chaque utilisation comprenant un nombre de combinaisons infinies. Ce clavier a été étudié pour répondre à toutes les techniques de détournement d'information connues à ce jour permettant de résister aux intrusions de type keylogger, virus muni de keyloggér, Man in Middle, screenshot, dernière faille Watering hole sur i.e. Domaine technique: Clavier virtuel utilisé pour des saisies alphanumériques au travers de site web, applications mobile et fixe, automate, et tout autreappareil nécessitant la saisie d'information à l'aide d'un clavier virtuel et ayant besoin de veiller à préserver la confidentialité et l'intégrité des saisies notamment envers les techniques de détournement connues et utilisées à ce jour de type keylogger, iirus muni de keylogger, Man in Middle, screenshot, dernière faille Watering hole sur Technique antérieure: On connait à ce jour des claviers virtu9l numérique ou alphanumerique qui ont un positionnement conventionnel de touches toujours identiques selon une disposition qwerty ou azerty avec une saisie opérée au moyen d'une sélection par le biais d'un doigt, d'un stylet ou d'une souris. Il existe des claviers numérique virtuel de type aléatoire cryptés en SSL qui affichent;une grille de numéros dans un ordre aléatoire de 0 à 9 (site web bancaire) Toutefois cet affichage réside dans le positionnement aléatoire dans la page avec une position des touches chiffrées également aléatoire et pour certains, avec le caractère qui est masqué une fois saisi (par clic) avec un encodage dès la saisie. Avec ce type de clavier nous n'avons en commun que le positionnement aléatoire de la grille de numéros et le masquage de numéros. Nous avons effectué des recherches sur un critère concernant les claviers vituels en se basant sur les mots clés " clavier? and virtuel?" ce qui nous a donné 336 résultats dont la plus part utilisent des techniques évoquées plus haut. Sur ces résultats 2 ont des points similaires avec nous à savoir: - FR2907295A1 Titre : INTERFACE HOMME MACHINE MOBILE Ce procédé est un clavier physique qui affecte plusieurs variables à une touche. Avec ce système nous avons en commun le principe d'affectati9n de variable à une touche mais notre procédé diffère dans le fait que cette affectation est aléatoire à chaque génération du clavier et que notre clavier est virtuel, il est crypté et il utilise un nombre 3038745 2 de touches affichées supérieures avec des touches qui voient leurs valeurs défiler en continue sous frime de compteur. - W02012131420A1 Titre : SYSTEME ET PROCÉDÉ D'UTILISATION D'UN CLAVIER VIRTUEL DYNAMIQUE Ce procédé de clavier virtuel utilise un cryptage dynamique ayant une configuration qwerty ou aléatPire qui s'affiche sur une interface utilisateur avec des touches déplacées de leur position iéelle. Avec ce type de clavier nous avons en commun, comme les précédents décrit auparavant, la position aléatoire des caractères à l'affichage et la substitution des aractères. Notre clavier;diffère dans le fait que notre affichage alphanumérique a: son affichage dynamique, qui se fait sur un nombre supérieur de touches (pour son pavé numérique 12 au lieu de 10 dont 2 sont des compteurs et sa partie alpha 60 dont 8 sont des compteurs) (Figure 2) ce qui permet d'empêcher la déduction des touches par un virus de type screenshot ; son ,affichage aléatoire, qui diffère dans le fait qu'à chaque sélection de chiffre la grillee%son ordre se régénère systématiquement avec à chaque fois trois touches qui voiet leurs valeurs défiler en continu sous forme de compteur. Cette technique renforIce la protection contre le screenshot et répond au watering hole en condamnant toutes formes d'attaques connues à ce jour et qui permettent de pouvoir identifier les touches sélectionnées ; son cryptage propriétaire, qui est unique, aléatoire, dynamique comprenant un nombre de combinaisons infinies. Exposé de l'invention: Problème Technique : Que ce soit les claviers virtuel à affichage conventionnel, les claviers physique, qui servent pour la saisie d'information sur les sites web et application, ils doivent tous faire face à la récupération frauduleuse des informations par le biais de techniques diverties et variées de type : keylogger, virus muni de keylogger, Man in Middle, screenshot, dernière faille Watering hole sur i.e. ce qui en fait le point faible principale de tout dispositif ayant recours à la saisie d'identifiants à distance. Si il existe des claviers numérique virtuel de type aléatoire cryptés en SSL qui affichent une grille de numéros dans un ordre aléatoire de 0 à 9 (site web bancaire) ou claviers alphanumériques de ce type avec un affichage qui réside dans le positionnement aléatoire dans la !page avec une position des touches chiffrées également aléatoire et pour certains, avêc le caractère qui est masqué une fois saisi (par clic) avec un encodage dès la saisie, leur technologie permet de répondre à la technique du Man in Middle, mais 3038745 3 ils restent vulnérable aux virus embarquant un screenshot et à la faille Watering hole sur i.e Solution Technique: Notre clavier répond à toutes les techniques d'interception de données connus à ce jour dans le fait qu'il a un affichage dynamique aléatoire qui se fait : Pour un clavier virtuel numérique(Figure 1) : sur un nombre supérieur de touches soit 25 touches avec 11 vides, 10 sont statiques, 1 vide qui prendra la valeur du chiffre sélectionné et 3 avec des compteurs qui voient leurs valeurs défiler en continu sous forme de compteur et pour un clavier virtuel alphanumérique, soit dans son pavé numérique(Figure 2-P2) 12 touches au lieu de 10 dont 2 compteurs et sa partie alpha, 60 dont 8 sont des compteurs (Figure 2-P1) Dans son affichage aléatoire, qui diffère dans le fait qu'à chaque sélection de chiffre la grille et son ordre se régénère systématiquement avec à chaquel fois les touches qui voient leurs valeurs défiler en continu sous forme de compteur. Dans son cryptage propriétaire, qui est unique, aléatoire, dynamique comprenant un nombre de combinaisons infinies. La combinaison de ces procédés condamne toutes formes d'ttaques connues à ce jour qui permettent de pouvoir identifier les touches sélectionnées. Description des dessins : Figure 1 : A : Pavé numérique (exemple de premier affichage) Al : Sélection du premier chiffre B : Régénération de la disposition du clavier Bl: Sélection du deuxieme chiffre C: Régénération de la disposition du clavier Cl: Sélection du troisième chiffre D: Régénération de la disposition du clavier Dl: Sélection du quatrième chiffre E: Régénération de la disposition du clavier Figure 2 : P1 : Pavé alphabétique avec les symboles les plus utilisés. Avec 8 compteurs P2 : Pavé numérique avec 2 compteurs. P3 : Partie des fonctions validation, effacer etc... 3038745 4 Exposé détaillé de l'invention : Ce clavier est un clavier avec un cryptage comprenant au minimum 41\65536 possibilités. Notre clavier virtuel généré fait appel à des images bitmap (ou png),'affichant le clavier avec les caractères alphanumérique, et non à des coordonnées matricielles. Il est rattaché au préalable à un compte client qui génère un cryptage et un affichage aléatoire, tout deux unique à chaque connexion. L'identification du client se fait au travers d'un premier écran demandant de saisir l'identifiant affiché sur le site du fournisseur. Cette identification se fait avec le clavier physique sous connexion https. Une fois validée, au travers de la connexion https établie, la partie cryptage génère un clavier virtuel unique dans son cryptage et son affichage aléatoire pour cette connexion. Le principe de notre cryptage et de son clavier virtuel, consiste à mettre en relation trois éléments totalement distincts qui sont l'image du caractère affiéhée sur le clavier, la variable qui est associée à cette image et un caractère spécial qui initialise cette variable. Le nombre de combinaisons possibles du cryptage est établi par le fait que le caractère spécial qui sert à initialiser la variable se fait au travers d'un tableau Unicode comprenant 65536 caractères. À chaque connexion le clavier numérique (Figure 1) se verra associé 10 caractères choisis aléatoirement parmi les 65536 caractères présents dans le tableau Unicode. Ces 10 caractères seront utilisés par le module de cryptage durant toute la connexion. Lors de la prochaine connexion une sélection aléatoire de 10 autres caractères aura lieu et ainsi de suite à chaque fois. Concernant la disposition des images bitmap comprenant les caractères affichés, cet affichage se fait de manière aléatoire à chaque saisie via un script en javascript incluant 5 parties: La première partie, sert à la gestion de l'affichage des 3 compteurs et génére 3 touches comportant chacune les images de 0 à 9; La deuxième partie, sert à la gestion des touches fixes et génére 10 touches auxquelles sont affectées une image de 0 à 9 sans répétition; La troisième partie, sert à la gestion des images sans caractère et génére 11 touches auxquelles une image sans caractère est affectée; La quatrième partie, gère la combinaison de l'affichage aléatoire des 25 touches ( 3 pour les compteurs, 10 pour les images fixes, 1 qui s'initialisera avec l'image qui sera présélectionnée, et 11 pour les images sans caractère)dans une grille de 5 par 5, qui fait qu'à chaque sélection d'une image caractère, la variable affectée à cette image au travers du tableau Unicode est gardée en mémoire après avoir substitué l'image sélectionnée par 3038745 une image bleue. Il est alors procédé à un nouvel affichage aléatoire et ainsi de suite jusqu'à la validation du code. La cinquième partie, gère l'affichage d'un astérisque pour chaque image validée et l'affichage des 3 touches , , qui ne font pas appel au cryptage et sont codées selon leurs fonctions. En ce qui concerne la gestion de l'affichage du clavier alphanumérique (Figure 2) il se fait sur le même principe comportant 6 parties: La première partie, sert à la gestion de l'affichage des 8 compteurs qui génèrent 8 touches comportant chacune 26 images de a à z et génèrent 8 touches comportant chacune 26 images de A à Z. Le choix de l'affichage des images en minuscule ou majuscule se faisant au préalable par la sélection de la touche ; La deuxième partie, sert à la gestion de l'affichage des touches fixes qui génèrent 52 touches auxquelles sont affectées une image de a à z incluant leis 26 symboles commun du clavier azerty/qwerty sans répétition et génèrent 52 touchesiauxquelles sont affectées une image de A à Z incluant les 26 symboles commun du clavierazerty/qwerty sans répétition. Le choix de l'affichage des images en minuscule ou majuscule se faisant au préalable par la sélection de la touche ; La troisième partie, gère la combinaison de l'affichage aléatoire des 72 touches dans deux grilles. Une alpha de 10 par 6 ( 8 pour les compteurs, 26 pour les symboles, 26 pour les lettres de a à z) et une autre numérique de 3 par 4 ( 2 pour les compteurs, 10 pour les chiffres de 0 à 9) qui fait qu'à chaque sélection d'une image caractère, la variable affectée à cette image au travers du tableau Unicode est gardée en mémoire après avoir substitué l'image sélectionnée par une image bleue. Il est alors procédé a un nouvel affichage aléatoire et ainsi de suite jusqu'à la validation du code ; La quatrième partie, sert à la gestion de l'affichage des 2 compteurs et génére 2 touches comportant chacune les images de 0 à 9; La cinquième partie, sert à la gestion des touches fixes et génére 10 touches auxquelles sont affectées une image de 0 à 9 sans répétition; La sixième partie, gère l'affichage d'un astérisque pour chaque image validée et l'affichage des 5 touches , , , , qui ne font pas appel au cryptage et sont codées selon leur fonction. Pour la fonction de sélection de caractères, que ce soit les touches à affichage fixe ou les touches avec un affichage compteur, elle se fait en premier par une présélection à 3038745 6 l'aide de la souris, du doigt ou d'un stylet, qui va estomper le caractère par du bleu tout en arrêtant le défilement du compteur pour les touches concernées. Cette présélection est ensuite validée en cliquant sur la souris ou en appuyant à l'aide du doigt ou du stylet. À ce moment là l'image du caractère sélectionné s'affiche dans la case prévue à cet effet et cela engendre une nouvelle disposition de l'affichage du clavier. Si l'on veut saisir des caractères en majuscule, il faut au préalable sélectionner la touche ce qui va automatiquement relancer un affichage aléatoire de l'ensemble du clavier en affichant les caractères en majuscule et dans une autre disposition de touche. La sélection du caractère en majuscule se faisant comme précédemment. Nous avons pris pour exemple la saisie d'une séquence d'un code numérique soit 2476 sur l'affichage d'un clavier virtuel numérique (Figure 1). Comme expliqué l'affichage de notre clavier nuMérique (Figure 1) au départ comporte donc 25 touches dont 12 vides et 13 touches dont 3 sont des compteurs. Pour établir les valeurs de 0 à 9 nous devons affecter une variable à chaque image comme développé précédemment. Nous affectons donc une variable allant de var 0 à var 9 : - Var 0 = image 0 (nous savons que la var 0 sera pour transmettre un 0) - Var 1= image 1 (nous savons que la var 1 sera pour transmettre un 1) - Var 2 = image 2 (nous savons que la var 2 sera pour transmettre un 2) - Var 3 = image 3 (nous savons que la var 3 sera pour transmettre un 3) - Var 4 = image 4 (nous savons que la var 4 sera pour transmettre un 4) - Var 5 = image 5 (nous savons que la var 5 sera pour transmettre un 5) - Var 6 = image 6 (nous savons que la var 6 sera pour transmettre un 6) - Var 7 = image 7 (nous savons que la var 7 sera pour transmettre un 7) - Var 8 = image 8 (nous savons que la var 8 sera pour transmettre un 8) - Var 9 = image 9 (nous savons que la var 9 sera pour transmettre un 9) En base de données on dispose d'un tableau Unicode complet avec 65536 caractères dans un ordre généré aléatoirement. 0 ci 9 l rx t j cb cp X E et Z B e A e 0 .1 I CL ci R r Y y e a o b 3 G cl cf a a a - E 3 3.- G f d g G y Y etc 3038745 7 Dans ce tableau Unicode aucun caractère n'est représenté deux fois. Chaque variable sera initialisée par le caractère lui correspondant, La Première variable est initialisée par le premier caractère de la table, La Deuxième variable par le deuxième caractère de la table, La Troisième variable par le troisième caractère et ainsi de suite. Chaque correspondance faite entre chaque variable affectée à une image et son caractère correspondant dans le tableau Unicode, est mis en base de données le temps de la connexion. Ce qui nous donne dans notre exemple: - Var 0 = image 0 = - Var 1= image 1= - Var 2 = image 2 = - Var 3 = image 3 = L - Var 4 = image 4 = ri - Var 5 = image 5 = t - Var 6 = image 6 = - Var 7 = image 7 = cb - Var 8 = image 8 = cp - Var 9 = image 9 = A 911.111 Pour notre exemple (figure 1) nous utilisons une sélection au travers d'une touche image fixe pour le 2 et le 7 et d'une image compteur pour le 4 et le 6. À l'affichage du clavier virtuel lorsqu'on va positionner le pointeur de la souris ou le doigt sur l'image de la touche 2, cela va remplacer l'image du 2 par du bleu selon la fonction , et afficher la valeur 2 en simultané dans la case affectée à cet effet ( T Figure 1). Lors de la validation (figure 1-A1) par un clic l'image du 2 donc un « » est sélectionnée pour être envoyée au serveur. Un astérisque est affiché et une nouvelle disposition des touches sur le clavier est générée. Lors de l'affichage du clavier virtuel, la sélection de l'image du 4 (figure 1- B) est faite cette fois ci par le biais d'une touche compteur. Le défilement des images du compteur reste statique en substituant l'image du 4 par une image bleue(figure 1-B1). Lors de la validation par un clic l'image du 4 donc un « n » est 3038745 8 sélectionnée pour être envoyée et un deuxième astérisque (figure 1 -C) est affiché et ainsi de suite pour chaque chiffre sélectionné. Pour le code : 2476 il est donc envoyé « rti cb j » au module du cryptage sur le serveur. Le serveur reçoit donc la séquence des 4 caractères Unicode correspondant à 2476 soit , il procède à la récupération de la correspondance. « » est le caractère qui a été affecté à la variable 2, qui désigne l'image 2 et qui sur notre serveur a pour valeur 2. Donc nous savons que le client a voulu saisir un 2. « ro est le caractère qui a été affecté à la variable 4, qui désigne l'image 4 et qui sur notre serveur a pour valeur 4. Donc nous savons que le client a voulu saisir un 4. « cb » est le caractère qui a été affecté à la variable 7, qui désigne l'image 7 et qui sur notre serveur a pour valeur 7. Donc nous savons que le client a voulu saisir un 7. «j » est le caractère qui a été affecté à la variable 6, qui désigne l'image 6 et qui sur notre serveur a pour valeur 6. Donc nous savons que le client a voulu envoyé un 6. La partie cryptage du serveur procède à une comparaison du code saisi et de l'identifiant client qu'il a en mémoire avec les informations enregistrées en base de données à l'aide d'un script qui offre trois possibilités : Premièrement: L'authentification est validée, alors le client est redirigé vers la page ou la ressource qui le concerne. Deuxièmement: L'authentification échoue, cela entraîne la réinitialisation du clavier virtuel et le client est invité à ressaisir son code. Troisièmement: Au bout de 5 tentatives infructueuses, l'utilisateur est redirigé vers une page l'informant du blocage momentané de son compte et de la démarche qu'il doit entreprendre pour réinitialiser son code. Les 5 tentatives mettront donc fin à cette connexion https. Une fois la procédure de réinitialisation effectuée, il aura la possibilité de retourner sur la page de connexion et de ressaisir son Identifiant. Le processus complet de la génération du clavier virtuel est alors repris à zéro. Domaine d'Application : Tout dispositif nécessitant la gestion de mot de passe pour accéder à des ressources (site web, applications mobile et fixe, automate etc...) et tout autre appareil nécessitant la saisie d'information ayant besoin de veiller à préserver la confidentialite et l'intégrité des saisies notamment envers les techniques de 3038745 9 détournement connues et utilisées à ce jour de type keylogger, virus muni de keylogger, Man in Middle, screenshot, dernière faille Watering hole sur i.e., Tel que : moyen de paiement mobile, gestion des accès à distants, site bancaire, E-commerce, M-commerce, site sécurisé... REVENDICATIONS1. Clavier virtuel numérique ou alpha-numérique muni d'un cryptage unique aléatoire généré à chaque utilisation comprenant un nombre de combinaisons infinies avec un affichage dynamique et aléatoire qui se fait : pour un clavier virtuel numérique (Figure 1) sur un nombre supérieur de touches soit 25 touches avec 11 vides, 10 sont statiques, 1 vide qui prendra la valeur du chiffre sélectionné et 3 avec des compteurs qui voient leurs valeurs défiler en continu sous forme de compteur et pour un clavier virtuel alphanumérique, soit dans son pavé numérique (Figure 2-P2) 12 touches au lieu de 10 dont 2 compteurs et sa partie alpha, 60 dont 8 sont des compteurs (Figure 2-P1) et dans son affichage qui est aléatoire dans le fait qu'à chaque sélection de chiffre la grille et son ordre se régénère systématiquement avec à chaque fois les touches qui voient leurs valeurs défiler en continu sous forme de compteur. Ce dispositif est utilisé pour terminal mobile (smartphone, tablette), pc pour des saisies alphanumériques au travers de site web, applications mobile et fixe, automate, ou tout autre appareil nécessitant la saisie d'information à l'aide d'un clavier virtuel et ayant besoin de veiller à préserver la confidentialité et l'intégrité des saisies notamment envers les techniques de détournement connues et utilisées à ce jour. 2. Clavier virtuel selon la revendication 1 dans laquelle nous utilisons un affichage dynamique et aléatoire caractérisé en ce que son affichage est aléatoire dans le fait qu'à chaque sélection de chiffre la grille et son ordre se régénère systématiquement. 3. Clavier virtuel selon la revendication 1 et 2 dans lesquelles nous utilisons un clavier virtuel ayant un affichage aléatoire dans un affichage de touches en nombre supérieur tel que pour le clavier virtuel numérique(Figure 1) sur un nombre de 25 touches 12 sont vides dont 1 prend la valeur de la touche présélectionnée, 10 sont statiques et 3 avec des compteurs et pour un clavier virtuel alphanumérique, dans son pavé numérique(Figure 2-P2) 12 touches au lieu de 10 dont 2 sont des compteurs et sa partie alpha 60 dont 8 sont des compteurs (Figure 2-P1) caractérisé en ce que nous faisons appel 'à des touches compteur qui voient leur valeur défiler dans le but d'empêcher de pouvoir au moyen de captures d'écrans de déduire la saisie des touches sélectionnées et de pouvoir éviter d'effectuer une corrélation avec le mouvement de la souris enregistré pour déterminer le code saisie.