FR 3065552 A1 20181026 FR 1770416 A 20170424 1 Titre Procédé et système d'authentification et de non-répudiation Domaine de l'invention La présente invention concerne un procédé et un système d'authentification et de non- répudiation. Arrière-plan de l'invention La non-répudiation est l'impossibilité pour toute personne ou entité engagée dans une communication ou contrat par voie informatique, de nier avoir reçu ou émis un message. Autrement dit, la non-répudiation est la possibilité de vérifier que l'envoyeur et le destinataire sont bien les parties qui disent avoir respectivement envoyé ou reçu les données ; la non-répudiation de l'origine prouve que les données ont été envoyées, et la non-répudiation de l'arrivée prouve qu'elles ont été reçues. Actuellement, les algorithmes asymétriques assurent la non-répudiation de données signées dans la mesure où seul l'expéditeur possède la clé privée utilisée pour cette signature, ce qui empêche le récepteur de simuler une transmission à la place de l'expéditeur. Généralement, la clé privée est associée à une clé publique, cette clé publique permettant, à toute personne le souhaitant, de vérifier la signature. Comme la clé publique d'un utilisateur doit être accessible à l'ensemble des autres utilisateurs, le lien entre une clé publique et une personne donnée doit être garanti par une tierce partie de confiance, afin que nul ne puisse se faire passer pour un utilisateur légitime. Une tierce partie de confiance, dont les mécanismes sont sûrs, permet aux utilisateurs d'avoir implicitement confiance dans toute clé publique certifiée par cette tierce partie que nous appelons Infrastructure à Clé Publique (ICP) ou même PKI pour Public Key Infrastructure. A cet effet, les certificats sont définis. Le certificat est un document électronique contenant donc des données publiques concernant un utilisateur donné. Le certificat contient notamment la clé publique correspondant à la clé privée que seule l'entité à laquelle se rapporte le certificat connaît. Le contenu d'un certificat doit être garanti comme fiable par une autorité qui a pris la responsabilité de l'émettre. C'est-à-dire, le contenu doit être authentifié par l'autorité qui a pris la responsabilité d'émettre le certificat. Le certificat doit être en même temps infalsifiable et doit indiquer son usage (authentification, signature, chiffrement, etc.). Il est évident aussi que le certificat comporte l'indication de sa validité et un numéro de séquence. Le standard X.509 a 3065552 2 normalisé un format de certificat utilisé dans le cadre de l'infrastructure à clé publique. Ce format est utilisé avec le plupart des protocoles de sécurité. ICP nécessite la distribution des certificats aux clients et la révocation de celles qui ne sont plus valides. En plus, elle entraîne un surplus important en termes de gestion et de ressources 5 machines et humaines. De plus, un ordinateur quantique serait, en théorie, capable de décrypter toutes les formes actuelles de chiffrement à clé publique. Autrement dit, la cryptographie à clé publique utilisée aujourd'hui sera obsolète et il sera possible d'accéder au contenu pour lire rétroactivement l'historique de n'importe quel utilisateur. On connaît déjà, dans l'état de la technique, qu'un système d'horodatage comprend un 10 module d'horodatage et un module de signature. Le premier module sert à horodater des données avec une heure et une date obtenues à partir d'une source de temps, tandis que le deuxième apte à signer des données horodatées par le module d'horodatage. En général, le système d'horodatage fournit un service d'horodatage en répondant à des requêtes contenant des données à horodater, émises depuis un terminal client. Cependant, on 15 connaît déjà, dans l'état de la technique, de serveurs d'horodatage permettant de collecter en même temps de plusieurs utilisateurs, de requêtes contenant des données à horodater. A titre d'exemple non limitatif, l'infrastructure de signatures sans clés KSI (ou en Anglais « Keyless Signature Infrastructure ») est une infrastructure capable de garantir la date de création, l'authenticité et l'intégrité de donnée grâce à un modèle purement mathématique et d'éviter ainsi tout recours à un 20 tiers de confiance. Cette infrastructure est basée à la fois sur un arbre et un calendrier de hachage. On connaît déjà, dans l'état de la technique, que l'arbre de Merkle ou l'arbre de hachage est utilisé afin de décomposer les données d'entrée. Ces données sont générées par les feuilles de l'arbre et hachées (ou compressées, chiffrées, etc.) avant d'être transmises aux noeuds de niveau supérieur dans l'arbre. Chaque noeud intermédiaire entre la racine et les feuilles de l'arbre hache (ou 25 compresse, chiffre, etc.) les données reçues de noeuds de niveau inférieur avant de renvoyer le résultat aux noeuds de niveau supérieur. Cette opération est répétée jusqu'à la racine de l'arbre pour générer le résultat final (on l'appelle le hachage racine). KSI utilise un calendrier qui sert à l'horodatage (ou en Anglais « timestamp ») des données ou du hachage racine grâce à une chaîne temporelle ou chaîne de hachage. La valeur du hachage racine est ensuite publiée dans cette chaîne. 30 fi sera impossible dès lors de falsifier la signature ou les valeurs hachées des données. En effet, toute modification apportée aux données originales ou à leurs hachages romprait la chaîne de hachage. L'intégrité de la donnée peut donc être prouvée en suivant la chaîne et en recréant la 3065552 3 valeur de hachage. Cependant, KSI ne définit pas de moyens pour assurer l'authenticité de données reçues d'utilisateurs. On connait déjà, dans l'état de la technique, la blockchain qui est une technologie de stockage et de transmission d'informations, transparente, sécurisée, et fonctionnant sans organe 5 central de contrôle. Les transactions effectuées entre les utilisateurs du réseau sont regroupées par blocs. Chaque bloc est validé par les noeuds du réseau appelés les "mineurs", selon des techniques qui dépendent du type de blockchain. Dans la blockchain du bitcoin cette technique est appelée « preuve de travail » (ou en Anglain « Proof-of-Work »), et consiste en la résolution de problèmes algorithmiques. Une fois le bloc validé, il est horodaté et ajouté à la chaîne de blocs. La transaction 10 est alors visible pour le récepteur ainsi que l'ensemble du réseau. La blockchain peut être utilisée pour horodater et pour ajouter la valeur du hachage racine à la chaîne de blocs. Résumé de l'invention 15 Un but de l'invention est de proposer un système d'authentification et de non-répudiation, qui soit plus efficace, plus écologique et moins coûteux que les procédés de l'art antérieur. A cet effet, l'invention a pour objet un système d'authentification et de non-répudiation, caractérisé en ce qu'il comprend un système d'horodatage, un ensemble de terminaux utilisateurs connectés par réseau de transmission de données avec le système d'horodatage, et caractérisé en 20 ce qu'il comprend en outre : - des moyens de génération par chaque utilisateur d'une valeur aléatoire ou d'une clé cryptographique SK0, et d'une liste chainée comprenant plusieurs éléments SKI, SK2, SK, ladite SK i est une fonction de SKi_i, pour tout entier i entre 1 et n, le dernier élément SK de ladite liste chainée sera divulgué et publié par ledit utilisateur, chacun des autres éléments ne sera 25 utilisé qu'une seule fois par ledit utilisateur durant l'étape d'application d'une fonction mathématique ou cryptographique, et lesdits éléments de ladite liste chainée sont utilisés dans l'ordre inverse de leur ordre de génération. - des moyens d'application d'une fonction mathématique ou cryptographique par chaque utilisateur pour générer une valeur à horodater, ladite fonction mathématique ou cryptographique 30 liant les données de chaque utilisateur et le dernier élément non divulgué de ladite liste chainée dudit utilisateur, - des moyens de transmission de la valeur à horodater par chaque utilisateur à un système d ' horodatage, 3065552 4 - des moyens de génération et de transmission par ledit système d'horodatage d'un « jeton d'horodatage » ou d'une « estampille temporelle » constituant une preuve de l'existence de la valeur à horodater de chaque utilisateur à une date donnée, - des moyens de vérification par ledit utilisateur l'intégrité et l'authenticité du « jeton 5 d'horodatage » ou de la « estampille temporelle », - des moyens de divulgation par chaque utilisateur dudit dernier élément non divulgué, utilisé durant l'étape d'application d'une fonction mathématique ou cryptographique, permettant au system d'horodatage de vérifier que ledit élément divulgué est une fonction de son élément successeur dans ladite liste chainée ou du dernier élément précédemment divulgué par ledit 10 utilisateur, et de valider ladite valeur à horodater à l'aide dudit dernier élément divulgué et de ladite fonction mathématique ou cryptographique , et de publier dudit « jeton d'horodatage » ou de ladite « estampille temporelle » par ledit système d'horodatage. - des moyens d'authentification d'utilisateurs (113, 114, 115, 116) par ledit système d'horodatage (130) ou toute autre personne ou entité, permettant de décider si un utilisateur (113, 15 114, 115, 116) dispose ou non de l'autorité pour effectuer une transaction ou une requête contenant des données à horodater, en vérifiant que ledit élément divulgué par ledit utilisateur est une fonction de l'élément successeur dans ladite liste chainée (300) ou du dernier élément précédemment divulgué par ledit utilisateur durant une étape de divulgation. L'invention concerne également un dispositif d'authentification et de non-répudiation. 20 Selon l'invention, un tel dispositif comprend des moyens: de génération de ladite valeur aléatoire ou de ladite cryptographique ; de génération de ladite liste chainée ; d'application de ladite fonction mathématique ou cryptographique ; de transmission de ladite valeur à horodater ; de génération et de transmission dudit « jeton d'horodatage » ou de ladite « estampille temporelle » ; de mémorisation et de vérification dudit « jeton d'horodatage » ou de ladite « estampille 25 temporelle »; de divulgation et de publication dudit dernier élément de ladite liste chainée ; de vérification que l'élément divulgué est utilisé pour la première fois et qu'il est une fonction du dernier élément divulgué par ledit utilisateur ; de génération et de vérification de ladite valeur à horodater ; de publication de ladite valeur à horodater dans ledit calendrier de hachage. Selon un autre aspect, l'invention concerne également un produit programme d'ordinateur 30 téléchargeable depuis un réseau de communication et/ou stocké sur un support lisible par ordinateur et/ou exécutable par un microprocesseur, et comprenant des instructions de code de programme pour l'exécution du procédé d'authentification de non-répudiation tel que décrit précédemment. 3065552 5 Brève description des dessins On va maintenant décrire des modes de réalisation de l'invention de façon plus précise mais non limitative au regard des dessins annexés, sur lesquels : - la figure 1 est un schéma synoptique illustrant la structure et le fonctionnement d'un 5 système d'authentification et de non-répudiation et la structure de la liste chainée selon l' invention ; - la figure 2 est un schéma synoptique illustrant la structure et le fonctionnement d'un système d'authentification et de non-répudiation selon l'invention lorsque le système d'horodatage est une KSI ; 10 Description détaillée d'une forme de réalisation préférée Dans le cadre de l'invention, le terme « terminal » ou « terminal utilisateur » a un sens très large. En effet, il peut désigner un ordinateur ou un terminal de communication mobile tel qu'un téléphone portable, un assistant personnel, un appareil informatique de type carte à puce ou encore 15 un porte USB ou carte MMC. Dans le cadre de l'invention, le terme « terminal système d'horodatage » doit être également compris dans le sens le plus général. En général, le système d'horodatage fournit un service d'horodatage en répondant à des requêtes contenant des données à horodater, émises depuis un terminal client. Il peut désigner un ordinateur ou un terminal de communication mobile tel 20 qu'un téléphone portable, un assistant personnel, un appareil informatique de type carte à puce ou encore un porte USB ou carte MMC. A titre d'exemple non limitatif, le système d'horodatage peut être une KSI ou un système de blockchain. Dans le cadre de l'invention, le terme « application logicielle » doit être entendu au sens large. A titre d'exemple, il peut représenter des programmes d'ordinateur correspondants 25 comportant des instructions de code qui, lorsque ces programmes sont exécutés, permettent la mise en oeuvre des étapes du procédé. Bien entendu, d'autres modes de réalisation peuvent encore être envisagés. Enfin, et dans le cadre de l'invention, le terme « réseau » a également un sens très large dans le cadre de l'invention. Il peut désigner les réseaux privés d'entreprises ou similaires, les 30 réseaux Internet, les réseaux sans fil et mobiles, les réseaux locaux et les réseaux extranets. A titre d'exemple non limitatif, le réseau peut représenter un ensemble de réseaux, des routeurs, des stations de base, des points d'accès sans fil et des passerelles qui utilisent des protocoles de 3065552 6 transmissions et de communications comme par exemple les protocoles Transmission Control Protocol et Internet Protocol (TCP / IP). Il convient de noter que dans la suite de la description, les termes « utilisateur » et « terminal utilisateur » ont la même signification. 5 Il convient de noter que dans la suite de la description, les terminaux, le système d'horodatage et les utilisateurs sont munis d'au moins une interface de communication et d'une application logicielle permettant de traiter, transmettre et de recevoir des données et des informations liées à la non-répudiation. La figure 1 illustre un cas générique d'un système d'authentification et de non-répudiation, 10 dans lequel chaque utilisateur (113) génère une valeur aléatoire ou d'une clé cryptographique SK0 (310), et une liste chainée comprenant plusieurs éléments SKi (311), SK2 (312), ..., SK (31n), ladite SK i est une fonction de SKi_i, pour tout entier i entre 1 et n. L'utilisateur (113) génère lesdits éléments (311, ..., 31n) de ladite liste chainée (300) a l'aide de la clé SK0 et d'une fonction mathématique ou cryptographique F, pour tout entier i entre 15 1 et n : SK i = F(SKi_i), 1 REVENDICATIONS1. Procédé d'authentification et de non-répudiation comprenant : - une étape de génération par chaque utilisateur (113) d'une valeur aléatoire ou d'une clé cryptographique SK0 (310), et d'une liste chainée comprenant plusieurs éléments SKi (311), SK2 (312), ..., SK' (31n), ladite SK i est une fonction de SKi_i, pour tout entier i entre 1 et n, le dernier élément SK' (31n) de ladite liste chainée sera divulgué et publié par ledit utilisateur (113), chacun des autres éléments ne sera utilisé qu'une seule fois par ledit utilisateur (113) durant l'étape d'application d'une fonction mathématique ou cryptographique (170), et lesdits éléments de ladite liste chainée sont utilisés dans l'ordre inverse de leur ordre de génération. - une étape d'application d'une fonction mathématique ou cryptographique (170) par chaque utilisateur (113) pour générer une valeur à horodater (121), ladite fonction mathématique ou cryptographique liant les données de chaque utilisateur (113) et le dernier élément non divulgué de ladite liste chainée dudit utilisateur (113), - une étape de transmission de la valeur à horodater (121) par chaque utilisateur (113) à un système d'horodatage (130), - une étape de génération et de transmission par ledit système d'horodatage (130) d'un « jeton d'horodatage » ou d'une « estampille temporelle » (160) constituant une preuve de l'existence de la valeur à horodater (121) de chaque utilisateur (113) à une date donnée, - une étape de divulgation par chaque utilisateur (113) dudit dernier élément non divulgué, utilisé durant l'étape d'application d'une fonction mathématique ou cryptographique (170), permettant audit system d'horodatage (130) de vérifier que ledit élément divulgué est une fonction de son élément successeur dans ladite liste chainée, et de valider ladite valeur à horodater (121) à l'aide dudit dernier élément divulgué et de ladite fonction mathématique ou cryptographique (170), et de publier dudit « jeton d'horodatage » ou de ladite « estampille temporelle » (160) par ledit système d'horodatage (130). 2. Procédé selon la revendication 1, dans lequel l'étape de divulgation comprennent une étape d'authentification d'utilisateurs (113, 114, 115, 116) par ledit système d'horodatage (130) ou toute autre personne ou entité, permettant de décider si un utilisateur (113, 114, 115, 116) dispose ou non de l'autorité pour effectuer une transaction ou une requête contenant des données à horodater, en vérifiant que ledit élément divulgué par ledit utilisateur est une fonction de l'élément successeur 3065552 dans ladite liste chainée (300) ou du dernier élément précédemment divulgué par ledit utilisateur durant une étape de divulgation. 3. Système d'authentification et de non-répudiation comprenant : - des moyens de génération par chaque utilisateur (113) d'une valeur aléatoire ou d'une clé cryptographique SK0 (310), et d'une liste chainée comprenant plusieurs éléments SKI. (311), SK2 (312), ..., SK' (31n), ladite SK i est une fonction de SKi_i, pour tout entier i entre 1 et n, le dernier élément SK' (31n) de ladite liste chainée sera divulgué et publié par ledit utilisateur (113), chacun des autres éléments ne sera utilisé qu'une seule fois par ledit utilisateur (113) durant application d'une fonction mathématique ou cryptographique (170), et lesdits éléments de ladite liste chainée sont utilisés dans l'ordre inverse de leur ordre de génération. - des moyens d'application d'une fonction mathématique ou cryptographique (170) par chaque utilisateur (113) pour générer une valeur à horodater (121), ladite fonction mathématique ou cryptographique liant les données de chaque utilisateur (113) et le dernier élément non divulgué de ladite liste chainée dudit utilisateur (113), - des moyens de transmission de la valeur à horodater (121) par chaque utilisateur (113) à un système d'horodatage (130), - des moyens de génération et de transmission par ledit système d'horodatage (130) d'un « jeton d'horodatage » ou d'une « estampille temporelle » (160) constituant une preuve de l'existence de la valeur à horodater (121) de chaque utilisateur (113) à une date donnée, - des moyens de divulgation par chaque utilisateur (113) dudit dernier élément non divulgué, utilisé durant application d'une fonction mathématique ou cryptographique (170), permettant audit system d'horodatage (130) de vérifier que ledit élément divulgué est une fonction de son élément successeur dans ladite liste chainée, et de valider ladite valeur à horodater (121) à l'aide dudit dernier élément non divulgué et de ladite fonction mathématique ou cryptographique (170), et de publier dudit « jeton d'horodatage » ou de ladite « estampille temporelle » (160) par ledit système d'horodatage (130). 3065552 4. Système selon la revendication 3, dans lequel les moyens de divulgation comprennent des moyens d'authentification d'utilisateurs (113, 114, 115, 116) par ledit système d'horodatage (130) ou toute autre personne ou entité, permettant de décider si un utilisateur (113, 114, 115, 116) dispose ou non de l'autorité pour effectuer une transaction ou une requête contenant des données à horodater, en vérifiant que ledit élément divulgué par ledit utilisateur est une fonction de l'élément successeur dans ladite liste chainée (300) ou du dernier élément précédemment divulgué par ledit utilisateur durant une étape de divulgation. 5. Terminal système d'horodatage (130) raccordé à un réseau (151) de transmission d'informations, ledit terminal système d'horodatage comprenant : - des moyens de mémorisation de données reçues de chaque utilisateur (113), - des moyens de génération et de publication d'un « jeton d'horodatage » ou d'une « estampille temporelle » (160) constituant une preuve de l'existence de la valeur à horodater (121) dudit utilisateur (113) à une date donnée, - des moyens de vérification que ledit élément divulgué est une fonction de son élément successeur dans ladite liste chainée dudit utilisateur (113) ou du dernier élément précédemment divulgué par ledit utilisateur, - des moyens de vérification que ledit élément divulgué par ledit utilisateur (113) n'est utilisé qu'une seule fois par ledit utilisateur (113), - des moyens d'authentification d'utilisateurs (113, 114, 115, 116) en vérifiant que ledit élément divulgué par ledit utilisateur est une fonction de l'élément successeur dans ladite liste chainée (300) ou du dernier élément précédemment divulgué par ledit utilisateur, - des moyens de validation de ladite valeur à horodater (121) à l'aide de ladite fonction mathématique ou cryptographique (170) et dudit dernier élément divulgué par ledit utilisateur (113). 6. Terminal utilisateur (113) raccordé à un réseau (151) de transmission d'informations, ledit terminal utilisateur comprenant : - des moyens de vérification de l'intégrité et de l'authenticité dudit « jeton d'horodatage » ou de ladite « estampille temporelle » (160), 3065552 - des moyens de mémorisation dudit « jeton d'horodatage » ou de ladite « estampille temporelle » (160) constituant une preuve de l'existence de ladite valeur à horodater (121) dudit utilisateur (113) à une date donnée, - des moyens de génération de ladite liste chainée comprenant plusieurs éléments SK0 (310), SKi (311), SK 2 (312), ..., SKn (31n), ladite SK i est une fonction de SKi_i, pour tout entier 0 entre 1 et n, - des moyens de génération de ladite valeur à horo dater (121) à l'aide dudit dernier élément non divulgué par ledit utilisateur (113) et de ladite fonction mathématique ou cryptographique (170). - des moyens de divulgation et de publication dudit dernier élément non divulgué, utilisé durant l'étape d'application d'une fonction mathématique ou cryptographique (170), 7. Programme d'ordinateur caractérise en ce qu'il comprend des instructions de code de programme pour l'exécution du procédé d'authentification et de non-répudiation selon l'une de revendications 1 à 2, lorsqu'il est exécuté sur un terminal système d'horodatage (130).