CH716264A2 - A method of storing computer data on a network with proof of storage obtained by a storage node equipped with a cryptographic enclave. - Google Patents

A method of storing computer data on a network with proof of storage obtained by a storage node equipped with a cryptographic enclave. Download PDF

Info

Publication number
CH716264A2
CH716264A2 CH00738/19A CH7382019A CH716264A2 CH 716264 A2 CH716264 A2 CH 716264A2 CH 00738/19 A CH00738/19 A CH 00738/19A CH 7382019 A CH7382019 A CH 7382019A CH 716264 A2 CH716264 A2 CH 716264A2
Authority
CH
Switzerland
Prior art keywords
node
enclave
group
storage
decryption key
Prior art date
Application number
CH00738/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 CH00738/19A priority Critical patent/CH716264A2/en
Publication of CH716264A2 publication Critical patent/CH716264A2/en

Links

Classifications

    • 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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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
    • 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/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
    • H04L63/0478Network 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 applying multiple layers of encryption, e.g. nested tunnels or encrypting the content with a first key and then with at least a second key
    • 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
    • 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
    • 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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Abstract

L'invention concerne un procédé de stockage sécurisé de données informatiques au sein d'un groupe de nœuds ( 2A ) de stockage d'un réseau, qui comprend une phase de contrôle conduite pour partie dans une enclave ( 8 ) d'un nœud ( 2A ) de stockage, et incluant le calcul d'un condensat ( 25' ) de contrôle d'un conteneur ( 22' ) crypté et la comparaison, au sein d'une enclave ( 8 ) d'un nœud ( 2F ) de contrôle, avec un condensat ( 25 ) de référence reconstitué à partir de fragments distribués sur un autre groupe de nœuds ( 2C ).The invention relates to a method for the secure storage of computer data within a group of storage nodes (2A) of a network, which comprises a control phase conducted in part in an enclave (8) of a node ( 2A) of storage, and including the calculation of a control condensate (25 ') of an encrypted container (22') and the comparison, within an enclave (8) of a control node (2F) , with a reference condensate (25) reconstituted from fragments distributed over another group of nodes (2C).

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. A supposer que l'on empêche tout ou partie du réseau d'organiser un accès non autorisé aux données, se pose cependant le problème d'obtenir du réseau une preuve, ponctuellement ou régulièrement, que le stockage se poursuit, notamment lorsqu'il est prévu pour durer. 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. Assuming that all or part of the network is prevented from organizing unauthorized access to data, however, the problem arises of obtaining from the network proof, occasionally or regularly, that the storage is continuing, in particular when it is planned to last.

