FR 3085496 A1 20200306 FR 1857799 A 20180830 Procédé d'horodatage comprenant l'interrogation de plusieurs noeuds d'une blockchain L'invention a trait au domaine de l'informatique, et plus précisément à l'horodatage. De nombreux systèmes informatiques, et de nombreuses applications informatiques, reposent sur des données d'horodatage, c'est-à-dire sur des données électroniques représentant la date courante. Pour les besoins de la présente description, le terme « date » désigne le jour en cours, auquel est éventuellement associé l'heure en cours. Le jour est identifié de manière unique par une combinaison de trois valeurs : Le quantième de l'année (typiquement au format numérique à quatre chiffres, représenté dans le calendrier grégorien par le symbole AAAA), Le quantième du mois dans l'année (typiquement au format numérique à deux chiffres, représenté dans le calendrier grégorien par le symbole MM) ; - Le quantième du jour dans le mois (typiquement au format numérique à deux chiffres, représenté dans le calendrier grégorien par le symbole JJ). L'heure est identifiée de manière unique par une combinaison de trois valeurs : Le quantième de l'heure (typiquement au format numérique à deux chiffres en base 24, représenté couramment par le symbole HH) ; Le quantième des minutes (typiquement au format numérique à deux chiffres en base sexagésimale, représenté couramment par le symbole MM, à ne pas confondre avec le quantième du mois) ; - Le quantième des secondes (typiquement au format numérique à deux chiffres en base sexagésimale, représenté couramment par le symbole SS). Tout ordinateur (qu'il s'agisse d'un ordinateur personnel, d'un serveur, d'un supercalculateur, ou encore d'un assistant personnel tel 35 qu'un Smartphone ou une tablette), intègre une horloge interne en LAP 8015 FR 2 temps réel (Real Time Clock ou RTC), nécessaire au fonctionnement de son système d'exploitation. Cette horloge comprend généralement : Un oscillateur à quartz piézoélectrique excité par une énergie électrique (typiquement issue d'une batterie), 5 Un microprocesseur associé au quartz et incluant une fonction de comptage des oscillations mécaniques du quartz, et Une mémoire temporaire dans laquelle est stocké le résultat (horodatage) de la fonction de comptage. Afin de fiabiliser l'horodatage et éviter les dérives susceptibles 10 d'affecter l'oscillateur à quartz, le système d'exploitation peut être programmé pour synchroniser (au moins périodiquement) son horodatage sur un horodatage de référence. Cette synchronisation peut être effectuée par application d'un protocole d'heure réseau (en anglais Network Time Protocol ou NTP). 15 Une horloge de référence est typiquement fournie par un serveur de référence appelé « oracle » ou c, Serveur NTP ». Un exemple d'horodatage de référence est fourni par le NTP Pool Project (https://www.ntppool.org), auquel se réfèrent notamment les ordinateurs fonctionnant sous le système d'exploitation Linux (marque 20 déposée). Lorsqu'une application logicielle implémentée sur un ordinateur appelle, pour l'une de ses fonctions, une donnée d'horodatage, celle-ci est généralement extraite de l'horloge interne. Cependant, la fiabilité de l'horloge interne pouvant être remise en 25 question, notamment en raison de l'éventualité d'une attaque malveillante sur l'horloge interne, certaines applications nécessitant une fiabilité accrue quant à la véracité de la donnée d'horodatage peuvent appeler directement un horodatage de référence en interrogeant un (ou plusieurs) oracles. 30 En dépit de leur fiabilité affirmée, les oracles ne sont pas à l'abri d'attaques malveillantes destinées à altérer leur horodatage. Dès lors, l'horodatage de l'ensemble des ordinateurs calé sur l'horodatage de référence se trouve corrompu. Il en résulte des dysfonctionnements de toutes les applications ayant recours à cet horodatage. Une méthode alternative d'horodatage consiste à appeler une donnée d'horodatage mémorisée dans une chaîne de blocs (ou LAP 8015 FR 3 blockchain), c'est-à-dire un registre informatique contenant des données subdivisées en blocs (ou blocks), chaque bloc contenant : Un corps incluant des signatures numériques de transactions passées entre utilisateurs, et 5 Des métadonnées incluant notamment une donnée d'horodatage ou timestamp, qui correspond à la date (incluant généralement le jour et l'heure) à laquelle le bloc a été constitué. Plus précisément, une blockchain comprend une succession de blocs reliés entre eux deux à deux par pointage de chaque bloc vers le 10 bloc précédent, les blocs étant corrélés successivement deux à deux de telle manière que la moindre modification des données d'un bloc affecte tous les blocs suivants, ce qui permet de déceler sans délai toute tentative de corruption de la blockchain (destinée typiquement à réaffecter des transactions). 15 La blockchain est mémorisée sur un réseau pair à pair composé d'une pluralité de noeuds (chacun formé par un ou plusieurs ordinateurs, ou un ou plusieurs serveurs) qui, ensemble, forment une base de données distribuée. Plus précisément, la blockchain est mémorisée sur cette base de 20 données distribuée en étant répliquée sur chaque noeud. Sur chaque noeud est implémenté un protocole informatique (par ex. Bitcoin ou Ethereum, marques déposées) de participation à l'élaboration de la blockchain. Ce protocole, dit « protocole blockchain », comprend un processus 25 calculatoire d'ajout périodique d'un nouveau bloc à la blockchain existante. Ce processus met en oeuvre un mécanisme de validation des blocs par consensus entre tout ou partie des noeuds. C'est l'intercorrélation des blocs qui procure leur réputation 30 d'immuabilité aux données contenues dans la blockchain - en particulier aux données d'horodatage. On notera que, s'agissant de l'horodatage, il convient de distinguer fiabilité et précision. La fiabilité d'une donnée d'horodatage est la (relative) certitude 35 que cet horodatage correspond, avec une certaine tolérance (de quelques secondes, quelques minutes ou quelques heures), à la date courante vraie sans pouvoir être corrompu. LAP 8015 FR 4 La précision d'un horodatage est son exacte correspondance (typiquement à la seconde près) avec la date courante vraie. L'horodatage d'une blockchain n'est pas précis, y compris dans les blocs les plus récents, car l'horodatage de chaque bloc est figé dès lors 5 qu'il est ajouté à la blockchain, tandis que l'écoulement du temps se poursuit. En revanche, cet horodatage est fiable, en ce sens qu'il est très difficilement altérable après son inscription. De nombreuses applications nécessitent un horodatage fiable (avec une tolérance de quelques secondes, de quelques minutes ou de 10 quelques heures), mais pas nécessairement précis. Compte tenu de la réputation d'immuabilité des données (en particulier d'horodatage) des blockchains, il peut par conséquent, pour ces applications, être intéressant d'appeler une donnée d'horodatage mémorisée dans une blockchain. 15 L'interrogation d'une blockchain consiste classiquement à interroger un noeud du réseau. En théorie, la blockchain mémorisée sur un noeud donné est présumée identique à toutes ses réplications sur tous les autres noeuds du réseau. Cependant il est en théorie possible pour un processus 20 malveillant d'altérer la blockchain mémorisée sur un noeud donné, typiquement en modifiant une donnée d'horodatage au détriment de la fiabilité de cette dernière. L'invention vise à fiabiliser l'horodatage réalisé par interrogation d'une blockchain. 25 A cet effet, il est proposé un procédé de détermination d'une date courante, comprenant l'interrogation d'un registre informatique organisé en chaîne de blocs, mémorisé sur chaque noeud d'un réseau pair à pair, chaque bloc étant repéré par un numéro d'ordre, ce procédé comprenant une phase de mise à jour comprenant les opérations 30 consistant à : Désigner, parmi l'ensemble des noeuds, au nombre de R (R un entier, Flk2), du réseau, une pluralité de noeuds, au nombre de Q (Q un entier, 2(-)1,i), dit noeuds élus ; Sélectionner un numéro d'ordre (par ex. celui de l'avant dernier 35 bloc de la chaîne de blocs) parmi les numéros d'ordre de l'ensemble des blocs ; LAP 8015 FR 5 Extraire de chaque noeud élu la donnée d'horodatage du bloc ayant le numéro d'ordre ainsi sélectionné ; Si la donnée d'horodatage est décrétée consensuelle pour l'ensemble des noeuds élus, affecter sa valeur à la date courante. 5 Selon un mode préféré de réalisation, la désignation des noeuds élus est effectuée aléatoirement parmi l'ensemble des noeuds du réseau. Le nombre Q de noeuds élus est avantageusement déterminé de manière aléatoire. 10 La mise à jour est de préférence réitérée périodiquement. Dans ce cas, le nombre Q de noeuds élus peut être modifié à chaque nouvelle mise à jour. D'autres objets et avantages de l'invention apparaîtront à la lumière de la description d'un mode de réalisation, faite ci-après en 15 référence au dessin annexé qui illustre de manière schématique le procédé selon l'invention. Sur ce dessin est représenté un système 1 informatique (par ex. un ordinateur ou un serveur), qui comprend une unité centrale de calcul ou processeur 2, ainsi qu'un registre 3 de mémoire dans lequel est inscrite 20 une date courante. Dans une mémoire du système 1 informatique est implémenté un processus programmé pour appeler la date courante par interrogation du registre 3. La détermination de la date courante comprend l'interrogation d'un 25 registre informatique constitué en chaîne de blocs ou blockchain 4 (selon la terminologie anglo-saxonne). Pour les besoins de la présente demande, la blockchain 4 est un registre informatique contenant des données subdivisées en blocs 5 (ou blocks) reliés entre eux, contenant chacun : 30 Un corps 6 comprenant des signatures numériques de transactions (c'est-à-dire d'échanges de données) passées entre des utilisateurs, Un en-tête 7 contenant des métadonnées parmi lesquelles : o Un numéro d'ordre, ou rang, ou encore hauteur (height en 35 anglais), qui se présente sous forme d'un entier qui désigne la position du bloc 5 au sein de la blockchain 4 dans l'ordre LAP 8015 FR 6 croissant à partir d'un bloc 5 initial portant le numéro zéro ou le numéro un (comme dans l'exemple illustré sur le dessin) et appelé bloc de genèse (Genesis Block en anglais) ; o Une empreinte numérique des données qu'il contient ; 5 o L'empreinte numérique du bloc précédent (appelée pointeur) ; o Une donnée d'horodatage ou timestamp, qui peut se présenter sous forme d'une date (incluant l'année, le mois et le jour, par ex. au format AAA-MM-JJ) ou d'un nombre correspondant au nombre de secondes écoulées depuis une date de référence 10 ou REVENDICATIONS1. Procédé de détermination d'une date courante par un système (1) informatique, qui comprend l'interrogation d'un registre (4) informatique organisé en chaîne de blocs (5), mémorisé sur chaque noeud (9) d'un réseau (8) pair à pair, chaque bloc (5) étant repéré par un numéro d'ordre, ce procédé étant caractérisé en ce qu'il comprend une phase de mise à jour qui inclut les opérations consistant à : Désigner, parmi l'ensemble des noeuds (9), au nombre de R (R un entier, R?2), du réseau (8), une pluralité de noeuds (9), au nombre de Q (Q un entier, 2 Qq), dit noeuds (9) élus ; - Sélectionner un numéro d'ordre parmi les numéros d'ordre de l'ensemble des blocs (5) ; - Extraire de chaque noeud (9) élu la donnée d'horodatage du bloc (5) ayant le numéro d'ordre ainsi sélectionné ; Si la donnée d'horodatage est décrétée consensuelle pour les noeuds (9) élus, affecter sa valeur à la date courante. 2. Procédé selon la revendication 1, caractérisé en ce que la désignation des noeuds (9) élus est effectuée aléatoirement parmi l'ensemble des noeuds (9) du réseau (8). 3. Procédé selon la revendication 1 ou la revendication 2, caractérisé en ce que le nombre Q de noeuds (9) élus est déterminé de manière aléatoire. 4. Procédé selon la revendication 3, caractérisé en ce qu'il comprend la réitération périodique de la mise à jour. 5. Procédé selon les revendications 3 et 4, prises en combinaison, caractérisé en ce que le nombre Q de noeuds (9) élus est modifié à chaque nouvelle mise à jour. 6. Procédé selon l'une des revendications précédentes, caractérisé en ce que le numéro d'ordre est celui de l'avant dernier bloc (5) de la chaîne (4) de blocs (5). LAP 8015 FR