[go: up one dir, main page]

FR3145816A1 - process of establishing an inviolable link between a digital file and variable data - Google Patents

process of establishing an inviolable link between a digital file and variable data Download PDF

Info

Publication number
FR3145816A1
FR3145816A1 FR2301413A FR2301413A FR3145816A1 FR 3145816 A1 FR3145816 A1 FR 3145816A1 FR 2301413 A FR2301413 A FR 2301413A FR 2301413 A FR2301413 A FR 2301413A FR 3145816 A1 FR3145816 A1 FR 3145816A1
Authority
FR
France
Prior art keywords
file
fingerprint
data
data block
access request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR2301413A
Other languages
French (fr)
Other versions
FR3145816B1 (en
Inventor
Gabriel RISTERUCCI
Laurent HENOCQUE
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Keeex
Original Assignee
Keeex
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Keeex filed Critical Keeex
Priority to FR2301413A priority Critical patent/FR3145816B1/en
Priority to PCT/IB2024/051075 priority patent/WO2024170997A1/en
Publication of FR3145816A1 publication Critical patent/FR3145816A1/en
Application granted granted Critical
Publication of FR3145816B1 publication Critical patent/FR3145816B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • G06F21/645Protecting data integrity, e.g. using checksums, certificates or signatures using a third party
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

La présente invention concerne un procédé d’association de données variables à un fichier, le procédé comprenant des étapes de : recherche, par un processeur (T1), d’un premier emplacement d’insertion d’une donnée dans un fichier (FL1) ; insertion au premier emplacement dans le fichier d’un identifiant (BCI1) d’un bloc de donnée (BC1) d’un registre (RG1) accessible depuis un serveur distant (SRV), le bloc de données mémorisant une donnée variable relative au fichier ; calcul d’une première empreinte cryptographique (HS1) portant sur une partie du contenu du fichier incluant l’identifiant du bloc de données, à l’aide d’une fonction (HSH) de calcul d’empreinte fournissant une empreinte dépendant de tous les octets de la partie du contenu du fichier ; et transmission de l’empreinte l’identifiant du bloc de donnée au serveur distant, la donnée variable étant accessible par une requête transmise au serveur distant, contenant l’identifiant du bloc de donnée et la première empreinte. Figure pour l’abrégé : Figure 1 The present invention relates to a method for associating variable data with a file, the method comprising steps of: searching, by a processor (T1), for a first location for inserting data in a file (FL1); inserting at the first location in the file an identifier (BCI1) of a data block (BC1) of a register (RG1) accessible from a remote server (SRV), the data block storing a variable data item relating to the file; calculating a first cryptographic fingerprint (HS1) relating to a part of the content of the file including the identifier of the data block, using a fingerprint calculation function (HSH) providing a fingerprint depending on all the bytes of the part of the content of the file; and transmitting the fingerprint, the identifier of the data block, to the remote server, the variable data item being accessible by a request transmitted to the remote server, containing the identifier of the data block and the first fingerprint. Figure for abstract: Figure 1

Description

procédé d’établissement d’une liaison inviolable entre un fichier numérique et une donnée variableprocess of establishing an inviolable link between a digital file and variable data Domaine technique généralGeneral technical field

La présente invention se rapporte de manière générale aux systèmes de fichiers et aux procédés permettant d’assurer l’intégrité et l’authenticité des fichiers numériques, que ceux-ci soient distribués sur un réseau ou stockés sur un support de mémorisation.The present invention relates generally to file systems and methods for ensuring the integrity and authenticity of digital files, whether distributed over a network or stored on a storage medium.

DéfinitionsDefinitions

Dans la présente description, les termes et expressions suivantes doivent être compris comme suit.In this description, the following terms and expressions should be understood as follows.

"Fichier numérique" désigne tout fichier ou document numérique ou toute partie d’un tel fichier ou document, pouvant être manipulé séparément dans un système de gestion de fichiers quelconque.“Digital File” means any digital file or document or any part of such a file or document, capable of being manipulated separately in any file management system.

"Métadonnée" désigne une donnée relative à une autre donnée. Une métadonnée peut figurer dans le même fichier que l'autre donnée, ou en un emplacement différent. Une métadonnée peut contenir une ou plusieurs informations relatives à l'autre donnée, y compris des informations spécifiant notamment l’emplacement, la structure et/ou la nature de cette autre donnée."Metadata" means data relating to other data. Metadata may be contained in the same file as the other data, or in a different location. Metadata may contain one or more pieces of information relating to the other data, including information specifying, among other things, the location, structure and/or nature of that other data.

"Empreinte numérique" d’un fichier numérique désigne une donnée produite par une fonction permettant de garantir l'intégrité du contenu du fichier, de sorte que si un octet du fichier est modifié, l’empreinte numérique sera modifiée. En outre, la probabilité que deux fichiers différents aient la même empreinte est très faible. Cette fonction peut être non inversible telle que notamment une fonction de hachage cryptographique appliquée à tout ou partie du contenu du fichier. Une empreinte numérique est parfois nommée somme de contrôle, empreinte, hash, résumé de message, condensé, condensat ou encore empreinte cryptographique. La fonction de calcul d’empreinte peut combiner une fonction de hachage et une fonction de signature numérique appliquée au résultat de la fonction de hachage."Digital fingerprint" of a digital file means data produced by a function that ensures the integrity of the contents of the file, such that if a byte of the file is modified, the digital fingerprint will be modified. In addition, the probability that two different files have the same fingerprint is very low. This function may be non-invertible, such as a cryptographic hash function applied to all or part of the contents of the file. A digital fingerprint is sometimes called a checksum, fingerprint, hash, message digest, digest, condensate or cryptographic fingerprint. The fingerprint calculation function may combine a hash function and a digital signature function applied to the result of the hash function.

"Signature numérique" désigne une empreinte numérique traitée par un algorithme de signature numérique utilisant une clé privée d’une paire de clés publique/privée et d’un programme cryptographique asymétrique, tel que DSA (Digital Signature Algorithm) ou ECDSA (Elliptic Curve DSA). Une signature numérique permet de garantir l’authenticité d’une preuve d'intégrité d'un fichier et d'en identifier et authentifier le signataire, par analogie avec la signature manuscrite d'un document papier."Digital Signature" means a digital fingerprint processed by a digital signature algorithm using a private key of a public/private key pair and an asymmetric cryptographic program, such as DSA (Digital Signature Algorithm) or ECDSA (Elliptic Curve DSA). A digital signature is used to guarantee the authenticity of a proof of the integrity of a file and to identify and authenticate the signer, by analogy with the handwritten signature of a paper document.

"Insertion réalisée de manière contrôlée" désigne une insertion de donnée quelle qu’elle soit dans un fichier, en un emplacement que l’utilisateur peut choisir aussi librement que le permet le type de fichier concerné. Toutefois, ceci n’exclut pas que le choix de cet emplacement puisse être réalisé par un programme, ou être normalisé."Controlled insertion" means the insertion of any data into a file, at a location that the user can choose as freely as the type of file concerned allows. However, this does not exclude the possibility that the choice of this location may be carried out by a program, or be standardized.

"Insertion réalisée de manière non-destructive" désigne une insertion d’une donnée quelle qu’elle soit dans un fichier numérique, réalisée sans affecter les propriétés du fichier, c’est-à-dire sans affecter notamment son ouverture, son affichage ou impression, et son exécution si le fichier contient des instructions de programme, par les mêmes outils qu’avant cette insertion."Non-destructive insertion" means an insertion of any data into a digital file, carried out without affecting the properties of the file, that is to say without affecting in particular its opening, its display or printing, and its execution if the file contains program instructions, by the same tools as before this insertion.

"Registre" désigne un dispositif fournissant une présomption d’un ordre chronologique séquentiel précis de modifications d'état d'un objet. Un registre peut être opéré par un tiers de confiance, qu'il soit ou non certifié ou agréé. Les données mémorisées dans un tel registre peuvent être plus ou moins vérifiables et/ou publiquement accessibles. Dans le cas où le registre est accessible de façon dématérialisée par exemple par internet, il peut être rendu accessible par des requêtes offrant différents services, comme des services d’interrogation, d’écriture et d’authentification. Un registre peut s’affranchir d’un tiers de confiance en se reposant sur une solution de type chaine de blocs ("blockchain"), publique ou privée, permettant ou non l'exécution de contrats intelligents ("smart contracts") et/ou le stockage de données."Register" means a device providing a presumption of a precise sequential chronological order of changes in the state of an object. A register may be operated by a trusted third party, whether or not certified or approved. The data stored in such a register may be more or less verifiable and/or publicly accessible. In the case where the register is accessible in a dematerialized manner, for example via the Internet, it may be made accessible by requests offering different services, such as query, writing and authentication services. A register may free itself from a trusted third party by relying on a blockchain-type solution, public or private, allowing or not the execution of smart contracts and/or the storage of data.

Etat de la techniqueState of the art

Dans le contexte de l’utilisation généralisée de fichiers numériques, il est souhaitable de pouvoir remplacer les documents imprimés ou manuscrits par des fichiers numériques offrant des garanties analogues en termes de force probante. Par exemple, il est souhaitable que de tels fichiers puissent être utilisés en tant que preuves dans le cadre de transactions portant notamment sur des valeurs matérielles ou des relations contractuelles.In the context of the widespread use of digital files, it is desirable to be able to replace printed or handwritten documents with digital files offering similar guarantees in terms of probative force. For example, it is desirable that such files can be used as evidence in the context of transactions involving, in particular, material assets or contractual relationships.

Le brevet US10 218 714 décrit un procédé permettant de déterminer si tout ou partie d’un fichier numérique a été modifié, grâce à l’insertion dans le fichier d’une empreinte calculée à partir de toutes les données formant le contenu du fichier pouvant inclure des métadonnées, à l’exclusion d’une zone où est insérée l’empreinte. Ainsi, si le contenu du fichier est modifié, l’empreinte calculée sur le contenu modifié du fichier est différente de l’empreinte insérée dans le fichier. Si l’empreinte est remplacée par une signature portant sur l’empreinte, ou si le fichier contient une empreinte et une signature de cette empreinte, et si la clé publique du signataire attendu figure dans les données participant au calcul de l'empreinte, seul le signataire attendu a pu générer cette signature.US Patent No. 10,218,714 describes a method for determining whether all or part of a digital file has been modified, by inserting into the file a fingerprint calculated from all the data forming the content of the file that may include metadata, excluding an area where the fingerprint is inserted. Thus, if the content of the file is modified, the fingerprint calculated on the modified content of the file is different from the fingerprint inserted into the file. If the fingerprint is replaced by a signature on the fingerprint, or if the file contains a fingerprint and a signature of this fingerprint, and if the public key of the expected signatory appears in the data participating in the calculation of the fingerprint, only the expected signatory could have generated this signature.

Par ailleurs, dans le domaine de la gestion électronique de documents, il a été proposé un cadre conceptuel appelé "lignée de données" ("data lineage") visant à permettre de tracer le cycle de vie d’une donnée en vue de permettre de déterminer la source de cette donnée et les transformations qu’elle a subies. Ce concept de lignée de données permet par exemple d’associer à une donnée une classification de confidentialité pouvant évoluer au cours du temps, des versions successives de la donnée ou des dates de destruction obligatoire de la donnée. Ce procédé peut être déployé à l’intérieur d’une infrastructure ou d’une organisation, par des systèmes usuels de gestion électronique de documents, notamment pour tracer les auteurs, les versions et les responsables de documents.Furthermore, in the field of electronic document management, a conceptual framework called "data lineage" has been proposed, aimed at tracing the life cycle of data in order to determine the source of this data and the transformations it has undergone. This concept of data lineage makes it possible, for example, to associate a confidentiality classification with data that may change over time, successive versions of the data or mandatory destruction dates of the data. This process can be deployed within an infrastructure or an organization, by standard electronic document management systems, in particular to trace the authors, versions and managers of documents.

Cependant, il n’existe aucun outil permettant de réaliser ces opérations de suivi entre infrastructures et entre organisations. En effet, une fois que le document est extrait de son système de gestion électronique de documents, il perd tous ses attributs permettant les opérations de traçage précitées. Il n’est pas non plus possible d’assurer un suivi de versions d’un même document lorsque ce dernier est sorti de son système de gestion de documents.However, there is no tool to perform these tracking operations between infrastructures and between organizations. Indeed, once the document is extracted from its electronic document management system, it loses all its attributes allowing the aforementioned tracking operations. It is also not possible to ensure version tracking of the same document when it is removed from its document management system.

Il a également été proposé sous la forme d'une loi type un concept général de documents électroniques transférables (MLETR - "Loi Type sur les Documents Electroniques Transférables) permettant de tracer les propriétaires successifs et les versions d'un document ayant une valeur marchande. Aucune implémentation n'est toutefois suggérée dans ce contexte pour donner de manière irrévocable aux documents numériques un statut comparable à celui du papier signé de façon manuscrite.A general concept of transferable electronic documents (MLETR - "Model Law on Transferable Electronic Documents") has also been proposed in the form of a model law, allowing the tracing of successive owners and versions of a document having a commercial value. However, no implementation is suggested in this context to irrevocably give digital documents a status comparable to that of handwritten paper.

Il a également été proposé d'utiliser un registre pour tracer les versions successives de documents sous des contraintes imposant un format particulier de fichiers et que toute version permette de régénérer l'unique version antérieure. Ce cadre ne décrit ni comment attacher des propriétés à un fichier existant, ni comment attester l'existence d'une pluralité de versions, ni comment permettre que les versions soient de formats et constructions distinctes, ni enfin comment désigner de manière irrévocable le registre considéré pour cette traçabilité.It has also been proposed to use a registry to track successive versions of documents under constraints imposing a particular file format and that any version allows the regeneration of the single previous version. This framework does not describe how to attach properties to an existing file, nor how to attest the existence of a plurality of versions, nor how to allow versions to be of distinct formats and constructions, nor finally how to irrevocably designate the registry considered for this traceability.

Il a également été proposé d’utiliser la technique du NFT ("Non-Fungible Token" ou jeton non fongible) pour tracer la titularité d’un document, typiquement une œuvre d’art, en utilisant la technologie des contrats intelligents. Cette technique consiste à générer une donnée comprenant un jeton cryptographique représentant un objet numérique (par exemple une œuvre d’art) et une identité numérique relative au propriétaire de l’objet numérique. Cette donnée qui peut ainsi constituer un titre de propriété est stockée et authentifiée grâce à un protocole de chaine de blocs, dans un registre numérique décentralisé. Cependant, rien n’empêche qu’un document soit ainsi associé à plusieurs chaines de blocs identifiant ainsi plusieurs propriétaires simultanés.It has also been proposed to use the NFT ("Non-Fungible Token") technique to trace the ownership of a document, typically a work of art, using smart contract technology. This technique consists of generating data comprising a cryptographic token representing a digital object (for example a work of art) and a digital identity relating to the owner of the digital object. This data, which can thus constitute a title of ownership, is stored and authenticated using a blockchain protocol, in a decentralized digital register. However, nothing prevents a document from being associated with several blockchains, thus identifying several simultaneous owners.

Il est donc souhaitable de pouvoir lier de manière fiable et non falsifiable toutes les copies d’un fichier à une même donnée variable et de pouvoir déterminer toutes les données variables liées au fichier.It is therefore desirable to be able to reliably and unfalsifiably link all copies of a file to the same variable data and to be able to determine all the variable data linked to the file.

Des modes de réalisation concernent un procédé d’association de données variables à un fichier, le procédé comprenant des étapes consistant à : rechercher, par un processeur, un premier emplacement d’insertion d’une donnée dans un fichier ; insérer, par le processeur, au premier emplacement dans le fichier un identifiant d’un bloc de donnée d’un registre accessible depuis un serveur distant, le bloc de données mémorisant une donnée variable relative au fichier ; calculer, par le processeur, une première empreinte cryptographique portant sur une partie du contenu du fichier incluant l’identifiant du bloc de données, à l’aide d’une fonction de calcul d’empreinte, la première empreinte dépendant de tous les octets de la partie du contenu du fichier ; et transmettre la première empreinte par le processeur au serveur distant, la donnée variable étant accessible par une requête transmise au serveur distant, contenant la première empreinte.Embodiments relate to a method for associating variable data with a file, the method comprising steps consisting in: searching, by a processor, for a first location for inserting data in a file; inserting, by the processor, at the first location in the file an identifier of a data block of a register accessible from a remote server, the data block storing variable data relating to the file; calculating, by the processor, a first cryptographic fingerprint relating to a portion of the content of the file including the identifier of the data block, using a fingerprint calculation function, the first fingerprint depending on all the bytes of the portion of the content of the file; and transmitting the first fingerprint by the processor to the remote server, the variable data being accessible by a request transmitted to the remote server, containing the first fingerprint.

De cette manière, il n’est pas possible de lier le fichier à un autre bloc de donnée sans modifier l’empreinte du fichier. Si le fichier est modifié, son empreinte est également modifiée. Il en résulte que le lien entre le fichier et la donnée variable dans le registre est rompu, puisque ce lien est basé sur l’empreinte du fichier. Par ailleurs, si la modification du bloc de donnée contenant la donnée variable ne peut être effectuée que par une entité habilitée, seule cette entité peut modifier la donnée variable. En d’autres termes, l’empreinte interdit de modifier l’identifiant du bloc de donnée présent dans le bloc de donnée qui contient l’empreinte, et l’empreinte ne peut pas être obtenue à partir d’un autre contenu que celui du fichier. La lecture du contenu du fichier ne peut pas permettre d’accéder à un bloc de donnée autre que celui qui est désigné par l’identifiant présent dans le fichier. Cette liaison entre le fichier et le registre est présente dans toutes les copies ou occurrences du fichier.In this way, it is not possible to link the file to another data block without modifying the file's fingerprint. If the file is modified, its fingerprint is also modified. As a result, the link between the file and the variable data in the registry is broken, since this link is based on the file's fingerprint. Furthermore, if the modification of the data block containing the variable data can only be carried out by an authorized entity, only this entity can modify the variable data. In other words, the fingerprint prohibits the modification of the identifier of the data block present in the data block that contains the fingerprint, and the fingerprint cannot be obtained from any content other than that of the file. Reading the contents of the file cannot allow access to a data block other than the one designated by the identifier present in the file. This link between the file and the registry is present in all copies or occurrences of the file.

Selon un mode de réalisation, le procédé comprend des étapes consistant à : recevoir par serveur distant une requête d’accès au bloc de donnée contenant la première empreinte du fichier ; déterminer par le serveur distant si un bloc de donnée contenant la première empreinte est accessible ; et exécuter par le serveur distant la requête d’accès, et fournir par le serveur distant à un émetteur de la requête d’accès un compte-rendu d’exécution de la requête d’accès.According to one embodiment, the method comprises steps consisting in: receiving by remote server a request for access to the data block containing the first fingerprint of the file; determining by the remote server whether a data block containing the first fingerprint is accessible; and executing by the remote server the access request, and providing by the remote server to a transmitter of the access request a report of execution of the access request.

Selon un mode de réalisation, la requête d’accès est une requête de lecture, l’exécution de la requête d’accès par le serveur distant comprenant des étapes consistant à lire les données relatives au fichier identifié par la première empreinte contenues dans le bloc de donnée et transmettre les données lues à l’émetteur de la requête d’accès, et/ou la requête d’accès est une requête de écriture contenant des données à écrire dans le bloc de données, l’exécution de la requête d’accès par le serveur distant comprenant des étapes consistant à écrire les données à écrire dans le bloc de données.According to one embodiment, the access request is a read request, the execution of the access request by the remote server comprising steps consisting of reading the data relating to the file identified by the first fingerprint contained in the data block and transmitting the read data to the sender of the access request, and/or the access request is a write request containing data to be written in the data block, the execution of the access request by the remote server comprising steps consisting of writing the data to be written in the data block.

Selon un mode de réalisation, la requête d’accès est transmise en association avec une donnée d’authentification de l’émetteur de la requête d’accès, l’exécution de la requête d’accès par le serveur distant comprenant des étapes d’authentification par le serveur de l’émetteur de la requête d’accès sur la base de la donnée d’authentification, la requête d’accès étant exécutée par le serveur distant uniquement si le serveur a authentifié l’émetteur de la requête d’accès.According to one embodiment, the access request is transmitted in association with authentication data of the sender of the access request, the execution of the access request by the remote server comprising steps of authentication by the server of the sender of the access request on the basis of the authentication data, the access request being executed by the remote server only if the server has authenticated the sender of the access request.

Selon un mode de réalisation, le procédé comprend des étapes consistant à : rechercher, par le processeur, un second emplacement d’insertion non destructif d’une donnée dans le fichier, le second emplacement se trouvant en dehors de la partie du contenu du fichier sur laquelle porte le calcul de la première empreinte ; et insérer, par le processeur, la première empreinte au second emplacement dans le fichier.According to one embodiment, the method comprises steps consisting in: searching, by the processor, for a second non-destructive insertion location of a data item in the file, the second location being outside the part of the content of the file on which the calculation of the first fingerprint relates; and inserting, by the processor, the first fingerprint at the second location in the file.

Selon un mode de réalisation, la partie du contenu du fichier sur laquelle est appliqué la fonction de calcul d’empreinte est définie : par son étendue dans le fichier, ou par l’étendue d’une partie du fichier exclue du calcul d’empreinte.According to one embodiment, the part of the file content to which the fingerprint calculation function is applied is defined: by its extent in the file, or by the extent of a part of the file excluded from the fingerprint calculation.

Selon un mode de réalisation, le procédé comprend des étapes consistant à : calculer, par le processeur, une seconde empreinte portant sur la partie du contenu du fichier sur laquelle porte le calcul de la première empreinte, à l’aide de la fonction de calcul d’empreinte ; et comparer, par le processeur, la première empreinte avec la seconde empreinte, et si les première et seconde empreintes ne sont pas identiques, alors le lien établi par l’identifiant le fichier est jugé non intègre par le processeur.According to one embodiment, the method comprises steps consisting in: calculating, by the processor, a second fingerprint relating to the part of the content of the file on which the calculation of the first fingerprint relates, using the fingerprint calculation function; and comparing, by the processor, the first fingerprint with the second fingerprint, and if the first and second fingerprints are not identical, then the link established by the file identifier is judged to be unintegrated by the processor.

Selon un mode de réalisation, le procédé comprend des étapes consistant à insérer l’empreinte en au moins un autre emplacement dans le fichier, la vérification de l’empreinte comprenant l’application de la fonction de calcul d’empreinte au contenu du fichier en excluant toutes les occurrences de l’empreinte dans le fichier.According to one embodiment, the method comprises steps of inserting the fingerprint at at least one other location in the file, the verification of the fingerprint comprising applying the fingerprint calculation function to the content of the file by excluding all occurrences of the fingerprint in the file.

Selon un mode de réalisation, le procédé comprend des étapes consistant à : calculer, par le processeur, une signature numérique de la première empreinte à l’aide d’une clé privée d'une paire de clés privée et publique ; et insérer, par le processeur, la signature dans le fichier en dehors de la partie du contenu du fichier sur laquelle porte le calcul de la première empreinte, l’accès au bloc de donnée étant conditionné par la fourniture au serveur distant d’une signature numérique valide vérifiée à l’aide de la clé publique de la paire de clés privée et publique.According to one embodiment, the method comprises steps consisting in: calculating, by the processor, a digital signature of the first fingerprint using a private key of a private and public key pair; and inserting, by the processor, the signature in the file outside the part of the content of the file on which the calculation of the first fingerprint relates, access to the data block being conditioned by the provision to the remote server of a valid digital signature verified using the public key of the private and public key pair.

Selon un mode de réalisation, la clé publique est insérée dans une métadonnée dans la partie du fichier sur laquelle porte le calcul de la première empreinte.According to one embodiment, the public key is inserted into a metadata in the part of the file on which the calculation of the first fingerprint is carried out.

Selon un mode de réalisation, le bloc de donnée référencé par l’identifiant est une chaine de blocs cryptographiques.According to one embodiment, the data block referenced by the identifier is a cryptographic block chain.

Selon un mode de réalisation, le calcul de chaque empreinte comprend une étape d’insertion d’une donnée prédéfinie dans la partie du contenu du fichier avant d’appliquer la fonction de calcul d’empreinte à la partie de fichier.According to one embodiment, the calculation of each fingerprint comprises a step of inserting a predefined data item into the part of the file content before applying the fingerprint calculation function to the part of the file.

Des modes de réalisation peuvent également concerner un produit programme d’ordinateur comprenant des portions de fichier de programme enregistrées sur un support lisible par un ordinateur, configurées pour mettre en œuvre les étapes du procédé tel que précédemment défini.Embodiments may also relate to a computer program product comprising program file portions recorded on a computer-readable medium, configured to implement the steps of the method as previously defined.

Selon un mode de réalisation, au moins une partie du programme est inclus dans le fichier.According to one embodiment, at least a portion of the program is included in the file.

Brève description des figuresBrief description of the figures

D’autres avantages pourront encore apparaître à l’homme du métier à la lecture des exemples ci-dessous, donnés à titre illustratif et illustrés par les figures annexées, dans lesquelles des signes de références identiques correspondent à des éléments structurellement et/ou fonctionnellement identiques ou similaires.Other advantages may also become apparent to those skilled in the art upon reading the examples below, given for illustrative purposes and illustrated by the appended figures, in which identical reference signs correspond to structurally and/or functionally identical or similar elements.

La figure 1 représente schématiquement un ensemble d’étapes d’un procédé exécuté pour créer un fichier et l’associer à un registre, selon un mode de réalisation, Figure 1 schematically represents a set of steps of a method executed to create a file and associate it with a register, according to one embodiment,

La figure 2 représente schématiquement un fichier associé à un registre, selon un mode de réalisation, Figure 2 schematically represents a file associated with a register, according to one embodiment,

La figure 3 représente schématiquement un ensemble d’étapes d’un procédé de vérification de l’intégrité d’un fichier et de lecture de données variables associées au fichier, selon un mode de réalisation, Figure 3 schematically represents a set of steps of a method for verifying the integrity of a file and reading variable data associated with the file, according to one embodiment,

La figure 4 représente schématiquement un ensemble d’étapes d’un procédé de vérification de l’intégrité d’un fichier et d’écriture de données variables associées au fichier, selon un mode de réalisation. Figure 4 schematically represents a set of steps of a method for verifying the integrity of a file and writing variable data associated with the file, according to one embodiment.

Description détailléeDetailed description

La figure 1 représente des étapes S1 à S5 d’un procédé de création d’un fichier à partir d’un fichier existant FL1. Le procédé peut être mis en œuvre par un terminal T1 et un serveur SRV interconnectés, par exemple par l’intermédiaire d’un réseau NT de transmission de données. Ainsi, le terminal T1 et le serveur SRV peuvent établir entre eux une relation client-serveur. La figure 2 représente le fichier FL1 et un registre RG1. Initialement, le fichier FL1 peut être vide ou plein.Figure 1 shows steps S1 to S5 of a method for creating a file from an existing file FL1. The method can be implemented by a terminal T1 and a server SRV interconnected, for example via a data transmission network NT. Thus, the terminal T1 and the server SRV can establish a client-server relationship between them. Figure 2 shows the file FL1 and a register RG1. Initially, the file FL1 can be empty or full.

Les étapes S1 à S4 sont exécutées successivement par le terminal T1. A l’étape S1, le terminal T1 insère une référence BCI1 à un bloc de donnée BC1 du registre RG1 dans le fichier FL1. Cette insertion est réalisée de manière contrôlée et potentiellement non-destructive, par exemple en encapsulant la référence BCI1 dans une métadonnée. La référence BCI1 contient les informations permettant de retrouver le registre RG1 et le bloc de données BC1 dans le registre. Selon les cas, ces informations peuvent comprendre notamment une donnée d’identification (par exemple l’adresse) du serveur SRV afin de permettre de déterminer à quel serveur il convient de s’adresser pour avoir accès au bloc de donnée BC1.Steps S1 to S4 are executed successively by the terminal T1. In step S1, the terminal T1 inserts a reference BCI1 to a data block BC1 of the register RG1 in the file FL1. This insertion is carried out in a controlled and potentially non-destructive manner, for example by encapsulating the reference BCI1 in a metadata. The reference BCI1 contains the information making it possible to find the register RG1 and the data block BC1 in the register. Depending on the case, this information may include in particular identification data (for example the address) of the server SRV in order to make it possible to determine which server should be contacted to access the data block BC1.

A l’étape S2, le terminal T1 calcule une empreinte HS1 du fichier FL1 à l’aide d’une fonction HSH de calcul d’empreinte recevant en entrée tout ou partie du contenu du fichier, y compris la référence BCI1 ou la métadonnée incluant cette référence et le cas échéant, la donnée d’identification du serveur SRV. La fonction HSH peut être une fonction de hachage cryptographique et/ou une fonction de signature numérique. A l’étape S3, le terminal T1 insère l’empreinte HS1 dans le fichier FL1 en un emplacement qui ne sera pas pris en compte pour le calcul de l’empreinte du fichier FL1. L’étape S3 est optionnelle et donc peut être omise, sachant que l’empreinte HS1 du fichier FL1 peut être recalculée à partir du fichier FL1 seul.In step S2, the terminal T1 calculates a HS1 fingerprint of the FL1 file using a fingerprint calculation function HSH receiving as input all or part of the content of the file, including the BCI1 reference or the metadata including this reference and, where applicable, the identification data of the SRV server. The HSH function may be a cryptographic hash function and/or a digital signature function. In step S3, the terminal T1 inserts the HS1 fingerprint into the FL1 file at a location that will not be taken into account for calculating the fingerprint of the FL1 file. Step S3 is optional and therefore can be omitted, knowing that the HS1 fingerprint of the FL1 file can be recalculated from the FL1 file alone.

L’empreinte HS1 peut être associée à un repère permettant de retrouver son emplacement et son étendue dans le fichier FL1. L’empreinte HS1 peut être signée numériquement préalablement à son insertion dans le fichier FL1. La fonction de calcul d’empreinte peut être appliquée à tout ou partie du fichier FL1.The HS1 fingerprint can be associated with a marker to find its location and extent in the FL1 file. The HS1 fingerprint can be digitally signed before being inserted into the FL1 file. The fingerprint calculation function can be applied to all or part of the FL1 file.

A l’étape S4, le terminal T1 transmet l’empreinte HS1 au serveur SRV. L’empreinte HS1 peut être transmise au serveur SRV sous la forme d’une requête de mise à jour du bloc de donnée BC1, incluant éventuellement l’identifiant BCI1 du bloc BC1 où elle doit être enregistrée dans le registre RG1, et éventuellement une signature numérique de l’empreinte HS1. A l’étape S5, le serveur SRV reçoit l’empreinte HS1 et l’insère dans le bloc de donnée BC1 du registre RG1.In step S4, the terminal T1 transmits the HS1 fingerprint to the SRV server. The HS1 fingerprint may be transmitted to the SRV server in the form of a request to update the data block BC1, possibly including the BCI1 identifier of the block BC1 where it must be recorded in the RG1 register, and possibly a digital signature of the HS1 fingerprint. In step S5, the SRV server receives the HS1 fingerprint and inserts it into the BC1 data block of the RG1 register.

De cette manière, la consultation du registre RG1 permet d’identifier le fichier FL1 et réciproquement, la consultation du fichier FL1 permet d’identifier le registre RG1. Lorsque l’étape S3 d’insertion de l'empreinte HS1 dans le fichier FL1 est exécutée, l’empreinte peut être utilisée pour trouver une occurrence du fichier FL1 sur les espaces de stockage de l'utilisateur par des outils informatiques système. Par ailleurs, que l’empreinte HS1 soit insérée ou non dans le fichier FL1, elle peut être confirmée en interrogeant le serveur SRV, à l’aide de l’identifiant BCI1 figurant dans le fichier FL1.In this way, consulting the RG1 register makes it possible to identify the FL1 file and conversely, consulting the FL1 file makes it possible to identify the RG1 register. When step S3 of inserting the HS1 fingerprint into the FL1 file is executed, the fingerprint can be used to find an occurrence of the FL1 file on the user's storage spaces by system IT tools. Furthermore, whether or not the HS1 fingerprint is inserted into the FL1 file, it can be confirmed by querying the SRV server, using the BCI1 identifier appearing in the FL1 file.

Le bloc de donnée BC1 peut contenir une donnée relative au fichier FL1, qui peut être modifiée. Ainsi, une consultation du registre RG1 sur la base de l’identifiant BCI1 trouvé dans le fichier FL1 donne accès à cette donnée modifiable. En revanche, si la référence BCI1 est modifiée dans le fichier FL1, l’empreinte calculée sur le fichier ainsi modifié est différente de l’empreinte HS1. Il n’est donc pas possible d’accéder au bloc de donnée BCI1 à partir du fichier modifié, ni de retrouver le fichier modifié à partir de l’empreinte HS1 se trouvant dans le bloc de donnée BC1 du registre. Par conséquent, l’existence de l’empreinte HS1 interdit la modification de l’identifiant BCI1 dans le fichier FL1. Par ailleurs, l’identifiant BCI1 identifie de manière certaine le bloc de donnée BC1 dans le registre RG1, lequel contient l’empreinte HS1 qui identifie de manière certaine le fichier FL1. Il est à noter qu’il est extrêmement difficile de générer un fichier ayant une empreinte prédéfinie, et qu’il est extrêmement peu probable (probabilité inférieure à 10-77) que deux fichiers aient la même empreinte. Il est donc extrêmement probable que l’empreinte HS1 n’a pas été insérée dans le bloc de donnée BC1 avant qu’elle soit calculée sur le fichier FL1 après insertion de l’identifiant BCI1.The BC1 data block may contain data relating to the FL1 file, which can be modified. Thus, a consultation of the RG1 register on the basis of the BCI1 identifier found in the FL1 file gives access to this modifiable data. On the other hand, if the BCI1 reference is modified in the FL1 file, the imprint calculated on the file thus modified is different from the HS1 imprint. It is therefore not possible to access the BCI1 data block from the modified file, nor to find the modified file from the HS1 imprint located in the BC1 data block of the register. Consequently, the existence of the HS1 imprint prohibits the modification of the BCI1 identifier in the FL1 file. Furthermore, the BCI1 identifier identifies with certainty the BC1 data block in the RG1 register, which contains the HS1 imprint which identifies with certainty the FL1 file. It should be noted that it is extremely difficult to generate a file with a predefined fingerprint, and that it is extremely unlikely (probability less than 10 -77 ) that two files have the same fingerprint. It is therefore extremely likely that the HS1 fingerprint was not inserted into the BC1 data block before it was calculated on the FL1 file after inserting the BCI1 identifier.

Les liens formés par les données BCI1 et HS1 entre le fichier FL1 et le registre RG1 ne dépendent pas d’un emplacement physique de stockage du fichier ou du registre ou d’un système de fichiers tel que NTFS (New Technology File System) ou FAT (File Allocation Table). Ces liens peuvent être vérifiés quels que soient la copie du fichier FL1 considérée et l’emplacement physique où cette copie est stockée.The links formed by the BCI1 and HS1 data between the FL1 file and the RG1 register do not depend on a physical storage location of the file or the register or on a file system such as NTFS (New Technology File System) or FAT (File Allocation Table). These links can be verified regardless of the copy of the FL1 file considered and the physical location where this copy is stored.

L’accès en écriture au registre RG1 réalisé à l’étape S5 peut être limité à une ou plusieurs personnes dûment habilitées.Write access to register RG1 carried out in step S5 may be limited to one or more duly authorized persons.

Selon un mode de réalisation, le fichier FL1, éventuellement avec son empreinte HS1 embarquée, est publié sur une plateforme identifiant les fichiers par leur empreinte, par exemple sur le modèle de IPFS ("InterPlanetary File System") pour des empreintes calculées sur la totalité du fichier.According to one embodiment, the FL1 file, possibly with its embedded HS1 fingerprint, is published on a platform identifying files by their fingerprint, for example on the IPFS ("InterPlanetary File System") model for fingerprints calculated on the entire file.

La figure 3 représente des étapes S11 à S18 d’un procédé d’accès en lecture à des données variables associées à un fichier tel que le fichier FL1, après avoir été traité durant les étapes S1 et S2 et éventuellement S3, pour recevoir un identifiant de bloc de donnée BCI1 et pour le calcul de l’empreinte HS1. Le terminal T1 exécute tout d’abord les étapes S11 à S14. A l’étape S11, le terminal T1 calcule une empreinte HS2 du fichier en appliquant la fonction de calcul d’empreinte HSH utilisée à l’étape S2 au contenu du fichier FL1. Si l’empreinte HS1 a été insérée dans le fichier FL1, celle-ci est exclue du contenu du fichier auquel est appliquée la fonction HSH. A cet effet, la position de l’empreinte HS1 dans le fichier peut être repérée à l’aide d’un repère. Le repère peut spécifier une ou plusieurs zones exclues du contenu du fichier, sur lequel le calcul d’empreinte doit être appliqué, ou spécifier la ou les zones du contenu du fichier auxquelles le calcul d’empreinte est appliqué. L’étape S12 est optionnelle, notamment si l’empreinte HS1 ne figure pas dans le fichier FL1. A l’étape S12, le terminal T1 compare l’empreinte calculée HS2 avec l’empreinte HS1 préalablement associée au fichier FL1. Si les empreintes HS1 et HS2 correspondent ou sont identiques, le contenu du fichier FL1 sur lequel porte le calcul d’empreinte n’a pas été modifié depuis le calcul de l’empreinte HS1. Dans le cas contraire, le fichier FL1 peut avoir été modifié, ou la fonction de calcul d’empreinte utilisée ne correspond pas à celle utilisée pour le calcul de l’empreinte HS1, ou encore l’étendue du contenu du fichier sur lequel porte le calcul d’empreinte ne correspond pas à celui pris en compte pour le calcul de l’empreinte HS1. L’étape S12 peut comprendre d’autres vérifications comme la vérification d’une signature numérique permettant de déterminer l’authenticité du fichier.Figure 3 shows steps S11 to S18 of a method for read access to variable data associated with a file such as the file FL1, after having been processed during steps S1 and S2 and possibly S3, to receive a data block identifier BCI1 and to calculate the fingerprint HS1. The terminal T1 first executes steps S11 to S14. In step S11, the terminal T1 calculates a fingerprint HS2 of the file by applying the fingerprint calculation function HSH used in step S2 to the content of the file FL1. If the fingerprint HS1 has been inserted into the file FL1, it is excluded from the content of the file to which the HSH function is applied. For this purpose, the position of the fingerprint HS1 in the file can be identified using a marker. The marker may specify one or more excluded areas of the file content, to which the fingerprint calculation must be applied, or specify the area(s) of the file content to which the fingerprint calculation is applied. Step S12 is optional, in particular if the HS1 fingerprint does not appear in the FL1 file. In step S12, the terminal T1 compares the calculated HS2 fingerprint with the HS1 fingerprint previously associated with the FL1 file. If the HS1 and HS2 fingerprints match or are identical, the content of the FL1 file on which the fingerprint calculation is carried out has not been modified since the HS1 fingerprint was calculated. Otherwise, the FL1 file may have been modified, or the fingerprint calculation function used does not correspond to that used for calculating the HS1 fingerprint, or the extent of the content of the file on which the fingerprint calculation is carried out does not correspond to that taken into account for calculating the HS1 fingerprint. Step S12 may include other checks such as verifying a digital signature to determine the authenticity of the file.

L’exécution des étapes S13, S14 peut être conditionnée au succès de la comparaison des empreintes HS1 et HS2 à l’étape S12. A l’étape S13, le terminal T1 lit dans le fichier FL1 l’identifiant BCI1 du bloc de donnée BC1 du registre RG1 où sont stockées les données relatives au fichier FL1. A cette étape, l’identifiant BCI1 peut être considéré comme authentique si l’étape S12 de comparaison a été exécutée et avec succès. A l’étape S14, le terminal T1 peut transmettre au serveur SRV une requête de lecture RQR d’informations relatives au fichier FL1 stockées dans le registre RG1. A cet effet, la requête RQR contient une information permettant d’identifier le fichier FL1, telle que l’empreinte HS2, et éventuellement tout ou partie de identifiant BCI1 du bloc de donnée BC1. A l’étape S15, le serveur SRV reçoit cette requête et détermine si un bloc de donnée du registre RG1 contient bien l’empreinte HS2 transmise à l’étape S14, et éventuellement que l’empreinte HS2 se trouve bien dans un bloc de donnée du registre RG1, correspondant le cas échéant à la partie de l’identifiant BCI1 reçue. L’étape S15 permet de déterminer que l’empreinte HS2 reçue a bien été précédemment associée au bloc de donnée BC1 du registre RG1, éventuellement correspondant à la partie de l’identifiant BCI1 reçue à l’étape S14. La vérification effectuée à l’étape S15 permet indirectement de déterminer que le fichier FL1 est intègre si l’empreinte reçue HS2 a bien été calculée à partir du contenu du fichier FL1. Si Si le test effectué à l’étape S15 est positif, alors le serveur SRV exécute les étapes S16 et S17. A l’étape S16, le serveur SRV lit les informations contenues dans le bloc de donnée BC1 où se trouve l’empreinte HS2. A l’étape S17, le serveur SRV transmet les informations Inf(BC1,HS2) lues dans le bloc de donnée BC1 au terminal T1. A l’étape S18, le terminal T1 reçoit et exploite les informations Inf(BC1,HS2) reçues.The execution of steps S13, S14 may be conditioned on the success of the comparison of the HS1 and HS2 fingerprints in step S12. In step S13, the terminal T1 reads in the FL1 file the BCI1 identifier of the BC1 data block of the RG1 register where the data relating to the FL1 file are stored. In this step, the BCI1 identifier may be considered authentic if the comparison step S12 has been executed and successfully. In step S14, the terminal T1 may transmit to the SRV server a read request RQR for information relating to the FL1 file stored in the RG1 register. For this purpose, the RQR request contains information making it possible to identify the FL1 file, such as the HS2 fingerprint, and possibly all or part of the BCI1 identifier of the BC1 data block. In step S15, the SRV server receives this request and determines whether a data block of the register RG1 indeed contains the HS2 fingerprint transmitted in step S14, and possibly that the HS2 fingerprint is indeed in a data block of the register RG1, corresponding where appropriate to the part of the identifier BCI1 received. Step S15 makes it possible to determine that the received HS2 fingerprint has indeed been previously associated with the data block BC1 of the register RG1, possibly corresponding to the part of the identifier BCI1 received in step S14. The verification carried out in step S15 indirectly makes it possible to determine that the file FL1 is intact if the received HS2 fingerprint has indeed been calculated from the content of the file FL1. If the test carried out in step S15 is positive, then the SRV server executes steps S16 and S17. In step S16, the SRV server reads the information contained in the data block BC1 where the HS2 fingerprint is located. In step S17, the SRV server transmits the information Inf(BC1,HS2) read in the data block BC1 to the terminal T1. In step S18, the terminal T1 receives and uses the information Inf(BC1,HS2) received.

Selon un mode de réalisation, les informations Inf(BC1,HS2) comprennent une liste d’identifiants (d’empreintes) de fichiers correspondant à différentes versions du fichier FL1. Ceci présuppose qu’à chaque création d’une nouvelle version du fichier FL1, les étapes S1 à S5 sont exécutées en utilisant le même identifiant BCI1 de bloc de donnée BC1 et en remplaçant l’empreinte figurant dans le fichier par la nouvelle empreinte calculée sur la nouvelle version du fichier. Ainsi le bloc de donnée BC1 comprend pour chaque version du fichier FL1 un enregistrement comportant l’empreinte de la version du fichier. Ainsi la donnée variable associée au fichier FL1 dans le bloc de donnée BC1 est l'empreinte de la plus récente version connue (ou selon les modalités techniques la liste des versions connues) du fichier FL1, enregistrées successivement dans le bloc de donnée BC1. Le choix fait par l'utilisateur de considérer qu'un fichier constitue une version nouvelle d'un autre fichier est arbitraire et ne dépend ni des modalités de production, ni du format du fichier. Le registre RG1 peut fournir la liste des empreintes de versions d’un même fichier, mais ne donne pas accès au contenu de ces versions.According to one embodiment, the information Inf(BC1,HS2) comprises a list of file identifiers (fingerprints) corresponding to different versions of the file FL1. This presupposes that each time a new version of the file FL1 is created, steps S1 to S5 are executed using the same identifier BCI1 of the data block BC1 and replacing the fingerprint appearing in the file with the new fingerprint calculated on the new version of the file. Thus, the data block BC1 comprises, for each version of the file FL1, a record containing the fingerprint of the version of the file. Thus, the variable data associated with the file FL1 in the data block BC1 is the fingerprint of the most recent known version (or according to the technical modalities, the list of known versions) of the file FL1, recorded successively in the data block BC1. The choice made by the user to consider that a file constitutes a new version of another file is arbitrary and depends neither on the production modalities nor on the format of the file. The RG1 registry can provide the list of version fingerprints of the same file, but does not provide access to the content of these versions.

Selon un mode de réalisation, les informations Inf(BC1,HS2) comprennent un ou plusieurs états de contrat intelligent. Selon un exemple de réalisation, le fichier FL1 contient une œuvre d’art numérique, et le bloc de donnée BC1 contient un ou plusieurs états de contrat intelligent contenant des données relatives au propriétaire du fichier FL1 comme des données d’identification du propriétaire et des données relatives à l’achat par le propriétaire de l’œuvre d’art numérique comme la date d’achat et le prix d’achat. Ainsi, la donnée variable associée au fichier FL1 dans le bloc de donnée BC1 comprend la liste des transactions de transfert de propriété de l’œuvre d’art, enregistrées successivement dans le bloc de donnée ou BC1. Chaque transaction peut rassembler des données telles que la date de la transaction, des informations sur l’identité du nouveau propriétaire, et le montant de la transaction.According to one embodiment, the information Inf(BC1,HS2) comprises one or more smart contract states. According to one example embodiment, the file FL1 contains a digital artwork, and the data block BC1 contains one or more smart contract states containing data relating to the owner of the file FL1 such as owner identification data and data relating to the purchase by the owner of the digital artwork such as the purchase date and the purchase price. Thus, the variable data associated with the file FL1 in the data block BC1 comprises the list of transactions for transferring ownership of the artwork, successively recorded in the data block or BC1. Each transaction can gather data such as the date of the transaction, information on the identity of the new owner, and the amount of the transaction.

Il est à noter que le registre RG1 peut être accessible en lecture et vérifiable par tous ou seulement par certaines personnes habilitées, en activant les étapes S14 à S18. Il est donc possible même pour un acteur ne détenant pas le fichier FL1 ou l’une de ses versions enregistrées, de connaitre par exemple la liste de toutes les versions du fichier FL1, telles qu’enregistrées dans le registre RG1 ou la liste de toutes les transactions portant sur le fichier FL1, enregistrées dans le registre RG1.It should be noted that the RG1 register can be readable and verifiable by all or only by certain authorized persons, by activating steps S14 to S18. It is therefore possible even for an actor who does not hold the FL1 file or one of its recorded versions, to know for example the list of all versions of the FL1 file, as recorded in the RG1 register or the list of all transactions relating to the FL1 file, recorded in the RG1 register.

La figure 4 représente des étapes S21 à S28 d’un procédé d’accès en écriture à des données variables associées à un fichier tel que le fichier FL1 après avoir été traité durant les étapes S1 et S2 et éventuellement S3. Les étapes S21 à S23 peuvent être identiques aux étapes S11 à S13, respectivement, l’étape S22 étant également facultative, notamment si l’empreinte HS1 n’a pas été insérée dans le fichier FL1.Figure 4 shows steps S21 to S28 of a method for writing access to variable data associated with a file such as the file FL1 after having been processed during steps S1 and S2 and possibly S3. Steps S21 to S23 may be identical to steps S11 to S13, respectively, with step S22 also being optional, in particular if the HS1 fingerprint has not been inserted into the file FL1.

L’écriture dans le registre RG1 peut nécessiter l’exécution d’une procédure d’authentification (étape S24), par exemple entre le terminal T1 si celui-ci doit accéder au registre RG1 en écriture, et le serveur SRV. L’authentification du terminal T1 par le serveur SRV peut être réalisée par tout moyen requis par le serveur, comme la fourniture par le terminal au serveur d’un identifiant et d’un mot de passe, ou la fourniture d’une preuve de capacité à signer avec une identité attendue par le serveur SRV. A cet effet, le registre RG1 peut mémoriser en association avec le bloc de donnée BC1, une ou plusieurs clés publiques permettant de vérifier une signature numérique, la signature étant générée à l’aide d’une fonction de calcul de signature recevant en entrée une donnée et une clé privée correspondant à une clé publique mémorisée par le serveur. Si la procédure d’authentification échoue à l’étape S24, le serveur SRV peut le notifier au terminal T1 à l’étape S28. Si le terminal T1 (ou l’utilisateur du terminal) est authentifié, celui-ci peut transmettre au serveur SRV une requête d’écriture RQW contenant l’information à inscrire dans le bloc de donnée BC1 dans le registre RG1 (étape S25). La requête d’écriture contient l’empreinte du fichier HS1 lié au bloc de donnée BC1, les données à écrire DT, et éventuellement tout ou partie de l’identifiant BCI1 du bloc de donnée BC1 où l’opération d’écriture doit être effectuée. A noter que les étapes S24 et S25 peuvent être effectuées simultanément. Dans ce cas, la requête d’écriture RQW contient les informations d’authentification requises par le serveur.Writing to the register RG1 may require the execution of an authentication procedure (step S24), for example between the terminal T1 if the latter must access the register RG1 in writing, and the server SRV. The authentication of the terminal T1 by the server SRV may be carried out by any means required by the server, such as the provision by the terminal to the server of an identifier and a password, or the provision of proof of the ability to sign with an identity expected by the server SRV. For this purpose, the register RG1 may store in association with the data block BC1, one or more public keys making it possible to verify a digital signature, the signature being generated using a signature calculation function receiving as input a data item and a private key corresponding to a public key stored by the server. If the authentication procedure fails in step S24, the server SRV may notify the terminal T1 in step S28. If the terminal T1 (or the user of the terminal) is authenticated, it can transmit to the server SRV a write request RQW containing the information to be written in the data block BC1 in the register RG1 (step S25). The write request contains the fingerprint of the file HS1 linked to the data block BC1, the data to be written DT, and possibly all or part of the identifier BCI1 of the data block BC1 where the write operation must be performed. Note that steps S24 and S25 can be performed simultaneously. In this case, the write request RQW contains the authentication information required by the server.

A l’étape S26, le serveur SRV reçoit la requête d’écriture RQW et vérifie qu’elle est réalisable. A cet effet, il exécute l’étape S26 qui peut être identique à l’étape S15. Ainsi, à l’étape S26, le serveur SRV détermine si un bloc de donnée du registre RG1 contient bien l’empreinte HS2 du fichier FL1 transmise à l’étape S25, et éventuellement que l’empreinte HS2 se trouve bien dans un bloc de donnée correspondant à la partie de l’identifiant BCI1 transmise. Si le test effectué à l’étape S26 est positif, alors le serveur SRV exécute les étapes S27 et S28. A l’étape S27, le serveur SRV exécute l’opération d’écriture des donnés DT reçues dans le bloc de donnée BC1 identifié à l’étape S26. A l’étape S28 transmet au terminal T1 un message de compte rendu (positif ou négatif) de l’exécution de l’opération d’écriture. Ce message de compte rendu est négatif si, pour une raison quelconque, le serveur SRV n’a pas réalisé la requête d’écriture. Des règles d’accès en écriture au bloc de donnée BC1 peuvent être spécifiées dans le bloc de données ou associées à celui-ci. Dans ce cas, le serveur SRV se limite à lire et assurer la prise en compte de ces règles, notamment pour refuser ou accepter une écriture dans le bloc de donnée BC1.In step S26, the SRV server receives the write request RQW and checks that it can be carried out. To this end, it executes step S26 which may be identical to step S15. Thus, in step S26, the SRV server determines whether a data block of the register RG1 indeed contains the HS2 fingerprint of the file FL1 transmitted in step S25, and possibly that the HS2 fingerprint is indeed in a data block corresponding to the part of the BCI1 identifier transmitted. If the test carried out in step S26 is positive, then the SRV server executes steps S27 and S28. In step S27, the SRV server executes the operation of writing the data DT received in the BC1 data block identified in step S26. In step S28, it transmits to the terminal T1 a report message (positive or negative) of the execution of the write operation. This report message is negative if, for any reason, the SRV server did not perform the write request. Write access rules for the BC1 data block may be specified in the data block or associated with it. In this case, the SRV server is limited to reading and ensuring that these rules are taken into account, in particular to refuse or accept a write in the BC1 data block.

L’étape S27 peut constituer une première écriture dans le bloc de donnée BC1. Ce cas peut se présenter par exemple lorsque l’identifiant BCl1 n’est pas reconnu à l’étape S26 par le serveur SRV.Step S27 may constitute a first writing in the data block BC1. This case may arise for example when the identifier BCl1 is not recognized in step S26 by the SRV server.

Selon un mode de réalisation, le registre RG1 est géré par un tiers de confiance, garantissant l’intégrité et l’authenticité des données du registre.According to one embodiment, the RG1 register is managed by a trusted third party, guaranteeing the integrity and authenticity of the register data.

Selon un autre mode de réalisation, le bloc de donnée BC1 est une chaine de blocs cryptographique (blockchain). Dans ce cas, l’étape S5 d’insertion de l’empreinte HS1 dans le bloc de donnée BC1 et l’étape S27 d’écriture dans le bloc de donnée BC1 sont effectuées en générant des données d’une nouvelle transaction dans bloc de donnée de la chaine de blocs, incluant l’empreinte HS1.According to another embodiment, the data block BC1 is a cryptographic blockchain. In this case, the step S5 of inserting the HS1 fingerprint into the data block BC1 and the step S27 of writing into the data block BC1 are performed by generating data of a new transaction in the data block of the blockchain, including the HS1 fingerprint.

Selon un mode de réalisation, l’identifiant BCI1 référence un contrat intelligent dans une chaine de blocs. Dans ce cas, les requêtes de lecture RQR et/ou d’écriture RQW peuvent contenir la référence d’une fonction associée au contrat intelligent à exécuter par le serveur SRV.According to one embodiment, the BCI1 identifier references a smart contract in a blockchain. In this case, the RQR read and/or RQW write requests may contain the reference of a function associated with the smart contract to be executed by the SRV server.

Selon un mode de réalisation, l’empreinte HS1 est signée en transmettant une requête à un serveur de temps fournissant un horodatage légal, par exemple selon la norme RFC3161. Le serveur de temps fournit une donnée d’horodatage qui peut également être insérée dans le fichier FL1 à l‘étape S3. La signature numérique de l’empreinte HS1 est également insérée dans le bloc de donnée BC1 aux étapes S5 et S27.According to one embodiment, the HS1 fingerprint is signed by transmitting a request to a time server providing a legal timestamp, for example according to the RFC3161 standard. The time server provides a timestamp data which can also be inserted into the FL1 file in step S3. The digital signature of the HS1 fingerprint is also inserted into the BC1 data block in steps S5 and S27.

Selon un mode de réalisation, les fonctions décrites ci-dessus de mise à jour de la chaine de blocs BC1 sont réalisées par plusieurs serveurs, appelés "mineurs", exécutant les mêmes opérations en parallèle, comme cela est généralement effectué lors de l’enregistrement d’une transaction dans une chaine de blocs. Les opérations réalisées par les serveurs sont appelées des opérations de "minage". Cette disposition permet d’assurer une plus grande sécurité en ce qui concerne notamment le contenu du registre RG1 qui est par ailleurs généré à l’identique et de manière sécurisée par plusieurs serveurs.According to one embodiment, the functions described above for updating the BC1 block chain are performed by several servers, called "miners", executing the same operations in parallel, as is generally done when recording a transaction in a block chain. The operations performed by the servers are called "mining" operations. This arrangement makes it possible to ensure greater security, in particular with regard to the content of the RG1 register, which is also generated identically and securely by several servers.

Selon un mode de réalisation, l’empreinte HS1 est transmise à l’étape S4 avec un identifiant d’un groupe de fichiers auquel le fichier FL1 appartient. Cet identifiant de groupe de fichiers peut être inséré dans le fichier FL1 par exemple dans une métadonnée à l’étape S1 et être pris en compte dans le calcul de l’empreinte HS1 effectué à l‘étape S2. L’identifiant de groupe est inséré dans le bloc de donnée BC1 à l’étape S5. De cette manière, une requête de lecture comme celle RQR transmise à l’étape S14, et incluant cet identifiant de groupe de fichiers, peut permettre d’obtenir du serveur SRV les empreintes de tous les fichiers appartenant au groupe correspondant à l’identifiant de groupe de fichiers transmis. Les empreintes peuvent ensuite être utilisées pour retrouver les fichiers correspondant appartenant au groupe de fichiers. Ces dispositions permettent par exemple d’obtenir les empreintes de toutes les versions d’un même fichier, ou de tous les fichiers associés à un mot clé donné, sans limitation. Il est donc possible de reproduire des mécanismes habituels de gestion électronique de documents, sans imposer que les documents soient rassemblés dans un espace de stockage particulier.According to one embodiment, the HS1 fingerprint is transmitted in step S4 with an identifier of a group of files to which the FL1 file belongs. This file group identifier can be inserted into the FL1 file, for example, in a metadata item in step S1 and be taken into account in the calculation of the HS1 fingerprint performed in step S2. The group identifier is inserted into the BC1 data block in step S5. In this way, a read request such as that RQR transmitted in step S14, and including this file group identifier, can make it possible to obtain from the SRV server the fingerprints of all the files belonging to the group corresponding to the transmitted file group identifier. The fingerprints can then be used to find the corresponding files belonging to the file group. These provisions make it possible, for example, to obtain the fingerprints of all the versions of the same file, or of all the files associated with a given keyword, without limitation. It is therefore possible to reproduce the usual mechanisms of electronic document management, without requiring that the documents be collected in a particular storage space.

Selon un mode de réalisation, le fichier FL1 contient des instructions de programme, et l’empreinte HS1 est insérée dans le fichier FL1 par exemple, dans un commentaire de programme, dans une section du fichier destinée à recevoir des métadonnées en texte clair (pdf, jpg), ou à la fin d’un fichier binaire (zip, exe).According to one embodiment, the FL1 file contains program instructions, and the HS1 fingerprint is inserted into the FL1 file for example, in a program comment, in a section of the file intended to receive metadata in clear text (pdf, jpg), or at the end of a binary file (zip, exe).

Selon un mode de réalisation, le fichier FL1 contient des instructions de programme, et une instance de l'empreinte HS1 est insérée dans le fichier FL1 à un emplacement permettant sa prise en compte par le programme, par exemple pour permettre l'affichage d'un code optique (ex. QR Code ou "Quick Response Code") identifiant exactement le fichier par exemple dans un format tel que HTML ("HyperText Markup Language") ou pdf ("portable document format").According to one embodiment, the FL1 file contains program instructions, and an instance of the HS1 fingerprint is inserted into the FL1 file at a location allowing it to be taken into account by the program, for example to allow the display of an optical code (e.g. QR Code or "Quick Response Code") exactly identifying the file for example in a format such as HTML ("HyperText Markup Language") or pdf ("portable document format").

Selon un exemple de réalisation, l’étape S14 et/ou S25 comprend en outre la transmission au server SRV d’instructions de programme figurant dans le fichier FL1, par exemple dans la partie soumise au calcul d’empreinte pour obtenir l’empreinte HS1. Les instructions de programme transmises sont à exécuter par le serveur SRV pour réaliser des opérations sur le bloc de donnée BC1.According to an exemplary embodiment, step S14 and/or S25 further comprises the transmission to the SRV server of program instructions appearing in the file FL1, for example in the part subject to the fingerprint calculation to obtain the HS1 fingerprint. The transmitted program instructions are to be executed by the SRV server to perform operations on the data block BC1.

L’empreinte selon son type peut constituer à elle seule le repère permettant de la localiser dans le fichier FL1. C’est par exemple le cas lorsque la métadonnée est d’un format suffisamment spécifique pour pouvoir être localisée dans le fichier au moyen d’une expression régulière. Ainsi le repère peut être une mise en forme spécifique, une chaîne de caractères spécifique connue pour figurer dans la métadonnée d’identification d’un bloc de données, des séparateurs réguliers, etc. La mise en forme peut être connue de façon implicite puisque définie par défaut, par exemple, une métadonnée constituée des 30 premiers caractères de la représentation hexadécimale d’une empreinte "SHA256", avec un tiret séparateur tous les 5 caractères.The fingerprint, depending on its type, can constitute the marker alone to locate it in the FL1 file. This is the case, for example, when the metadata is of a sufficiently specific format to be located in the file using a regular expression. Thus, the marker can be a specific format, a specific character string known to appear in the identification metadata of a data block, regular separators, etc. The formatting can be known implicitly since it is defined by default, for example, a metadata consisting of the first 30 characters of the hexadecimal representation of a "SHA256" fingerprint, with a separator hyphen every 5 characters.

Le repère n’est pas nécessairement à l’emplacement de l’empreinte dans le fichier, mais peut indiquer cet emplacement, par exemple par rapport au début ou à la fin du fichier, ou par rapport à la position du repère dans le fichier. Ainsi le repère peut être associé à une information utile à la localisation de l’empreinte, telle qu’une position définie par rapport au repère, ou bien par rapport au début ou à la fin du fichier. L’empreinte HS1 peut être insérée dans le fichier FL1 sous la forme ou dans une métadonnée utilisée pour identifier le fichier. Lorsque l’empreinte ou la métadonnée qui la contient ne permet pas à elle seule de localiser l’empreinte, le repère peut être inséré dans le fichier ou la métadonnée.The marker is not necessarily at the location of the fingerprint in the file, but may indicate this location, for example relative to the start or end of the file, or relative to the position of the marker in the file. Thus the marker may be associated with information useful for locating the fingerprint, such as a position defined relative to the marker, or relative to the start or end of the file. The HS1 fingerprint may be inserted in the FL1 file in the form or in a metadata item used to identify the file. When the fingerprint or the metadata that contains it does not by itself allow the fingerprint to be located, the marker may be inserted in the file or the metadata item.

En outre, l’empreinte HS1 selon son type peut renseigner à elle seule sur le calcul ou algorithme de calcul ou encodage ayant permis sa génération. L’empreinte peut également être associée à une métadonnée spécifiant le nom de l’algorithme de calcul utilisé pour la génération de l’empreinte, tel que "md5", ou "sha1", ou le nom de l’encodage, tel que "hex" (pour hexadécimal), "b64" (pour base 64), ou "bubble-babble". En outre, l’algorithme ou l’encodage peut être connu de façon implicite puisque défini par défaut. Si l’empreinte HS1 est insérée dans une métadonnée, cette information de type de calcul d’empreinte peut être insérée dans la même métadonnée que l’empreinte. La métadonnée contenant l’information de type de calcul d’empreinte peut également être insérée dans une section protégée telle que décrite précédemment.In addition, the HS1 fingerprint, depending on its type, can provide information on its own about the calculation or calculation algorithm or encoding that allowed its generation. The fingerprint can also be associated with a metadata specifying the name of the calculation algorithm used to generate the fingerprint, such as "md5", or "sha1", or the name of the encoding, such as "hex" (for hexadecimal), "b64" (for base 64), or "bubble-babble". In addition, the algorithm or encoding can be known implicitly since it is defined by default. If the HS1 fingerprint is inserted in a metadata, this fingerprint calculation type information can be inserted in the same metadata as the fingerprint. The metadata containing the fingerprint calculation type information can also be inserted in a protected section as described above.

Selon un mode de réalisation, l’empreinte HS1 est insérée dans le fichier FL1 en association avec ou sous la forme d’une signature numérique générée en appliquant une fonction de calcul de signature à l’empreinte du fichier et une clé privée d’une paire de clés publique/privée. La vérification de la signature numérique peut consister à appliquer une fonction de vérification de signature correspondante, au triplet comprenant l’empreinte HS1, la signature et la clé publique de la paire de clés publique/privée, pour prouver que la signature signe valablement l’empreinte HS1 par la clé privée, l’empreinte HS1 contenue dans le fichier n’étant pas prise en compte dans le calcul de l’empreinte.According to one embodiment, the HS1 fingerprint is inserted into the FL1 file in association with or in the form of a digital signature generated by applying a signature calculation function to the fingerprint of the file and a private key of a public/private key pair. The verification of the digital signature may consist in applying a corresponding signature verification function, to the triplet comprising the HS1 fingerprint, the signature and the public key of the public/private key pair, to prove that the signature validly signs the HS1 fingerprint by the private key, the HS1 fingerprint contained in the file not being taken into account in the calculation of the fingerprint.

Une ou plusieurs métadonnées figurant dans le fichier FL1 peuvent fournir les paramètres nécessaires à la vérification. Ces paramètres peuvent indiquer le type d’algorithme utilisé pour générer l’empreinte et/ou la signature numérique. Ces paramètres peuvent fournir l’adresse de courrier électronique d’un signataire, et/ou la clé publique correspondante ou une dérivation de cette dernière. Dans tous les cas, il est préférable que ces métadonnées soient prises en compte dans le calcul de l’empreinte HS1.One or more metadata contained in the FL1 file may provide the parameters necessary for verification. These parameters may indicate the type of algorithm used to generate the fingerprint and/or digital signature. These parameters may provide the email address of a signer, and/or the corresponding public key or a derivation of the latter. In all cases, it is preferable that these metadata be taken into account in the calculation of the HS1 fingerprint.

Dans le cas où la signature numérique de l’empreinte HS1 est calculée, elle peut être transmise au serveur à l’étape S14 et/ou S25. Cela permet au serveur SRV de vérifier que la requête RQR et/ou RQW est émise par le signataire du fichier lui-même qui peut être le seul légitime à le faire.In case the digital signature of the HS1 fingerprint is calculated, it can be transmitted to the server at step S14 and/or S25. This allows the SRV server to verify that the RQR and/or RQW request is issued by the signer of the file itself who may be the only legitimate one to do so.

Selon un mode de réalisation, les étapes S1 à S3 sont effectuées par un tiers de confiance à qui le fichier FL1 a été précédemment transmis, par exemple le serveur SRV. De cette manière, on est assuré que l’empreinte HS1 est bien celle du fichier FL1 dans lequel se trouve l’identifiant BCI1 pris en compte pour le calcul de l’empreinte. Cependant, la génération de l’empreinte par un tiers de confiance peut poser le problème de la confidentialité du contenu du fichier FL1. La preuve que l’empreinte HS1 a bien été calculée sur une partie du fichier FL1 contenant l’identifiant BCI1 peut également être apportée par un protocole d’établissement de preuve à connaissance nulle ("zero knowledge") dans lequel l’entité qui génère la preuve n’a pas besoin de connaître le contenu du fichier FL1. Ainsi, la confidentialité du contenu du fichier FL1 peut être assurée.According to one embodiment, steps S1 to S3 are performed by a trusted third party to whom the FL1 file has been previously transmitted, for example the SRV server. In this way, it is ensured that the HS1 fingerprint is indeed that of the FL1 file in which the BCI1 identifier taken into account for calculating the fingerprint is found. However, the generation of the fingerprint by a trusted third party may pose the problem of the confidentiality of the content of the FL1 file. Proof that the HS1 fingerprint has indeed been calculated on a part of the FL1 file containing the BCI1 identifier may also be provided by a zero-knowledge proof establishment protocol in which the entity generating the proof does not need to know the content of the FL1 file. Thus, the confidentiality of the content of the FL1 file can be ensured.

Selon un mode de réalisation, l’une des métadonnées du fichier FL1 peut contenir une information prise en compte lors du calcul de l’empreinte HS1.According to one embodiment, one of the metadata of the FL1 file may contain information taken into account when calculating the HS1 footprint.

Selon un mode de réalisation, certaines métadonnées du fichier FL1 sont prises en compte lors du calcul de l’empreinte HS1, HS2, et d’autres sont exclues de ce calcul.According to one embodiment, certain metadata of the FL1 file are taken into account when calculating the HS1, HS2 footprint, and others are excluded from this calculation.

Selon un mode de réalisation, le calcul de l’empreinte HS1 (étape S2) comprend l’insertion préalable d’une donnée prédéfinie dans le fichier FL1, éventuellement à l’emplacement de l’empreinte HS1 dans le fichier. Dans ce cas, le calcul de l’empreinte HS1 tenant compte des bits de la donnée prédéfinie insérée dans le fichier. Dans ce cas, le calcul de l’empreinte HS2 (étape S12) comprend l’insertion préalable de la donnée prédéfinie dans le fichier FL1, à la place et en remplacement de l’empreinte HS1 lorsque celle-ci est insérée dans le fichier FL1.According to one embodiment, the calculation of the HS1 fingerprint (step S2) comprises the prior insertion of a predefined data item into the FL1 file, possibly at the location of the HS1 fingerprint in the file. In this case, the calculation of the HS1 fingerprint takes into account the bits of the predefined data item inserted into the file. In this case, the calculation of the HS2 fingerprint (step S12) comprises the prior insertion of the predefined data item into the FL1 file, in place of and replacing the HS1 fingerprint when the latter is inserted into the FL1 file.

Selon un mode de réalisation, l’empreinte HS1 est introduite dans le fichier FL1 en plusieurs emplacements, l’empreinte étant calculée en excluant les bits de l’empreinte dans tous les emplacements où l’empreinte est insérée. A cet effet, une marque servant de repère peut être insérée en plusieurs emplacements dans le fichier FL1, l’empreinte HS1 étant calculée en excluant la marque ou non, puis insérée à la place de la marque à ces emplacements. Ainsi, l’empreinte peut être insérée dans une zone utile du fichier FL1, par exemple pour pouvoir être visualisée lorsque le contenu du fichier est affiché, notamment dans le cas où les métadonnées ne sont pas affichées par le logiciel d’affichage du fichier.According to one embodiment, the HS1 fingerprint is introduced into the FL1 file in several locations, the fingerprint being calculated by excluding the bits of the fingerprint in all the locations where the fingerprint is inserted. For this purpose, a mark serving as a reference can be inserted in several locations in the FL1 file, the HS1 fingerprint being calculated by excluding the mark or not, then inserted in place of the mark at these locations. Thus, the fingerprint can be inserted in a useful area of the FL1 file, for example to be able to be viewed when the content of the file is displayed, in particular in the case where the metadata is not displayed by the file display software.

Pour vérifier que l’empreinte HS1 figurant dans le fichier a bien été calculée à partir du fichier FL1, un repère peut être utilisé pour retrouver un premier emplacement d’insertion de l’empreinte dans le fichier, et l’empreinte ainsi retrouvée peut être utilisée pour rechercher toutes les autres occurrences de l’empreinte dans le fichier. L’empreinte HS2 est alors calculée en excluant toutes les occurrences de l’empreinte HS1 dans le fichier FL1, la marque étant le cas échéant, préalablement insérée à la place des occurrences de l’empreinte HS1 trouvées dans le fichier FL1.To verify that the HS1 fingerprint in the file was indeed calculated from the FL1 file, a marker can be used to find a first location where the fingerprint was inserted in the file, and the fingerprint thus found can be used to search for all other occurrences of the fingerprint in the file. The HS2 fingerprint is then calculated by excluding all occurrences of the HS1 fingerprint in the FL1 file, the mark being, if applicable, previously inserted in place of the occurrences of the HS1 fingerprint found in the FL1 file.

Selon un mode de réalisation, les étapes S2, S3 sont exécutées plusieurs fois en cascade pour insérer dans le fichier FL1 plusieurs empreintes. Ainsi, chaque exécution des étapes S2, S3 introduit dans le fichier FL1 une nouvelle empreinte HS1, calculée sur le fichier dans l’état où il se trouve au début de chaque nouvelle exécution des étapes S2, S3, la ou les empreintes insérées précédemment étant prises en compte dans le calcul d’une nouvelle empreinte qui est ensuite insérée dans le fichier FL1.According to one embodiment, steps S2, S3 are executed several times in cascade to insert several fingerprints into the file FL1. Thus, each execution of steps S2, S3 introduces into the file FL1 a new fingerprint HS1, calculated on the file in the state in which it is at the start of each new execution of steps S2, S3, the fingerprint(s) inserted previously being taken into account in the calculation of a new fingerprint which is then inserted into the file FL1.

En permettant ainsi d’insérer dans un fichier, en cascade plusieurs empreintes HS1, le procédé permet donc, en plus de la possibilité d’utiliser des algorithmes de calcul déjà connus comme résistants, de se protéger des attaques de "pré image" sur une empreinte de façon très robuste en combinant plusieurs empreintes dans un même fichier. En effet, une attaque de "pré image" devrait pour aboutir, non seulement produire un fichier qui possède exactement et toutes les mêmes empreintes, et qui de surcroit puisse passer valablement pour le fichier d’origine. Cette attaque est déjà très difficile à réaliser lorsqu’il n’y a qu’une empreinte à contrefaire, et devient pratiquement impossible avec les technologies connues lorsque plusieurs empreintes sont combinées en cascade.By allowing several HS1 fingerprints to be inserted in a file in cascade, the method therefore allows, in addition to the possibility of using calculation algorithms already known to be resistant, to protect against "pre-image" attacks on a fingerprint in a very robust way by combining several fingerprints in the same file. Indeed, a "pre-image" attack should succeed, not only produce a file that has exactly and all the same fingerprints, and which moreover can validly pass for the original file. This attack is already very difficult to carry out when there is only one fingerprint to counterfeit, and becomes practically impossible with known technologies when several fingerprints are combined in cascade.

Selon un mode de réalisation, certaines métadonnées du fichier FL1 comprennent une partie invariable et une partie variable, et seule la partie variable d’une métadonnée n’est pas prise en compte pour le calcul de l’empreinte HS1.According to one embodiment, certain metadata of the FL1 file comprises an invariable part and a variable part, and only the variable part of a metadata is not taken into account for the calculation of the HS1 fingerprint.

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. Ainsi, les modes de réalisation précédemment décrits doivent être considérés à titre d’illustration, et peuvent être modifiés dans le domaine défini par la portée des revendications jointes. En particulier, l’émetteur des requêtes de lecture RQR et d’écriture RQW émises aux étapes S14 et S25 n’est pas nécessairement le terminal T1, mais toute entité habilitée à procéder à des lectures et/ou des écritures dans le bloc de donnée BC1 du registre RG1, et le cas échéant, préalablement identifiée par le serveur SRV.It will be clear to those skilled in the art that the present invention is susceptible to various variant embodiments and various applications. Thus, the embodiments previously described must be considered as illustrations, and may be modified within the scope defined by the scope of the appended claims. In particular, the issuer of the read requests RQR and write requests RQW issued in steps S14 and S25 is not necessarily the terminal T1, but any entity authorized to carry out readings and/or writings in the data block BC1 of the register RG1, and where applicable, previously identified by the server SRV.

Par ailleurs, il est possible de lier le fichier FL1 à plusieurs blocs de données figurant dans le registre RG1 ou dans différents registres accessibles par l’intermédiaire de différents serveurs. A cet effet, plusieurs identifiants de blocs de donnée peuvent être insérés dans la partie du fichier FL1 sur laquelle porte le calcul de l’empreinte HL1.Furthermore, it is possible to link the FL1 file to several data blocks in the RG1 register or in different registers accessible via different servers. For this purpose, several data block identifiers can be inserted in the part of the FL1 file on which the HL1 footprint calculation is based.

En outre, une empreinte cryptographique étant unique, l’empreinte HS1 peut dans de nombreux cas seule suffire au serveur SRV pour identifier le bloc de donnée BC1 à accéder, dès lors que l’empreinte HS1 figure déjà dans le bloc de donnée, par exemple à l’issue de l’étape S5. Il en résulte que l’identifiant BCI1 du bloc de donnée BC1 inséré dans le fichier FL1 peut être configuré pour identifier seulement le serveur SRV et/ou le registre RG1. Il en résulte dans certains cas que l’identifiant BCI1 n’a pas besoin d’être transmis, y compris partiellement, dans ces requêtes aux étapes S14 et S25, mais sert uniquement à déterminer comment adresser les requêtes RQR et RQW au serveur SRV.Furthermore, since a cryptographic fingerprint is unique, the HS1 fingerprint alone may in many cases be sufficient for the SRV server to identify the BC1 data block to be accessed, since the HS1 fingerprint already appears in the data block, for example at the end of step S5. As a result, the BCI1 identifier of the BC1 data block inserted in the FL1 file may be configured to identify only the SRV server and/or the RG1 register. As a result, in certain cases, the BCI1 identifier does not need to be transmitted, including partially, in these requests in steps S14 and S25, but is only used to determine how to address the RQR and RQW requests to the SRV server.

Plus généralement, l’identifiant BCI1 du bloc de donnée BC1 inséré dans le fichier FL1 peut être configuré pour identifier seulement le bloc de donnée BC1 où se trouve l’empreinte HS1, ou bien identifier à la fois le bloc de donnée BC1 et le serveur SRV qui donne accès au bloc de donnée, ou encore identifier seulement le serveur SRV si ce dernier peut localiser le bloc de donnée BC1 uniquement sur la base de l’empreinte HS2 qui lui a été transmise.More generally, the BCI1 identifier of the BC1 data block inserted in the FL1 file can be configured to identify only the BC1 data block where the HS1 fingerprint is located, or to identify both the BC1 data block and the SRV server which provides access to the data block, or to identify only the SRV server if the latter can locate the BC1 data block solely on the basis of the HS2 fingerprint which was transmitted to it.

Par ailleurs, la présente invention ne s’applique pas uniquement à la traçabilité des versions ou propriétaires des fichiers, mais couvre un très grand nombre de situations notamment en gestion électronique de documents (mots clé, informations de classification…), ainsi que dans l'industrie (transfert de responsabilité pour maintenance, changements de pièces dans un assemblage…).Furthermore, the present invention does not only apply to the traceability of versions or owners of files, but covers a very large number of situations, particularly in electronic document management (key words, classification information, etc.), as well as in industry (transfer of responsibility for maintenance, changes of parts in an assembly, etc.).

Claims (14)

Procédé d’association de données variables à un fichier, le procédé comprenant des étapes consistant à :
rechercher, par un processeur (T1), un premier emplacement d’insertion d’une donnée dans un fichier (FL1) ;
insérer, par le processeur, au premier emplacement dans le fichier un identifiant (BCI1) d’un bloc de donnée (BC1) d’un registre (RG1) accessible depuis un serveur distant (SRV), le bloc de données mémorisant une donnée variable relative au fichier ;
calculer, par le processeur, une première empreinte cryptographique (HS1) portant sur une partie du contenu du fichier incluant l’identifiant du bloc de données, à l’aide d’une fonction (HSH) de calcul d’empreinte, la première empreinte dépendant de tous les octets de la partie du contenu du fichier ; et
transmettre la première empreinte par le processeur au serveur distant, la donnée variable étant accessible par une requête transmise au serveur distant, contenant la première empreinte.
A method of associating variable data with a file, the method comprising steps of:
search, by a processor (T1), for a first location for inserting data into a file (FL1);
inserting, by the processor, at the first location in the file an identifier (BCI1) of a data block (BC1) of a register (RG1) accessible from a remote server (SRV), the data block storing variable data relating to the file;
calculating, by the processor, a first cryptographic fingerprint (HS1) relating to a part of the content of the file including the identifier of the data block, using a fingerprint calculation function (HSH), the first fingerprint depending on all the bytes of the part of the content of the file; and
transmit the first imprint by the processor to the remote server, the variable data being accessible by a request transmitted to the remote server, containing the first imprint.
Procédé selon la revendication 1, comprenant des étapes consistant à :
recevoir par serveur distant (SRV) une requête d’accès (RQR, RQW) au bloc de donnée (BC1) contenant la première empreinte (HS1) du fichier ;
déterminer par le serveur distant si un bloc de donnée contenant la première empreinte est accessible ; et
exécuter par le serveur distant la requête d’accès, et fournir par le serveur distant à un émetteur (T1) de la requête d’accès un compte-rendu d’exécution de la requête d’accès.
The method of claim 1, comprising the steps of:
receive via remote server (SRV) an access request (RQR, RQW) to the data block (BC1) containing the first fingerprint (HS1) of the file;
determine by the remote server whether a data block containing the first fingerprint is accessible; and
execute by the remote server the access request, and provide by the remote server to a transmitter (T1) of the access request a report of execution of the access request.
Procédé selon la revendication 2, dans lequel :
la requête d’accès est une requête de lecture (RQR), l’exécution de la requête d’accès par le serveur distant (SRV) comprenant des étapes consistant à lire les données relatives au fichier identifié par la première empreinte (HS1) contenues dans le bloc de donnée (BC1) et transmettre les données lues à l’émetteur de la requête d’accès, et/ou
la requête d’accès est une requête de écriture (RQW) contenant des données à écrire dans le bloc de données (BC1), l’exécution de la requête d’accès par le serveur distant (SRV) comprenant des étapes consistant à écrire les données à écrire dans le bloc de données.
The method of claim 2, wherein:
the access request is a read request (RQR), the execution of the access request by the remote server (SRV) comprising steps consisting in reading the data relating to the file identified by the first fingerprint (HS1) contained in the data block (BC1) and transmitting the read data to the sender of the access request, and/or
the access request is a write request (RQW) containing data to be written in the data block (BC1), the execution of the access request by the remote server (SRV) comprising steps of writing the data to be written in the data block.
Procédé selon la revendication 3, dans lequel la requête d’accès (RQR, RQW) est transmise en association avec une donnée d’authentification de l’émetteur (T1) de la requête d’accès, l’exécution de la requête d’accès par le serveur distant comprenant des étapes d’authentification par le serveur de l’émetteur de la requête d’accès sur la base de la donnée d’authentification, la requête d’accès étant exécutée par le serveur distant (SRV) uniquement si le serveur a authentifié l’émetteur de la requête d’accès.Method according to claim 3, in which the access request (RQR, RQW) is transmitted in association with authentication data of the sender (T1) of the access request, the execution of the access request by the remote server comprising steps of authentication by the server of the sender of the access request on the basis of the authentication data, the access request being executed by the remote server (SRV) only if the server has authenticated the sender of the access request. Procédé selon l’une des revendications 1 à 4, comprenant des étapes consistant à :
rechercher, par le processeur (T1), un second emplacement d’insertion non destructif d’une donnée dans le fichier (FL1), le second emplacement se trouvant en dehors de la partie du contenu du fichier sur laquelle porte le calcul de la première empreinte ; et
insérer, par le processeur (T1), la première empreinte au second emplacement dans le fichier.
Method according to one of claims 1 to 4, comprising steps consisting of:
searching, by the processor (T1), for a second non-destructive insertion location of data in the file (FL1), the second location being outside the part of the content of the file on which the calculation of the first fingerprint is carried out; and
insert, by the processor (T1), the first fingerprint at the second location in the file.
Procédé selon la revendication 5, dans lequel la partie du contenu du fichier (FL1) sur laquelle est appliqué la fonction de calcul d’empreinte (HSH) est définie :
par son étendue dans le fichier (FL1), ou
par l’étendue d’une partie du fichier (FL1) exclue du calcul d’empreinte.
Method according to claim 5, in which the part of the content of the file (FL1) on which the fingerprint calculation function (HSH) is applied is defined:
by its extent in the file (FL1), or
by the extent of a part of the file (FL1) excluded from the footprint calculation.
Procédé selon la revendication 5 ou 6, comprenant des étapes consistant à :
calculer, par le processeur (T1), une seconde empreinte (HS2) portant sur la partie du contenu du fichier sur laquelle porte le calcul de la première empreinte (HS1), à l’aide de la fonction (HSH) de calcul d’empreinte ; et
comparer, par le processeur (T1), la première empreinte avec la seconde empreinte, et si les première et seconde empreintes ne sont pas identiques, alors le lien établi par l’identifiant le fichier est jugé non intègre par le processeur (T1).
A method according to claim 5 or 6, comprising steps of:
calculating, by the processor (T1), a second fingerprint (HS2) relating to the part of the content of the file on which the calculation of the first fingerprint (HS1) relates, using the fingerprint calculation function (HSH); and
compare, by the processor (T1), the first fingerprint with the second fingerprint, and if the first and second fingerprints are not identical, then the link established by the file identifier is judged to be unintegrated by the processor (T1).
Procédé selon l’une des revendications 5 à 7, comprenant des étapes consistant à insérer l’empreinte (HS1) en au moins un autre emplacement dans le fichier (FL1), la vérification de l’empreinte comprenant l’application de la fonction (HSH) de calcul d’empreinte au contenu du fichier en excluant toutes les occurrences de l’empreinte dans le fichier.Method according to one of claims 5 to 7, comprising steps consisting in inserting the fingerprint (HS1) in at least one other location in the file (FL1), the verification of the fingerprint comprising the application of the fingerprint calculation function (HSH) to the content of the file by excluding all occurrences of the fingerprint in the file. Procédé selon l’une des revendications 1 à 8, comprenant des étapes consistant à :
calculer, par le processeur (T1), une signature numérique de la première empreinte (HS1) à l’aide d’une clé privée d'une paire de clés privée et publique ; et
insérer, par le processeur, la signature dans le fichier (FL1) en dehors de la partie du contenu du fichier sur laquelle porte le calcul de la première empreinte, l’accès au bloc de donnée (BC1) étant conditionné par la fourniture au serveur distant (SRV) d’une signature numérique valide vérifiée à l’aide de la clé publique de la paire de clés privée et publique.
Method according to one of claims 1 to 8, comprising steps consisting of:
calculating, by the processor (T1), a digital signature of the first fingerprint (HS1) using a private key of a private and public key pair; and
inserting, by the processor, the signature in the file (FL1) outside the part of the file content on which the calculation of the first fingerprint is carried out, access to the data block (BC1) being conditioned by the provision to the remote server (SRV) of a valid digital signature verified using the public key of the private and public key pair.
Procédé selon la revendication 9, dans lequel la clé publique est insérée dans une métadonnée dans la partie du fichier (FL1) sur laquelle porte le calcul de la première empreinte (HS1).Method according to claim 9, in which the public key is inserted into a metadata in the part of the file (FL1) on which the calculation of the first fingerprint (HS1) relates. Procédé selon l’une des revendications 1 à 10, dans lequel le bloc de donnée (BC1) référencé par l’identifiant (BCI1) est une chaine de blocs cryptographiques.Method according to one of claims 1 to 10, in which the data block (BC1) referenced by the identifier (BCI1) is a chain of cryptographic blocks. Procédé selon l’une des revendications 1 à 11, dans lequel le calcul de chaque empreinte (HS1, HS2) comprend une étape d’insertion d’une donnée prédéfinie dans la partie du contenu du fichier (FL1) avant d’appliquer la fonction (HSH) de calcul d’empreinte à la partie de fichier.Method according to one of claims 1 to 11, in which the calculation of each fingerprint (HS1, HS2) comprises a step of inserting a predefined data item into the part of the file content (FL1) before applying the fingerprint calculation function (HSH) to the part of the file. Produit programme d’ordinateur comprenant des portions de fichier de programme enregistrées sur un support lisible par un ordinateur, configurées pour mettre en œuvre les étapes du procédé selon l’une des revendications 1 à 12.Computer program product comprising program file portions recorded on a computer-readable medium, configured to implement the steps of the method according to one of claims 1 to 12. Produit programme d'ordinateur selon la revendication 13, dans lequel au moins une partie du programme est inclus dans le fichier (FL1).Computer program product according to claim 13, wherein at least part of the program is included in the file (FL1).
FR2301413A 2023-02-15 2023-02-15 process of establishing an inviolable link between a digital file and variable data Active FR3145816B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR2301413A FR3145816B1 (en) 2023-02-15 2023-02-15 process of establishing an inviolable link between a digital file and variable data
PCT/IB2024/051075 WO2024170997A1 (en) 2023-02-15 2024-02-06 Method for establishing an inviolable link between a digital file and a variable datum

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR2301413 2023-02-15
FR2301413A FR3145816B1 (en) 2023-02-15 2023-02-15 process of establishing an inviolable link between a digital file and variable data

Publications (2)

Publication Number Publication Date
FR3145816A1 true FR3145816A1 (en) 2024-08-16
FR3145816B1 FR3145816B1 (en) 2025-03-14

Family

ID=86764903

Family Applications (1)

Application Number Title Priority Date Filing Date
FR2301413A Active FR3145816B1 (en) 2023-02-15 2023-02-15 process of establishing an inviolable link between a digital file and variable data

Country Status (2)

Country Link
FR (1) FR3145816B1 (en)
WO (1) WO2024170997A1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150365426A1 (en) * 2013-01-22 2015-12-17 Université D'aix-Marseille Method for checking the integrity of a digital data block
US20190044727A1 (en) * 2016-02-08 2019-02-07 Guy Scott A system and method for document information authenticity verification

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150365426A1 (en) * 2013-01-22 2015-12-17 Université D'aix-Marseille Method for checking the integrity of a digital data block
US10218714B2 (en) 2013-01-22 2019-02-26 Universite D'aix-Marseille Method for checking the integrity of a digital data block
US20190044727A1 (en) * 2016-02-08 2019-02-07 Guy Scott A system and method for document information authenticity verification

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
BHOWMIK DEEPAYAN ET AL: "The Jpeg-Blockchain Framework For Glam Services", 2018 IEEE INTERNATIONAL CONFERENCE ON MULTIMEDIA & EXPO WORKSHOPS (ICMEW), 1 January 2018 (2018-01-01), pages 1 - 6, XP093081267, ISBN: 978-1-5386-4195-8, Retrieved from the Internet <URL:https://ieeexplore.ieee.org/stampPDF/getPDF.jsp?tp=&arnumber=8551519&ref=aHR0cHM6Ly9pZWVleHBsb3JlLmllZWUub3JnL2Fic3RyYWN0L2RvY3VtZW50Lzg1NTE1MTk=> DOI: 10.1109/ICMEW.2018.8551519 *

Also Published As

Publication number Publication date
FR3145816B1 (en) 2025-03-14
WO2024170997A1 (en) 2024-08-22

Similar Documents

Publication Publication Date Title
US11186111B1 (en) Digitally encoded seal for document verification
US20220029785A1 (en) Traceability of edits to digital documents via distributed ledgers
RU2409861C2 (en) Method for certifying and subsequent authentication of original paper or digital documents for proof
US6401206B1 (en) Method and apparatus for binding electronic impressions made by digital identities to documents
EP2949070B1 (en) Verification process of the integrity of numerical data bloc
US11671263B2 (en) Cryptographically securing data files in a collaborative environment
US11139960B2 (en) File redaction database system
WO2018158102A1 (en) Integrated method and device for storing and sharing data
WO2019233951A1 (en) A software application and a computer server for authenticating the identity of a digital content creator and the integrity of the creator&#39;s published content
JP2020511018A (en) System and method for generating digital marks
US20190294762A1 (en) Computer implemented method and a system for tracking of certified documents lifecycle and computer programs thereof
US20200204376A1 (en) File provenance database system
CN109447809B (en) Video active identification method combined with block chain
Kumar et al. The blockchain technology for secure and smart applications across industry verticals
EP3742699A1 (en) Method for strong authentication of an individual
WO2024170997A1 (en) Method for establishing an inviolable link between a digital file and a variable datum
EP0595720B1 (en) Process and system for recording information on a data carrier enabling to later certify the originality of this information
FR3095874A1 (en) PROCESS FOR GENERATING AN ARCHIVING CODE TO CREATE A FOOTPRINT OF MULTIMEDIA CONTENT
BE1031409B1 (en) Method, implemented by digital processing means, of exploiting identification information of one or more individuals
NL2028773B1 (en) Account management method of decentralized electronic contract deposit platform
US20240161092A1 (en) Cryptographic digital media authentication and protection protocol
EP3311341A1 (en) Methods of affiliation, emancipation and verification between a tutor and a tutee
WO2024038092A1 (en) Method for generating an nft cryptographic token from a unique physical token for the purpose of guaranteeing rights associated with a real or virtual object
WO2005124503A1 (en) Universal document authentication process
EP4099614A1 (en) Methods of data enrolment to verify the authenticity of security data or verification of the authenticity of security data

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20240816

PLFP Fee payment

Year of fee payment: 3