[0015] L'invention vise à offrir une solution efficace à ces problèmes, en particulier au problème de la preuve de stockage. The invention aims to offer an effective solution to these problems, in particular to the problem of proof of storage.

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 informatique comprenant une pluralité de nœuds, ce procédé comprenant : <tb><SEP>A) Une phase de distribution, qui comprend les opérations consistant à : <tb><SEP><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><SEP>- A réception de la requête de stockage par au moins un nœud du réseau, sélectionner au sein du réseau au moins un nœud, dit nœud d'entrée, é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><SEP>- Instancier l'enclave ; <tb><SEP><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 ; <tb><SEP><SEP>- Inscrire dans une entrée d'une base de données une empreinte numérique de la requête de stockage et/ou du chargement ainsi effectué ; <tb><SEP><SEP>- Dans l'enclave du nœud d'entrée : <tb><SEP><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><SEP>o Fragmenter la première clé cryptographique de déchiffrement en un nombre prédéterminé de fragments ; <tb><SEP><SEP><SEP>o Calculer un condensat, dit de référence, du premier conteneur crypté en lui appliquant une fonction de hachage prédéterminée ; <tb><SEP><SEP><SEP>o Fragmenter le condensat de référence en un nombre prédéterminé de fragments ; <tb><SEP><SEP><SEP>o Rechiffrer le premier conteneur pour former un deuxième conteneur crypté, en lui associant une deuxième clé cryptographique de déchiffrement ; <tb><SEP><SEP><SEP>o Fragmenter la deuxième clé cryptographique de déchiffrement en un nombre prédéterminé de fragments ; <tb><SEP><SEP><SEP>o Désigner, parmi le réseau, un premier groupe de nœuds de stockage équipés chacun d'une unité de traitement informatique dans laquelle est implémentée une enclave ; <tb><SEP><SEP><SEP>o Distribuer le deuxième conteneur crypté vers les nœuds du premier groupe ; <tb><SEP><SEP><SEP>o Désigner, parmi le réseau, un deuxième groupe de nœuds de stockage en nombre égal aux fragments de la première clé cryptographique de déchiffrement ; <tb><SEP><SEP><SEP>o Distribuer chaque fragment de la première clé cryptographique de déchiffrement vers un nœud du deuxième groupe, chaque nœud du deuxième groupe recevant un unique fragment ; <tb><SEP><SEP><SEP>o Désigner, parmi le réseau, un troisième groupe de nœuds de stockage en nombre égal aux fragments du condensat de référence ; <tb><SEP><SEP><SEP>o Distribuer chaque fragment du condensat de référence vers un nœud du troisième groupe, chaque nœud du troisième groupe recevant un unique fragment ; <tb><SEP><SEP><SEP>o Désigner, parmi le réseau, un quatrième groupe de nœuds de stockage en nombre égal aux fragments de la deuxième clé cryptographique de déchiffrement ; <tb><SEP><SEP><SEP>o Distribuer chaque fragment de la deuxième clé de déchiffrement vers un nœud du quatrième groupe, chaque nœud du quatrième groupe recevant un unique fragment ; <tb><SEP><SEP>- Hors de l'enclave du nœud d'entrée : <tb><SEP><SEP><SEP>o Mémoriser le deuxième conteneur crypté au sein de chaque nœud de stockage du premier groupe ; <tb><SEP><SEP><SEP>o Mémoriser chaque fragment de la première clé cryptographique de déchiffrement au sein de chaque nœud de stockage du deuxième groupe ; <tb><SEP><SEP><SEP>o Mémoriser chaque fragment du condensat de référence au sein de chaque nœud de stockage du troisième groupe ; <tb><SEP><SEP><SEP>o Mémoriser chaque fragment de la deuxième clé cryptographique de déchiffrement au sein de chaque nœud de stockage du quatrième groupe ; <tb><SEP><SEP>- Inscrire dans une entrée de la base de données une ou des empreintes numériques de ces distributions ou de ces mémorisations ; <tb><SEP>B) Une phase de contrôle, qui comprend la désignation, parmi les nœuds du réseau, d'un nœud de contrôle équipé d'une unité de traitement informatique dans laquelle est implémentée une enclave, et, pour chaque nœud de stockage du premier groupe, les opérations consistant à : <tb><SEP><SEP>- Instancier l'enclave du nœud de stockage ; <tb><SEP><SEP>- Instancier l'enclave du nœud de contrôle ; <tb><SEP><SEP>- Etablir une liaison sécurisée entre l'enclave du nœud de contrôle et l'enclave du nœud de stockage ; <tb><SEP><SEP>- Dans l'enclave du nœud de contrôle : <tb><SEP><SEP><SEP>o Charger, à partir d'un nombre prédéterminé de nœuds du troisième groupe, des fragments du condensat de référence ; <tb><SEP><SEP><SEP>o Reconstituer le condensat de référence à partir de ces fragments ; <tb><SEP><SEP><SEP>o Charger, à partir d'un nombre prédéterminé de nœuds du quatrième groupe, des fragments de la deuxième clé cryptographique de déchiffrement ; <tb><SEP><SEP><SEP>o Reconstituer la deuxième clé cryptographique de déchiffrement à partir de ces fragments ; <tb><SEP><SEP><SEP>o Transmettre la deuxième clé cryptographique de déchiffrement à l'enclave du nœud de stockage ; <tb><SEP><SEP>- Dans l'enclave du nœud de stockage : <tb><SEP><SEP><SEP>o Charger le deuxième conteneur crypté à partir d'un emplacement mémoire situé hors de l'enclave ; <tb><SEP><SEP><SEP>o Déchiffrer le deuxième conteneur crypté au moyen de la deuxième clé cryptographique de déchiffrement reçue de l'enclave du nœud de contrôle, pour reconstituer une copie du premier conteneur crypté ; <tb><SEP><SEP><SEP>o Calculer un condensat, dit de contrôle, de cette copie du premier conteneur crypté ; <tb><SEP><SEP><SEP>o Transmettre le condensat de contrôle à l'enclave du nœud de contrôle ; <tb><SEP><SEP>- Dans l'enclave du nœud de contrôle, comparer le condensat de contrôle au condensat de référence ; <tb><SEP><SEP>- Hors de l'enclave, inscrire le résultat de cette comparaison ou une empreinte de ce résultat dans une entrée de la base de données.There is proposed a method for secure storage of computer data within a computer network comprising a plurality of nodes, this method comprising: <tb> <SEP> A) A distribution phase, which comprises the operations consisting in: <tb><SEP> <SEP> - Send, from a sending terminal in which the data is stored, a storage request to the network; <tb><SEP> <SEP> - On receipt of the storage request by at least one node of the network, select within the network at least one node, called entry node, equipped with a computer processing unit in which is implemented an execution environment secured by cryptography, called enclave; <tb><SEP> <SEP> - Instantiate the enclave; <tb><SEP> <SEP> - Load the data, from the sending terminal and via a secure communication line, to the enclave of the input node; <tb><SEP> <SEP> - Enter in an entry of a database a digital fingerprint of the storage request and / or the loading thus performed; <tb><SEP> <SEP> - In the entry node enclave: <tb><SEP><SEP> <SEP> o Encrypt the data to form a first encrypted container, by associating it with a first cryptographic decryption key; <tb><SEP><SEP> <SEP> o Fragment the first cryptographic decryption key into a predetermined number of fragments; <tb><SEP><SEP> <SEP> o Calculate a so-called reference hash of the first encrypted container by applying a predetermined hash function to it; <tb><SEP><SEP> <SEP> o Fragment the reference hash into a predetermined number of fragments; <tb><SEP><SEP> <SEP> o Re-encrypt the first container to form a second encrypted container, by associating it with a second cryptographic decryption key; <tb><SEP><SEP> <SEP> o Fragment the second cryptographic decryption key into a predetermined number of fragments; <tb><SEP><SEP> <SEP> o Designate, among the network, a first group of storage nodes each equipped with a computer processing unit in which an enclave is implemented; <tb><SEP><SEP> <SEP> o Distribute the second encrypted container to the nodes of the first group; <tb><SEP><SEP> <SEP> o Designate, among the network, a second group of storage nodes in a number equal to the fragments of the first cryptographic decryption key; <tb><SEP><SEP> <SEP> o Distribute each fragment of the first cryptographic decryption key to a node of the second group, each node of the second group receiving a unique fragment; <tb><SEP><SEP> <SEP> o Designate, among the network, a third group of storage nodes in a number equal to the fragments of the reference condensate; <tb><SEP><SEP> <SEP> o Distribute each fragment of the reference hash to a node of the third group, each node of the third group receiving a unique fragment; <tb><SEP><SEP> <SEP> o Designate, among the network, a fourth group of storage nodes in a number equal to the fragments of the second cryptographic decryption key; <tb><SEP><SEP> <SEP> o Distribute each fragment of the second decryption key to a node of the fourth group, each node of the fourth group receiving a unique fragment; <tb><SEP> <SEP> - Outside the entry node enclave: <tb><SEP><SEP> <SEP> o Store the second encrypted container within each storage node of the first group; <tb><SEP><SEP> <SEP> o Store each fragment of the first decryption cryptographic key within each storage node of the second group; <tb><SEP><SEP> <SEP> o Store each fragment of the reference condensate within each storage node of the third group; <tb><SEP><SEP> <SEP> o Memorize each fragment of the second cryptographic decryption key within each storage node of the fourth group; <tb><SEP> <SEP> - Enter in a database entry one or more digital fingerprints of these distributions or these memorizations; <tb> <SEP> B) A control phase, which comprises the designation, among the nodes of the network, of a control node equipped with a computer processing unit in which an enclave is implemented, and, for each node of the first group, the operations consisting in: <tb><SEP> <SEP> - Instantiate the storage node enclave; <tb><SEP> <SEP> - Instantiate the control node enclave; <tb><SEP> <SEP> - Establish a secure link between the enclave of the control node and the enclave of the storage node; <tb><SEP> <SEP> - In the control node enclave: <tb><SEP><SEP> <SEP> o Load, from a predetermined number of nodes of the third group, fragments of the reference condensate; <tb><SEP><SEP> <SEP> o Reconstitute the reference condensate from these fragments; <tb><SEP><SEP> <SEP> o Load, from a predetermined number of nodes of the fourth group, fragments of the second cryptographic decryption key; <tb><SEP><SEP> <SEP> o Reconstitute the second cryptographic decryption key from these fragments; <tb><SEP><SEP> <SEP> o Transmit the second cryptographic decryption key to the storage node enclave; <tb><SEP> <SEP> - In the storage node enclave: <tb><SEP><SEP> <SEP> o Load the second encrypted container from a memory location located outside the enclave; <tb><SEP><SEP> <SEP> o Decrypt the second encrypted container using the second decryption cryptographic key received from the enclave of the control node, to reconstitute a copy of the first encrypted container; <tb><SEP><SEP> <SEP> o Calculate a condensate, known as control, of this copy of the first encrypted container; <tb><SEP><SEP> <SEP> o Transmit the control condensate to the control node enclave; <tb><SEP> <SEP> - In the control node enclave, compare the control condensate with the reference condensate; <tb><SEP> <SEP> - Outside the enclave, write the result of this comparison or a fingerprint of this result in an entry of the database.

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 informatique sur lequel est mémorisée une base de données ; <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 d'une phase de contrôle 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 functional diagram illustrating a computer network on which a database is stored; <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 a control phase of the storage process.

