Brevet FR3038759A1 — publié le 20170113

Description de l'invention : Procédé de cryptage et décryptage dynamique et aléatoire de données offrant un nombre de combinaisons infinies qui est unique à chaque utilisateur ne faisant appel ni à une fonction booléenne, ni à un échange de clé et transportant un ID, des données de position GPS avec une fonction de corrélation ayant valeur de répudiation et fonctionnant sous une architecture Client/Serveur . Domaine technique: Toute application fonctionnant sous un environnement client-serveur transportant des données alphanumérique dont l'intégrité et la confidentialité doivent être préservés. Technique antérieure: Il existe plusieurs types de cryptages tel que le chiffre de César, le ROT13 (Cryptage utilisé par les systèmes Unix) et le chiffre de Vigenère qui ont la même particularité d'être basés sur des mouvements de caractères, chacun étant substitué par un autre. Le chiffrement de Vigenère est un cryptosystème symétrique qui utilise la même clé pour le chiffrement et le déchiffrement. Il ressemble beaucoup au chiffrement de César à la différence près qu'il utilise une clé plus longue pour palier au principal problème du chiffre de César :'Une même lettre n'est codée que d'une seule façon. Ce cryptage fait appel à un tableau de substitution. Le chiffrement de ROT13 est utilisé dans le monde Unix et à l'instar du chiffre de César il remplace une lettre par une autre lettre avec un décalage de 13 lettres ce qui ne présente aucune sécurité. La seule chose que nous ayons en commun avec ces 3 cryptages est la substitution de caractère. Le DES (Data Encryptions Standard) est un algorithme à clé secrète qui travaille avec une clé sur 64 bits et fait appel à une fonction booléenne. Il s'agit d'un système de chiffrement symétrique par blocs de 64 bits dont 8 bits (un octet) servant de test de parité (pour vérifier l'intégrité de la clé). Chaque bit de parité de la clé (1 tous les 8 bits) sert à tester un des octets de la clé, c'est-à-dire que chacun des bits de parité est ajusté de façon à avoir un nombre impair de '1' dans l'octet à qui il appartient. La clé possède donc une longueur « utile » de 56 bits, ce qui signifie que seuls 56 bits servent réellement dans l'algorithme. L'algorithme consiste à effectuer des combinaisons, des substitutions et des permutations entre le texte à chiffrer et la clé, en faisant en sorte que ces 3038759 2 opérations puissent se faire dans les deux sens (pour le déchiffrement). La clé est codée sur 64 bits et formée de 16 blocs de 4 bits, mais « seuls » 56 bits servent effectivement à chiffrer. Les grandes lignes de l'algorithme sont les suivantes : Fractionnement du texte en blocs de 64 bits (8 octets) - Permutation initiale des blocs - Découpage des blocs en deux parties: gauche et droite - Etapes de permutation et de substitution répétées 16 fois - Replacement des parties gauche et droite à leur position d'origine - Permutation initiale inverse. Le 3DES, est plus complexe que le DES en cela qu'il résulte de l'enchainement de trois DES successifs mais il utilise pour cela deux clés secrètes différentes pour renforcer la sécurité initiale du DES. Tous ces cryptages DES, 3DES, font appel à des permutations de blocs puis bit à bit ainsi qu'à une fonction booléenne combinée à une ou deux clés secrètes avec une ronde. Nous avons en commun avec le DES et le 3DES, la génération aléatoire de tableaux permettant la permutation de bit à bit. En ce qui concerne les autres cryptages connus tel que le RSA, le PGP, l'AES nous ne faisons appel à aucunes de leurs techniques. Nous avons effectué des recherches sur un critère avec les mots clés " cryptage? and (base de données" et nous avons trouvé 89 résultats. Sur ces 89 résultats, aucun n'a d'autre point en commun que ceux déjà évoqué plus haut. Exposé de l'invention: Problème Technique : Les chiffrements à décalage n'offrent aucune sécurité, une fois deviné le décalage compris entre 1 et 26 le message peut être décrypté car il est facile de trouver ce décalage. Il existe un chiffrement appartenant à un cryptosystème symétrique qui utilise la même clé pour le chiffrement et le déchiffrement. Il ressemble beaucoup au chiffrement à décalage à la différence près qu'il utilise une clé plus longue et fait appel à un tableau de substitution. Il existe des algorithmes à clé secrète qui travaille avec une clé sur 64 bits et font appel à une fonction booléenne. L'algorithme consiste à effectuer des combinaisons, des substitutions et des permutations entre le texte à chiffrer et la clé, en faisant en sorte que ces opérations puissent se faire dans les deux sens (pour le déchiffrement). Certain utilise des enchaînements successifs avec deux clés secrètes 3038759 3 différentes pour renforcer la sécurité initiale. La cryptanalyse par différentiel reste possible pour retrouver la clé secrète dans le cas de ces cryptages avec des délais plus ou moins long. Il existe des cryptages ayant recours pour certain à un algorithme asymétrique utilisant soit une clé privé et une publique crée par l'utilisateur avec communication de la clé publique pour le décryptage, soit une clé secrète. D'autres sont des cryptages à chiffrement GPG (Gnu Privacy Guard) . Quelques soit ces cryptages évoqués plus haut la sécurité réside dans la puissance de calcul nécessaire au décryptage ou dans la préservation du secret de la clé privé. Solution Technique: Si notre cryptage fait appel à la substitution de caractère et à la génération aléatoire de tableaux permettant la permutation de bit à bit, il ne fait pas appel à une clé secrète et les tableaux et les méthodes utilisées pour le cryptage et le décryptage sont définis de manière totalement aléatoire sans clé et sans intervention humaine et unique à chaque utilisateur. Le nombre de combinaisons est infini est en l'état actuel de la technique il reste impossible de le décrypter. Enfin il permet d'utiliser la corrélation d'une position GPS comme facteur de répudiation. Description des dessins : Figure 1: Exemple d'utilisation du cryptage dans une Gestion d'Accès Figure 2 : Exemple de tableau Ascii étendu Figure 3 : Exemple de tableau comportant les caractères Ascii étendu Figure 4 : Tableau utilisé pour exemple du cryptage Exposé détaillé dé l'invention : Notre cryptage fonctionne sous une architecture Client/Serveur, il est basé sur un algorithme de chiffrement ne faisant appel ni à une fonction booléenne, ni à un échange de clé. Son chiffrement combine la substitution de caractères et la permutation bit à bit sur des blocs de 8, 16 et 32 bits de manière autonome totalement aléatoire et unique à chaque utilisateur. Il permet de transporter un ID et des données de position GPS avec une fonction de corrélation ayant valeur de répudiation. Dans un premier temps, nous utilisons un tableau de référence composé de tous les caractères de l'alphabet en majuscule et minuscule ainsi que de tous les symboles et les chiffres dans un ordre défini au préalable. Nous générons alors d'autres tableaux de substitution de manière aléatoire. Ceux-ci nous serviront à substituer les caractères par d'autres caractères alphanumériques, 3038759 4 caractères spéciaux ou symboles. Ce cryptage requiert au minimum 4 tableaux de substitutions, 3 tableaux de permutations et 1 tableau de correspondance. Des compteurs tournant en permanence et stoppés à différent moments permettent de déterminer de manière aléatoire les méthodes définissant la séquence dans laquelle ces tableaux seront utilisés ainsi que le pourcentage de fractionnement de la chaine de caractères. Ce fractionnement permettant d'une part, d'accroître le niveau de cryptage et d'autre part, d'intégrer à la jonction des deux blocs l'ID unique avec les coordonnées GPS et la méthode utilisée à l'instant t. Chaque caractère converti en binaire, définit les changements de tableau. C'est ainsi que le choix des tableaux de substitution est fait de manière totalement aléatoire. Il s'en suit alors une série de permutation bit à bit au travers de trois tableaux: o un de 8 bits o un de 16 bits o un de 32 bits Nous utilisons en même temps les deux concepts, où les tableaux utilisés sont choisis de manière totalement aléatoire et où chaque message qui doit être crypté fait partie du mécanisme de cryptage, ce qui le rend unique à chaque utilisateur et à chaque requête. Cela nous donne un nombre infini de combinaisons possibles pour un seul caractère, à la fois par la substitution de caractères combinée et par la permutation bit à bit, qui se fait au travers de plusieurs tableaux de substitution et de permutation et sachant que ces tableaux et l'ordre dans lesquels ils sont utilisés est totalement aléatoire. Notre cryptage possède plusieurs facteurs d'authentification indépendants qui sont un ID unique, un cryptage unique à chaque ID, des coordonnées de géolocalisation assurant une fonction de répudiation et garantissant que l'unique personne autorisée à déchiffrer est la personne à l'origine de la demande. Technique du Cryptage: Cryptage: Chargement des tableaux Nous avons choisi d'utiliser, pour des raisons d'interopérabilité, un tableau comportant les caractères d'un tableau ASCII étendu contenant les sous-ensembles du jeu de caractère ASCII dont les caractères sont codés sur 8 bits. Il devra comprendre obligatoirement la totalité de l'alphabet, des lettres majuscule et minuscule avec les symboles les plus utilisés tenant compte des langues usuelles (latin, chinois, etc). 3038759 Toutefois nous aurions pu utiliser des tableaux Unicode ou ASCII ou autre. L'important étant d'avoir un encodage identique côté Client et côté Serveur ainsi que des tableaux comportant le même nombre de colonnes et de lignes (Dans notre exemple 14X14). L'application Client embarque par défaut un tableau comportant les caractères ASCII étendu (Figure 2) ce tableau sera le tableau de référence. Au premier lancement de l'application une série de 8 tableaux est chargée (4 tableaux de substitution (Figure 4), 3 tableaux de permutation, 1 tableau de correspondance). Ces tableaux posséderont un bail au terme duquel une mise à jour sera faite afin de charger de nouveaux tableaux. Ce bail sera paramétrable en fonction du niveau de sécurité attendu. Quel que soit l'origine de la demande (Initialisation de l'application ou Mise à jour) la méthode de chargement des tableaux reste la même. La sélection des tableaux est faite côté serveur par un compteur. Ce compteur tournera entre les valeurs de 1 à 99. Exemple : For (i = 1; i REVENDICATIONS1. Procédé de cryptage et décryptage dynamique et aléatoire de données offrant un nombre de combinaisons infinies fonctionnant sous une architecture Client/Serveur caractérisé en ce qu'il est unique à chaque utilisateur ne faisant appel ni à une fonction booléenne, ni à un échange de clé mais à la substitution de caractère et à la génération aléatoire de tableaux permettant la permutation de bit à bit avec les tableaux et les méthodes utilisées pour le cryptage et le décryptage qui sont définis de manière totalement aléatoire sans intervention humaine et transportant un ID, des données de position GPS avec une fonction de corrélation ayant valeur de répudiation 2. Procédé de cryptage et décryptage selon la revendication 1 où notre procédé de cryptage est dynamique et aléatoire offrant un nombre de combinaisons infinies unique à chaque utilisateur caractérisé en ce que chaque caractère converti en binaire, définit les changements de tableau et c'est ainsi que le choix des tableaux de substitution est fait de manière totalement aléatoire et dans la manière dont nous utilisons en même temps les deux concepts, où les tableaux utilisés sont choisis de manière totalement aléatoire et où chaque message qui doit être crypté fait partie du mécanisme de cryptage, ce qui le rend unique à chaque utilisateur et à chaque requête. 3. Procédé de cryptage et décryptage selon la revendication 1 dans laquelle nous utilisons la géolocalisation établie comme facteur de répudiation caractérisé en ce que le cryptage prend en compte des coordonnées de géolocalisation et que le décryptage n'est possible qu'après avoir effectué la corrélation de proximité entre ses deux positions. il ne fait pas appel à une clé secrète et le nombre de combinaisons est infini