CH716273A2 - A method of storing computer data on a network, with double distribution over two disjoint sets of network nodes. - Google Patents

A method of storing computer data on a network, with double distribution over two disjoint sets of network nodes. Download PDF

Info

Publication number
CH716273A2
CH716273A2 CH00745/19A CH7452019A CH716273A2 CH 716273 A2 CH716273 A2 CH 716273A2 CH 00745/19 A CH00745/19 A CH 00745/19A CH 7452019 A CH7452019 A CH 7452019A CH 716273 A2 CH716273 A2 CH 716273A2
Authority
CH
Switzerland
Prior art keywords
nodes
mirror
enclave
standard
group
Prior art date
Application number
CH00745/19A
Other languages
French (fr)
Inventor
Attia Jonathan
Louiset Raphaël
Original Assignee
Lapsechain Sa C/O Leax Avocats
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 Lapsechain Sa C/O Leax Avocats filed Critical Lapsechain Sa C/O Leax Avocats
Priority to CH00745/19A priority Critical patent/CH716273A2/en
Publication of CH716273A2 publication Critical patent/CH716273A2/en

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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • 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/3247Cryptographic 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 involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • 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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/065Network architectures or network communication protocols for network security for supporting key management in a packet data network for group communications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/18Network architectures or network communication protocols for network security using different networks or channels, e.g. using out of band channels
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • 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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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/3234Cryptographic 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 involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • 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)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Power Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

L'invention concerne un procédé de stockage de données ( 15 ) sur un réseau ( 1 ), dans lequel un premier conteneur ( 22 ) crypté contenant les données ( 15 ) et une première clé ( 23 ) de déchiffrement (sous forme de fragments) sont distribués parmi un premier ensemble ( 1S ) de nœuds standards, et dans lequel un deuxième conteneur ( 28 ) crypté contenant les mêmes données ( 15 ) cryptées et une deuxième clé ( 29 ) de déchiffrement sont distribués parmi un deuxième ensemble ( 1M ) de nœuds miroirs.The invention relates to a method for storing data (15) on a network (1), in which an encrypted first container (22) containing the data (15) and a first decryption key (23) (in the form of fragments) are distributed among a first set (1S) of standard nodes, and in which a second encrypted container (28) containing the same encrypted data (15) and a second decryption key (29) are distributed among a second set (1M) of mirror nodes.

Description

DOMAINE TECHNIQUETECHNICAL AREA

[0001] L'invention a trait au domaine de l'informatique, et plus précisément au domaine du stockage sécurisé des données informatiques en réseau. The invention relates to the field of computing, and more specifically to the field of secure storage of network computer data.

ART ANTERIEURPRIOR ART

[0002] La sécurisation du stockage en réseau des données informatiques a pour double objectif d'éviter la perte des données (c'est-à-dire leur effacement intempestif) et leur exploitation (ce terme incluant la lecture ainsi que la copie partielle ou totale des données) par des tiers non autorisés. En d'autres termes, la sécurisation vise à garantir la pérennité et la confidentialité des données. The securing of the network storage of computer data has the dual objective of avoiding the loss of data (that is to say their untimely erasure) and their use (this term including reading as well as partial copying or total data) by unauthorized third parties. In other words, security aims to guarantee the sustainability and confidentiality of data.