DESCRIPTION DETAILLEE DE L'INVENTIONDETAILED DESCRIPTION OF THE INVENTION

[0018] Sur laFIG.1est représenté un réseau1informatique qui est avantageusement du type pair-à-pair, et qui comprend des nœuds2communiquant par des liaisons3. 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. On theFIG.1is shown a network1informatique which is advantageously of the peer-to-peer type, and which comprises nodes2communicating by links3. 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.

[0019] 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. [0019] The nodes2 can be scattered over large geographic regions; they can also be grouped into smaller geographic regions.

[0020] Sur au moins l'un des nœuds2sont mémorisées des entrées4d'une base de données5, qui, selon un mode particulier de réalisation, peut être distribuée sur tout ou partie des nœuds. On at least one of the nodes2 are stored entries4d'a database5, which, according to a particular embodiment, can be distributed over all or part of the nodes.

[0021] Cette base de données5sert ici à mémoriser des traces d'un procédé de stockage de données, dont certaines des opérations reposent sur l'exploitation de fonctionnalités d'environnements d'exécution sécurisé. This database 5 is used here to store traces of a data storage process, some of the operations of which are based on the use of functionalities of secure execution environments.

[0022] Un environnement d'exécution sécurisé (Trusted exécution 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 computing and data storage space. , 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.

[0023] 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). [0023] 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).

[0024] 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 fall 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.

[0025] 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. [0025] 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.

[0026] 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 enclave8 includes, 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.

[0027] L'enclave8comprend, en deuxième lieu, des clés cryptographiques 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). [0027] The enclave8 comprises, secondly, cryptographic keys used to encrypt or sign on the fly the data leaving the EPC9, whereby the enclave8 can be identified (in particular by other enclaves), and the The data it generates can be encrypted to be stored in unprotected memory areas (i.e. outside of the EPC9).

[0028] 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 part(s)). In order to be able to operate such an enclave8, an application11 must be segmented into, on the one hand, one or more unsecured parts12 (untrusted part (s)), and, on the other hand, one or more secure parts13 (in English trusted part (s)).

[0029] 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).

[0030] 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.

[0031] 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.[0031] 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.

[0032] On a, sur laFIG.2, représenté de manière fonctionnelle l'enclave8sous 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 enclave8sous in the form of a block (in dotted lines) including the secure part13 of the application11, the set14d'instructions of the processor7, and the EPC9. This representation is not realistic; it simply aims to visually group together the elements that make up or exploit the enclave8.

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

[0034] Les nœuds2du réseau1étant tous équipés de zones mémoires, celles-ci peuvent être exploitées en tant qu'espace de stockage pour des données15issues d'un terminal16émetteur (ici représenté sous forme d'un smartphone) relié au réseau1. Pour minimiser le risque de perte des données15, il est avantageux de procéder à une réplication de celles-ci, c'est-à-dire d'effectuer une copie des données15, et de distribuer une copie à plusieurs nœuds2du réseau1. La traçabilité des données15peut être réalisée par inscription, dans au moins une entrée4de la base de données5, d'une ou plusieurs empreintes numériques des mémorisations ainsi effectuées. The nodes2du network1 being all equipped with memory areas, these can be used as storage space for data15 from a terminal16emitter (here shown in the form of a smartphone) connected to the network1. To minimize the risk of data loss15, it is advantageous to perform a replication of the data, that is to say to make a copy of the data15, and to distribute a copy to several nodes2 of the network1. Data traceability15 can be achieved by entering, in at least one entry4 of the database5, one or more digital fingerprints of the memorizations thus made.

[0035] Si la réplication des données15au sein du réseau1résout le problème de la pérennité des données15, il ne résout pas le problème de leur confidentialité. If the replication of the data15 within the network1 resolves the problem of the durability of the data15, it does not solve the problem of their confidentiality.

[0036] Procéder à un chiffrement des données15au niveau du terminal16émetteur (lequel stockerait une clé de déchiffrement des données) résoudrait le problème de la confidentialité vis-à-vis des tiers non autorisés (sauf à admettre que la clé de déchiffrement pourrait être copiée par un tiers non autorisé à partir du terminal 16 émetteur), mais ne garantirait cependant pas que les données demeureraient accessibles par le terminal16émetteur lui-même, dans l'hypothèse - qui est réaliste en pratique - où la clé cryptographique serait perdue ou corrompue. Encrypting the data15 at the level of the transmitter terminal16 (which would store a data decryption key) would solve the problem of confidentiality vis-à-vis unauthorized third parties (except to admit that the decryption key could be copied by an unauthorized third party from the sender terminal 16), but would not however guarantee that the data would remain accessible by the sender terminal 16 itself, in the hypothesis - which is realistic in practice - where the cryptographic key is lost or corrupted.

[0037] Se contenter de distribuer les données15cryptées parmi des nœuds2du réseau1peut sembler insuffisant : il apparaît en effet nécessaire de procéder à un contrôle (ponctuel ou régulier), aux fins de vérifier que les données sont effectivement stockées - et qu'elles continuent de l'être - par les nœuds2. Simply distributing the encrypted data15 among nodes2 of the network1 may seem insufficient: it indeed appears necessary to carry out a check (one-off or regular), in order to verify that the data is actually stored - and that it continues to be there. 'being - by nodes2.

[0038] A cet effet, il est ici proposé un procédé de stockage des données15en deux phases, à savoir : Une phase de distribution des données15sur le réseau1 ; Une phase de contrôle que les données15sont effectivement stockées sur le réseau1.To this end, a two-phase data storage method is proposed here, namely: A data distribution phase15 on the network1; A phase of checking that the data15 is actually stored on the network1.

[0039] Lors de la phase de distribution, ce sont non seulement les données15qui sont distribuées (sous forme cryptée), mais également des clés de déchiffrement de celles-ci, via une enclave8instanciée sur un nœud2E, dit nœud d'entrée, du réseau1(FIG.3). During the distribution phase, it is not only the data15 which are distributed (in encrypted form), but also the decryption keys thereof, via an enclave8 instantiated on a node2E, called entry node, of the network1 (FIG. 3).

[0040] A cet effet, une opération préliminaire de la phase de distribution 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. To this end, a preliminary operation of the distribution phase consists, from the transmitter terminal16 in which the data15 is stored, in transmitting a storage request for the data15 to the network1.

[0041] A réception de la requête de stockage par au moins un nœud2du réseau1, il est sélectionné, au sein du réseau1, au moins un nœud2Ed'entrée, équipé d'une unité de traitement informatique dans laquelle est implémentée une enclave8. On receipt of the storage request by at least one node2du network1, it is selected, within network1, at least one input node2E, equipped with a computer processing unit in which an enclave8 is implemented.

[0042] Cette enclave8est alors instanciée, 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. This enclave8est then instantiated, and the data15y are loaded from the emitting terminal16 and via a secure communication line17 (eg using the Transport Layer Security or TLS protocol). 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.

[0043] L'enclave8est avantageusement pourvue d'un module19d'interface avec la base de données5, apte à interroger celle-ci ou à y inscrire des données dans des entrées4. The enclave8est advantageously provided with a module19d'interface with the database5, able to interrogate the latter or to write data therein in entries4.

[0044] Une information20contenant une empreinte numérique du chargement des données15ainsi effectué est ici inscrite dans une entrée4de la base de données5, aux fins de traçabilité. An item of information20containing a digital imprint of the loading of the data15 thus carried out is entered here in an entry4of the database5, for the purposes of traceability.

[0045] Cette information20peut être transmise au module19d'interface par le terminal16émetteur, pour être inscrite (typiquement par un ou plusieurs nœuds2du réseau1) dans une entrée4de la base de données5. En variante, le module19d'interface émet de lui-même une information20pour inscription dans une entrée4. This information20 can be transmitted to the interface module19 by the emitter terminal16, to be registered (typically by one or more nodes2 of the network1) in an entry4 of the database5. As a variant, the interface module itself sends information 20 for registration in an entry 4.

[0046] Dans l'enclave8du nœud d'entrée se déroulent alors les opérations suivantes. In the enclave8du entry node then take place the following operations.

[0047] Une première opération consiste à chiffrer les données15au moyen d'une première clé21cryptographique de chiffrement pour former un premier conteneur22crypté, en lui associant une première clé23cryptographique de 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'enclave8. A first operation consists in encrypting the data15 by means of a first encryption cryptographic key21 to form a first encrypted container22, by associating it with a first cryptographic decryption key. To this end, the data 15 received from the emitting terminal 16 are relayed by the communication interface 18 to an encryption module 24 implemented in the enclave 8.

[0048] 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é. [0048] 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.

[0049] 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).

