FR3134908A1 - Method and system for managing access rights in a fair transaction of digital data - Google Patents
Method and system for managing access rights in a fair transaction of digital data Download PDFInfo
- Publication number
- FR3134908A1 FR3134908A1 FR2203709A FR2203709A FR3134908A1 FR 3134908 A1 FR3134908 A1 FR 3134908A1 FR 2203709 A FR2203709 A FR 2203709A FR 2203709 A FR2203709 A FR 2203709A FR 3134908 A1 FR3134908 A1 FR 3134908A1
- Authority
- FR
- France
- Prior art keywords
- fbi
- blocks
- block
- file
- trusted server
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 32
- 238000012795 verification Methods 0.000 claims abstract description 19
- 230000005540 biological transmission Effects 0.000 claims abstract description 12
- 238000004364 calculation method Methods 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 3
- 230000015654 memory Effects 0.000 description 20
- 230000008520 organization Effects 0.000 description 16
- 230000007613 environmental effect Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 8
- 238000007726 management method Methods 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 3
- 238000011144 upstream manufacturing Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000001105 regulatory effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
- H04L9/0897—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/088—Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
Abstract
L’invention porte sur un procédé d’accès à un ensemble de blocs chiffrés comprenant des blocs de données et des blocs correspondant à des nœuds d’un premier arbre de Merkle, chaque bloc étant chiffré par une valeur d’identification propre à un dispositif propriétaire (P) et spécifique du fichier et du bloc, ID-P-FBi. Un dispositif receveur (R) met en œuvre les étapes suivantes : pour chaque bloc, la réception, depuis un serveur de confiance (T), d’une entrée d’accès propre au dispositif receveur et spécifique du fichier et du bloc, ACL-R-FBi, la détermination de ID-P-FBi à partir de ACL-R-FBi et le déchiffrement du bloc au moyen de ID-P-FBi ;la construction d’un deuxième arbre de Merkle (MT2) à partir des blocs déchiffrés et la vérification d’une concordance des arbres de Merkle ;en absence de concordance, la transmission, au serveur de confiance (T), d’une contestation comprenant un ensemble de blocs non déchiffrés et, pour chacun desdits blocs, d’une valeur d’identification propre au dispositif receveur et spécifique du fichier et du bloc, V-R-FBi. Figure pour l’abrégé : Figure 2A method of accessing a set of encrypted blocks comprising data blocks and blocks corresponding to nodes of a first Merkle tree, each block being encrypted by a device-specific identification value is disclosed. owner (P) and specific of the file and the block, ID-P-FBi. A recipient device (R) implements the following steps: for each block, reception, from a trusted server (T), of an access entry specific to the recipient device and specific to the file and the block, ACL- R-FBi, determining ID-P-FBi from ACL-R-FBi and decrypting the block using ID-P-FBi; constructing a second Merkle tree (MT2) from the blocks decrypted and the verification of a concordance of the Merkle trees; in the absence of concordance, the transmission, to the trusted server (T), of a challenge comprising a set of undecrypted blocks and, for each of said blocks, of a identification value specific to the receiving device and specific to the file and the block, V-R-FBi. Figure for abstract: Figure 2
Description
Le domaine de l’invention est celui des systèmes informatiques distribués pour la transmission et le partage de données numériques. L’invention se rapporte plus particulièrement à la régulation de l’accès à un fichier informatique.The field of the invention is that of distributed computer systems for the transmission and sharing of digital data. The invention relates more particularly to the regulation of access to a computer file.
Un protocole de gestion des droits d’accès est par exemple nécessaire lorsqu’un utilisateur d’un serveur de calcul souhaite réaliser des calculs à partir d’un fichier chiffré par son propriétaire. Selon un tel protocole, le propriétaire peut en amont chiffrer le fichier et le téléverser sur un serveur de stockage. L’utilisateur peut ensuite télécharger le fichier chiffré depuis le serveur de stockage et demander un droit d’accès au propriétaire.An access rights management protocol is, for example, necessary when a user of a calculation server wishes to perform calculations from a file encrypted by its owner. According to such a protocol, the owner can encrypt the file upstream and upload it to a storage server. The user can then download the encrypted file from the storage server and request access rights from the owner.
Par ailleurs, l’obtention du fichier peut être soumis à une contrepartie, par exemple financière. Il convient alors d’assurer que la transaction entre l’utilisateur et le propriétaire est équitable en ce sens que ni l’utilisateur ni le propriétaire n’utilise l’échange du fichier à son avantage en récupérant les données de l’autre mais sans envoyer ce qu’il aurait dû. Pour prendre un parallèle avec le monde réel, on ne souhaite pas qu’un vendeur livre un bien sans que l’acheteur donne de l’argent en échange ou au contraire que l’acheteur donne l’argent mais que le vendeur ne donne pas le bien en échange. Le protocole “fairswap”, proposé par Stefan Dziembowski, Lisa Eckey, and Sebastian Faust. 2018. FairSwap: How To Fairly Exchange Digital Goods. In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security (CCS '18). Association for Computing Machinery, New York, NY, USA, 967–984, répond à ce besoin pour l’échange de données informatiques. Ce protocole introduit un tiers de confiance faisant office de juge des conflits entre le vendeur et l’acheteur.Furthermore, obtaining the file may be subject to compensation, for example financial. It is then necessary to ensure that the transaction between the user and the owner is fair in the sense that neither the user nor the owner uses the exchange of the file to their advantage by recovering the other's data but without send what he should have. To draw a parallel with the real world, we do not want a seller to deliver a good without the buyer giving money in exchange or, on the contrary, for the buyer to give the money but the seller does not give the good in exchange. The “fairswap” protocol, proposed by Stefan Dziembowski, Lisa Eckey, and Sebastian Faust. 2018. FairSwap: How To Fairly Exchange Digital Goods. In Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security (CCS '18). Association for Computing Machinery, New York, NY, USA, 967–984, addresses this need for computer data exchange. This protocol introduces a trusted third party acting as judge of conflicts between the seller and the buyer.
Le chiffrement du fichier en amont par le propriétaire avant d’être téléversé sur le serveur de stockage complique l’intégration du protocole de gestion des droits d’accès à un protocole de transaction équitable de typefairswapcar dans ce dernier chaque transaction doit reposer sur une clé unique.The encryption of the file upstream by the owner before being uploaded to the storage server complicates the integration of the access rights management protocol into a fair transaction protocol of the fairswap type because in the latter each transaction must be based on a unique key.
Par ailleurs, en cas de conflit, le tiers de confiance prend connaissance de certains blocs du fichier. Or en laissant ce fichier sur un serveur de stockage, le tiers de confiance pourrait y télécharger l’ensemble des blocs et les déchiffrer (au moins pour ceux des blocs impliqués dans le protocole fairswap), ce qui risque de compromettre la sécurité.Furthermore, in the event of a conflict, the trusted third party becomes aware of certain blocks of the file. However, by leaving this file on a storage server, the trusted third party could download all the blocks and decrypt them (at least for those blocks involved in the fairswap protocol), which risks compromising security.
L’invention a pour objectif de proposer un protocole de gestion des droits d’accès à un fichier chiffré par son propriétaire intégré à un protocole de transaction équitable de typefairswap, qui permette de surmonter les difficultés précédemment évoquées sans pour autant s’accompagner d’un temps de calcul trop important.The invention aims to propose a protocol for managing access rights to a file encrypted by its owner integrated into a fair transaction protocol of the fairswap type, which makes it possible to overcome the difficulties previously mentioned without being accompanied by 'too much calculation time.
Pour ce faire, l’invention propose un procédé d’accès à un fichier par un dispositif receveur, dans lequel un encodage du fichier est stocké sur un serveur de stockage, l’encodage du fichier comprenant une pluralité de blocs chiffrés constituée d’un premier ensemble de blocs correspondant à un découpage du fichier en blocs et d’un deuxième ensemble de blocs correspondant à des valeurs des nœuds d’un premier arbre de Merkle construit à partir des blocs du premier ensemble, chaque bloc de la pluralité de blocs étant chiffré par une valeur d’identification propre à un dispositif propriétaire et spécifique du fichier et du bloc, ID-P-FBi. Ce procédé comprend la mise en œuvre des étapes suivantes par le dispositif receveur :To do this, the invention proposes a method of accessing a file by a receiving device, in which an encoding of the file is stored on a storage server, the encoding of the file comprising a plurality of encrypted blocks consisting of a first set of blocks corresponding to a division of the file into blocks and a second set of blocks corresponding to values of the nodes of a first Merkle tree constructed from the blocks of the first set, each block of the plurality of blocks being encrypted by an identification value specific to a proprietary device and specific to the file and the block, ID-P-FBi. This method includes the implementation of the following steps by the receiving device:
- pour chaque bloc de la pluralité de blocs, la réception, depuis un serveur de confiance, d’une entrée d’accès propre au dispositif receveur et spécifique du fichier et du bloc, ACL-R-FBi, la détermination de ID-P-FBi à partir de ACL-R-FBi et le déchiffrement du bloc au moyen de ID-P-FBi ;for each block of the plurality of blocks, receiving, from a trusted server, an access entry specific to the receiving device and specific to the file and the block, ACL-R-FBi, determining ID-P- FBi from ACL-R-FBi and decrypting the block using ID-P-FBi;
- la construction d’un deuxième arbre de Merkle à partir des blocs déchiffrés du premier ensemble de blocs de la pluralité de blocs et la vérification d’une concordance du deuxième arbre de Merkle avec les blocs déchiffrés du deuxième ensemble de blocs de la pluralité de blocs ;constructing a second Merkle tree from the decrypted blocks of the first set of blocks of the plurality of blocks and verifying a match of the second Merkle tree with the decrypted blocks of the second set of blocks of the plurality of blocks ;
-
en absence de concordance :
- la création d’une contestation comprenant un ensemble de blocs non déchiffrés de la pluralité de blocs, ledit ensemble étant constitué au moins d’un bloc contesté et d’un bloc d’une vérification de Merkle du bloc contesté ; et
- la transmission, au serveur de confiance, de la contestation et, pour chacun des blocs de la contestation, d’une valeur d’identification propre au dispositif receveur et spécifique du fichier et du bloc, V-R-FBi.
- creating a challenge comprising a set of undecrypted blocks of the plurality of blocks, said set consisting of at least one contested block and a block of a Merkle check of the contested block; And
- the transmission, to the trusted server, of the challenge and, for each of the blocks of the challenge, of an identification value specific to the receiving device and specific to the file and the block, VR-FBi.
Certains aspects préférés mais non limitatifs de ce procédé sont les suivants :Some preferred but non-limiting aspects of this process are as follows:
-
il comprend la mise en œuvre des étapes suivantes par le serveur de confiance :
- la vérification d’une validité des V-R-FBi des blocs de la contestation ;
- en cas de validité non vérifiée, le rejet de la contestation ;
- en cas de validité vérifiée :
- pour chacun des blocs de la contestation, la détermination de ID-P-FBi à partir de V-R-FBi et de ACL-R-FBi et le déchiffrement du bloc au moyen de ID-P-FBi ;
- une vérification de Merkle de chacun des blocs contestés déchiffrés.
- verifying the validity of the VR-FBi of the protest blocks;
- in the event of unverified validity, the rejection of the challenge;
- in case of verified validity:
- for each of the blocks in the dispute, determining ID-P-FBi from VR-FBi and ACL-R-FBi and decrypting the block using ID-P-FBi;
- a Merkle verification of each of the decrypted contested blocks.
-
il comprend les étapes préalables consistant pour le dispositif receveur à réaliser :
- le téléchargement de l’encodage du fichier depuis le serveur de stockage ;
- pour chaque bloc de la pluralité de blocs de l’encodage du fichier, la détermination et la transmission au serveur de confiance de V-R-FBi.
- downloading the file encoding from the storage server;
- for each block of the plurality of blocks of the file encoding, determining and transmitting to the VR-FBi trusted server.
-
il comprend en outre par le dispositif propriétaire, pour chaque bloc de la pluralité de blocs, les étapes préalables de :
- réception, depuis le serveur de confiance, de V-R-FBi ;
- la génération de ACL-R-FBi, à partir de ID-P-FBi et de V-R-FBi ;
- la transmission, au serveur de confiance, de ACL-R-FBi.
- reception, from the trusted server, of VR-FBi;
- the generation of ACL-R-FBi, from ID-P-FBi and VR-FBi;
- the transmission, to the trusted server, of ACL-R-FBi.
- il comprend en outre la réalisation par le dispositif receveur, pour chaque bloc de la pluralité de blocs, d’un chiffrement de V-R-FBi au moyen d’une clé publique du dispositif propriétaire.it further comprises the realization by the receiving device, for each block of the plurality of blocks, of an encryption of V-R-FBi by means of a public key of the proprietary device.
- il comprend en outre la réalisation par le dispositif propriétaire, pour chaque bloc de la pluralité de blocs, d’un déchiffrement de V-R-FBi au moyen d’une clé privée du propriétaire.it further comprises the carrying out by the owner device, for each block of the plurality of blocks, of a decryption of V-R-FBi by means of a private key of the owner.
- il comprend en outre la réalisation par le dispositif receveur, pour chaque bloc de la pluralité de blocs, d’un calcul et d’une transmission au serveur de confiance d’une valeur de hachage de V-R-FBi.it further comprises the realization by the receiving device, for each block of the plurality of blocks, of a calculation and transmission to the trusted server of a hash value of V-R-FBi.
- Il comprend en outre la réalisation par le dispositif propriétaire, pour chaque bloc de la pluralité de blocs avant de générer ACL-R-FBi, d’une réception depuis le serveur de confiance de la valeur de hachage de V-R-FBi calculée par le dispositif receveur, d’un calcul d’une valeur de hachage à partir de V-R-FBi reçu du serveur de confiance et d’une comparaison de la valeur de hachage reçue et de la valeur de hachage calculée.It further comprises the realization by the proprietary device, for each block of the plurality of blocks before generating ACL-R-FBi, of a reception from the trusted server of the hash value of V-R-FBi calculated by the device recipient, a calculation of a hash value from V-R-FBi received from the trusted server and a comparison of the received hash value and the calculated hash value.
- la vérification, par le serveur de confiance, d’une validité des V-R-FBi des blocs de contestation comprend, pour chacun des blocs de contestation, le calcul d’une valeur de hachage à partir de V-R-FBi transmis par le dispositif receveur au serveur de confiance avec la contestation et la comparaison de la valeur calculée avec la valeur de hachage de V-R-FBi préalablement transmise au serveur de confiance par le dispositif receveur.the verification, by the trusted server, of the validity of the V-R-FBi of the challenge blocks comprises, for each of the challenge blocks, the calculation of a hash value from V-R-FBi transmitted by the receiving device to the trusted server with the challenge and comparison of the calculated value with the hash value of V-R-FBi previously transmitted to the trusted server by the receiving device.
-
il comprend les étapes préalables consistant pour le dispositif receveur à réaliser :
- le téléchargement de l’encodage du fichier depuis le serveur de stockage ;
- pour chaque bloc de la pluralité de blocs de l’encodage du fichier :
- la détermination de V-R-FBi ;
- le calcul et la transmission au serveur de confiance d’une première valeur de Diffie-Hellman basée sur V-R-FBi.
- downloading the file encoding from the storage server;
- for each block of the plurality of blocks of the file encoding:
- the determination of VR-FBi;
- calculating and transmitting to the trusted server a first Diffie-Hellman value based on VR-FBi.
-
Il comprend en outre par le dispositif propriétaire, les étapes préalables de :
- calcul et transmission au serveur de confiance d’une deuxième valeur de Diffie-Hellman ; et
- pour chaque bloc de la pluralité de blocs :
- réception, depuis le serveur de confiance, de la première valeur de Diffie-Hellman basée sur V-R-FBi;
- détermination d’une clé partagée de Diffie-Hellman ;
- génération de ACL-R-FBi, à partir de ID-P-FBi et de la clé partagée de Diffie-Hellman ;
- transmission, au serveur de confiance, de ACL-R-FBi .
- calculation and transmission to the trusted server of a second Diffie-Hellman value; And
- for each block of the plurality of blocks:
- receiving, from the trusted server, the first Diffie-Hellman value based on VR-FBi;
- determination of a shared Diffie-Hellman key;
- generation of ACL-R-FBi, from ID-P-FBi and the Diffie-Hellman shared key;
- transmission, to the trusted server, of ACL-R-FBi.
- la vérification, par le serveur de confiance, d’une validité des V-R-FBi des blocs de contestation comprend, pour chacun des blocs de contestation, le calcul d’une troisième valeur de Diffie-Hellman basée sur V-R-FBi transmis par le dispositif receveur au serveur de confiance avec la contestation et la comparaison de la troisième valeur de Diffie-Hellman avec la première valeur de Diffie-Hellman préalablement transmise au serveur de confiance par le dispositif receveur.the verification, by the trusted server, of the validity of the V-R-FBi of the challenge blocks comprises, for each of the challenge blocks, the calculation of a third Diffie-Hellman value based on V-R-FBi transmitted by the device recipient to the trusted server with the challenge and comparison of the third Diffie-Hellman value with the first Diffie-Hellman value previously transmitted to the trusted server by the receiving device.
-
il comprend les étapes consistant pour le dispositif propriétaire à réaliser :
- la génération du premier ensemble de blocs par découpage du fichier ;
- la construction du premier arbre de Merkle à partir du premier ensemble de blocs ;
- la génération du deuxième ensemble de blocs à partir des nœuds du premier arbre de Merkle ;
- la génération de l’encodage du fichier comprenant, pour chacun des blocs du premier et du deuxième ensemble, le chiffrement du bloc par ID-P-FBi ;
- la transmission de l’encodage du fichier au serveur de stockage.
- generating the first set of blocks by splitting the file;
- constructing the first Merkle tree from the first set of blocks;
- generating the second set of blocks from the nodes of the first Merkle tree;
- generating the encoding of the file comprising, for each of the blocks of the first and second set, the encryption of the block by ID-P-FBi;
- transmitting the file encoding to the storage server.
D'autres aspects, buts, avantages et caractéristiques de l’invention apparaîtront mieux à la lecture de la description détaillée suivante de formes de réalisation préférées de celle-ci, donnée à titre d'exemple non limitatif, et faite en référence aux dessins annexés sur lesquels :Other aspects, aims, advantages and characteristics of the invention will appear better on reading the following detailed description of preferred embodiments thereof, given by way of non-limiting example, and made with reference to the appended drawings. on which ones :
- la
- la
- la
- la
- la
- la
EXPOSÉ DÉTAILLÉ DE MODES DE RÉALISATION PARTICULIERSDETAILED DESCRIPTION OF PARTICULAR EMBODIMENTS
L’invention porte sur la réalisation de transactions équitables entre des entités d’un réseau intégrant une gestion de droits d’accès à des fichiers chiffrés. On considère que les entités ont préalablement partagé ensemble un protocole de gestion des droits d’accès.The invention relates to the realization of fair transactions between entities of a network integrating management of access rights to encrypted files. The entities are considered to have previously shared an access rights management protocol together.
La
Dans le présent exemple, les organisations Org1, Org2, Org3 sont des organisations de gestion de données géophysiques et/ou environnementales. On entend par « données géophysiques » des données relatives aux caractéristiques physiques de la Terre, typiquement issues de mesures. Il peut s’agir de données géologiques et/ou sismiques et/ou gravimétriques et/ou atmosphériques et/ou spatiales, etc. On entend par « données environnementales » des données ayant trait à l'environnement biologique et humain d’une zone, par exemple des données biologiques et/ou sonores et/ou chimiques et/ou hydrologiques et/ou énergétiques et/ou relatives au traitement de déchets. Ces données sont typiquement des données sensibles mises sélectivement à disposition des organisations.In this example, the organizations Org1, Org2, Org3 are geophysical and/or environmental data management organizations. By “geophysical data” we mean data relating to the physical characteristics of the Earth, typically resulting from measurements. This may be geological and/or seismic and/or gravimetric and/or atmospheric and/or spatial data, etc. “Environmental data” means data relating to the biological and human environment of an area, for example biological and/or sound and/or chemical and/or hydrological and/or energy and/or processing data. of waste. This data is typically sensitive data made selectively available to organizations.
Les organisations Org1, Org2, Org3 sont par exemples distantes les unes des autres, et peuvent appartenir à des territoires différents. Chacune des organisations Org1, Org2, Org3 est par exemple une collectivité territoriale et/ou une société privée intervenant pour la collecte ou le traitement de données et/ou une association intervenant pour la collecte ou le traitement de données et/ou une organisation propriétaire de serveurs de stockage et/ou de calcul.The organizations Org1, Org2, Org3 are, for example, distant from each other, and can belong to different territories. Each of the organizations Org1, Org2, Org3 is for example a local authority and/or a private company involved in the collection or processing of data and/or an association involved in the collection or processing of data and/or an organization that owns storage and/or calculation servers.
On considère ici que chacune des organisations Org1, Org2, Org3 est indépendante. Les organisations souhaitent par exemple mettre en commun sélectivement une partie de leur matériel et de leurs données, afin que chacune d’entre elles puisse s’appuyer sur au moins une partie des ressources et des données des autres organisations.We consider here that each of the organizations Org1, Org2, Org3 is independent. For example, organizations wish to selectively pool some of their hardware and data, so that each of them can rely on at least some of the resources and data of the other organizations.
En outre, ici, l’organisation Org1 possède un serveur de calcul I3 et l’organisation Org2 possède un serveur de calcul I3’. Par « serveur de calcul » on entend un serveur possédant une puissance de calcul très importante, typiquement plus importante que chacun des dispositifs I1, I1’, I2, I2’, I2’’, …. On souhaite pouvoir mettre sélectivement l’un et/ou l’autre de ces serveurs I3 et I3’ à disposition des autres organisations du réseau afin d’exécuter des traitements sur des données géophysiques et/ou environnementales.Additionally, here, organization Org1 has a compute server I3 and organization Org2 has a compute server I3'. By “computation server” we mean a server having very significant computing power, typically greater than each of the devices I1, I1’, I2, I2’, I2’’, etc. We would like to be able to selectively make one and/or the other of these servers I3 and I3' available to other organizations in the network in order to carry out processing on geophysical and/or environmental data.
L’invention n’est cependant pas limitée au cas de données géophysiques et/ou environnementales. Elle peut avantageusement être mise en œuvre quel que soit le type de contenu des fichiers ou le type d’organisations Org1, Org2, Org3, … ou également pour deux organisations. Une application à des données géophysiques et/ou environnementales est avantageuse car les traitements calculatoires desdites données peuvent nécessiter une puissance de calcul élevée. Il convient que les collectivités territoriales puissent confier temporairement certains traitements à des serveurs de calcul, sans pour autant remettre en cause l’intégrité et la confidentialité des données contenues dans les fichiers.The invention is, however, not limited to the case of geophysical and/or environmental data. It can advantageously be implemented regardless of the type of file content or the type of organizations Org1, Org2, Org3, etc. or also for two organizations. An application to geophysical and/or environmental data is advantageous because the computational processing of said data may require high computing power. Local authorities should be able to temporarily entrust certain processing to calculation servers, without calling into question the integrity and confidentiality of the data contained in the files.
De manière avantageuse, tous les nœuds du système 1 (c’est-à-dire ici notamment les dispositifs I1, I1’, I2, I2’, I2’’, …) peuvent accéder à chacun des fichiers chiffrés f1, f2, … sans contrôle, par exemple en passant par un système de stockage distribué, par exemple conforme au protocole IPFS, gérant les mémoires M, M’, M’’. Les fichiers chiffrés f1, f2, … sont alors disponibles. L’accès aux informations contenues dans le fichier est régulé par la présence des clés de chiffrement, mais l’accès au fichier lui-même n’est de préférence pas régulé.Advantageously, all the nodes of system 1 (that is to say here in particular the devices I1, I1', I2, I2', I2'', etc.) can access each of the encrypted files f1, f2, etc. without control, for example through a distributed storage system, for example conforming to the IPFS protocol, managing memories M, M', M''. The encrypted files f1, f2, etc. are then available. Access to the information contained in the file is regulated by the presence of encryption keys, but access to the file itself is preferably not regulated.
Dans une réalisation possible, des métadonnées sont associées à chacun des fichiers, par exemple le nom du fichier, son type, sa taille, la valeur racine (i.e. le hash-sommet) d’un arbre de Merkle construit pour le fichier (voir infra). Ces métadonnées sont transmises par le système de stockage en même temps que la liste des fichiers disponibles et permettent à un nœud de sélectionner le fichier qu'il souhaite télécharger.In one possible embodiment, metadata is associated with each of the files, for example the name of the file, its type, its size, the root value (i.e. the vertex hash) of a Merkle tree constructed for the file (see below). ). This metadata is transmitted by the storage system along with the list of available files and allows a node to select the file it wishes to download.
Des clés privées appartenant aux différents dispositifs sont, quant à elles, stockées de façon très sécurisée. Il s’agit par exemple de valeurs numériques propres à chaque dispositif. On suppose qu’aucun des dispositifs ne partage sa clé privée, ni sur le réseau N, ni avec l’un quelconque des autres dispositifs.Private keys belonging to the different devices are stored very securely. These are, for example, numerical values specific to each device. It is assumed that none of the devices share their private key, neither on network N, nor with any of the other devices.
Ici, le système 1 comprend en outre :Here, system 1 further includes:
• pour l’organisation Org1, un serveur propriétaire I1 et un serveur utilisateur I2. Le serveur propriétaire I1 est configuré pour créer des fichiers chiffrés et pour calculer des entrées d’accès propres à lui-même et/ou au serveur utilisateur I2 et/ou à d’autres dispositifs présents sur le réseau N pour ces fichiers ; l’organisation Org1 comprend en outre, dans le présent exemple, un capteur Sa prévu pour collecter des données géophysiques et/ou environnementales. Le capteur Sa peut ici échanger des données avec le serveur I1.• for the organization Org1, an owner server I1 and a user server I2. The owner server I1 is configured to create encrypted files and to calculate access entries specific to itself and/or to the user server I2 and/or to other devices present on the network N for these files; the organization Org1 further includes, in this example, a sensor Sa intended to collect geophysical and/or environmental data. The sensor Sa can here exchange data with the server I1.
• pour l’organisation Org2, un serveur propriétaire I1’ et un serveur utilisateur I2’. Le serveur propriétaire I1’ est configuré pour créer des fichiers chiffrés et pour calculer des entrées d’accès propres à lui-même et/ou au serveur utilisateur I2’ et/ou à d’autres dispositifs présents sur le réseau N pour ces fichiers ; l’organisation Org2 comprend en outre, dans le présent exemple, deux capteurs Sb et Sc prévu pour collecter des données géophysiques et/ou environnementales. Les deux capteurs Sb et Sc peuvent ici échanger des données avec le serveur I1’.• for the organization Org2, an owner server I1’ and a user server I2’. The owner server I1' is configured to create encrypted files and to calculate access entries specific to itself and/or to the user server I2' and/or to other devices present on the network N for these files; the Org2 organization also includes, in this example, two sensors Sb and Sc intended to collect geophysical and/or environmental data. The two sensors Sb and Sc can here exchange data with the server I1’.
• pour l’organisation Org3, un serveur utilisateur I2’’. L’organisation Org3 ne possède pas ici de puissance de calcul importante adaptée pour effectuer des traitements lourds sur des données géophysiques et/ou environnementales.• for the Org3 organization, an I2” user server. The Org3 organization does not have significant computing power here suitable for carrying out heavy processing on geophysical and/or environmental data.
Le système 1 comprend en outre une mémoire M de stockage. Ici, la mémoire M appartient à l’organisation Org1. En alternative, la mémoire M pourrait être intégrée à l’un quelconque des dispositifs de l’une des organisations Org1, Org2, Org3, …, ou distante de chacun de ces dispositifs.System 1 further includes a storage memory M. Here, memory M belongs to the organization Org1. Alternatively, the memory M could be integrated into any of the devices of one of the organizations Org1, Org2, Org3, etc., or remote from each of these devices.
Par ailleurs, l’organisation Org2 possède ici une mémoire M’ de stockage, et l’organisation Org3 possède ici une mémoire M’’ de stockage.Furthermore, the organization Org2 has here a storage memory M', and the organization Org3 has here a storage memory M''.
De préférence, lorsque plusieurs mémoires (ici M, M’, M’’) sont présentes, un espace de nommage commun est utilisé. Les mémoires M, M’, M’’ appartiennent à un système de stockage distribué, par exemple réalisé à l’aide d’un réseau de recouvrement.Preferably, when several memories (here M, M’, M’’) are present, a common name space is used. The memories M, M’, M’’ belong to a distributed storage system, for example produced using an overlay network.
De manière préférée, chaque dispositif I1, I1’, I2, I2’, … sollicite la mémoire qui est disponible dans son serveur local ; ainsi, dans l’exemple illustré sur la
De manière préférée, les enregistrements sur une mémoire ne sont pas modifiables ultérieurement. Cette dernière propriété est par exemple assurée comme service par la solution de stockage distribué utilisée.Preferably, the recordings on a memory cannot be modified subsequently. This last property is for example provided as a service by the distributed storage solution used.
Chaque fichier chiffré est enregistré soit sur l’une quelconque des mémoires M, M’, M’’, …, soit sur une mémoire distante. Dans le présent exemple, le fichier f1 est stocké sur la mémoire M de l’organisation Org1 et le fichier f2 est stocké sur la mémoire M’ de l’organisation Org2. D’autres fichiers, de préférence chiffrés ou éventuellement non chiffrés, peuvent être enregistrés en mémoire.Each encrypted file is recorded either on any of the memories M, M’, M’’, etc., or on a remote memory. In this example, file f1 is stored on memory M of organization Org1 and file f2 is stored on memory M' of organization Org2. Other files, preferably encrypted or possibly unencrypted, can be saved in memory.
Chacun des dispositifs I1, I1’, I2, I2’, I2’’, I3, I3’ comprend des moyens de traitement comme par exemple une unité de traitement, non représentée sur la
Revenant à l’exemple précédent, les organisations Org1, Org2, Org3 souhaitent pouvoir solliciter les serveurs de calcul I3, I3’ afin de disposer de leur puissance de calcul pour effectuer des traitements sur les données géophysiques et/ou environnementales auxquelles l’un quelconque des dispositifs I1, I1’, I2, I2’, I2’’. Pour ce faire, on souhaite attribuer un accès (typiquement uniquement en lecture) à l’un des fichiers chiffrés f1 et/ou f2 pour l’un des serveurs de calcul I3 et/ou I3’, de manière sélective et préférentiellement temporaire.Returning to the previous example, the organizations Org1, Org2, Org3 wish to be able to request the calculation servers I3, I3' in order to have their computing power to carry out processing on the geophysical and/or environmental data to which any one devices I1, I1', I2, I2', I2''. To do this, we wish to assign access (typically only for reading) to one of the encrypted files f1 and/or f2 for one of the calculation servers I3 and/or I3', in a selective and preferably temporary manner.
En référence à la
En référence à la
La valeur d’identification propre au dispositif propriétaire P et spécifique du fichier F et du bloc Bi, ID-P-FBi, dépend de la clé privée Up du dispositif propriétaire. Cette valeur d’identification est construite de telle sorte qu’un tiers ne peut pas obtenir cette valeur en connaissant simplement une identité du bloc Bi, sans connaître la clé privée Up. La valeur d’identification dépend ici également de l’identité du fichier F et de l’identité du bloc Bi. Autrement dit, les valeurs d’identification du dispositif propriétaire diffèrent pour chaque fichier, et pour chaque bloc au sein d’un même fichier.The identification value specific to the owner device P and specific to the file F and the block Bi, ID-P-FBi, depends on the private key Up of the owner device. This identification value is constructed in such a way that a third party cannot obtain this value by simply knowing an identity of the block Bi, without knowing the private key Up. The identification value here also depends on the identity of the file F and the identity of the block Bi. In other words, the identification values of the owner device differ for each file, and for each block within the same file.
De préférence, les différentes valeurs d’identification semblent aléatoires du point de vue d’un tiers qui ne connaîtrait pas la clé privée utilisée, mais ces valeurs sont déterministes pour l’utilisateur ayant connaissance de la clé privée utilisée. Ces valeurs peuvent correspondre aux résultats d’une fonction d’identification ID telle que ID-P-FBi = ID(Up, F, Bi). Dans un exemple de réalisation, la valeur ID-P-FBi est obtenue comme suit : ID-P-FBi = ID(Up, F, Bi) = Up+ sha256(concatenation(Up, F, Bi)), où Up est la clé privée du dispositif propriétaire, F est le nom du fichier, Bi est le i-ème bloc du vecteur Y, « concatenation » correspond à la fonction concaténation et « sha256 » correspond à une fonction de hachage cryptographique connue opérant sur une taille de mots de 32 bits. On comprend qu’il est possible d’employer une autre fonction de hachage ici.Preferably, the different identification values appear random from the point of view of a third party who does not know the private key used, but these values are deterministic for the user having knowledge of the private key used. These values can correspond to the results of an ID identification function such as ID-P-FBi = ID(Up, F, Bi). In an exemplary embodiment, the value ID-P-FBi is obtained as follows: ID-P-FBi = ID(Up, F, Bi) = Up+ sha256(concatenation(Up, F, Bi)), where Up is the private key of the proprietary device, F is the name of the file, Bi is the i-th block of vector Y, “concatenation” corresponds to the concatenation function and “sha256” corresponds to a known cryptographic hash function operating on a word size of 32 bits. We understand that it is possible to use another hash function here.
Toujours en référence à la
Puis, pour chaque bloc de la pluralité de blocs chiffrés ZB1, …, ZBn, ZH1, …, ZHm de l’encodage du fichier, le dispositif receveur R vient déterminer une valeur d’identification du dispositif receveur associée au fichier et au bloc chiffré (notée V-R-FBi pour le bloc n°i).Then, for each block of the plurality of encrypted blocks ZB1, ..., ZBn, ZH1, ..., ZHm of the encoding of the file, the receiving device R determines an identification value of the receiving device associated with the file and the encrypted block (noted V-R-FBi for block n°i).
Dans un premier mode de réalisation, la valeur V-R-FBi est calculée au moyen de la fonction d’identification ID présentée ci-dessus. Ainsi, V-R-FBi = ID(Ur, F, Bi) = Ur+ sha256(concatenation(Ur, F, Bi)) où Ur est la clé privée du dispositif receveur, F est le nom du fichier, Bi est le i-ème bloc chiffré de l’encodage Z. Cette valeur est ensuite transmise (étape n°4) au tiers de confiance T, par exemple après chiffrement au moyen d’une clé publique du dispositif propriétaire. Le dispositif receveur R peut par ailleurs calculer, pour chaque bloc chiffré de l’encodage Z, une valeur de hachage de V-R-FBi et transmettre cette valeur de hachage au serveur de confiance T.In a first embodiment, the V-R-FBi value is calculated using the ID identification function presented above. Thus, V-R-FBi = ID(Ur, F, Bi) = Ur+ sha256(concatenation(Ur, F, Bi)) where Ur is the private key of the receiving device, F is the name of the file, Bi is the i-th encrypted block of encoding Z. This value is then transmitted (step no. 4) to the trusted third party T, for example after encryption using a public key of the proprietary device. The receiving device R can also calculate, for each encrypted block of encoding Z, a hash value of V-R-FBi and transmit this hash value to the trusted server T.
Un deuxième mode de réalisation permet d’éviter le chiffrement à clé publique pour transmettre les valeurs V-R-FBi et de devoir poster au serveur de confiance l’ensemble des valeurs de hachages de ces valeurs V-R-FBi. Dans ce deuxième mode de réalisation, la valeur V-R-FBi est exploitée pour déterminer une première valeur de Diffie-Hellman, i.e. un nombre transmis par l’un des agents d’un protocole de Diffie-Hellman à l’autre des agents afin que ces agents puissent élaborer une clé partagée de Diffie-Hellman. Toute variante du protocole de Diffie-Hellman peut ici être utilisée, comme par exemple celle basée sur les courbes elliptiques (de l'anglais « Elliptic curve Diffie–Hellman », abrégé ECDH). Dans ce deuxième mode de réalisation, le dispositif receveur procède au tirage aléatoire de deux nombres g et p, détermine la première valeur de Diffie-Hellman selon gV -R- FBi [p] et transmet au tiers de confiance T cette la première valeur de Diffie-Hellman gV -R- FBi[p] ainsi que les nombres g et p.A second embodiment makes it possible to avoid public key encryption to transmit the V-R-FBi values and to have to post to the trusted server all of the hash values of these V-R-FBi values. In this second embodiment, the V-R-FBi value is used to determine a first Diffie-Hellman value, i.e. a number transmitted by one of the agents of a Diffie-Hellman protocol to the other of the agents so that these agents can develop a shared Diffie-Hellman key. Any variation of the Diffie-Hellman protocol can be used here, such as for example that based on elliptic curves (from the English “Elliptic curve Diffie–Hellman”, abbreviated ECDH). In this second embodiment, the receiving device randomly draws two numbers g and p, determines the first Diffie-Hellman value according to gV -R- FBI [p] and transmits to the trusted third party T this first Diffie-Hellman value gV -R- FBI[p] as well as the numbers g and p.
Dans une première variante, la valeur V-R-FBi est calculée au moyen de la fonction d’identification ID présentée ci-dessus. Ainsi, V-R-FBi= ID(Ur, F, Bi) et la première valeur de Diffie-Hellman associée au i-ème bloc chiffré s’écrit gID(Ur, F, Bi)[p]. Dans une seconde variante, le dispositif receveur R procède, pour chacun des blocs chiffrés de l’encodage Z, au tirage aléatoire d’une valeur xi. La première valeur de Diffie-Hellman associée au i-ème bloc chiffrée s’écrit alors g(xi)mod p.In a first variant, the VR-FBi value is calculated using the identification function ID presented above. Thus, VR-FBi= ID(Ur, F, Bi) and the first Diffie-Hellman value associated with the i-th encrypted block is written g ID(Ur, F, Bi) [p]. In a second variant, the receiving device R proceeds, for each of the encrypted blocks of encoding Z, to randomly draw a value xi. The first Diffie-Hellman value associated with the i-th encrypted block is then written g (xi) mod p.
Lors d’une étape optionnelle, le dispositif receveur R peut par ailleurs transmettre au serveur de confiance T la valeur du nœud-racine de l'arbre de Merkle du fichier attendu (dont il a par exemple connaissance au moyen des métadonnées) et/ou la valeur du nœud-racine d’un arbre de Merkle construit sur l’ensemble des blocs chiffrés ZB1, …, Zbn et ZH1, …, ZHm.During an optional step, the recipient device R can also transmit to the trusted server T the value of the root node of the Merkle tree of the expected file (of which it is aware, for example, by means of the metadata) and/or the value of the root node of a Merkle tree constructed on the set of encrypted blocks ZB1, …, Zbn and ZH1, …, ZHm.
Lors d’une étape n°5, le dispositif propriétaire P vient récupérer depuis le serveur de confiance T l’ensemble des informations postées par le dispositif receveur R sur le serveur de confiance T.During step no. 5, the owner device P retrieves from the trust server T all of the information posted by the recipient device R on the trust server T.
Lorsque l’étape optionnelle mentionnée ci-dessus est mise en œuvre, le dispositif propriétaire P vient vérifier que la ou les valeurs des nœud-racines transmis par le dispositif receveur R au serveur de confiance sont correctes. Dans la négative, l’échange est arrêté.When the optional step mentioned above is implemented, the owner device P verifies that the value(s) of the root node transmitted by the recipient device R to the trusted server are correct. If not, the exchange is stopped.
Dans le cadre du premier mode de réalisation, le dispositif propriétaire P vient récupérer du serveur de confiance T les valeurs V-R-FBi (éventuellement chiffrées au moyen de la clé publique du dispositif propriétaire) et le cas échéant les valeurs de hachage associées. Le dispositif propriétaire P procède si besoin au déchiffrement des V-R-FBi au moyen de sa clé privée Up. Le cas échéant, le dispositif propriétaire peut, pour chaque bloc de la pluralité de blocs, calculer une valeur de hachage de V-R-FBi (éventuellement après déchiffrage) et comparer la valeur calculée à la valeur de hachage correspondante reçue du serveur de confiance.In the context of the first embodiment, the proprietary device P retrieves from the trusted server T the V-R-FBi values (possibly encrypted using the public key of the proprietary device) and, where appropriate, the associated hash values. The proprietary device P, if necessary, decrypts the V-R-FBi using its private key Up. If necessary, the owner device can, for each block of the plurality of blocks, calculate a hash value of V-R-FBi (possibly after decryption) and compare the calculated value to the corresponding hash value received from the trusted server.
Puis, pour chaque bloc de la pluralité de blocs, le dispositif propriétaire P vient générer une entrée d’accès propre au dispositif receveur et spécifique du fichier et du bloc, ACL-R-FBi, à partir de ID-P-FBi et de V-R-FBi. Cette entrée d’accès ACL-R-FBi est ensuite transmise au serveur de confiance T (étape n°6 sur la
Dans le cadre du deuxième mode de réalisation, le dispositif propriétaire P vient récupérer du serveur de confiance les nombres g et p, et pour chaque bloc de la pluralité de blocs, la première valeur de Diffie-Hellman correspondante gV -R- FBi[p]. Le dispositif propriétaire P génère une valeur aléatoire T et détermine une deuxième valeur de Diffie-Hellman gT[p]. Le dispositif propriétaire P vient par ailleurs déterminer la clé partagée de Diffie-Hellman selon (gV -R- FBi[p])T[p] = gV -R- FBi *T[p], générer une entrée d’accès propre au dispositif receveur et spécifique du fichier et du bloc, ACL-R-FBi, à partir de ID-P-FBi et de la clé partagée de Diffie-Hellman. Cette entrée d’accès ACL-R-FBi est ensuite transmise au serveur de confiance T avec la deuxième valeur de Diffie-Hellman gT[p]. Dans un exemple de réalisation, l’entrée d’accès correspond à la différence entre la valeur d’identification propre au dispositif propriétaire et spécifique du fichier et du bloc et la clé partagée de Diffie-Hellman : ACL-R-FBi = ID-P-FBi - gV -R- FBi *T[p].In the context of the second embodiment, the proprietary device P retrieves from the trusted server the numbers g and p, and for each block of the plurality of blocks, the first corresponding Diffie-Hellman value g V -R- FBi [ p]. The proprietary device P generates a random value T and determines a second Diffie-Hellman value g T [p]. The proprietary device P also determines the Diffie-Hellman shared key according to (g V -R- FBi [p]) T [p] = g V -R- FBi *T [p], generate an access entry specific to the receiving device and specific to the file and the block, ACL-R-FBi, from ID-P-FBi and the Diffie-Hellman shared key. This ACL-R-FBi access entry is then transmitted to the trusted server T with the second Diffie-Hellman value g T [p]. In an exemplary embodiment, the access entry corresponds to the difference between the identification value specific to the proprietary device and specific to the file and the block and the shared Diffie-Hellman key: ACL-R-FBi = ID- P-FBi - g V -R- FBi *T [p].
Ensuite, au cours d’une étape n°7, le dispositif receveur R reçoit, depuis le serveur de confiance T, pour chaque bloc de la pluralité de blocs, l’entrée d’accès propre au dispositif receveur et spécifique du fichier et du bloc, ACL-R-FBi. Le dispositif receveur R calcule alors, pour chaque bloc de la pluralité de blocs, la valeur d’identification propre au dispositif propriétaire et spécifique du fichier et du bloc ID-P-FBi à partir de ACL-R-FBi.Then, during a step no. 7, the recipient device R receives, from the trust server T, for each block of the plurality of blocks, the access entry specific to the recipient device and specific to the file and the block, ACL-R-FBi. The receiving device R then calculates, for each block of the plurality of blocks, the identification value specific to the proprietary device and specific to the file and the ID-P-FBi block from ACL-R-FBi.
Dans le premier mode de réalisation, ce calcul peut ainsi consister en ID-P-FBi = ACL-R-FBi + V-R-FBi. Dans le second mode de réalisation, le dispositif receveur récupère également la deuxième valeur de Diffie-Hellman gT[p], calcule la clé partagée de Diffie-Hellman selon (gT[p]) V-R- FBi[p])= gT * V-R- FBi[p] et la valeur ID-P-FBi selon par exemple ID-P-FBi = ACL-R-FBi + gT * V-R- FBi[p].In the first embodiment, this calculation can thus consist of ID-P-FBi = ACL-R-FBi + V-R-FBi. In the second embodiment, the receiving device also recovers the second Diffie-Hellman value gT[p], calculates the Diffie-Hellman shared key according to (gT[p]) VR- FBI[p])= gT * VR- FBI[p] and the value ID-P-FBi according to for example ID-P-FBi = ACL-R-FBi + gT * VR- FBI[p].
Une fois la valeur ID-P-FBi déterminée pour chacun des blocs, le dispositif receveur procède au moyen de cette valeur (étape n°8 désignée par DEC sur la
Puis, le dispositif receveur construit un deuxième arbre de Merkle MT2 à partir des blocs déchiffrés B1, …, Bn du premier ensemble de blocs de la pluralité de blocs et vérifie la concordance du deuxième arbre de Merkle MT2 avec les blocs déchiffrés H1, …, Hm du deuxième ensemble de blocs de la pluralité de blocs. En particulier, la vérification de cette concordance peut consister à vérifier que le nœud-racine H’m du deuxième arbre de Merkle MT2 concorde avec le bloc déchiffré Hm du deuxième ensemble de blocs de la pluralité de blocs correspondant au nœud-racine du premier arbre de Merkle MT1.Then, the receiving device constructs a second Merkle tree MT2 from the decrypted blocks B1, …, Bn of the first set of blocks of the plurality of blocks and verifies the concordance of the second Merkle tree MT2 with the decrypted blocks H1, …, Hm of the second set of blocks of the plurality of blocks. In particular, checking this concordance may consist of verifying that the root node H'm of the second Merkle tree MT2 matches the decrypted block Hm of the second set of blocks of the plurality of blocks corresponding to the root node of the first tree by Merkle MT1.
En cas de concordance, les blocs déchiffrés correspondent bien au fichier attendu. Le fichier peut alors être reconstruit en réunissant les blocs déchiffrés B1, …, Bn du premier ensemble de blocs de la pluralité de blocs.If there is a match, the decrypted blocks correspond to the expected file. The file can then be reconstructed by bringing together the decrypted blocks B1, ..., Bn of the first set of blocks of the plurality of blocks.
En l’absence de concordance, le dispositif receveur R procède à la création d’une contestation comprenant un ensemble de blocs non déchiffrés de la pluralité de blocs (des blocs du vecteur Z avant son déchiffrement DEC), ledit ensemble étant constitué au moins d’un bloc contesté et d’un bloc d’une vérification de Merkle du bloc contesté. A titre d’exemple et en référence à la
Cette contestation est ensuite transmise (étape n°9 désignée par CONST sur la
Le serveur de confiance exploite les nœuds de la preuve de Merkle et les blocs de la contestation pour recalculer la valeur du nœud racine de l’arbre de Merkle construit sur l’ensemble des blocs chiffrés de l’encodage Z. Le serveur de confiance compare alors cette valeur recalculée à la valeur qu’il connaît. Le serveur de confiance T procède ensuite (étape n°10 désignée par JUG) au traitement de la contestation. Ce traitement comprend tout d’abord la vérification d’une validité des V-R-FBi des blocs de la contestation.The trust server uses the Merkle proof nodes and the challenge blocks to recalculate the value of the root node of the Merkle tree built on all the encrypted blocks of the Z encoding. The trust server compares then this value recalculated to the value he knows. The trusted server T then proceeds (step no. 10 designated by JUG) to process the dispute. This processing first includes checking the validity of the V-R-FBi of the protest blocks.
Dans le cadre du premier mode de réalisation, cette vérification peut comprendre, pour chacun des blocs de contestation, le calcul d’une valeur de hachage à partir de V-R-FBi transmis par le dispositif receveur au serveur de confiance avec la contestation et la comparaison de la valeur calculée avec la valeur de hachage de V-R-FBi préalablement transmise (à l’étape n°4) au serveur de confiance par le dispositif receveur.In the context of the first embodiment, this verification may include, for each of the challenge blocks, the calculation of a hash value from V-R-FBi transmitted by the receiving device to the trusted server with the challenge and the comparison of the value calculated with the hash value of V-R-FBi previously transmitted (in step no. 4) to the trusted server by the receiving device.
Dans le cadre du deuxième mode de réalisation, cette vérification peut comprendre, pour chacun des blocs de la contestation, le calcul d’une troisième valeur de Diffie-Hellman basée sur V-R-FBi transmis par le dispositif receveur R au serveur de confiance T avec la contestation et la comparaison de la troisième valeur de Diffie-Hellman avec la première valeur de Diffie-Hellman préalablement transmise (à l’étape n°4) au serveur de confiance T par le dispositif receveur R. La troisième valeur de Diffie-Hellman s’écrit par exemple gV -R- FBi[p].In the context of the second embodiment, this verification may include, for each of the blocks of the dispute, the calculation of a third Diffie-Hellman value based on VR-FBi transmitted by the receiving device R to the trusted server T with contesting and comparing the third Diffie-Hellman value with the first Diffie-Hellman value previously transmitted (in step no. 4) to the trusted server T by the receiving device R. The third Diffie-Hellman value is written for example g V -R- FBi [p].
En cas de validité non vérifiée, c’est que le dispositif receveur a menti sur une valeur V-R-FBi transmise avec la contestation (ou avait transmis une mauvaise valeur lors de l’étape n°4). Le serveur de confiance procède alors au rejet de la contestation.In the event of unverified validity, it is because the receiving device lied about a V-R-FBi value transmitted with the challenge (or had transmitted a wrong value during step no. 4). The trusted server then rejects the challenge.
En cas de validité vérifiée, le serveur de confiance procède comme illustré par la
Dans le premier mode de réalisation, cette détermination peut ainsi consister en ID-P-FBi = ACL-R-FBi + V-R-FBi. Dans le second mode de réalisation, le serveur de confiance T calcule la clé partagée de Diffie-Hellman selon (gT[p]) V-R- FBi[p])= gT * V-R- FBi[p] et la valeur ID-P-FBi selon par exemple ID-P-FBi = ACL-R-FBi + gT * V-R- FBi[p].In the first embodiment, this determination can thus consist of ID-P-FBi = ACL-R-FBi + V-R-FBi. In the second embodiment, the trust server T calculates the Diffie-Hellman shared key according to (gT[p]) VR- FBI[p])= gT * VR- FBI[p] and the value ID-P-FBi according to for example ID-P-FBi = ACL-R-FBi + gT * VR- FBI[p].
Une fois déterminées les valeurs ID-P-FBi des blocs de la contestation, le serveur de confiance déchiffre les blocs de la contestation puis procède à une vérification de Merkle de chacun des blocs contestés déchiffrés. Comme illustré sur la
Plus particulièrement, si un bloc contesté correspond à un nœud-feuille du premier arbre de Merkle, la vérification de Merkle de ce bloc peut comprendre le calcul d’une valeur de hachage d’un bloc de la vérification de Merkle déchiffré (en l’occurrence un bloc du premier ensemble) et la comparaison de la valeur calculée avec le bloc contesté déchiffré. Par ailleurs, si un bloc contesté correspond à un nœud du premier arbre de Merkle qui n’est pas un nœud-feuille, la vérification de Merkle de ce bloc peut comprendre le calcul d’une valeur de hachage à partir de blocs de la vérification de Merkle déchiffrés (en l’occurrence deux blocs du deuxième ensemble, enfants du bloc contesté) et la comparaison de la valeur de hachage calculée avec le bloc contesté déchiffré.More particularly, if a contested block corresponds to a leaf node of the first Merkle tree, the Merkle verification of this block may include the calculation of a hash value of a decrypted Merkle verification block (by occurrence a block from the first set) and comparing the calculated value with the decrypted contested block. Furthermore, if a contested block corresponds to a node of the first Merkle tree which is not a leaf node, the Merkle verification of this block may include the calculation of a hash value from blocks of the verification decrypted Merkle blocks (in this case two blocks from the second set, children of the contested block) and the comparison of the calculated hash value with the decrypted contested block.
Si la vérification de Merkle de chacun des blocs contestés est positive, la contestation est acceptée. La contestation est rejetée dans le cas contraire.If the Merkle verification of each of the contested blocks is positive, the challenge is accepted. Otherwise, the challenge is rejected.
On notera que conformément à l’invention, le serveur de confiance n’a connaissance des valeurs ID-P-FBi permettant le déchiffrement qu’en cas de contestation. Par ailleurs, chaque bloc étant chiffré avec une valeur ID-P-FBi différente, en cas de contestation le serveur de confiance ne peut déchiffrer que les blocs qui lui sont transmis avec la contestation. Il ne peut donc pas télécharger le fichier depuis le serveur de stockage et le déchiffrer entièrement.Note that in accordance with the invention, the trusted server is only aware of the ID-P-FBi values allowing decryption in the event of a dispute. Furthermore, each block being encrypted with a different ID-P-FBi value, in the event of a dispute the trusted server can only decrypt the blocks which are transmitted to it with the dispute. So it cannot download the file from the storage server and decrypt it completely.
Dans une mise en œuvre possible de l’invention, les transactions peuvent être chaînées en ce sens qu’une transaction peut être reliée à une autre transaction (qui elle-même peut être reliée à une autre transaction) et ne peut valablement s’opérer que si la ou les autres transactions en amont dans la chaîne ont été validées.In a possible implementation of the invention, transactions can be chained in the sense that a transaction can be linked to another transaction (which itself can be linked to another transaction) and cannot validly take place only if the other transaction(s) upstream in the chain have been validated.
On prend dans ce qui suit l’exemple de deux transactions : une première transaction entre un premier propriétaire P1 d’un fichier F1 et un premier receveur R1 et une deuxième transaction entre un deuxième propriétaire P2 d’un fichier F2 et un deuxième receveur R2. Dans cette mise en œuvre de l’invention, les valeurs ACL de la deuxième transaction dépendent des valeur ACL de la première transaction. Plus précisément, l’entrée d’accès du deuxième dispositif receveur R2 à un bloc Bj du deuxième fichier F2 (notée ACL-R2-F2Bj) ne dépend pas uniquement de la clé de chiffrement du bloc Bj (i.e., la valeur d’identification du deuxième propriétaire P2 pour ce bloc Bj notée ID-P2-F2Bj) et du secret partagé (échangé par chiffrement à clé publique ou par Diffie-Hellman) mais également de la valeur d’une entrée d’accès de la première transaction (en l’occurrence l’entrée d’accès du premier dispositif receveur R1 à un bloc Bi du premier fichier F1, notée ACL-R1-F1Bi). Prenant l’exemple d’un secret partagé par Diffie-Hellman, on a alors ACL-R2-F2Bj = ID-P2-F2Bj – g’V-R 2 -F 2 B j* T’[p’] - ACL-R1-F1Bi où ACL-R1-F1Bi = ID-P1-F1Bi - gV-R 1 -F 1 Bi *T[p]. On notera que les fichiers F1 et F2 peuvent avoir le même nombre de blocs ou pas. Dans le cas général en effet, une fonction peut être exploitée qui prend en entrée un numéro de bloc de la deuxième transaction et qui retourne en sortie un numéro de bloc de la première transaction. La fonction la plus évidente est : bloc n°X de la deuxième transaction -> X modulo le nombre de blocs de la première transaction.In the following we take the example of two transactions: a first transaction between a first owner P1 of a file F1 and a first receiver R1 and a second transaction between a second owner P2 of a file F2 and a second receiver R2 . In this implementation of the invention, the ACL values of the second transaction depend on the ACL values of the first transaction. More precisely, the access input of the second receiving device R2 to a block Bj of the second file F2 (denoted ACL-R2-F2Bj) does not depend solely on the encryption key of the block Bj (ie, the identification value of the second owner P2 for this block Bj denoted ID-P2-F2Bj) and the shared secret (exchanged by public key encryption or by Diffie-Hellman) but also of the value of an access entry of the first transaction (in the occurrence of the access input of the first receiving device R1 to a block Bi of the first file F1, denoted ACL-R1-F1Bi). Taking the example of a secret shared by Diffie-Hellman, we then have ACL-R2-F2Bj = ID-P2-F2Bj – g' VR 2 -F 2 B j* T' [p'] - ACL-R1- F1Bi where ACL-R1-F1Bi = ID-P1-F1Bi - g VR 1 -F 1 Bi *T [p]. Note that files F1 and F2 may or may not have the same number of blocks. In the general case in fact, a function can be used which takes as input a block number of the second transaction and which returns as output a block number of the first transaction. The most obvious function is: block #X of the second transaction -> X modulo the number of blocks of the first transaction.
On a vu que la valeur ACL de la deuxième transaction dépend de la valeur ACL de la première transaction. Le deuxième receveur doit donc récupérer du serveur de confiance la valeur ACL de la première transaction pour calculer la clé de déchiffrement des blocs échangés lors de la deuxième transaction. L’intérêt d’une telle approche est que si une transaction est révoquée, le serveur de confiance peut refuser de nouveaux accès à la valeur d’ACL ce qui invalide automatiquement toute la chaîne qui démarre de cette dernière. Autrement dit, l’échange entre le deuxième propriétaire P2 et le deuxième receveur R2 ne peut se faire que si l’échange entre le premier propriétaire P1 et le premier receveur R1 se passe correctement.We have seen that the ACL value of the second transaction depends on the ACL value of the first transaction. The second recipient must therefore retrieve from the trusted server the ACL value of the first transaction to calculate the decryption key of the blocks exchanged during the second transaction. The advantage of such an approach is that if a transaction is revoked, the trusted server can refuse new access to the ACL value, which automatically invalidates the entire chain that starts from the latter. In other words, the exchange between the second owner P2 and the second receiver R2 can only be done if the exchange between the first owner P1 and the first receiver R1 goes correctly.
Un cas d’utilisation possible est celui d’un calcul de données où le premier receveur R1 est également le deuxième propriétaire P2. Dans ce cas d’utilisation, lors d’une première transaction un utilisateur (premier propriétaire) envoie des données sources à nœud de calcul (premier receveur). Le nœud de calcul effectue un traitement des données source et, lors d’une deuxième transaction, renvoie le résultat (en tant que deuxième propriétaire) à un autre utilisateur (deuxième receveur). Dans cette situation, l’envoi du résultat ne peut être valide que si la réception des données sources a réussi.A possible use case is that of a data calculation where the first receiver R1 is also the second owner P2. In this use case, during a first transaction a user (first owner) sends source data to the calculation node (first receiver). The compute node performs processing of the source data and, in a second transaction, returns the result (as the second owner) to another user (second receiver). In this situation, the sending of the result can only be valid if the reception of the source data was successful.
L’invention n’est pas limitée au procédé tel que précédemment décrit et s’étend également à un dispositif informatique, comprenant une unité de traitement configurée pour mettre en œuvre les étapes du procédé précédemment décrit qui sont mises en œuvre par le dispositif propriétaire, par le dispositif receveur ou par le serveur de confiance. L’invention vise également un produit programme d'ordinateur comprenant des instructions qui, lorsque le programme est exécuté par un ordinateur, conduisent celui-ci à mettre en œuvre les étapes du procédé précédemment décrit qui sont mises en œuvre par le dispositif propriétaire, par le dispositif receveur ou par le serveur de confiance. Et l’invention concerne également un système de partage de données numériques, comprenant un dispositif propriétaire, un dispositif receveur et un serveur de confiance tels que précédemment décrits.The invention is not limited to the method as previously described and also extends to a computing device, comprising a processing unit configured to implement the steps of the method previously described which are implemented by the proprietary device, by the receiving device or by the trusted server. The invention also relates to a computer program product comprising instructions which, when the program is executed by a computer, lead it to implement the steps of the method previously described which are implemented by the proprietary device, by the receiving device or by the trusted server. And the invention also relates to a digital data sharing system, comprising a proprietary device, a receiving device and a trusted server as previously described.
Claims (16)
le procédé comprenant la mise en œuvre des étapes suivantes par le dispositif receveur (R) :
- pour chaque bloc de la pluralité de blocs, la réception, depuis un serveur de confiance (T), d’une entrée d’accès propre au dispositif receveur et spécifique du fichier et du bloc, ACL-R-FBi, la détermination de ID-P-FBi à partir de ACL-R-FBi et le déchiffrement du bloc au moyen de ID-P-FBi ;
- la construction d’un deuxième arbre de Merkle (MT2) à partir des blocs déchiffrés du premier ensemble de blocs de la pluralité de blocs et la vérification d’une concordance du deuxième arbre de Merkle avec les blocs déchiffrés du deuxième ensemble de blocs de la pluralité de blocs ;
- en absence de concordance :
- la création d’une contestation comprenant un ensemble de blocs non déchiffrés de la pluralité de blocs (ZB3, ZB4, ZH2), ledit ensemble étant constitué au moins d’un bloc contesté et d’un bloc d’une vérification de Merkle du bloc contesté ; et
- la transmission, au serveur de confiance (T), de la contestation et, pour chacun des blocs de la contestation, d’une valeur d’identification propre au dispositif receveur et spécifique du fichier et du bloc, V-R-FBi.
the method comprising the implementation of the following steps by the receiving device (R):
- for each block of the plurality of blocks, reception, from a trusted server (T), of an access entry specific to the receiving device and specific to the file and the block, ACL-R-FBi, determination of ID -P-FBi from ACL-R-FBi and decrypting the block using ID-P-FBi;
- constructing a second Merkle tree (MT2) from the decrypted blocks of the first set of blocks of the plurality of blocks and verifying a match of the second Merkle tree with the decrypted blocks of the second set of blocks of the plurality of blocks;
- in the absence of a match:
- creating a challenge comprising a set of undecrypted blocks of the plurality of blocks (ZB3, ZB4, ZH2), said set consisting of at least one contested block and a block of a Merkle verification of the block disputed; And
- the transmission, to the trusted server (T), of the challenge and, for each of the blocks of the challenge, of an identification value specific to the receiving device and specific to the file and the block, VR-FBi.
- la vérification d’une validité des V-R-FBi des blocs de la contestation ;
- en cas de validité non vérifiée, le rejet de la contestation ;
- en cas de validité vérifiée :
- pour chacun des blocs de la contestation, la détermination de ID-P-FBi à partir de V-R-FBi et de ACL-R-FBi et le déchiffrement du bloc au moyen de ID-P-FBi ;
- une vérification de Merkle de chacun des blocs contestés déchiffrés.
- verifying the validity of the VR-FBi of the protest blocks;
- in the event of unverified validity, the rejection of the challenge;
- in case of verified validity:
- for each of the blocks in the dispute, determining ID-P-FBi from VR-FBi and ACL-R-FBi and decrypting the block using ID-P-FBi;
- a Merkle verification of each of the decrypted contested blocks.
- le téléchargement de l’encodage du fichier depuis le serveur de stockage ;
- pour chaque bloc de la pluralité de blocs de l’encodage du fichier, la détermination et la transmission au serveur de confiance de V-R-FBi.
- downloading the file encoding from the storage server;
- for each block of the plurality of blocks of the file encoding, determining and transmitting to the VR-FBi trusted server.
- réception, depuis le serveur de confiance, de V-R-FBi ;
- la génération de ACL-R-FBi, à partir de ID-P-FBi et de V-R-FBi ;
- la transmission, au serveur de confiance, de ACL-R-FBi.
- reception, from the trusted server, of VR-FBi;
- the generation of ACL-R-FBi, from ID-P-FBi and VR-FBi;
- the transmission, to the trusted server, of ACL-R-FBi.
- le téléchargement de l’encodage du fichier depuis le serveur de stockage ;
- pour chaque bloc de la pluralité de blocs de l’encodage du fichier :
- la détermination de V-R-FBi ;
- le calcul et la transmission au serveur de confiance d’une première valeur de Diffie-Hellman basée sur V-R-FBi.
- downloading the file encoding from the storage server;
- for each block of the plurality of blocks of the file encoding:
- the determination of VR-FBi;
- calculating and transmitting to the trusted server a first Diffie-Hellman value based on VR-FBi.
- calcul et transmission au serveur de confiance d’une deuxième valeur de Diffie-Hellman ; et
- pour chaque bloc de la pluralité de blocs :
- réception, depuis le serveur de confiance, de la première valeur de Diffie-Hellman basée sur V-R-FBi;
- détermination d’une clé partagée de Diffie-Hellman ;
- génération de ACL-R-FBi, à partir de ID-P-FBi et de la clé partagée de Diffie-Hellman ;
- transmission, au serveur de confiance, de ACL-R-FBi .
- calculation and transmission to the trusted server of a second Diffie-Hellman value; And
- for each block of the plurality of blocks:
- receiving, from the trusted server, the first Diffie-Hellman value based on VR-FBi;
- determination of a shared Diffie-Hellman key;
- generation of ACL-R-FBi, from ID-P-FBi and the Diffie-Hellman shared key;
- transmission, to the trusted server, of ACL-R-FBi.
- la génération du premier ensemble de blocs par découpage du fichier ;
- la construction du premier arbre de Merkle à partir du premier ensemble de blocs ;
- la génération du deuxième ensemble de blocs à partir des nœuds du premier arbre de Merkle ;
- la génération de l’encodage du fichier comprenant, pour chacun des blocs du premier et du deuxième ensemble, le chiffrement du bloc par ID-P-FBi ;
- la transmission de l’encodage du fichier au serveur de stockage.
- generating the first set of blocks by splitting the file;
- constructing the first Merkle tree from the first set of blocks;
- generating the second set of blocks from the nodes of the first Merkle tree;
- generating the encoding of the file comprising, for each of the blocks of the first and second set, the encryption of the block by ID-P-FBi;
- transmitting the file encoding to the storage server.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR2203709A FR3134908A1 (en) | 2022-04-21 | 2022-04-21 | Method and system for managing access rights in a fair transaction of digital data |
PCT/FR2023/050568 WO2023203301A1 (en) | 2022-04-21 | 2023-04-20 | Method and system for managing access rights in a fair digital data transaction |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR2203709 | 2022-04-21 | ||
FR2203709A FR3134908A1 (en) | 2022-04-21 | 2022-04-21 | Method and system for managing access rights in a fair transaction of digital data |
Publications (1)
Publication Number | Publication Date |
---|---|
FR3134908A1 true FR3134908A1 (en) | 2023-10-27 |
Family
ID=82019711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR2203709A Pending FR3134908A1 (en) | 2022-04-21 | 2022-04-21 | Method and system for managing access rights in a fair transaction of digital data |
Country Status (2)
Country | Link |
---|---|
FR (1) | FR3134908A1 (en) |
WO (1) | WO2023203301A1 (en) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6947556B1 (en) * | 2000-08-21 | 2005-09-20 | International Business Machines Corporation | Secure data storage and retrieval with key management and user authentication |
-
2022
- 2022-04-21 FR FR2203709A patent/FR3134908A1/en active Pending
-
2023
- 2023-04-20 WO PCT/FR2023/050568 patent/WO2023203301A1/en unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6947556B1 (en) * | 2000-08-21 | 2005-09-20 | International Business Machines Corporation | Secure data storage and retrieval with key management and user authentication |
Non-Patent Citations (2)
Title |
---|
PACHECO ANDRE E A ET AL: "Secure Dynamic Data Storage with Third Party Arbitration in Cloud", 2018 SECOND INTERNATIONAL CONFERENCE ON INTELLIGENT COMPUTING AND CONTROL SYSTEMS (ICICCS), IEEE, 14 June 2018 (2018-06-14), pages 118 - 122, XP033528824, DOI: 10.1109/ICCONS.2018.8663191 * |
STEFAN DZIEMBOWSKILISA ECKEYSEBASTIAN FAUST: "FairSwap: How To Fairly Exchange Digital Goods", PRO-CEEDINGS OF THE 2018 ACM SIGSAC CONFÉRENCE ON COMPUTER AND COMMUNICATIONS SECURITY (CCS '18). ASSOCIATION FOR COMPUTING MACHINERY, NEW YORK, NY, USA, 2018, pages 967 - 984, XP058636290, DOI: 10.1145/3243734.3243857 |
Also Published As
Publication number | Publication date |
---|---|
WO2023203301A1 (en) | 2023-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2323306B1 (en) | Secured data transmission method and encryption and decryption system enabling such a transmission | |
WO2018131004A9 (en) | Methods and systems for executing smart contracts in secure environments | |
WO2009130089A1 (en) | Method of secure broadcasting of digital data to an authorized third party | |
Thompson | The preservation of digital signatures on the blockchain | |
WO2019233951A1 (en) | A software application and a computer server for authenticating the identity of a digital content creator and the integrity of the creator's published content | |
WO2009130088A1 (en) | Terminal for strong authentication of a user | |
US20220337392A1 (en) | Automatic digital media authenticator | |
FR3059802A1 (en) | METHOD FOR GENERATING AN ELECTRONIC SIGNATURE OF A DOCUMENT ASSOCIATED WITH A CONDENSATE | |
FR2951842A1 (en) | IDENTIFICATION BY CONTROLLING USER DATA | |
EP1011223A1 (en) | Method and system for creating and managing at least one cryptographic key | |
CN112732695A (en) | Cloud storage data security deduplication method based on block chain | |
Bhargav et al. | A review on cryptography in cloud computing | |
Manjula et al. | Division of data in cloud environment for secure data storage | |
FR2892876A1 (en) | Data e.g. digital data, deposition method for mobile communication field, involves encrypting data with key using symmetric encrypting method, and encrypting transfer key with public key of third party by asymmetric encrypting method | |
CN111680013A (en) | Data sharing method based on block chain, electronic equipment and device | |
FR2742617A1 (en) | METHODS OF REDUCTION AND PROVISION OF ENCRYPTION KEYS, AND STRUCTURE AND SUPPORT OF DATA FOR THEIR IMPLEMENTATION | |
FR3113800A1 (en) | Data exchange between a client and a remote device, for example a secure module | |
CN108632257B (en) | Method and system for acquiring encrypted health record supporting hierarchical search | |
WO2022200726A1 (en) | Management of access rights to digital files with possible delegation of the rights | |
FR3134908A1 (en) | Method and system for managing access rights in a fair transaction of digital data | |
FR2965431A1 (en) | SYSTEM FOR EXCHANGING DATA BETWEEN AT LEAST ONE TRANSMITTER AND ONE RECEIVER | |
EP4012972A1 (en) | Method for selective disclosure of data via a blockchain | |
Li et al. | Achieving forward unforgeability in keyword-field-free conjunctive search | |
Sivanantham et al. | Reliable Data Storage and Sharing using Block chain Technology and Two Fish Encryption | |
WO2019196042A1 (en) | Hierarchical search-supported method and system for obtaining encrypted health record |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 2 |
|
PLSC | Publication of the preliminary search report |
Effective date: 20231027 |