[0003] Pour minimiser le risque de perte des données (en d'autres termes, pour maximiser la pérennité des données), on procède généralement à des réplications, c'est-à-dire que l'on effectue une distribution des données parmi plusieurs espaces de stockage. Les données sont par conséquent stockées de manière redondante. [0003] To minimize the risk of data loss (in other words, to maximize the durability of the data), replications are generally carried out, that is to say, the data is distributed among several storage spaces. The data is therefore stored redundantly.

[0004] Pour garantir (autant que possible) la confidentialité des données stockées en réseau, on recourt généralement à deux méthodes : La première consiste à restreindre (typiquement via des mots de passe ou des certificats électroniques) l'accès à un serveur sur lequel sont stockées les données, ce qui minimise les risques de lecture ou de copie ; La deuxième consiste à chiffrer les données elles-mêmes au moyen de techniques cryptographiques.To guarantee (as much as possible) the confidentiality of data stored in the network, two methods are generally used: The first consists in restricting (typically via passwords or electronic certificates) access to a server on which the data is stored, which minimizes the risk of reading or copying; The second is to encrypt the data itself using cryptographic techniques.

[0005] La première méthode est efficace à deux conditions principales. [0005] The first method is effective under two main conditions.

[0006] Première condition : le risque de faille dans les restrictions d'accès au serveur doit être nul ou, à tout le moins, minimum. [0006] First condition: the risk of loopholes in the restrictions on access to the server must be zero or, at the very least, minimum.

[0007] L'expérience montre toutefois que certaines attaques permettent de contourner ces restrictions, typiquement en récupérant les identifiants et mots de passe d'utilisateurs et en usurpant leur identité pour accéder à leurs données. However, experience shows that certain attacks make it possible to circumvent these restrictions, typically by recovering the usernames and passwords of users and by usurping their identity to access their data.

[0008] Deuxième condition : l'administrateur du serveur doit lui-même être digne de confiance. [0008] Second condition: the administrator of the server must himself be trustworthy.

[0009] L'expérience montre toutefois que certains fournisseurs de services en ligne (notamment de réseaux sociaux), qui administrent des serveurs sur lesquels sont stockées les données personnelles de nombreux utilisateurs, se permettent d'accéder à ces données et d'en faire une exploitation pour leur propre compte, typiquement en revendant les données à des sociétés commerciales ou à des agences gouvernementales, ou en analysant elles-mêmes les données. However, experience shows that some online service providers (including social networks), which administer servers on which are stored the personal data of many users, allow themselves to access this data and make it operating on their own account, typically by reselling the data to commercial companies or government agencies, or by analyzing the data themselves.

[0010] La deuxième méthode résout les problèmes de la première, puisque les tiers non autorisés ne peuvent faire aucune exploitation des données, sauf à craquer les algorithmes de cryptage, ce qui, jusqu'à présent, s'est révélé infaisable pour les algorithmes les plus couramment utilisés, tels que l'algorithme RSA (Rivest, Shamir, Adleman) ou l'algorithme des courbes elliptiques. The second method solves the problems of the first, since unauthorized third parties can not make any use of the data, except to crack the encryption algorithms, which, until now, has proved infeasible for the algorithms most commonly used, such as the RSA algorithm (Rivest, Shamir, Adleman) or the elliptic curves algorithm.

[0011] Généralement, les données sont chiffrées localement au sein d'un terminal émetteur (typiquement un ordinateur personnel), puis les données chiffrées sont transmises au réseau pour y être stockées tandis qu'une clé cryptographique de déchiffrement des données est stockée localement au sein du terminal émetteur. Generally, the data is encrypted locally within a sending terminal (typically a personal computer), then the encrypted data is transmitted to the network to be stored there while a cryptographic key for decryption of the data is stored locally at the network. within the sending terminal.

[0012] Cette méthode présente cependant un risque : la perte de la clé cryptographique de déchiffrement des données, ce qui rend les données définitivement inexploitables (et ce par quiconque, y compris leur propriétaire), car indéchiffrables. However, this method presents a risk: the loss of the cryptographic key for decryption of the data, which renders the data permanently unusable (and this by anyone, including their owner), because they cannot be deciphered.

[0013] Il est envisageable de déléguer au réseau (typiquement à un serveur mandataire distant) le soin de procéder au chiffrement des données et d'administrer la clé cryptographique de déchiffrement. It is conceivable to delegate to the network (typically to a remote proxy server) the task of encrypting the data and administering the cryptographic decryption key.

[0014] Dans ce cas se pose à nouveau le problème d'un potentiel accès aux données par l'administrateur du serveur mandataire, soit que celui-ci les copie avant leur chiffrement, soit qu'il prenne la liberté de les déchiffrer en exploitant la clé cryptographique générée. Se pose également le problème de la récupération des données après une défaillance majeure du réseau, ayant affecté une grande partie de ses nœuds. In this case, the problem again arises of a potential access to the data by the administrator of the proxy server, either that the latter copies them before their encryption, or that he takes the liberty of decrypting them by using the generated cryptographic key. There is also the problem of data recovery after a major failure of the network, which affected a large part of its nodes.

[0015] L'invention vise à offrir une solution efficace à ces problèmes. The invention aims to offer an effective solution to these problems.

RESUME DE L'INVENTIONSUMMARY OF THE INVENTION

[0016] Il est proposé un procédé de stockage sécurisé de données informatiques au sein d'un réseau pair-à-pair composé d'une pluralité de nœuds formant une base de données distribuée sur laquelle est mémorisée, par réplication sur chaque nœud, une chaîne de blocs, les nœuds étant subdivisés en deux ensembles disjoints, à savoir un premier ensemble de nœuds dits standards, et un deuxième ensemble de nœuds dits miroirs, ce procédé comprenant les opérations consistant à : <tb><SEP>- Emettre, à partir d'un terminal émetteur dans lequel sont stockées les données, une requête de stockage à destination du réseau ; <tb><SEP>- A réception de la requête de stockage par au moins un nœud du réseau, sélectionner parmi l'ensemble de nœuds standards, au moins un nœud, dit nœud d'entrée standard, équipé d'une unité de traitement informatique dans laquelle est implémenté un environnement d'exécution sécurisé par cryptographie, dit enclave ; <tb><SEP>- Instancier l'enclave du nœud d'entrée standard ; <tb><SEP>- Charger les données, à partir du terminal émetteur et via une ligne de communication sécurisée, vers l'enclave du nœud d'entrée standard ; <tb><SEP>- Inscrire dans un bloc de la chaîne de blocs, par un ou plusieurs nœuds du réseau, au moins une transaction contenant une empreinte numérique de la requête de stockage et/ou du chargement ainsi effectué ; <tb><SEP>- Dans l'enclave du nœud d'entrée standard : <tb><SEP><SEP>o Chiffrer les données pour former un premier conteneur crypté, en lui associant une première clé cryptographique de déchiffrement ; <tb><SEP><SEP>o Fragmenter la première clé cryptographique de déchiffrement en un nombre prédéterminé de fragments ; <tb><SEP><SEP>o Désigner, parmi l'ensemble de nœuds standards, un premier groupe de nœuds et distribuer le premier conteneur crypté vers le ou les nœuds standards de ce premier groupe ; <tb><SEP><SEP>o Désigner, parmi l'ensemble de nœuds standards, un deuxième groupe de nœuds en nombre égal aux fragments de la première clé cryptographique de déchiffrement ; <tb><SEP><SEP>o Distribuer chaque fragment de la première clé cryptographique de déchiffrement vers un ou plusieurs nœuds standards du deuxième groupe, chacun recevant un unique fragment ; <tb><SEP>- Hors de l'enclave du nœud d'entrée standard : <tb><SEP><SEP>o Mémoriser le premier conteneur crypté au sein de chaque nœud du premier groupe de nœuds standards ; <tb><SEP><SEP>o Mémoriser les fragments de la première clé cryptographique de déchiffrement au sein des nœuds du deuxième groupe de nœuds standards ; <tb><SEP>- Désigner, parmi l'ensemble de nœuds miroirs, un nœud d'entrée miroir, équipé d'une unité de traitement informatique dans laquelle est implémentée une enclave ; <tb><SEP>- Instancier l'enclave du nœud d'entrée miroir ; <tb><SEP>- Etablir une liaison sécurisée entre l'enclave du nœud d'entrée et l'enclave du nœud d'entrée miroir ; <tb><SEP>- Relayer, via la liaison sécurisée, les données depuis l'enclave du nœud d'entrée vers l'enclave du nœud d'entrée miroir ; <tb><SEP>- Dans l'enclave du nœud d'entrée miroir : <tb><SEP><SEP>o Chiffrer les données pour former un deuxième conteneur crypté, en lui associant une deuxième clé cryptographique de déchiffrement, différente de la première clé cryptographique de déchiffrement ; <tb><SEP><SEP>o Fragmenter la deuxième clé cryptographique de déchiffrement en un nombre prédéterminé de fragments ; <tb><SEP><SEP>o Désigner, parmi l'ensemble de nœuds miroirs, un premier groupe de nœuds et distribuer le deuxième conteneur crypté vers le ou les nœuds miroirs de ce premier groupe ; <tb><SEP><SEP>o Désigner, parmi l'ensemble de nœuds miroirs, un deuxième groupe de nœuds en nombre égal aux fragments de la deuxième clé cryptographique de déchiffrement ; <tb><SEP><SEP>o Distribuer chaque fragment de la deuxième clé cryptographique de déchiffrement vers un ou plusieurs nœuds miroirs du deuxième groupe, chacun recevant un unique fragment ; <tb><SEP>- Hors de l'enclave du nœud d'entrée miroir : <tb><SEP><SEP>o Mémoriser le deuxième conteneur crypté au sein de chaque nœud du premier groupe de nœuds miroirs ; <tb><SEP><SEP>o Mémoriser chaque fragment de la deuxième clé cryptographique de déchiffrement sur chaque nœud du deuxième groupe de nœuds miroirs ; <tb><SEP>- Inscrire dans un bloc de la chaîne de blocs, par un ou plusieurs nœuds du réseau, au moins une transaction contenant une empreinte numérique des mémorisations ainsi effectuées.There is proposed a method of secure storage of computer data within a peer-to-peer network composed of a plurality of nodes forming a distributed database on which is stored, by replication on each node, a chain of blocks, the nodes being subdivided into two disjoint sets, namely a first set of so-called standard nodes, and a second set of so-called mirror nodes, this method comprising the operations consisting in: <tb> <SEP> - Send, from a sending terminal in which the data is stored, a storage request to the network; <tb> <SEP> - On receipt of the storage request by at least one node of the network, select from among the set of standard nodes, at least one node, called a standard input node, equipped with a processing unit IT in which an execution environment secured by cryptography, called an enclave, is implemented; <tb> <SEP> - Instantiate the enclave of the standard input node; <tb> <SEP> - Load the data, from the transmitting terminal and via a secure communication line, to the enclave of the standard input node; <tb> <SEP> - Enter in a block of the chain of blocks, by one or more nodes of the network, at least one transaction containing a digital fingerprint of the storage request and / or of the loading thus carried out; <tb> <SEP> - In the enclave of the standard input node: <tb><SEP> <SEP> o Encrypt the data to form a first encrypted container, by associating it with a first cryptographic decryption key; <tb><SEP> <SEP> o Fragment the first cryptographic decryption key into a predetermined number of fragments; <tb><SEP> <SEP> o Designate, from among the set of standard nodes, a first group of nodes and distribute the first encrypted container to the standard node or nodes of this first group; <tb><SEP> <SEP> o Designate, among the set of standard nodes, a second group of nodes equal in number to the fragments of the first cryptographic decryption key; <tb><SEP> <SEP> o Distribute each fragment of the first cryptographic decryption key to one or more standard nodes of the second group, each receiving a unique fragment; <tb> <SEP> - Outside the Enclave of the Standard Entry Node: <tb><SEP> <SEP> o Store the first encrypted container within each node of the first group of standard nodes; <tb><SEP> <SEP> o Memorize the fragments of the first cryptographic decryption key within the nodes of the second group of standard nodes; <tb> <SEP> - Designate, from among the set of mirror nodes, a mirror entry node, equipped with a computer processing unit in which an enclave is implemented; <tb> <SEP> - Instantiate the enclave of the mirror entry node; <tb> <SEP> - Establish a secure link between the enclave of the input node and the enclave of the mirror input node; <tb> <SEP> - Relay, via the secure link, the data from the enclave of the input node to the enclave of the mirror input node; <tb> <SEP> - In the mirror entry node enclave: <tb><SEP> <SEP> o Encrypt the data to form a second encrypted container, by associating it with a second cryptographic decryption key, different from the first cryptographic decryption key; <tb><SEP> <SEP> o Fragment the second cryptographic decryption key into a predetermined number of fragments; <tb><SEP> <SEP> o Designate, from among the set of mirror nodes, a first group of nodes and distribute the second encrypted container to the mirror node or nodes of this first group; <tb><SEP> <SEP> o Designate, among the set of mirror nodes, a second group of nodes equal in number to the fragments of the second cryptographic decryption key; <tb><SEP> <SEP> o Distribute each fragment of the second cryptographic decryption key to one or more mirror nodes of the second group, each receiving a unique fragment; <tb> <SEP> - Outside the mirror entry node enclave: <tb><SEP> <SEP> o Store the second encrypted container within each node of the first group of mirror nodes; <tb><SEP> <SEP> o Memorize each fragment of the second cryptographic decryption key on each node of the second group of mirror nodes; <tb> <SEP> - Enter in a block of the chain of blocks, by one or more nodes of the network, at least one transaction containing a digital fingerprint of the memorizations thus carried out.

BREVE DESCRIPTION DES FIGURESBRIEF DESCRIPTION OF THE FIGURES

[0017] D'autres objets et avantages de l'invention apparaîtront à la lumière de la description d'un mode de réalisation, faite ci-après en référence aux dessins annexés dans lesquels : <tb><SEP>LaFIG.1est un schéma fonctionnel simplifié illustrant un réseau pair-à-pair sur lequel est distribuée une chaîne de blocs ; <tb><SEP>LaFIG.2est un schéma fonctionnel simplifié illustrant différents composants d'une unité de traitement informatique impliqués dans la création et l'exploitation d'un environnement d'exécution sécurisé appelé enclave ; <tb><SEP>LaFIG.3est un schéma fonctionnel illustrant pour partie une architecture réseau, pour partie des étapes d'un procédé de stockage, et pour partie des fichiers produits, échangés ou stockés au sein du réseau pour les besoins (ou en application) de ce procédé ; <tb><SEP>LaFIG.4est un diagramme fonctionnel illustrant différentes étapes du procédé de stockage.[0017] Other objects and advantages of the invention will become apparent in the light of the description of an embodiment, given below with reference to the accompanying drawings in which: <tb> <SEP> LaFIG.1 is a simplified block diagram illustrating a peer-to-peer network on which a chain of blocks is distributed; <tb> <SEP> LaFIG.2 is a simplified functional diagram illustrating different components of a computer processing unit involved in the creation and operation of a secure execution environment called an enclave; <tb> <SEP> LaFIG.3 is a functional diagram partly illustrating a network architecture, partly the steps of a storage process, and partly the files produced, exchanged or stored within the network for the needs (or application) of this process; <tb> <SEP> LaFIG.4 is a functional diagram illustrating different stages of the storage process.

DESCRIPTION DETAILLEE DE L'INVENTIONDETAILED DESCRIPTION OF THE INVENTION

[0018] Sans s'y restreindre, le procédé de stockage proposé exploite, en les combinant, des fonctionnalités offertes par deux technologies relativement récentes dont il paraît utile de faire une description préalable avant d'entrer dans les détails du procédé, à savoir : La technologie de la chaîne de blocs ou, en terminologie anglo-saxonne, blockchain (dans ce qui suit, on préférera la terminologie anglo-saxonne, en raison de son emploi courant dans la plupart des langues, y compris en langue française) ; La technologie de l'environnement d'exécution sécurisé ou, en terminologie anglo-saxonne, du trusted execution environment (TEE).Without being limited thereto, the proposed storage method exploits, by combining them, the functionalities offered by two relatively recent technologies of which it seems useful to make a preliminary description before going into the details of the method, namely: Blockchain technology or, in Anglo-Saxon terminology, blockchain (in what follows, Anglo-Saxon terminology will be preferred, because of its common use in most languages, including French); The technology of the secure execution environment or, in English terminology, of the trusted execution environment (TEE).

[0019] La technologie blockchain est organisée en couches. Elle comprend : Une couche d'infrastructure matérielle, appelée „réseau blockchain“ ; Une couche protocolaire appelée „protocole blockchain“ ; Une couche informationnelle, appelée „registre blockchain“.[0019] Blockchain technology is organized in layers. She understands : A layer of hardware infrastructure, called a “blockchain network”; A protocol layer called the “blockchain protocol”; An information layer, called the “blockchain register”.

[0020] Le réseau blockchain est un réseau informatique décentralisé, dit réseau pair-à-pair (en terminologie anglo-saxonne Peer-to-Peer ou P2P), constitué d'une pluralité d'ordinateurs (au sens fonctionnel du terme : il s'agit d'un appareil pourvu d'une unité de traitement informatique programmable, qui peut se présenter sous forme d'un smartphone, d'une tablette, d'un ordinateur de bureau, d'une station de travail, d'un serveur physique ou virtuel, c'est-à-dire un espace de calcul et de mémoire alloué au sein d'un serveur physique et sur lequel tourne un système d'exploitation ou une émulation de système d'exploitation), appelés „nœuds“ en référence à la théorie des graphes, capables de communiquer entre eux (c'est-à-dire de s'échanger des données informatiques), deux à deux, au moyen de liaisons filaires ou sans fil. The blockchain network is a decentralized computer network, called a peer-to-peer network (in Peer-to-Peer or P2P terminology), made up of a plurality of computers (in the functional sense of the term: it is a device provided with a programmable computer processing unit, which can be in the form of a smartphone, a tablet, a desktop computer, a workstation, a physical or virtual server, i.e. computing and memory space allocated within a physical server and on which an operating system or operating system emulation runs), called "nodes" with reference to the theory of graphs, capable of communicating with each other (ie exchanging computer data), two by two, by means of wired or wireless links.

[0021] Un réseau1blockchain comprenant des nœuds2communiquant par des liaisons3est illustré sur laFIG.1. Par souci de simplification et de conformité à la théorie des graphes, sur laFIG.1, les nœuds2du réseau1sont représentés par des cercles ; les liaisons3, par des arêtes reliant les cercles. Pour ne pas surcharger de traits le dessin, seules certaines liaisons3entre les nœuds2sont représentées. A network1blockchain comprising nodes2communicating by links3is illustrated in theFIG.1. For the sake of simplification and conformity with graph theory, on FIG.1, the nodes2 of the network1 are represented by circles; the bonds3, by edges connecting the circles. In order not to overload the drawing with lines, only certain links3 between nodes2 are shown.

[0022] Les nœuds2peuvent être disséminés sur de larges régions géographiques ; ils peuvent également être regroupés dans des régions géographiques plus restreintes. [0022] The nodes2 can be scattered over large geographic regions; they can also be grouped into smaller geographic regions.

[0023] Le protocole blockchain se présente sous forme d'un programme informatique implémenté dans chaque nœud2du réseau1blockchain, et qui inclut, outre des fonctions de dialogue - c'est-à-dire d'échange des données informatiques - avec les autres nœuds2du réseau1, un algorithme de calcul qui, à partir de données d'entrée appelées „transactions“ (qui sont des transcriptions d'interactions entre un ou plusieurs terminaux informatiques émetteurs et un ou plusieurs terminaux informatiques destinataires) : <tb><SEP>- Élabore des fichiers4de données structurées appelés „blocs“, chaque bloc4comprenant un corps4Acontenant des empreintes numériques de transactions, et un en-tête4Bcontenant : <tb><SEP><SEP>o Un numéro d'ordre, ou rang, ou encore hauteur (height en anglais), sous forme d'un nombre entier qui désigne la position du bloc4au sein d'une chaîne dans l'ordre croissant à partir d'un bloc initial (Genesis block en anglais) ; <tb><SEP><SEP>o Une empreinte numérique unique des données du corps4A ; <tb><SEP><SEP>o Une empreinte numérique unique, appelée pointeur, de l'en-tête du bloc4précédent, <tb><SEP><SEP>o Une donnée d'horodatage (timestamp en anglais) ; <tb><SEP>- Met en œuvre un mécanisme de validation des blocs4par consensus entre tout ou partie des nœuds2 ; <tb><SEP>- Concatène les blocs4validés pour former un registre5(le registre blockchain) sous forme d'un agrégat dans lequel chaque bloc4est relié mathématiquement au précédent par son pointeur.The blockchain protocol is in the form of a computer program implemented in each node2 of the network1 blockchain, and which includes, in addition to dialogue functions - that is to say exchange of computer data - with the other nodes2 of the network1 , a calculation algorithm which, from input data called "transactions" (which are transcriptions of interactions between one or more transmitting computer terminals and one or more recipient computer terminals): <tb> <SEP> - Builds structured data files4 called "blocks", each block4 including a body4containing digital transaction fingerprints, and a header4Bcontaining: <tb><SEP> <SEP> o A sequence number, or row, or height (height in English), in the form of an integer which designates the position of block4 within a chain in the order growing from an initial block (Genesis block); <tb><SEP> <SEP> o A unique digital fingerprint of body4A data; <tb><SEP> <SEP> o A unique digital fingerprint, called a pointer, of the header of the previous block4, <tb><SEP> <SEP> o A timestamp data; <tb> <SEP> - Implements a mechanism for validating blocks4 by consensus between all or part of the nodes2; <tb> <SEP> - Concatenates validated blocks4 to form a register5 (the blockchain register) in the form of an aggregate in which each block4 is mathematically linked to the previous one by its pointer.

[0024] La moindre modification des données du corps4Aou de l'en-tête4Bd'un bloc4affecte la valeur de son empreinte numérique et rompt par conséquent le lien existant entre ce bloc4ainsi modifié et le bloc4suivant dont le pointeur ne correspond plus. The slightest modification of the data of the body4Aou of the header4B of a bloc4affects the value of its digital fingerprint and consequently breaks the existing link between this bloc4 thus modified and the following bloc4 whose pointer no longer corresponds.

[0025] Selon un mode particulier de réalisation, l'empreinte numérique de chaque bloc4est un condensé (ou condensat, en anglais hash) des données du bloc4, c'est-à-dire le résultat d'une fonction de hachage appliquée aux données du bloc4(y compris le corps4Aet l'en-tête4Bà l'exception de l'empreinte numérique elle-même). La fonction de hachage est typiquement SHA-256. [0025] According to a particular embodiment, the digital fingerprint of each bloc4 is a digest (or hash) of the data of bloc4, that is to say the result of a hash function applied to the data of block4 (including body4A and header4B except for the digital fingerprint itself). The hash function is typically SHA-256.

[0026] Pour un bloc4donné de rang N (N un entier), le pointeur assure avec le bloc4précédent de rang N-1 une liaison inaltérable. En effet, toute modification des données du bloc4de rang N-1 aboutirait à la modification de son empreinte, et donc à un défaut de correspondance entre cette empreinte (modifiée) du bloc4de rang N-1 et le pointeur mémorisé parmi les métadonnées du bloc4de rang N. For a bloc4donné of rank N (N an integer), the pointer ensures with the bloc4précè of rank N-1 an unalterable link. Indeed, any modification of the data of block4 of rank N-1 would lead to the modification of its fingerprint, and therefore to a lack of correspondence between this (modified) fingerprint of block4 of rank N-1 and the pointer stored among the metadata of block4 of rank NOT.

[0027] La succession des blocs4reliés entre eux deux à deux par correspondance du pointeur d'un bloc4donné de rang N avec l'empreinte numérique du bloc précédent de rang N-1 constitue par conséquent le registre5blockchain sous forme d'un agrégat de blocs4corrélés, dans lequel la moindre modification des données d'un bloc4de rang N-1 se traduit par une rupture du lien avec le bloc4suivant de rang N - et donc la rupture du registre blockchain. The succession of blocks4 linked together two by two by correspondence of the pointer of a bloc4donné of rank N with the digital fingerprint of the previous block of rank N-1 therefore constitutes the register5blockchain in the form of an aggregate of correlated blocks4, in which the slightest modification of the data of a block4 of rank N-1 results in a breaking of the link with the following block4 of rank N - and therefore the breaking of the blockchain register.

[0028] C'est cette structure particulière qui procure aux données contenues dans le registre5blockchain une réputation d'immuabilité, garantie par le fait que le registre5blockchain est répliqué sur tous les nœuds2du réseau1, obligeant tout attaquant, non seulement à modifier tous les blocs4de rang supérieur au bloc4modifié, mais à déployer ces modifications (alors même que le registre5blockchain continue de se constituer par les nœuds2appliquant le protocole blockchain) à l'ensemble des nœuds2. It is this particular structure which gives the data contained in the register5blockchain a reputation for immutability, guaranteed by the fact that the register5blockchain is replicated on all the nodes2 of the network1, forcing any attacker, not only to modify all the blocks4 of rank greater than the modified block4, but to deploy these modifications (even though the register5blockchain continues to be constituted by the nodes2 applying the blockchain protocol) to all the nodes2.

[0029] Quel que soit le type de consensus appliqué par le mécanisme de validation des blocs4, la plupart des technologies blockchain ont pour fonction primaire d'enregistrer, dans leur registre5blockchain, des transactions passées entre un ou plusieurs terminaux émetteurs, et un ou plusieurs terminaux récepteurs, indifféremment appelés „utilisateurs“. Whatever the type of consensus applied by the block validation mechanism4, most blockchain technologies have the primary function of recording, in their blockchain ledger5, transactions between one or more issuing terminals, and one or more receiving terminals, interchangeably called "users".

[0030] A chaque utilisateur est associé un compte, appelé de manière simplificatrice „portefeuille électronique“ (en anglais digital wallet), qui contient une zone mémoire et une interface programmatique ayant des fonctions d'interaction avec le réseau1blockchain pour lui soumettre des transactions, et des fonctions de synchronisation avec le registre5blockchain pour inscrire, dans la zone mémoire, les transactions validées par inscription dans le registre5blockchain. Each user is associated with an account, called in a simplified manner "electronic wallet" (in English digital wallet), which contains a memory area and a programmatic interface having interaction functions with the 1blockchain network to submit transactions to it, and synchronization functions with the 5blockchain register to register, in the memory area, the transactions validated by registration in the 5blockchain register.

[0031] Sauf mention contraire, et par souci de simplification, l'expression simple „chaîne de blocs“ ou „blockchain“ désigne le registre5blockchain lui-même. Unless otherwise specified, and for the sake of simplicity, the simple expression "blockchain" or "blockchain" designates the register5blockchain itself.

[0032] Certaines technologies blockchain récentes (Ethereum, typiquement) ajoutent aux trois couches matérielle (réseau blockchain), protocolaire (protocole blockchain) et informationnelle (registre blockchain) une couche applicative qui se présente sous forme d'un environnement de développement permettant de programmer des applications, appelées „contrats intelligents“ (en anglais Smart contracts), qui peuvent être déployées sur le registre5blockchain à partir des nœuds2. Some recent blockchain technologies (Ethereum, typically) add to the three hardware (blockchain network), protocol (blockchain protocol) and informational (blockchain register) layers an application layer which takes the form of a development environment for programming applications, called “smart contracts”, which can be deployed on the ledger5blockchain from nodes2.

[0033] On décrit à présent succinctement la technologie des contrats intelligents. We will now briefly describe the technology of smart contracts.

[0034] Un contrat intelligent comprend deux éléments : Un compte, appelé „compte de contrat“ (en anglais Contract account), dans la zone mémoire duquel est inscrit un code source contenant des instructions informatiques implémentant les fonctions attribuées au contrat intelligent ; Un code exécutable (en anglais Executable Bytecode) résultant d'une compilation du code source, ce code exécutable étant mémorisé ou déployé au sein du registre5blockchain, c'est-à-dire inséré en tant que transaction dans un bloc4du registre5blockchain.[0034] A smart contract comprises two elements: An account, called a “Contract account”, in the memory area of which is written a source code containing computer instructions implementing the functions assigned to the smart contract; An executable code (in English Executable Bytecode) resulting from a compilation of the source code, this executable code being stored or deployed within the register5blockchain, that is to say inserted as a transaction in a block4 of the register5blockchain.

[0035] Dans la technologie blockchain proposée par Ethereum, un smart contrat est activé par un appel (en anglais Call) adressé par un autre compte, dit compte initiateur (qui peut être un compte utilisateur ou un compte de contrat), cet appel se présentant sous forme d'une transaction contenant, d'une part, un fonds de réserve à transférer (c'est-à-dire un paiement) depuis le compte initiateur au compte de contrat et, d'autre part, des conditions initiales. In the blockchain technology proposed by Ethereum, a smart contract is activated by a call (in English Call) sent by another account, said initiator account (which can be a user account or a contract account), this call is presenting in the form of a transaction containing, on the one hand, a reserve fund to be transferred (i.e. a payment) from the initiating account to the contract account and, on the other hand, initial conditions.

[0036] Cet appel est inscrit en tant que transaction dans le registre5blockchain. Il déclenche : Le transfert du fonds de réserve du compte initiateur au compte de contrat ; La désignation, parmi le réseau1blockchain, d'un nœud d'exécution associé à un compte utilisateur ; L'activation, dans une unité de traitement informatique du nœud d'exécution, d'un environnement d'exécution ou machine virtuelle (appelé Ethereum Virtual Machine ou EVM dans le cas d'Ethereum) ; L'exécution pas-à-pas des étapes de calcul du code exécutable par la machine virtuelle à partir des conditions initiales, chaque étape de calcul étant accompagnée d'un transfert d'une fraction (appelée gas dans le cas d'Ethereum) du fonds de réserve depuis le compte de contrat vers le compte utilisateur du nœud d'exécution, et ce jusqu'à épuisement des étapes de calcul, au terme desquelles est obtenu un résultat ; L'inscription (éventuellement sous forme d'une empreinte numérique) de ce résultat en tant que transaction dans le registre 5 blockchain.This call is recorded as a transaction in the register5blockchain. It triggers: The transfer of the reserve fund from the initiating account to the contract account; The designation, among the network1blockchain, of an execution node associated with a user account; The activation, in a computer processing unit of the execution node, of an execution environment or virtual machine (called Ethereum Virtual Machine or EVM in the case of Ethereum); The step-by-step execution of the steps for calculating the executable code by the virtual machine from the initial conditions, each step of calculation being accompanied by a transfer of a fraction (called gas in the case of Ethereum) of the reserve fund from the contract account to the user account of the execution node, until the calculation steps are exhausted, at the end of which a result is obtained; The recording (possibly in the form of a digital fingerprint) of this result as a transaction in the register 5 blockchain.

[0037] Le compte initiateur récupère (c'est-à-dire, en pratique, télécharge) le résultat lors de sa synchronisation au registre5blockchain. The initiating account retrieves (that is to say, in practice, downloads) the result when it is synchronized with the register5blockchain.

[0038] On introduit à présent brièvement les environnements d'exécution sécurisé. We now briefly introduce secure execution environments.

[0039] Un environnement d'exécution sécurisé (Trusted execution environment ou TEE) est, au sein d'une unité6de traitement informatique pourvue d'un processeur ou CPU (Central Processing Unit)7, un espace temporaire de calcul et de stockage de données, appelé (par convention) enclave, ou encore enclave cryptographique, qui se trouve isolé, par des moyens cryptographiques, de toute action non autorisée résultant de l'exécution d'une application hors de cet espace, typiquement du système d'exploitation. A secure execution environment (Trusted execution environment or TEE) is, within a computer processing unit provided with a processor or CPU (Central Processing Unit) 7, a temporary space for calculation and data storage. , called (by convention) an enclave, or even cryptographic enclave, which is isolated, by cryptographic means, from any unauthorized action resulting from the execution of an application outside this space, typically the operating system.

[0040] Intel® a, par exemple, revu à partir de 2013 la structure et les interfaces de ses processeurs pour y inclure des fonctions d'enclave, sous la dénomination Software Guard Extension, plus connue sous l'acronyme SGX. SGX équipe la plupart des processeurs de type XX86 commercialisés par Intel® depuis 2015, et plus précisément à partir de la sixième génération incorporant la microarchitecture dite Skylake. Les fonctions d'enclave proposées par SGX ne sont pas accessibles d'office : il convient de les activer via le système élémentaire d'entrée/sortie (Basic Input Output System ou BIOS). [0040] Intel®, for example, from 2013 revised the structure and interfaces of its processors to include enclave functions, under the name Software Guard Extension, better known by the acronym SGX. SGX equips most of the XX86 type processors marketed by Intel® since 2015, and more specifically from the sixth generation incorporating the so-called Skylake microarchitecture. The enclave functions offered by SGX are not automatically accessible: they must be activated via the elementary input / output system (Basic Input Output System or BIOS).

[0041] Il n'entre pas dans les nécessités de la présente description de détailler l'architecture des enclaves, dans la mesure où : En dépit de sa relative jeunesse, cette architecture est relativement bien documentée, notamment par Intel® qui a déposé de nombreux brevets, cf. par ex., parmi les plus récents, la demande de brevet américain US 2019/0058696 ; Des processeurs permettant de les implémenter sont disponibles sur le marché - notamment les processeur Intel® précités ; Seules les fonctionnalités permises par l'enclave nous intéressent ici, ces fonctionnalités pouvant être mises en œuvre via des lignes de commande spécifiques. A ce titre, l'homme du métier pourra se référer au guide édité en 2016 par Intel® : Software Guard Extensions, Developer Guide.It does not come within the requirements of the present description to detail the architecture of the enclaves, insofar as: Despite its relative youth, this architecture is relatively well documented, in particular by Intel® which has filed numerous patents, cf. e.g., among the most recent, the US patent application US 2019/0058696; Processors making it possible to implement them are available on the market - in particular the aforementioned Intel® processors; Only the functionalities allowed by the enclave are of interest to us here, these functionalities being able to be implemented via specific command lines. As such, those skilled in the art may refer to the guide published in 2016 by Intel®: Software Guard Extensions, Developer Guide.

[0042] Pour une description plus accessible des enclaves, et plus particulièrement d'Intel® SGX, l'homme du métier peut également se référer à A. Adamski, Overview of Intel SGX - Part 1, SGX Internal, ou à D. Boneh, Surnaming Schemes, Fast Verification, and Applications to SGX Technology, in Topics in Cryptology, CT - RSA 2017, The Cryptographers' Track at the RSA Conférence 2017, San Francisco, CA, USA, Feb.14-17, 2017, Proceedings, pp.149-164, ou encore à K. Severinsen, Secure Programming with Intel SGX and Novel Applications, Thesis submitted for the Degree of Master in Programming and Networks, Dept. Of Informatics, Faculty of Mathematics and Natural Science, University of Oslo, Autumn 2017. For a more accessible description of the enclaves, and more particularly of Intel® SGX, those skilled in the art can also refer to A. Adamski, Overview of Intel SGX - Part 1, SGX Internal, or to D. Boneh , Nickaming Schemes, Fast Verification, and Applications to SGX Technology, in Topics in Cryptology, CT - RSA 2017, The Cryptographers' Track at the RSA Conférence 2017, San Francisco, CA, USA, Feb. 14-17, 2017, Proceedings, pp. 149-164, or to K. Severinsen, Secure Programming with Intel SGX and Novel Applications, Thesis submitted for the Degree of Master in Programming and Networks, Dept. Of Informatics, Faculty of Mathematics and Natural Science, University of Oslo, Autumn 2017.

[0043] Pour résumer, en référence à laFIG.2, une enclave8comprend, en premier lieu, une zone9mémoire sécurisée (dénommée Page Cache d'enclave, en anglais Enclave Page Cache ou EPC), qui contient du code et des données relatives à l'enclave elle-même, et dont le contenu est chiffré et déchiffré en temps réel par une puce dédiée dénommée Moteur de Chiffrement de Mémoire (en anglais Memory Encryption Engine ou MEE). L'EPC9est implémentée au sein d'une partie de la mémoire vive dynamique (DRAM)10allouée au processeur7, et à laquelle les applications ordinaires (notamment le système d'exploitation) n'ont pas accès. To summarize, with reference to theFIG.2, an enclave8includes, first of all, a secure memory zone9 (called Enclave Page Cache, in English Enclave Page Cache or EPC), which contains code and data relating to the 'enclave itself, and whose content is encrypted and decrypted in real time by a dedicated chip called the Memory Encryption Engine (MEE). The EPC9 is implemented within a part of the dynamic random access memory (DRAM) 10 allocated to the processor7, and to which ordinary applications (in particular the operating system) do not have access.

[0044] L'enclave8comprend, en deuxième lieu, des clés cryptographiques natives, qui lui sont associées et sont employées pour chiffrer ou signer à la volée les données sortant de l'EPC9, ce grâce à quoi l'enclave8peut être identifiée (notamment par d'autres enclaves), et les données qu'elle génère peuvent être chiffrées pour être stockées dans des zones de mémoire non protégées (c'est-à-dire hors de l'EPC9). Dans la technologie SGX, une clé native employée pour chiffrer les données est dérivée d'une clé cryptographique implémentée dans le processeur lui-même, appelée Clé de Scellement Racine (en anglais Roof Sealing Key ou RSK). The enclave8 includes, secondly, native cryptographic keys, which are associated with it and are used to encrypt or sign on the fly the data leaving the EPC9, which enables the enclave8 to be identified (in particular by other enclaves), and the data it generates can be encrypted for storage in unprotected memory areas (i.e. outside of the EPC9). In SGX technology, a native key used to encrypt the data is derived from a cryptographic key implemented in the processor itself, called the Roof Sealing Key (RSK).

[0045] Pour pouvoir exploiter une telle enclave8, une application11doit être segmentée en, d'une part, une ou plusieurs parties12non sécurisées (en anglais untrusted part(s)), et, d'autre part, une ou plusieurs parties13sécurisées (en anglais trusted parf(s)). In order to be able to use such an enclave8, an application11 must be segmented into, on the one hand, one or more unsecured parts12 (in English untrusted part (s)), and, on the other hand, one or more secure parts13 (in English trusted perf (s)).

[0046] Seuls les processus induits par la (les) partie(s)13sécurisée(s) de l'application11peuvent accéder à l'enclave8. Les processus induits par la (les) partie(s)12non sécurisée(s) ne peuvent pas accéder à l'enclave8, c'est-à-dire qu'ils ne peuvent pas dialoguer avec les processus induits par la (les) partie(s)13sécurisée(s). Only the processes induced by the secure part (s) 13 of the application11 can access the enclave8. The processes induced by the unsecured part (s) 12 cannot access the enclave8, i.e. they cannot dialogue with the processes induced by the part (s) (s) 13secure (s).

[0047] La création (également dénommée instanciation) de l'enclave8et le déroulement de processus en son sein sont commandés via un jeu14d'instructions particulières exécutables par le processeur7et appelées par la (les) partie(s)13sécurisée(s) de l'application11. The creation (also called instantiation) of the enclave8 and the flow of processes within it are controlled via a set14d'instructions particular executable by the processor7et called by the part (s) 13secure (s) of the application11.

[0048] Parmi ces instructions : ECREATE commande la création d'une enclave8 ; EINIT commande l'initialisation de l'enclave8 ; EADD commande le chargement de code dans l'enclave8 ; EENTER commande l'exécution de code dans l'enclave8 ; ERESUME commande une nouvelle exécution de code dans l'enclave8 ; EEXIT commande la sortie de l'enclave8, typiquement à la fin d'un processus exécuté dans l'enclave8.[0048] Among these instructions: ECREATE commands the creation of an enclave8; EINIT commands the initialization of the enclave8; EADD commands code loading into the enclave8; EENTER commands code execution in the enclave8; ERESUME commands a new execution of code in the enclave8; EEXIT controls the exit of enclave8, typically at the end of a process running in enclave8.

[0049] On a, sur laFIG.2, représenté de manière fonctionnelle l'enclave 8 sous la forme d'un bloc (en traits pointillés) englobant la partie13sécurisée de l'application11, le jeu14d'instructions du processeur7, et l'EPC9. Cette représentation n'est pas réaliste ; elle vise simplement à regrouper visuellement les éléments qui composent ou exploitent l'enclave8. We have, on theFIG.2, functionally represented the enclave 8 in the form of a block (in dotted lines) encompassing the secure part of the application11, the processor7 instruction set14, and the EPC9 . This representation is not realistic; it simply aims to visually group together the elements that make up or exploit the enclave8.

[0050] Nous expliquerons ci-après comment sont exploitées les enclaves. We will explain below how the enclaves are exploited.

[0051] On a représenté sur laFIG.3un réseau1blockchain au sein duquel des données15issues d'un terminal16émetteur doivent être stockées. There is shown on theFIG.3a network1blockchain within which data15issues of a terminal16emitter must be stored.

[0052] Le réseau1, sur lequel est distribuée une blockchain5, comprend deux ensembles disjoints de nœuds2, à savoir un premier ensemble1Sde nœuds2dits standards, et un deuxième ensemble1Mde nœuds2dits miroirs. The network 1, on which a blockchain 5 is distributed, comprises two disjoint sets of nodes 2, namely a first set 1 S of nodes 2 said standards, and a second set 1 M of nodes 2 said mirrors.

[0053] Le réseau1a pour fonction de constituer un espace de stockage distribué des données15sous forme cryptée. Comme nous le verrons, les données15font l'objet d'une double distribution (sous forme cryptée) : d'une part sur des nœuds2standards, d'autre part sur des nœuds2miroirs. The function of the network 1 is to constitute a distributed storage space for data 15 in encrypted form. As we will see, the data15 is the object of a double distribution (in encrypted form): on the one hand on standard nodes2, on the other hand on mirror nodes.

[0054] La traçabilité des données15au sein du réseau1peut être réalisée par inscription, dans le registre5blockchain, d'une ou plusieurs empreintes numériques des mémorisations ainsi effectuées. The traceability of the data15 within the network1 can be achieved by entering, in the register5blockchain, one or more digital fingerprints of the memorizations thus carried out.

[0055] Le stockage distribué des données15est avantageusement piloté par un contratSCintelligent (FIG.4), activé par exemple par le terminal16émetteur qui, tout en transmettant les données15à stocker au réseau1, transmet au contrat intelligent un appel par la procédure décrite précédemment. The distributed storage of data15est advantageously controlled by a smart contract (FIG.4), activated for example by the transmitter terminal16 which, while transmitting the data15 to be stored to the network1, transmits to the smart contract a call by the procedure described above.

[0056] Il est ici proposé de distribuer sur le réseau1non seulement les données15(sous forme cryptée), mais également des clés de déchiffrement de celles-ci, via des enclaves8instanciées sur deux nœuds2E,2E', dits nœuds d'entrée, du réseau1(FIG.3,FIG.4). It is proposed here to distribute on the network1not only the data15 (in encrypted form), but also the decryption keys thereof, via enclaves8instantiated on two nodes2E, 2E ', called entry nodes, of the network1 (FIG.3, FIG.4).

[0057] A cet effet, une opération préliminaire consiste, à partir du terminal16émetteur dans lequel sont stockées les données15, à transmettre une requête de stockage des données15à destination du réseau1, typiquement en activant un contratSCintelligent déployé sur la blockchain5. To this end, a preliminary operation consists, from the emitter terminal16 in which the data15 is stored, in transmitting a request for the storage of data15 to the network1, typically by activating a smart contract deployed on the blockchain5.

[0058] A réception de la requête de stockage par au moins un nœud2du réseau1, le contratSCintelligent sélectionne ou désigne (DES) au sein du réseau1au moins : Parmi le premier ensemble1Sde nœuds2standards, un nœud2Ed'entrée standard, équipé d'une unité de traitement informatique dans laquelle est implémentée une enclave8 ; Parmi le deuxième ensemble1Mde nœuds miroirs, un nœud2E'd'entrée miroir, équipé d'une unité de traitement informatique dans laquelle st implémentée une enclave8.On receipt of the storage request by at least one node2 of the network1, the intelligent contract selects or designates (DES) within the network1 at least: Among the first set1S of standard nodes2, a standard input node2E, equipped with a computer processing unit in which an enclave8 is implemented; Among the second set1M of mirror nodes, a mirror input node2E ', equipped with a computer processing unit in which an enclave8 is implemented.

[0059] Une première distribution des données15est réalisée sur le premier ensemble1Sde nœuds standards. A first distribution of the data 15 is carried out on the first set 1S of standard nodes.

[0060] A cet effet, l'enclave8du nœud2Ed'entrée standard est instanciée en application des instructions du contrat intelligent, et les données15y sont chargées à partir du terminal16émetteur et via une ligne17de communication sécurisée (par ex. utilisant le protocole Transport Layer Security ou TLS). A cet effet, l'enclave8peut être pourvue, dès son instanciation, d'une émulation d'interface18de communication supportant le protocole choisi (ici TLS) pour l'échange des données sécurisées. For this purpose, the enclave8 of the standard input node2E is instantiated in application of the instructions of the smart contract, and the data15y is loaded from the emitting terminal16 and via a secure communication line (eg using the Transport Layer Security protocol or TLS). For this purpose, the enclave8 can be provided, as soon as it is instantiated, with a communication interface 18 emulation supporting the chosen protocol (here TLS) for the exchange of secure data.

[0061] Le protocole blockchain est avantageusement chargé dans l'enclave8, pour former un module19blockchain apte à interroger le registre5blockchain et/ou à participer au processus de création et validation des blocs4. The blockchain protocol is advantageously loaded into the enclave8, to form a module19blockchain able to query the register5blockchain and / or to participate in the process of creation and validation of the blocks4.

[0062] Une transaction20contenant une empreinte numérique du chargement des données ainsi effectué est inscrite dans un bloc4de la blockchain5, aux fins de traçabilité. A transaction20containing a digital imprint of the loading of the data thus carried out is entered in a bloc4de the blockchain5, for the purposes of traceability.

[0063] Cette transaction20peut être transmise au module19blockchain par le terminal16émetteur, pour être inscrite par un ou plusieurs nœuds2du réseau (par le processus décrit plus haut) dans un nouveau bloc4du registre5blockchain. En variante, le module19blockchain émet de lui-même une transaction20pour inscription dans un nouveau bloc4. This transaction20 can be transmitted to the module19blockchain by the emitter terminal16, to be registered by one or more nodes2 of the network (by the process described above) in a new block4 of the register5blockchain. As a variant, the module19blockchain itself issues a transaction20for registration in a new block4.

[0064] Dans l'enclave8du nœud2Ed'entrée standard se déroule alors un processus qui comprend les opérations suivantes. In the standard input enclave8du node2Ed'a process then takes place which comprises the following operations.

[0065] Une première opération consiste à chiffrer les données15au moyen d'une première clé21cryptographique de chiffrement pour former un conteneur22crypté, en lui associant une première clé23de déchiffrement. A cet effet, les données15reçues du terminal16émetteur sont relayées par l'interface18de communication à un module24de chiffrement implémenté dans l'enclave8du nœud2Ed'entrée standard. A first operation consists in encrypting the data15 by means of a first cryptographic encryption key21 to form an encrypted container22, by associating it with a first decryption key23. To this end, the data15 received from the emitting terminal16 is relayed by the communication interface18 to an encryption module24 implemented in the enclave8 of the standard input node2E.

[0066] Selon un mode préféré de réalisation, le chiffrement est symétrique. Dans ce cas, la première clé21de chiffrement et la première clé23de déchiffrement sont une seule et même clé. According to a preferred embodiment, the encryption is symmetrical. In this case, the first encryption key21 and the first decryption key23 are one and the same key.

[0067] Une deuxième opération consiste à fragmenter la première clé23de déchiffrement. Plus précisément, la première clé23de déchiffrement est fragmentée en un nombre N prédéterminé de fragments23.i, (i un entier, 2≤i≤N). A second operation consists in fragmenting the first decryption key. More precisely, the first decryption key23 is fragmented into a predetermined number N of fragments23.i, (i an integer, 2≤i≤N).

[0068] Selon un mode préféré de réalisation, N est tel que N>3 et la fragmentation est réalisée en application des règles de Shamir (dite du Partage de Secret de Shamir, en anglais Shamir's Secret Sharing), et plus précisément du schéma seuil, où un nombre entier prédéterminé K (1<K<N) est choisi tel qu'un nombre K de fragments23.isont suffisants pour reconstituer la première clé23de déchiffrement. According to a preferred embodiment, N is such that N> 3 and the fragmentation is carried out in application of Shamir's rules (called Shamir's Secret Sharing, in English Shamir's Secret Sharing), and more precisely of the threshold diagram , where a predetermined integer K (1 <K <N) is chosen such that a number K of fragments23.isont sufficient to reconstitute the first decryption key23.

[0069] Une troisième opération consiste à désigner, parmi le premier ensemble1Sde nœuds standards, un premier groupe de nœuds2Astandards. A third operation consists in designating, from among the first set 1S of standard nodes, a first group of standard nodes 2.

[0070] A cet effet, l'enclave8du nœud2Ed'entrée standard est avantageusement pourvue d'un module25de distribution de données, auquel le module24de chiffrement communique le conteneur22crypté pour distribution aux nœuds2Astandards du premier groupe. To this end, the enclave8du standard input node2E is advantageously provided with a data distribution module25, to which the encryption module24 communicates the encrypted container22 for distribution to the standard nodes2 of the first group.

[0071] Une quatrième opération consiste à désigner, parmi le premier ensemble1Sde nœuds standards, un deuxième groupe de plusieurs nœuds2Bstandards, en nombre N égal au nombre de fragments23.ide la première clé23de déchiffrement. A fourth operation consists in designating, among the first set1S of standard nodes, a second group of several standard nodes2B, in number N equal to the number of fragments23.ide the first decryption key23.

[0072] Les nœuds2Bstandards du deuxième groupe sont de préférence distinct(s) des nœuds2Astandards du premier groupe - en d'autres termes, les groupes de nœuds2A,2B(représentés en pointillés sur laFIG.3) sont disjoints. The standard nodes 2B of the second group are preferably distinct from the standard nodes 2A of the first group - in other words, the groups of nodes 2A, 2B (shown in dotted lines on FIG. 3) are disjoint.

[0073] Une cinquième opération consiste à distribuer le premier conteneur22crypté vers le ou les nœuds2Astandards du premier groupe. A fifth operation consists in distributing the first encrypted container22 to the standard node or nodes of the first group.

[0074] Une sixième opération consiste à distribuer les fragments23.ide la première clé23de déchiffrement vers les nœuds2Bstandards du deuxième groupe, chaque nœud2Bstandard du deuxième groupe recevant un unique fragment23.i. A sixth operation consists in distributing the fragments23.ide the first decryption key23 to the standard nodes2B of the second group, each standard node2B of the second group receiving a single fragment23.i.

[0075] Selon un mode préféré de réalisation, l'enclave8est pourvue d'un module26de fragmentation et de distribution de clé, auquel le module24de chiffrement communique la première clé23de déchiffrement pour fragmentation et distribution aux nœuds2Bsecondaires de stockage. According to a preferred embodiment, the enclave8 is provided with a fragmentation and key distribution module26, to which the encryption module24 communicates the first decryption key23 for fragmentation and distribution to the secondary storage nodes2B.

[0076] Hors de l'enclave8du nœud2Ed'entrée standard, les opérations suivantes sont réalisées : <tb><SEP>o Le premier conteneur22crypté est mémorisé au sein de chaque nœud2Astandard du premier groupe ; <tb><SEP>o Chaque fragment23.ide la première clé23cryptographique de déchiffrement est mémorisé au sein de chaque nœud2Bstandard du deuxième groupe.Outside the standard input enclave8du node2E, the following operations are performed: <tb> <SEP> o The first encrypted container22 is stored within each standard node2A of the first group; <tb> <SEP> o Each fragment23.ide the first cryptographic decryption key23 is stored within each standard node2B of the second group.

[0077] Pour assurer la traçabilité de ces opérations, au moins une transaction contenant une empreinte numérique des distributions ou des mémorisations ainsi effectuées est inscrite dans un bloc4de la chaîne5de blocs, par un ou plusieurs nœuds2du réseau1. Cette transaction peut être initiée par les nœuds2Aet2Bstandards, mais elle peut également être initiée par l'enclave8elle-même (et plus précisément par le module19blockchain). To ensure the traceability of these operations, at least one transaction containing a digital imprint of the distributions or memorizations thus carried out is registered in a bloc4de the chain5de blocks, by one or more nodes2 of the network1. This transaction can be initiated by nodes2Aand2Bstandards, but it can also be initiated by the enclave8 itself (and more specifically by the module19blockchain).

[0078] Pour améliorer la pérennité du stockage, et se prémunir d'une éventuelle perte totale ou partielle de données sur le premier ensemble1Sde nœuds standards, et comme déjà évoqué, il est prévu une phase de sauvegarde par duplication, dans le deuxième ensemble1Mde nœuds2miroirs, de la procédure qui vient d'être décrite. To improve the durability of the storage, and to guard against a possible total or partial loss of data on the first set 1S of standard nodes, and as already mentioned, a backup phase is planned by duplication, in the second set 1M of nodes 2 mirrors , of the procedure which has just been described.

[0079] A cet effet, des opérations préliminaires consistent à instancier l'enclave8du nœud2E'd'entrée miroir, et à établir une liaison sécurisée entre l'enclave8du nœud2Ed'entrée et l'enclave8du nœud2E'd'entrée miroir. To this end, preliminary operations consist in instantiating the enclave8du node2E 'mirror input, and in establishing a secure link between the enclave8du node2Ed'input and the enclave8du node2E' mirror input.

[0080] Ensuite, une première opération de la phase de sauvegarde consiste à relayer, via la liaison sécurisée entre l'enclave8du nœud2Ed'entrée et l'enclave8du nœud2E'd'entrée miroir, les données15depuis l'enclave8du nœud2Ed'entrée vers l'enclave 8 du nœud2E'd'entrée miroir. Then, a first operation of the backup phase consists in relaying, via the secure link between the enclave8du node2Ed'input and the enclave8du node2E 'mirror input, the data15from the enclave8du node2Einput to the mirror input node2E 'enclave 8.

[0081] Une deuxième opération consiste, dans l'enclave8du nœud2E'd'entrée miroir, à chiffrer les données15au moyen d'une deuxième clé27cryptographique de chiffrement (distincte de la première clé21de chiffrement) pour former un deuxième conteneur28crypté, en lui associant une deuxième clé29de déchiffrement, distincte de la première clé23de déchiffrement. A second operation consists, in the enclave8du node2E 'of mirror entry, in encrypting the data15 by means of a second encryption cryptographic key27 (distinct from the first encryption key21) to form a second encrypted container28, by associating a second decryption key29, distinct from the first decryption key23.

[0082] Selon un mode préféré de réalisation, le chiffrement est symétrique. Dans ce cas, la deuxième clé27de chiffrement et la deuxième clé29de déchiffrement sont une seule et même clé. According to a preferred embodiment, the encryption is symmetrical. In this case, the second encryption key27 and the second decryption key29 are one and the same key.

[0083] Une troisième opération consiste à fragmenter la deuxième clé29de déchiffrement. Plus précisément, la première clé29de déchiffrement est fragmentée en un nombre P prédéterminé de fragments29.j, (j un entier, 2≤j≤P). A third operation consists in fragmenting the second decryption key. More precisely, the first decryption key29 is fragmented into a predetermined number P of fragments29.j, (j an integer, 2≤j≤P).

[0084] Selon un mode préféré de réalisation, P est tel que P>3 et la fragmentation est réalisée en application des règles de Shamir (dite du Partage de Secret de Shamir, en anglais Shamir's Secret Sharing), et plus précisément du schéma seuil, où un nombre entier prédéterminé L (1<L<P) est choisi tel qu'un nombre L de fragments29.jsont suffisants pour reconstituer la deuxième clé29de déchiffrement. According to a preferred embodiment, P is such that P> 3 and the fragmentation is carried out in application of Shamir's rules (known as Shamir's Secret Sharing, in English Shamir's Secret Sharing), and more precisely of the threshold diagram , where a predetermined integer number L (1 <L <P) is chosen such that a number L of fragments29.j are sufficient to reconstitute the second decryption key29.

[0085] Une quatrième opération consiste à désigner, parmi le deuxième ensemble1Mde nœuds miroirs, un premier groupe de nœuds2A'miroirs. A fourth operation consists in designating, among the second set 1M of mirror nodes, a first group of nodes 2A'mirrors.

[0086] Une cinquième opération consiste à désigner, parmi le deuxième ensemble1Mde nœuds miroirs, un deuxième groupe de plusieurs nœuds2B'miroirs, en nombre P égal au nombre de fragments29.jde la deuxième clé29de déchiffrement. A fifth operation consists in designating, among the second set1M of mirror nodes, a second group of several nodes2B'mirrors, in number P equal to the number of fragments29.jde the second decryption key29.

[0087] Les nœuds2B'miroirs du deuxième groupe sont de préférence distinct(s) des nœuds2A'miroirs du premier groupe - en d'autres termes, les groupes de nœuds2A',2B'miroirs (représentés en pointillés sur laFIG.3) sont disjoints. The nodes 2B 'mirrors of the second group are preferably distinct from the nodes 2A' mirrors of the first group - in other words, the groups of nodes 2A ', 2B' mirrors (shown in dotted lines in FIG. 3) are disjoint.

[0088] Une sixième opération consiste à distribuer le deuxième conteneur28crypté vers le ou les nœuds2A'miroirs du premier groupe (FIG.4). A sixth operation consists in distributing the second encrypted container28 to the node or nodes2A'mirrors of the first group (FIG.4).

[0089] Une septième opération consiste à distribuer les fragments29.jde la deuxième clé29de déchiffrement vers les nœuds2B'miroirs du deuxième groupe, chaque nœud2B'miroir du deuxième groupe recevant un unique fragment29.j. A seventh operation consists in distributing the fragments29.jde the second decryption key29 to the nodes2B'miroirs of the second group, each node2B'miroir of the second group receiving a single fragment29.j.

[0090] Hors de l'enclave8du nœud2E'd'entrée miroir, les opérations suivantes sont réalisées : <tb><SEP>o Le deuxième conteneur28crypté est mémorisé au sein de chaque nœud2A'miroir du premier groupe ; <tb><SEP>o Chaque fragment29.jde la deuxième clé23cryptographique de déchiffrement est mémorisé au sein de chaque nœud2B'miroir du deuxième groupe.Out of the mirror entry enclave8du node2E ', the following operations are performed: <tb> <SEP> o The second encrypted container28 is stored within each mirror node2 of the first group; <tb> <SEP> o Each fragment29.j of the second cryptographic decryption key23 is stored within each node2B'mirror of the second group.

[0091] Une opération finale consiste alors, par un ou plusieurs nœuds du réseau1, à inscrire dans un bloc4de la blockchain5, au moins une transaction contenant une empreinte numérique des mémorisations ainsi effectuées, afin d'en conserver une traçabilité. A final operation then consists, by one or more nodes of the network1, in registering in a bloc4of the blockchain5, at least one transaction containing a digital imprint of the memorizations thus carried out, in order to maintain traceability.

[0092] En fonctionnement normal du premier ensemble1Sde nœuds2standards, les données15peuvent être récupérées à partir de celui-ci par les opérations (avantageusement pilotées par un contrat intelligent) consistant à : Charger, dans une enclave8d'un nœud2prédéfini, le premier conteneur22crypté et K fragments de la première clé23de déchiffrement ; Reconstituer la première clé23de déchiffrement à partir de ses fragments23.i ; Déchiffrer les données15du conteneur22en appliquant à celui-ci la clé23de déchiffrement ainsi reconstituée.In normal operation of the first set 1S of standard nodes 2, the data 15 can be recovered from it by the operations (advantageously controlled by a smart contract) consisting of: Load, in an enclave8 of a predefined node2, the first encrypted container22 and K fragments of the first decryption key23; Reconstitute the first decryption key23 from its fragments23.i; Decrypt the data15of the container22 by applying to it the decryption key23 thus reconstituted.

[0093] Les données15peuvent ensuite être retransmises à un destinataire, ou exploitées, en fonction des instructions du contrat intelligent. The data can then be retransmitted to a recipient, or used, according to the instructions of the smart contract.

[0094] Cependant, en cas de défaillance partielle ou totale du réseau1public (typiquement lors d'une attaque), les données15risquent de ne plus pouvoir être récupérées à partir de celui-ci, soit que le conteneur22crypté ait été perdu ou corrompu, soit que certains fragments23.i(ou tous les fragments23.i) aient connu un sort similaire. However, in the event of partial or total failure of the public1 network (typically during an attack), the data15 may no longer be able to be recovered from it, either because the encrypted container22 has been lost or corrupted, or because some 23.i fragments (or all 23.i fragments) suffered a similar fate.

[0095] Dans ce cas, il est possible de redéployer le conteneur22crypté et/ou la clé23de déchiffrement à partir de l'ensemble1Mde nœuds miroirs. In this case, it is possible to redeploy the encrypted container22 and / or the decryption key23 from the set 1M of mirror nodes.

[0096] Le redéploiement du conteneur22peut être effectué comme suit. The redeployment of the container22 can be carried out as follows.

[0097] Une copie du conteneur22peut être directement transmise par les nœuds2A'du premier groupe de nœuds miroirs vers un groupe de nœuds2Adu premier groupe de nœuds standards. A copy of the container22 can be directly transmitted by the nodes2A 'of the first group of mirror nodes to a group of nodes2A of the first group of standard nodes.

[0098] Le redéploiement de la clé23de déchiffrement est réalisé à partir d'une8d'un nœud2désigné parmi le deuxième ensemble de nœuds miroirs. A partir de l'enclave8instanciée, la clé29est reconstituée à partir de L fragments chargés dans l'enclave8depuis des nœuds2B'du deuxième groupe de nœuds miroirs. The redeployment of the decryption key 23 is carried out from a designated node 2 from among the second set of mirror nodes. From the instantiated enclave8, the key29 is reconstituted from L fragments loaded into the enclave8 from nodes2B 'of the second group of mirror nodes.

[0099] Ainsi obtenue, la deuxième clé29de déchiffrement peut être fragmentée selon la même procédure que celle conduite dans l'enclave8du nœud d'entrée et décrite ci-dessus. Les fragments ainsi obtenus peuvent alors être distribués parmi de nouveaux nœuds2Bdu deuxième groupe de nœuds standards. Thus obtained, the second decryption key29 can be fragmented according to the same procedure as that carried out in the enclave8du input node and described above. The fragments thus obtained can then be distributed among new nodes2B of the second group of standard nodes.

Claims (1)

1. Procédé de stockage sécurisé de données (15) informatiques au sein d'un réseau (1) pair-à-pair composé d'une pluralité de nœuds (2) formant une base de données distribuée sur laquelle est mémorisée, par réplication sur chaque nœud (2), une chaîne (5) de blocs (4), les nœuds (2) étant subdivisés en deux ensembles disjoints, à savoir un premier ensemble (1S) de nœuds (2) dits standards, et un deuxième ensemble (1M) de nœuds (2) dits miroirs, ce procédé comprenant les opérations consistant à : - Emettre, à partir d'un terminal (16) émetteur dans lequel sont stockées les données (15), une requête de stockage à destination du réseau (1) ; - A réception de la requête de stockage par au moins un nœud (2) du réseau (1), sélectionner parmi l'ensemble de nœuds (2) standards, au moins un nœud (2E), dit nœud d'entrée standard, équipé d'une unité de traitement informatique dans laquelle est implémenté un environnement d'exécution sécurisé par cryptographie, dit enclave (8) ; - Instancier l'enclave (8) du nœud (2E) d'entrée standard ; - Charger les données, à partir du terminal (16) émetteur et via une ligne (18) de communication sécurisée, vers l'enclave (8) du nœud (2E) d'entrée standard ; - Inscrire dans un bloc (4) de la chaîne (5) de blocs, par un ou plusieurs nœuds (2) du réseau (1), au moins une transaction contenant une empreinte numérique de la requête de stockage et/ou du chargement ainsi effectué ; - Dans l'enclave (8) du nœud (2E) d'entrée standard : o Chiffrer les données (15) pour former un premier conteneur (22) crypté, en lui associant une première clé (23) cryptographique de déchiffrement ; o Fragmenter la première clé (23) cryptographique de déchiffrement en un nombre prédéterminé de fragments (23.i); o Désigner, parmi l'ensemble de nœuds (2) standards, un premier groupe de nœuds (2A) et distribuer le premier conteneur (22) crypté vers le ou les nœuds (2A) standards de ce premier groupe ; o Désigner, parmi l'ensemble de nœuds (2) standards, un deuxième groupe de nœuds (2B) en nombre égal aux fragments (23.i) de la première clé (23) cryptographique de déchiffrement ; o Distribuer chaque fragment (23.i) de la première clé (23) cryptographique de déchiffrement vers un ou plusieurs nœuds (2B) standards du deuxième groupe, chacun recevant un unique fragment (23.i) ; - Hors de l'enclave (8) du nœud (2E) d'entrée standard : o Mémoriser le premier conteneur (23) crypté au sein de chaque nœud (2A) du premier groupe de nœuds standards ; o Mémoriser les fragments (23.i) de la première clé (23) cryptographique de déchiffrement au sein des nœuds (2B) du deuxième groupe de nœuds standards ; - Désigner, parmi l'ensemble de nœuds (2) miroirs, un nœud (2E') d'entrée miroir, équipé d'une unité de traitement informatique dans laquelle est implémentée une enclave (8) ; - Instancier l'enclave (8) du nœud (2E') d'entrée miroir ; - Etablir une liaison sécurisée entre l'enclave (8) du nœud (2E) d'entrée standard et l'enclave (7) du nœud (2E') d'entrée miroir ; - Relayer, via la liaison sécurisée, les données (15) depuis l'enclave (8) du nœud (2E) d'entrée standard vers l'enclave (8) du nœud (2E') d'entrée miroir ; - Dans l'enclave (8) du nœud (2E') d'entrée miroir : o Chiffrer les données (15) pour former un deuxième conteneur (28) crypté, en lui associant une deuxième clé (29) cryptographique de déchiffrement, différente de la première clé (23) cryptographique de déchiffrement ; o Fragmenter la deuxième clé (29) cryptographique de déchiffrement en un nombre prédéterminé de fragments (29.j) ; o Désigner, parmi l'ensemble de nœuds (2) miroirs, un premier groupe de nœuds (2A') et distribuer le deuxième conteneur (28) crypté vers le ou les nœuds (2A') miroirs de ce premier groupe ; o Désigner, parmi l'ensemble de nœuds (2) miroirs, un deuxième groupe de nœuds (2B') en nombre égal aux fragments (29.j) de la deuxième clé (29) cryptographique de déchiffrement ; o Distribuer chaque fragment (29.j) de la deuxième clé (29) cryptographique de déchiffrement vers un ou plusieurs nœuds (2B') miroirs du deuxième groupe, chacun recevant un unique fragment (29.j) ; - Hors de l'enclave (8) du nœud (2E') d'entrée miroir : o Mémoriser le deuxième conteneur (28) crypté au sein de chaque nœud (2A') du premier groupe de nœuds miroirs ; o Mémoriser chaque fragment (29.j) de la deuxième clé (29) cryptographique de déchiffrement sur chaque nœud (2B') du deuxième groupe de nœuds miroirs ; - Inscrire dans un bloc (4) de la chaîne (5) de blocs, par un ou plusieurs nœuds (2) du réseau (1), au moins une transaction contenant une empreinte numérique des mémorisations ainsi effectuées.1. A method of secure storage of computer data (15) within a peer-to-peer network (1) composed of a plurality of nodes (2) forming a distributed database on which is stored, by replication on each node (2), a chain (5) of blocks (4), the nodes (2) being subdivided into two disjoint sets, namely a first set (1S) of so-called standard nodes (2), and a second set ( 1M) of so-called mirror nodes (2), this method comprising the operations consisting in: - Sending, from a sender terminal (16) in which the data (15) are stored, a storage request to the network (1); - On receipt of the storage request by at least one node (2) of the network (1), select from among the set of standard nodes (2), at least one node (2E), called standard input node, equipped a computer processing unit in which an execution environment secured by cryptography, called an enclave (8) is implemented; - Instantiate the enclave (8) of the standard input node (2E); - Load the data, from the sender terminal (16) and via a secure communication line (18), to the enclave (8) of the standard input node (2E); - Enter in a block (4) of the chain (5) of blocks, by one or more nodes (2) of the network (1), at least one transaction containing a digital fingerprint of the request for storage and / or loading as well carried out; - In the enclave (8) of the standard input node (2E): o Encrypt the data (15) to form a first encrypted container (22), by associating it with a first cryptographic decryption key (23); o Fragment the first cryptographic decryption key (23) into a predetermined number of fragments (23.i); o Designate, from among the set of standard nodes (2), a first group of nodes (2A) and distribute the first encrypted container (22) to the standard node or nodes (2A) of this first group; o Designate, from among the set of standard nodes (2), a second group of nodes (2B) in number equal to the fragments (23.i) of the first cryptographic decryption key (23); o Distribute each fragment (23.i) of the first cryptographic decryption key (23) to one or more standard nodes (2B) of the second group, each receiving a single fragment (23.i); - Outside the enclave (8) of the standard input node (2E): o Store the first encrypted container (23) within each node (2A) of the first group of standard nodes; o Store the fragments (23.i) of the first cryptographic decryption key (23) within the nodes (2B) of the second group of standard nodes; - Designate, from among the set of mirror nodes (2), a mirror input node (2E '), equipped with a computer processing unit in which an enclave (8) is implemented; - Instantiate the enclave (8) of the mirror input node (2E '); - Establish a secure link between the enclave (8) of the standard input node (2E) and the enclave (7) of the mirror input node (2E '); - Relay, via the secure link, the data (15) from the enclave (8) of the standard input node (2E) to the enclave (8) of the mirror input node (2E '); - In the enclave (8) of the mirror input node (2E '): o Encrypt the data (15) to form a second encrypted container (28), by associating it with a second cryptographic decryption key (29), different from the first cryptographic decryption key (23); o Fragment the second cryptographic decryption key (29) into a predetermined number of fragments (29.j); o Designate, among the set of mirror nodes (2), a first group of nodes (2A ') and distribute the second encrypted container (28) to the mirror node (s) (2A') of this first group; o Designate, among the set of mirror nodes (2), a second group of nodes (2B ') in number equal to the fragments (29.j) of the second cryptographic decryption key (29); o Distribute each fragment (29.j) of the second cryptographic decryption key (29) to one or more mirror nodes (2B ') of the second group, each receiving a single fragment (29.j); - Outside the enclave (8) of the mirror entry node (2E '): o Store the second encrypted container (28) within each node (2A ') of the first group of mirror nodes; o Store each fragment (29.j) of the second cryptographic decryption key (29) on each node (2B ') of the second group of mirror nodes; - Enter in a block (4) of the chain (5) of blocks, by one or more nodes (2) of the network (1), at least one transaction containing a digital fingerprint of the memorizations thus carried out.
CH00745/19A 2019-06-07 2019-06-07 A method of storing computer data on a network, with double distribution over two disjoint sets of network nodes. CH716273A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CH00745/19A CH716273A2 (en) 2019-06-07 2019-06-07 A method of storing computer data on a network, with double distribution over two disjoint sets of network nodes.

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CH00745/19A CH716273A2 (en) 2019-06-07 2019-06-07 A method of storing computer data on a network, with double distribution over two disjoint sets of network nodes.

Publications (1)

Publication Number Publication Date
CH716273A2 true CH716273A2 (en) 2020-12-15

Family

ID=73727401

Family Applications (1)

Application Number Title Priority Date Filing Date
CH00745/19A CH716273A2 (en) 2019-06-07 2019-06-07 A method of storing computer data on a network, with double distribution over two disjoint sets of network nodes.

Country Status (1)

Country Link
CH (1) CH716273A2 (en)

Similar Documents

Publication Publication Date Title
EP3673620B1 (en) Shared blockchain data storage
US10892898B2 (en) Shared blockchain data storage
EP3669281B1 (en) Shared blockchain data storage
KR102151907B1 (en) Blockchain data processing and storage in a trusted execution environment
CN112491812B (en) Hash updating method and device of block chain all-in-one machine
CH716295A2 (en) A method of multiple signature of a transaction intended for a blockchain, by means of cryptographic keys distributed among the nodes of a peer-to-peer network.
CH716273A2 (en) A method of storing computer data on a network, with double distribution over two disjoint sets of network nodes.
CH716269A2 (en) A method of storing computer data by distribution on a public network, with backup on a private network having a master node equipped with an enclave.
CH716272A2 (en) A method of storing computer data by distribution on a public network, with backup on a private network having nodes equipped with enclaves.
CH716263A2 (en) A method of storing computer data by distributing an encrypted container and its fragmented decryption key on a blockchain network.
CH716262A2 (en) A method of storing computer data by distributing an encrypted container and its decryption key on separate nodes of a blockchain network.
CH716285A2 (en) Method for checking the biometric data of an individual, with registration, in a blockchain, of an analysis result.
CH716266A2 (en) A method of storing computer data on a blockchain network with proof of storage from a storage node equipped with a cryptographic enclave.
CH716261A2 (en) A method of storing computer data by distributing an encrypted container and its decryption key on a blockchain network.
CH716267A2 (en) A method of storing computer data on a blockchain network with proof of storage from a computing node equipped with a cryptographic enclave.
CH716298A2 (en) A method of storing, in encrypted form, an application on a blockchain network, with prior audit of the source code of this application.
CH716294A2 (en) Decentralized signature process, under biometric control and under conditions of personal identification and geolocation, of a transaction intended for a blockchain.
CH716293A2 (en) Decentralized signature process, under biometric control and subject to personal identification, of a transaction intended for a blockchain.
CH716284A2 (en) Process for distributed processing, within a blockchain network and sub-enclaves, of computer data encrypted with a fragmented key.
CH716264A2 (en) A method of storing computer data on a network with proof of storage obtained by a storage node equipped with a cryptographic enclave.
CH716265A2 (en) Method of storing computer data on a network with proof of storage from a compute node equipped with a cryptographic enclave.
CH716287A2 (en) Process for processing biometric data of an individual, with phases of calibration and control and registration, in a blockchain, of an analysis result.
CH716288A2 (en) Process for processing biometric data of an individual, with phases of calibration and control and registration, in a blockchain, subject to geolocation, of an analysis result.
CH716281A2 (en) A method of processing, within a blockchain and sub-enclave network, encrypted computer data by means of an encrypted application.
CH716276A2 (en) A method of processing, within a blockchain and sub-enclave network, computer data encrypted by means of an encrypted application, for an authorized third party.

Legal Events

Date Code Title Description
AZW Rejection (application)