[0050] Selon un mode préféré de réalisation, N est tel que N>3 et la fragmentation de la première clé23de déchiffrement 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 K entier prédéterminé (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 of the first decryption key 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 scheme, where a predetermined integer number K (1 <K <N) is chosen such that a number K of fragments23.isont sufficient to reconstitute the first decryption key23.

[0051] Une troisième opération consiste à calculer un condensat25, dit de référence, du premier conteneur22, en lui appliquant une fonction de hachage prédéterminée - typiquement SHA-256. A third operation consists in calculating a so-called reference condensate25 of the first container22, by applying to it a predetermined hash function - typically SHA-256.

[0052] Une quatrième opération consiste à fragmenter le condensat25de référence en un nombre prédéterminé M de fragments25.j(j un entier, 2≤j≤M). A fourth operation consists in fragmenting the reference condensate 25de into a predetermined number M of fragments25.j (j an integer, 2≤j≤M).

[0053] Selon un mode préféré de réalisation, M est tel que M>3 et la fragmentation du condensat25est réalisée en application des règles de Shamir, et plus précisément du schéma seuil, où un nombre entier prédéterminé L (1<L<M) est choisi tel qu'un nombre L de fragments25.jsont suffisants pour reconstituer le condensat25. According to a preferred embodiment, M is such that M> 3 and the fragmentation of the condensate is carried out in application of Shamir's rules, and more precisely of the threshold diagram, where a predetermined integer L (1 <L <M) is chosen such that a number L of fragments25.j are sufficient to reconstitute the condensate25.

[0054] Une cinquième opération consiste à rechiffrer le premier conteneur22(déjà crypté) au moyen d'une deuxième clé26cryptographique de chiffrement pour former un deuxième conteneur27crypté (deux fois, donc), en lui associant une deuxième clé28cryptographique de déchiffrement. A fifth operation consists in re-encrypting the first container22 (already encrypted) by means of a second cryptographic encryption key26 to form a second encrypted container27 (twice, therefore), by associating it with a second cryptographic decryption key28.

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

[0056] Une sixième opération consiste à fragmenter la deuxième clé28de déchiffrement. Plus précisément, la deuxième clé28de déchiffrement est fragmentée en un nombre P prédéterminé de fragments28.k(k un entier, 2≤k≤P). A sixth operation consists in fragmenting the second decryption key. More precisely, the second decryption key28 is fragmented into a predetermined number P of fragments28.k (k an integer, 2≤k≤P).

[0057] Selon un mode préféré de réalisation, P est tel que P>3 et la fragmentation de la deuxième clé28de déchiffrement est réalisée en application des règles de Shamir, et plus précisément du schéma seuil, où un nombre entier prédéterminé Q (1<Q<P) est choisi tel qu'un nombre Q de fragments28.ksont suffisants pour reconstituer la deuxième clé28de déchiffrement. According to a preferred embodiment, P is such that P> 3 and the fragmentation of the second decryption key is carried out by applying Shamir's rules, and more precisely of the threshold scheme, where a predetermined integer Q (1 < Q <P) is chosen such that a number Q of fragments28.k are sufficient to reconstitute the second decryption key28.

[0058] Une septième opération consiste à désigner, parmi le réseau1, un premier groupe de nœuds2Ade stockage. A seventh operation consists in designating, among the network1, a first group of storage nodes2A.

[0059] Une huitième opération consiste à distribuer le deuxième conteneur27crypté vers les nœuds2Ade stockage du premier groupe. An eighth operation consists in distributing the second encrypted container27 to the storage nodes2Ade of the first group.

[0060] A cet effet, l'enclave8est avantageusement pourvue d'un module29de distribution de données, auquel le module24de chiffrement communique le deuxième conteneur27crypté pour distribution aux nœuds2Ade stockage du premier groupe. To this end, the enclave8est advantageously provided with a data distribution module29, to which the encryption module24 communicates the second encrypted container27 for distribution to the storage nodes2A of the first group.

[0061] Une neuvième opération consiste à désigner, parmi le réseau1, un deuxième groupe de nœuds2Bde stockage, en nombre N égal au nombre de fragments23.ide la première clé23de déchiffrement. A ninth operation consists in designating, among the network1, a second group of storage nodes2B, in number N equal to the number of fragments23.ide the first decryption key23.

[0062] Ce deuxième groupe de nœuds2Bde stockage est de préférence disjoint du premier groupe de nœuds2Ade stockage (comme illustré en pointillés sur laFIG.3). This second group of storage nodes2B is preferably separate from the first group of storage nodes2A (as illustrated in dotted lines on FIG. 3).

[0063] Une dixième opération consiste à distribuer les fragments23.ide la première clé23cryptographique de déchiffrement vers les nœuds2Bde stockage du deuxième groupe, chaque nœud2Bde stockage du deuxième groupe recevant un unique fragment23.i. A tenth operation consists in distributing the fragments23.ide the first cryptographic decryption key23 to the storage nodes2B of the second group, each storage node2B of the second group receiving a single fragment23.i.

[0064] Selon un mode préféré de réalisation, l'enclave8est pourvue d'un module30de fragmentation et de distribution, auquel le module24de chiffrement communique la première clé23de déchiffrement pour fragmentation et distribution aux nœuds2Bde stockage du deuxième groupe. According to a preferred embodiment, the enclave8est provided with a fragmentation and distribution module30, to which the encryption module24 communicates the first decryption key23 for fragmentation and distribution to the storage nodes2B of the second group.

[0065] Une onzième opération consiste à désigner, parmi le réseau1, un troisième groupe de nœuds2Cde stockage en nombre M égal aux fragments25.jdu condensat25de référence. An eleventh operation consists in designating, among the network1, a third group of storage nodes2C in number M equal to the fragments25.jdu condensate25de reference.

[0066] Une douzième opération consiste à distribuer chaque fragment25.jdu condensat25de référence vers un nœud2Cdu troisième groupe, chaque nœud2Cdu troisième groupe recevant un unique fragment25.j. A twelfth operation consists in distributing each fragment25.jdu condensate25de reference to a node2C of the third group, each node2C of the third group receiving a single fragment25.j.

[0067] Ce troisième groupe de nœuds2Cde stockage est de préférence disjoint du premier groupe de nœuds2Ade stockage et du deuxième groupe de nœuds2Bde stockage (comme illustré en pointillés sur laFIG.3). This third group of storage nodes2C is preferably separate from the first group of storage nodes2A and from the second group of storage nodes2B (as illustrated in dotted lines in Fig.3).

[0068] Une treizième opération consiste à désigner, parmi le réseau1, un quatrième groupe de nœuds2Dde stockage en nombre P égal aux fragments28.kde la deuxième clé28cryptographique de déchiffrement. A thirteenth operation consists in designating, among the network1, a fourth group of storage nodes2D in number P equal to the fragments28.kde of the second cryptographic decryption key28.

[0069] Ce quatrième groupe de nœuds2Dde stockage est de préférence disjoint du premier groupe de nœuds2Ade stockage, du deuxième groupe de nœuds2Bde stockage et du troisième groupe de nœuds2Cde stockage (comme illustré en pointillés sur laFIG.3). This fourth group of storage nodes2D is preferably separate from the first group of storage nodes2A, from the second group of storage nodes2B and from the third group of storage nodes2C (as illustrated in dotted lines in Fig.3).

[0070] Une quatorzième opération consiste à distribuer chaque fragment28.kde la deuxième clé28de déchiffrement vers un nœud2Ddu quatrième groupe, chaque nœud2Dde stockage du quatrième groupe recevant un unique fragment28.k. A fourteenth operation consists in distributing each fragment28.kde the second decryption key28 to a node2D of the fourth group, each storage node2D of the fourth group receiving a unique fragment28.k.

[0071] Ces opérations achevées, l'enclave8peut être refermée. These operations completed, the enclave8 can be closed.

[0072] Hors de l'enclave8, les opérations suivantes sont réalisées : <tb><SEP>oLe deuxième conteneur27crypté est mémorisé au sein de chaque nœud2Ade stockage 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œud2Brespectif de stockage du deuxième groupe ; <tb><SEP>o Chaque fragment25.jdu condensat25de référence est mémorisé au sein de chaque nœud2Crespectif de stockage du troisième groupe ; <tb><SEP>o Chaque fragment28.kde la deuxième clé28cryptographique de déchiffrement est stocké au sein de chaque nœud2Drespectif de stockage du quatrième groupe.Outside the enclave8, the following operations are carried out: <tb> <SEP> oThe second encrypted container27 is stored within each storage node2A of the first group; <tb> <SEP> o Each fragment23.ide the first decryption cryptographic key23 is stored within each respective storage node2B of the second group; <tb> <SEP> o Each fragment25.jdu reference condensate25 is stored within each respective storage node2 of the third group; <tb> <SEP> o Each fragment28.k of the second decryption cryptographic key28 is stored within each respective storage node2 of the fourth group.

[0073] Pour assurer la traçabilité de ces opérations, au moins une information contenant une empreinte numérique des distributions ou des mémorisations ainsi effectuées est avantageusement inscrite dans une entrée4de la base de données5. Cette information peut être transmise par les nœuds2A,2B,2Cet2Dde stockage, mais elle peut également être transmise par l'enclave8elle-même (et plus précisément par le module19d'interface) avant sa fermeture. To ensure the traceability of these operations, at least one item of information containing a digital imprint of the distributions or memorizations thus carried out is advantageously recorded in an entry4 of the database5. This information can be transmitted by the storage nodes2A, 2B, 2Cet2D, but it can also be transmitted by the enclave8 itself (and more precisely by the interface module19) before it is closed.

[0074] Comme on l'a déjà suggéré, il est important de s'assurer que les données15sont effectivement stockées sur les nœuds2Ade stockage du réseau1. Plus précisément, il est souhaitable d'obtenir (ponctuellement ou régulièrement) de la part de chaque nœud2Ala preuve que ce stockage est effectivement maintenu, sans toutefois permettre à un quelconque nœud2Adu premier groupe d'accéder aux données15qu'il stocke sous la forme doublement cryptée du deuxième conteneur27. As has already been suggested, it is important to ensure that the data15 are actually stored on the storage nodes2A of the network1. More precisely, it is desirable to obtain (occasionally or regularly) from each node2A proof that this storage is effectively maintained, without however allowing any node2A of the first group to access the data15 that it stores in the doubly encrypted form. of the second container27.

[0075] A cet effet, la phase de contrôle comprend une succession d'opérations, décrites ci-après en référence à laFIG.4. For this purpose, the control phase comprises a succession of operations, described below with reference to the FIG.4.

[0076] Une opération préalable consiste à désigner (DES), parmi les nœuds2du réseau1, un nœud2Fde contrôle équipé d'une unité de traitement informatique dans laquelle est implémentée une enclave8. A preliminary operation consists in designating (DES), among the nodes2du network1, a control node2F equipped with a computer processing unit in which an enclave8 is implemented.

[0077] Ensuite, pour chaque nœud2Ade stockage du premier groupe, tel que désigné (DES) successivement, la phase de contrôle comprend la répétition des opérations suivantes. Then, for each storage node 2Ade of the first group, as designated (DES) successively, the control phase comprises the repetition of the following operations.

[0078] Une première opération consiste à instancier l'enclave8du nœud2Fde contrôle. A first operation consists in instantiating the enclave8du node2Fde control.

[0079] Une deuxième opération consiste à instancier l'enclave8du nœud2Ade stockage. A second operation consists in instantiating the enclave8du storage node2A.

[0080] Une troisième opération consiste à établir une liaison sécurisée entre l'enclave8du nœud2Fde contrôle et l'enclave8du nœud2Ade stockage. A third operation consists in establishing a secure link between the enclave8du node2Fde control and the enclave8du node2Ade storage.

[0081] Une quatrième opération consiste, pour le nœud2Fde contrôle, à requérir (REQ) auprès de P nœuds2Dde stockage du quatrième groupe, P fragments28.k(trois dans l'exemple purement illustratif de laFIG.4) de la deuxième clé28de déchiffrement. A fourth operation consists, for the control node2F, in requesting (REQ) from P storage nodes2D of the fourth group, P fragments28.k (three in the purely illustrative example of laFIG.4) of the second decryption key28.

[0082] Une cinquième opération consiste à charger ces P fragments28.kde la deuxième clé28de chiffrement dans l'enclave8du nœud2Fde contrôle. A fifth operation consists in loading these P fragments28.kde the second encryption key28 in the enclave8du node2Fde control.

[0083] Une sixième opération consiste à reconstituer, dans l'enclave8du nœud2Fde contrôle, la deuxième clé28de déchiffrement à partir des P fragments28.kainsi chargés. A sixth operation consists in reconstituting, in the enclave8du control node2F, the second decryption key28 from the P fragments28.k thus loaded.

[0084] Une septième opération consiste, depuis l'enclave8du nœud2Fde contrôle, à transmettre à l'enclave8du nœud2Ade stockage la deuxième clé28de déchiffrement ainsi reconstituée. A seventh operation consists, from the enclave8du control node2F, in transmitting to the enclave8du storage node2A the second decryption key28 thus reconstituted.

[0085] Une huitième opération consiste, pour le nœud2Fde contrôle, à requérir (REQ) L fragments25.jdu condensat25de référence An eighth operation consists, for the control node2F, in requesting (REQ) L fragments25.jdu condensate25de reference

[0086] Une neuvième opération consiste à charger ces L fragments25.jdu condensat25de référence dans l'enclave8du nœud2Fde contrôle. A ninth operation consists in loading these L fragments25.jdu condensate25de reference in the enclave8du node2Fde control.

[0087] Une dixième opération consiste à reconstituer, dans l'enclave8du nœud2Fde contrôle, le condensat25de référence à partir des L fragments25.jainsi chargés. A tenth operation consists in reconstituting, in the enclave8du node2Fde control, the reference condensate25de from the L fragments25.jainsi charged.

[0088] Une onzième opération consiste à charger dans l'enclave8du nœud2Ade stockage, à partir d'un emplacement mémoire situé hors de l'enclave8, le deuxième conteneur27crypté. An eleventh operation consists in loading into the storage enclave8du node2A, from a memory location located outside the enclave8, the second encrypted container27.

[0089] Une douzième opération consiste, dans l'enclave8du nœud2Ade stockage, à déchiffrer le deuxième conteneur27crypté, au moyen de la deuxième clé28de déchiffrement reçue de l'enclave8du nœud2Fde contrôle, pour reconstituer une copie22'du premier conteneur22crypté. A twelfth operation consists, in the enclave8du storage node2A, in decrypting the second encrypted container27, by means of the second decryption key28 received from the enclave8du node2Fde control, to reconstitute a copy22 'of the first encrypted container22.

[0090] Une treizième opération consiste, dans l'enclave8du nœud2Ade stockage, à calculer un condensat25', dit de contrôle, de cette copie22'du premier conteneur22crypté, par la même méthode que celle utilisée pour le calcul du condensat25de référence à partir de l'original du premier conteneur22crypté (ici SHA-256). A thirteenth operation consists, in the enclave8du storage node2A, in calculating a condensate25 ', said to be control, of this copy22' of the first encrypted container22, by the same method as that used for the calculation of the reference condensate25 from the 'original of the first encrypted container (here SHA-256).

[0091] Une quatorzième opération consiste, à partir de l'enclave8du nœud2Ade stockage, à transmettre à l'enclave8du nœud2Fde contrôle, le condensat25'de contrôle ainsi calculé. A fourteenth operation consists, from the enclave8du storage node2A, in transmitting to the enclave8du control node2F, the control condensate25'de thus calculated.

[0092] Une quinzième opération consiste, dans l'enclave8du nœud2Fde contrôle, à comparer (=) le condensat25'de contrôle au condensat25de référence. Si les deux condensat25',25sont égaux (résultat Y), cela signifie que la copie22'du premier conteneur22crypté correspond à l'original, et que le nœud2Ade stockage stocke effectivement le deuxième conteneur27, et ce sans altération de son contenu. A fifteenth operation consists, in the enclave8du control node2F, in comparing (=) the control condensate 25 ′ to the reference condensate 25. If the two hashs25 ', 25are equal (result Y), this means that the copy22' of the first encrypted container22 corresponds to the original, and that the storage node2A effectively stores the second container27, and this without altering its content.

[0093] Si au contraire les deux condensats25',25sont différents (résultat N), cela signifie que la copie22'du premier conteneur22crypté ne correspond pas à l'original, que par conséquent le nœud2Ade stockage ne stocke pas correctement le deuxième conteneur27, et qu'il est donc probable que les données15qu'il contient soient, a minima, corrompues. If, on the contrary, the two condensates25 ', 25 are different (result N), this means that the copy22' of the first encrypted container22 does not correspond to the original, that consequently the storage node2A does not correctly store the second container27, and that it is therefore likely that the data it contains are, at the very least, corrupted.

[0094] Dans les deux cas, hors de l'enclave8(tant du nœud2Ade stockage que du nœud2Fde contrôle), une opération supplémentaire consiste à inscrire, dans une entrée4de la base de données5, au moins une empreinte numérique de ce résultat (ici Y ou N). In both cases, outside the enclave8 (both of the storage node2A and of the control node2F), an additional operation consists of entering, in an entry4 of the database5, at least one digital fingerprint of this result (here Y or N).

[0095] Le procédé qui vient d'être décrit présente les avantages suivants. The method which has just been described has the following advantages.

[0096] Premièrement, le double chiffrement des données15limite drastiquement les risques d'accès non autorisé à celles-ci par un nœud2Ade stockage ou par un tiers ayant obtenu indûment le deuxième conteneur27crypté : il est en effet nécessaire d'obtenir Q fragments28.kde la deuxième clé28de déchiffrement et K fragments23.ide la première clé23de déchiffrement pour parvenir à extraire les données15du deuxième conteneur27crypté. Le succès d'une telle procédure est hautement improbable, car elle requiert des moyens de calcul prohibitifs. First, the double encryption of data15 drastically limits the risks of unauthorized access to them by a storage node2A or by a third party having improperly obtained the second encrypted container27: it is indeed necessary to obtain Q fragments28.k from the second decryption key28 and K fragments23.ide the first decryption key23 to extract the data15from the second encrypted container27. The success of such a procedure is highly improbable, as it requires prohibitive means of calculation.

[0097] Deuxièmement, le double chiffrement permet, via les enclaves8instanciées temporairement, lors de la phase de contrôle, dans le nœud2Fde contrôle et dans le nœud2Ade stockage, de reconstituer temporairement dans le nœud2Ade stockage une copie22'du premier conteneur22crypté pour en extraire le condensat de contrôle25'et, grâce à celui-ci, de prouver de manière non seulement simple, mais encore et surtout confidentielle, que le stockage des données15(au sein du deuxième conteneur27) se poursuit effectivement dans le nœud2Ade stockage. Second, the double encryption allows, via the temporarily instantiated enclaves8, during the control phase, in the control node2F and in the storage node2A, to temporarily reconstitute in the storage node2A a copy22 'of the first encrypted container22 in order to extract the condensate. control25 'and, thanks to this, to prove in a way that is not only simple, but also and above all confidential, that the storage of data15 (within the second container27) is actually continuing in the storage node2A.

[0098] Un nœud2Ade stockage ayant fourni cette preuve peut être considéré comme fiable et maintenu parmi le premier groupe. A contrario, un nœud2Ade stockage qui n'aurait pas fourni cette preuve doit être considéré comme défaillant et éliminé du premier groupe. Dans ce cas, il est possible de remplacer le(s) nœud(s) défaillant(s) ainsi détecté(s) par un (des) nouveau(x) nœud(s)2Ade stockage enrôlé(s) dans le premier groupe, et vers lequel (lesquels) le deuxième conteneur27est redéployé à partir d'une copie disponible sur l'un des nœuds2Ade stockage réputés fiables. A storage node2A having provided this proof can be considered reliable and maintained among the first group. Conversely, a storage node2A which would not have provided this proof must be considered as faulty and eliminated from the first group. In this case, it is possible to replace the faulty node (s) thus detected with a new 2A storage node (s) enrolled in the first group, and to which (which) the second container27 is redeployed from a copy available on one of the storage nodes2A deemed reliable.

Claims (4)

1. Procédé de stockage sécurisé de données (15) informatiques au sein d'un réseau (1) informatique comprenant une pluralité de nœuds (2), ce procédé comprenant : A) Une phase de distribution, qui comprend 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 au sein du réseau (1) au moins un nœud (2E), dit nœud d'entrée, é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) ; - Charger les données (15), à partir du terminal (2E) émetteur et via une ligne (17) de communication sécurisée, vers l'enclave (8) du nœud (2E) d'entrée ; - Inscrire dans une entrée (4) d'une base de données (5) 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 : 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 N prédéterminé de fragments (23.i); o Calculer un condensat (25), dit de référence, du premier conteneur (22) crypté en lui appliquant une fonction de hachage prédéterminée ; o Fragmenter le condensat (25) de référence en un nombre prédéterminé de fragments (25.j) ; o Rechiffrer le premier conteneur (22) pour former un deuxième conteneur (27) crypté, en lui associant une deuxième clé (28) cryptographique de déchiffrement ; o Fragmenter la deuxième clé (28) cryptographique de déchiffrement en un nombre prédéterminé de fragments (28.k); o Désigner, parmi le réseau (1), un premier groupe de nœuds (2A) de stockage équipés chacun d'une unité de traitement informatique dans laquelle est implémentée une enclave (8) ; o Distribuer le deuxième conteneur (27) crypté vers les nœuds (2A) du premier groupe ; o Désigner, parmi le réseau (1), un deuxième groupe de nœuds (2B) de stockage 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 nœud (2B) du deuxième groupe, chaque nœud (2B) du deuxième groupe recevant un unique fragment (23.i) ; o Désigner, parmi le réseau (1), un troisième groupe de nœuds (2C) de stockage en nombre égal aux fragments (25.j) du condensat (25) de référence ; o Distribuer chaque fragment (25.j) du condensat (25) de référence vers un nœud (2C) du troisième groupe, chaque nœud (2C) du troisième groupe recevant un unique fragment (25.j); o Désigner, parmi le réseau (1), un quatrième groupe de nœuds (2D) de stockage en nombre égal aux fragments (28.k) de la deuxième clé (28) cryptographique de déchiffrement ; o Distribuer chaque fragment (28.k) de la deuxième clé (28) de déchiffrement vers un nœud (2D) du quatrième groupe, chaque nœud (2D) du quatrième groupe recevant un unique fragment (28.k) ; - Hors de l'enclave (8) du nœud (2E) d'entrée : o Mémoriser le deuxième conteneur (27) crypté au sein de chaque nœud (2A) de stockage du premier groupe ; o Mémoriser chaque fragment (23.i) de la première clé (23) cryptographique de déchiffrement au sein de chaque nœud (2B) de stockage du deuxième groupe ; o Mémoriser chaque fragment (25.j) du condensat (25) de référence au sein de chaque nœud (2C) de stockage du troisième groupe ; o Mémoriser chaque fragment (28.k) de la deuxième clé (28) cryptographique de déchiffrement au sein de chaque nœud (2D) de stockage du quatrième groupe ; - Inscrire dans une entrée (4) de la base de données (5) une ou des empreintes numériques de ces distributions ou de ces mémorisations ; B) Une phase de contrôle, qui comprend la désignation, parmi les nœuds (2) du réseau (1), d'un nœud (2F) de contrôle équipé d'une unité de traitement informatique dans laquelle est implémentée une enclave (8), et, pour chaque nœud (2A) de stockage du premier groupe, les opérations consistant à : - Instancier l'enclave (8) du nœud (2A) de stockage ; - Instancier l'enclave (8) du nœud (2F) de contrôle ; - Etablir une liaison sécurisée entre l'enclave (8) du nœud (2F) de contrôle et l'enclave (8) du nœud (2A) de stockage ; - Dans l'enclave (8) du nœud (2F) de contrôle : o Charger, à partir d'un nombre prédéterminé de nœuds (2C) du troisième groupe, des fragments (25.j) du condensat de référence ; o Reconstituer le condensat (25) de référence à partir de ces fragments (25.j) ; o Charger, à partir d'un nombre prédéterminé de nœuds (2D) du quatrième groupe, des fragments (28.k) de la deuxième clé (28) cryptographique de déchiffrement ; o Reconstituer la deuxième clé (28) cryptographique de déchiffrement à partir de ces fragments (28.k) ; o Transmettre la deuxième clé (28) cryptographique de déchiffrement à l'enclave (8) du nœud (2A) de stockage ; - Dans l'enclave (8) du nœud (2A) de stockage : o Charger le deuxième conteneur (27) crypté à partir d'un espace mémoire situé hors de l'enclave (8) ; o Déchiffrer le deuxième conteneur (27) crypté au moyen de la deuxième clé (28) cryptographique de déchiffrement reçue de l'enclave (8) du nœud (2F) de contrôle, pour reconstituer une copie (22') du premier conteneur (22) crypté ; o Calculer un condensat (25'), dit de contrôle, de cette copie (22') du premier conteneur (22) crypté ; o Transmettre le condensat (25') de contrôle à l'enclave (8) du nœud (2F) de contrôle ; - Dans l'enclave (8) du nœud (2F) de contrôle, comparer le condensat (25') de contrôle au condensat (25) de référence ; - Hors de l'enclave (8), inscrire le résultat de cette comparaison ou une empreinte de ce résultat dans une entrée (4) de la base de données (5).1. A method of secure storage of computer data (15) within a computer network (1) comprising a plurality of nodes (2), this method comprising: A) A distribution phase, which includes 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 within the network (1) at least one node (2E), called entry node, equipped with a computer processing in which an execution environment secured by cryptography, called an enclave (8), is implemented; - Instantiate the enclave (8); - Load the data (15), from the sender terminal (2E) and via a secure communication line (17), to the enclave (8) of the input node (2E); - Enter in an entry (4) of a database (5) a digital imprint of the storage request and / or loading thus performed; - In the enclave (8) of the 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 N of fragments (23.i); o Calculate a so-called reference condensate (25) of the first encrypted container (22) by applying a predetermined hash function to it; o Fragment the reference condensate (25) into a predetermined number of fragments (25.j); o Re-encrypt the first container (22) to form a second encrypted container (27), by associating it with a second cryptographic decryption key (28); o Fragment the second cryptographic decryption key (28) into a predetermined number of fragments (28.k); o Designate, from among the network (1), a first group of storage nodes (2A) each equipped with a computer processing unit in which an enclave (8) is implemented; o Distribute the second encrypted container (27) to the nodes (2A) of the first group; o Designate, among the network (1), a second group of storage nodes (2B) in a 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 a node (2B) of the second group, each node (2B) of the second group receiving a single fragment (23.i); o Designate, among the network (1), a third group of storage nodes (2C) in a number equal to the fragments (25.j) of the reference condensate (25); o Distribute each fragment (25.j) of the reference condensate (25) to a node (2C) of the third group, each node (2C) of the third group receiving a single fragment (25.j); o Designate, among the network (1), a fourth group of storage nodes (2D) in a number equal to the fragments (28.k) of the second cryptographic decryption key (28); o Distribute each fragment (28.k) of the second decryption key (28) to a node (2D) of the fourth group, each node (2D) of the fourth group receiving a single fragment (28.k); - Outside the enclave (8) of the input node (2E): o Store the second encrypted container (27) within each storage node (2A) of the first group; o Memorize each fragment (23.i) of the first cryptographic decryption key (23) within each storage node (2B) of the second group; o Memorize each fragment (25.j) of the reference condensate (25) within each storage node (2C) of the third group; o Store each fragment (28.k) of the second cryptographic decryption key (28) within each storage node (2D) of the fourth group; - Enter in an entry (4) of the database (5) one or more digital fingerprints of these distributions or these memorizations; B) A control phase, which includes the designation, among the nodes (2) of the network (1), of a control node (2F) equipped with a computer processing unit in which an enclave (8) is implemented , and, for each storage node (2A) of the first group, the operations consisting in: - Instantiate the enclave (8) of the storage node (2A); - Instantiate the enclave (8) of the control node (2F); - Establish a secure link between the enclave (8) of the control node (2F) and the enclave (8) of the storage node (2A); - In the enclave (8) of the control node (2F): o Load, from a predetermined number of nodes (2C) of the third group, fragments (25.j) of the reference condensate; o Reconstitute the reference condensate (25) from these fragments (25.j); o Load, from a predetermined number of nodes (2D) of the fourth group, fragments (28.k) of the second cryptographic decryption key (28); o Reconstitute the second cryptographic decryption key (28) from these fragments (28.k); o Transmit the second cryptographic decryption key (28) to the enclave (8) of the storage node (2A); - In the enclave (8) of the storage node (2A): o Load the second encrypted container (27) from a memory space located outside the enclave (8); o Decrypt the second container (27) encrypted by means of the second cryptographic decryption key (28) received from the enclave (8) of the control node (2F), to reconstitute a copy (22 ') of the first container (22 ) encrypted; o Calculate a condensate (25 '), called a control, of this copy (22') of the first encrypted container (22); o Transmit the control condensate (25 ') to the control node (2F) enclave (8); - In the enclave (8) of the control node (2F), compare the control condensate (25 ') with the reference condensate (25); - Outside the enclave (8), enter the result of this comparison or an imprint of this result in an entry (4) of the database (5). 2. Procédé selon la revendication1, dans lequel la fragmentation de la première clé (23) de déchiffrement est réalisée en application des règles de Shamir.2. Method according to claim 1, in which the fragmentation of the first decryption key (23) is carried out in application of Shamir's rules. 3. Procédé selon la revendication1, dans lequel la fragmentation de la deuxième clé (28) de déchiffrement est réalisée en application des règles de Shamir.3. Method according to claim 1, in which the fragmentation of the second decryption key (28) is carried out in application of Shamir's rules. 4. Procédé selon la revendication1, dans lequel la fragmentation du condensat (25) de référence est réalisée en application des règles de Shamir.4. The method of claim 1, wherein the fragmentation of the reference condensate (25) is carried out in application of Shamir's rules.
CH00738/19A 2019-06-07 2019-06-07 A method of storing computer data on a network with proof of storage obtained by a storage node equipped with a cryptographic enclave. CH716264A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CH00738/19A CH716264A2 (en) 2019-06-07 2019-06-07 A method of storing computer data on a network with proof of storage obtained by a storage node equipped with a cryptographic enclave.

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CH00738/19A CH716264A2 (en) 2019-06-07 2019-06-07 A method of storing computer data on a network with proof of storage obtained by a storage node equipped with a cryptographic enclave.

Publications (1)

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

Family

ID=73727389

Family Applications (1)

Application Number Title Priority Date Filing Date
CH00738/19A CH716264A2 (en) 2019-06-07 2019-06-07 A method of storing computer data on a network with proof of storage obtained by a storage node equipped with a cryptographic enclave.

Country Status (1)

Country Link
CH (1) CH716264A2 (en)

Similar Documents

Publication Publication Date Title
US10673626B2 (en) Threshold secret share authentication proof and secure blockchain voting with hardware security modules
US10805072B2 (en) System and method for autonomous dynamic person management
US9026805B2 (en) Key management using trusted platform modules
JP2020504930A (en) Authentication system through distributed storage after separation of personal information using blockchain
CN105071936A (en) Systems and methods for secure data sharing
Subathra et al. Decentralized consensus blockchain and IPFS-based data aggregation for efficient data storage scheme
US11893577B2 (en) Cryptographic key storage system and method
Vasilopoulos et al. Message-locked proofs of retrievability with secure deduplication
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.
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.
WO2022200726A1 (en) Management of access rights to digital files with possible delegation of the rights
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.
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.
FR3118507A1 (en) DATA STORAGE AND SHARING METHOD AND SYSTEM
CH716263A2 (en) A method of storing computer data by distributing an encrypted container and its fragmented decryption key on a blockchain network.
CH716285A2 (en) Method for checking the biometric data of an individual, with registration, in a blockchain, of an analysis result.
CH716262A2 (en) A method of storing computer data by distributing an encrypted container and its decryption key on separate nodes of a blockchain network.
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.
CH716261A2 (en) A method of storing computer data by distributing an encrypted container and its decryption key on a blockchain network.
CH716273A2 (en) A method of storing computer data on a network, with double distribution over two disjoint sets of network nodes.
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.
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.
FR3085815A1 (en) SECURITY GOVERNANCE OF THE PROCESSING OF A DIGITAL REQUEST
CH716284A2 (en) Process for distributed processing, within a blockchain network and sub-enclaves, of computer data encrypted with a fragmented key.

Legal Events

Date Code Title Description
AZW Rejection (application)