CH716267A2 - Procédé de stockage de données informatiques sur un réseau blockchain avec preuve de stockage à partir d'un noeud de calcul épuipé d'une enclave cryptographique. - Google Patents
Procédé de stockage de données informatiques sur un réseau blockchain avec preuve de stockage à partir d'un noeud de calcul épuipé d'une enclave cryptographique. Download PDFInfo
- Publication number
- CH716267A2 CH716267A2 CH00741/19A CH7412019A CH716267A2 CH 716267 A2 CH716267 A2 CH 716267A2 CH 00741/19 A CH00741/19 A CH 00741/19A CH 7412019 A CH7412019 A CH 7412019A CH 716267 A2 CH716267 A2 CH 716267A2
- Authority
- CH
- Switzerland
- Prior art keywords
- node
- group
- enclave
- storage
- sep
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network 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/0478—Network 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/065—Network architectures or network communication protocols for network security for supporting key management in a packet data network for group communications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/18—Network architectures or network communication protocols for network security using different networks or channels, e.g. using out of band channels
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3234—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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/3239—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2105—Dual mode as a secondary aspect
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2463/00—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
- H04L2463/062—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying encryption of the keys
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Power Engineering (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
Procédé de stockage sécurisé de données ( 15 ) informatiques au sein d'un groupe de nœuds ( 2A ) de stockage d'un réseau ( 1 ) blockchain, qui comprend une phase de contrôle conduite pour partie dans une enclave ( 8 ) d'un nœud ( 2G ) de calcul, 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 ).
Description
DOMAINE TECHNIQUE
[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.
ART ANTERIEUR
[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.
[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.
[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.
[0005] La première méthode est efficace à deux conditions principales.
[0006] Première condition : le risque de faille dans les restrictions d'accès au serveur doit être nul ou, à tout le moins, 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.
[0008] Deuxième condition : l'administrateur du serveur doit lui-même être digne de confiance.
[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.
[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.
[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.
[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.
[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.
[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.
[0015] L'invention vise à offrir une solution efficace à ces problèmes, en particulier au problème de la preuve de stockage.
RESUME DE L'INVENTION
[0016] Il est proposé un procédé de stockage sécurisé de données informatiques au sein d'un réseau pair-à-pair composé d'une pluralité de nœuds formant une base de données distribuée sur laquelle est mémorisée, par réplication sur chaque nœud, une chaîne de blocs, 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 un bloc de la chaîne de blocs, par un ou plusieurs nœuds du réseau, au moins une transaction contenant une empreinte numérique de la requête de stockage et/ou du chargement ainsi effectué ;
<tb><SEP><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 ;
<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 au moins un bloc de la chaîne de blocs, par un ou plusieurs nœuds du réseau, au moins une transaction contenant 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 et d'un nœud de calcul chacun é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 contrôle ;
<tb><SEP><SEP>- Instancier l'enclave du nœud de calcul ;
<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 calcul ;
<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 ;
<tb><SEP><SEP><SEP>o Transmettre la deuxième clé cryptographique de déchiffrement à l'enclave du nœud de calcul ;
<tb><SEP><SEP>- Dans l'enclave du nœud de calcul :
<tb><SEP><SEP><SEP>o Charger le deuxième conteneur crypté à partir d'un nœud de stockage du premier groupe ;
<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 dans un bloc de la chaîne de blocs, par un ou plusieurs nœuds du réseau, au moins une transaction contenant une empreinte numérique de ce résultat.
BREVE DESCRIPTION DES FIGURES
[0017] D'autres objets et avantages de l'invention apparaîtront à la lumière de la description d'un mode de réalisation, faite ci-après en référence aux dessins annexés dans lesquels :
<tb><SEP>LaFIG.1est un schéma fonctionnel simplifié illustrant un réseau pair-à-pair sur lequel est distribuée une chaîne de blocs ;
<tb><SEP>LaFIG.2est un schéma fonctionnel simplifié illustrant différents composants d'une unité de traitement informatique impliqués dans la création et l'exploitation d'un environnement d'exécution sécurisé appelé enclave ;
<tb><SEP>LaFIG.3est un schéma fonctionnel illustrant pour partie une architecture réseau, pour partie des étapes d'un procédé de stockage, et pour partie des fichiers produits, échangés ou stockés au sein du réseau pour les besoins (ou en application) de ce procédé ;
<tb><SEP>LaFIG.4est un diagramme fonctionnel illustrant différentes étapes d'une phase de contrôle du procédé de stockage.
DESCRIPTION DETAILLEE DE L'INVENTION
[0018] Sans s'y restreindre, le procédé de stockage proposé exploite, en les combinant, des fonctionnalités offertes par deux technologies relativement récentes dont il paraît utile de faire une description préalable avant d'entrer dans les détails du procédé, à savoir :
La technologie de la chaîne de blocs ou, en terminologie anglo-saxonne, blockchain (dans ce qui suit, on préférera la terminologie anglo-saxonne, en raison de son emploi courant dans la plupart des langues, y compris en langue française) ;
La technologie de l'environnement d'exécution sécurisé ou, en terminologie anglo-saxonne, du trusted execution environment (TEE).
[0019] La technologie blockchain est organisée en couches. Elle comprend :
Une couche d'infrastructure matérielle, appelée „réseau blockchain“ ;
Une couche protocolaire appelée „protocole blockchain“ ;
Une couche informationnelle, appelée „registre blockchain“.
[0020] Le réseau blockchain est un réseau informatique décentralisé, dit réseau pair-à-pair (en terminologie anglo-saxonne Peer-to-Peer ou P2P), constitué d'une pluralité d'ordinateurs (au sens fonctionnel du terme : il s'agit d'un appareil pourvu d'une unité de traitement informatique programmable, qui peut se présenter sous forme d'un smartphone, d'une tablette, d'un ordinateur de bureau, d'une station de travail, d'un serveur physique ou virtuel, c'est-à-dire un espace de calcul et de mémoire alloué au sein d'un serveur physique et sur lequel tourne un système d'exploitation ou une émulation de système d'exploitation), appelés „nœuds“ en référence à la théorie des graphes, capables de communiquer entre eux (c'est-à-dire de s'échanger des données informatiques), deux à deux, au moyen de liaisons filaires ou sans fil.
[0021] Un réseau1blockchain comprenant des nœuds2communiquant par des liaisons3est illustré sur laFIG.1. Par souci de simplification et de conformité à la théorie des graphes, sur laFIG.1, les nœuds2du réseau1sont représentés par des cercles ; les liaisons3, par des arêtes reliant les cercles. Pour ne pas surcharger de traits le dessin, seules certaines liaisons3entre les nœuds2sont représentées.
[0022] Les nœuds2peuvent être disséminés sur de larges régions géographiques ; ils peuvent également être regroupés dans des régions géographiques plus restreintes.
[0023] Le protocole blockchain se présente sous forme d'un programme informatique implémenté dans chaque nœud2du réseau1blockchain, et qui inclut, outre des fonctions de dialogue - c'est-à-dire d'échange des données informatiques - avec les autres nœuds2du réseau1, un algorithme de calcul qui, à partir de données d'entrée appelées „transactions“ (qui sont des transcriptions d'interactions entre un ou plusieurs terminaux informatiques émetteurs et un ou plusieurs terminaux informatiques destinataires) :
<tb><SEP>- Élabore des fichiers4de données structurées appelés „blocs“, chaque bloc4comprenant un corps4Acontenant des empreintes numériques de transactions, et un en-tête4Bcontenant :
<tb><SEP>o<SEP>Un numéro d'ordre, ou rang, ou encore hauteur (height en anglais), sous forme d'un nombre entier qui désigne la position du bloc4au sein d'une chaîne dans l'ordre croissant à partir d'un bloc initial (Genesis block en anglais) ;
<tb><SEP>o<SEP>Une empreinte numérique unique des données du corps4A ;
<tb><SEP>o<SEP>Une empreinte numérique unique, appelée pointeur, de l'en-tête du bloc4précédent,
<tb><SEP>o<SEP>Une donnée d'horodatage (timestamp en anglais) ;
<tb><SEP>- Met en œuvre un mécanisme de validation des blocs4par consensus entre tout ou partie des nœuds2 ;
<tb><SEP>- Concatène les blocs4validés pour former un registre5(le registre blockchain) sous forme d'un agrégat dans lequel chaque bloc4est relié mathématiquement au précédent par son pointeur.
[0024] La moindre modification des données du corps4Aou de l'en-tête4Bd'un bloc4affecte la valeur de son empreinte numérique et rompt par conséquent le lien existant entre ce bloc4ainsi modifié et le bloc4suivant dont le pointeur ne correspond plus.
[0025] Selon un mode particulier de réalisation, l'empreinte numérique de chaque bloc4est un condensé (ou condensat, en anglais hash) des données du bloc4, c'est-à-dire le résultat d'une fonction de hachage appliquée aux données du bloc4(y compris le corps4Aet l'en-tête4Bà l'exception de l'empreinte numérique elle-même). La fonction de hachage est typiquement SHA-256.
[0026] Pour un bloc4donné de rang N (N un entier), le pointeur assure avec le bloc4précédent de rang N-1 une liaison inaltérable. En effet, toute modification des données du bloc4de rang N-1 aboutirait à la modification de son empreinte, et donc à un défaut de correspondance entre cette empreinte (modifiée) du bloc4de rang N-1 et le pointeur mémorisé parmi les métadonnées du bloc4de rang N.
[0027] La succession des blocs4reliés entre eux deux à deux par correspondance du pointeur d'un bloc4donné de rang N avec l'empreinte numérique du bloc précédent de rang N-1 constitue par conséquent le registre5blockchain sous forme d'un agrégat de blocs4corrélés, dans lequel la moindre modification des données d'un bloc4de rang N-1 se traduit par une rupture du lien avec le bloc4suivant de rang N - et donc la rupture du registre blockchain.
[0028] C'est cette structure particulière qui procure aux données contenues dans le registre5blockchain une réputation d'immuabilité, garantie par le fait que le registre5blockchain est répliqué sur tous les nœuds2du réseau1, obligeant tout attaquant, non seulement à modifier tous les blocs4de rang supérieur au bloc4modifié, mais à déployer ces modifications (alors même que le registre5blockchain continue de se constituer par les nœuds2appliquant le protocole blockchain) à l'ensemble des nœuds2.
[0029] Quel que soit le type de consensus appliqué par le mécanisme de validation des blocs4, la plupart des technologies blockchain ont pour fonction primaire d'enregistrer, dans leur registre5blockchain, des transactions passées entre un ou plusieurs terminaux émetteurs, et un ou plusieurs terminaux récepteurs, indifféremment appelés „utilisateurs“.
[0030] A chaque utilisateur est associé un compte, appelé de manière simplificatrice „portefeuille électronique“ (en anglais digital wallet), qui contient une zone mémoire et une interface programmatique ayant des fonctions d'interaction avec le réseau1blockchain pour lui soumettre des transactions, et des fonctions de synchronisation avec le registre5blockchain pour inscrire, dans la zone mémoire, les transactions validées par inscription dans le registre5blockchain.
[0031] Sauf mention contraire, et par souci de simplification, l'expression simple „chaîne de blocs“ ou „blockchain“ désigne le registre5blockchain lui-même.
[0032] Certaines technologies blockchain récentes (Ethereum, typiquement) ajoutent aux trois couches matérielle (réseau blockchain), protocolaire (protocole blockchain) et informationnelle (registre blockchain) une couche applicative qui se présente sous forme d'un environnement de développement permettant de programmer des applications, appelées „contrats intelligents“ (en anglais Smart contracts), qui peuvent être déployées sur le registre5blockchain à partir des nœuds2.
[0033] On décrit à présent succinctement la technologie des contrats intelligents.
[0034] Un contrat intelligent comprend deux éléments :
Un compte, appelé „compte de contrat“ (en anglais Contract account), dans la zone mémoire duquel est inscrit un code source contenant des instructions informatiques implémentant les fonctions attribuées au contrat intelligent ;
Un code exécutable (en anglais Executable Bytecode) résultant d'une compilation du code source, ce code exécutable étant mémorisé ou déployé au sein du registre5blockchain, c'est-à-dire inséré en tant que transaction dans un bloc4du registre5blockchain.
[0035] Dans la technologie blockchain proposée par Ethereum, un smart contrat est activé par un appel (en anglais Call) adressé par un autre compte, dit compte initiateur (qui peut être un compte utilisateur ou un compte de contrat), cet appel se présentant sous forme d'une transaction contenant, d'une part, un fonds de réserve à transférer (c'est-à-dire un paiement) depuis le compte initiateur au compte de contrat et, d'autre part, des conditions initiales.
[0036] Cet appel est inscrit en tant que transaction dans le registre5blockchain. Il déclenche :
Le transfert du fonds de réserve du compte initiateur au compte de contrat ;
La désignation, parmi le réseau1blockchain, d'un nœud d'exécution associé à un compte utilisateur ;
L'activation, dans une unité de traitement informatique du nœud d'exécution, d'un environnement d'exécution ou machine virtuelle (appelé Ethereum Virtual Machine ou EVM dans le cas d'Ethereum) ;
L'exécution pas-à-pas des étapes de calcul du code exécutable par la machine virtuelle à partir des conditions initiales, chaque étape de calcul étant accompagnée d'un transfert d'une fraction (appelée gas dans le cas d'Ethereum) du fonds de réserve depuis le compte de contrat vers le compte utilisateur du nœud d'exécution, et ce jusqu'à épuisement des étapes de calcul, au terme desquelles est obtenu un résultat ;
L'inscription (éventuellement sous forme d'une empreinte numérique) de ce résultat en tant que transaction dans le registre5blockchain.
[0037] Le compte initiateur récupère (c'est-à-dire, en pratique, télécharge) le résultat lors de sa synchronisation au registre5blockchain.
[0038] On introduit à présent brièvement les environnements d'exécution sécurisé.
[0039] Un environnement d'exécution sécurisé (Trusted execution environment ou TEE) est, au sein d'une unité6de traitement informatique pourvue d'un processeur ou CPU (Central Processing Unit) 7, un espace temporaire de calcul et de stockage de données, appelé (par convention) enclave, ou encore enclave cryptographique, qui se trouve isolé, par des moyens cryptographiques, de toute action non autorisée résultant de l'exécution d'une application hors de cet espace, typiquement du système d'exploitation.
[0040] Intel® a, par exemple, revu à partir de 2013 la structure et les interfaces de ses processeurs pour y inclure des fonctions d'enclave, sous la dénomination Software Guard Extension, plus connue sous l'acronyme SGX. SGX équipe la plupart des processeurs de type XX86 commercialisés par Intel® depuis 2015, et plus précisément à partir de la sixième génération incorporant la microarchitecture dite Skylake. Les fonctions d'enclave proposées par SGX ne sont pas accessibles d'office : il convient de les activer via le système élémentaire d'entrée/sortie (Basic Input Output System ou BIOS).
[0041] Il n'entre pas dans les nécessités de la présente description de détailler l'architecture des enclaves, dans la mesure où :
En dépit de sa relative jeunesse, cette architecture est relativement bien documentée, notamment par Intel® qui a déposé de nombreux brevets, cf. par ex., parmi les plus récents, la demande de brevet américain US 2019/0058696 ;
Des processeurs permettant de les implémenter sont disponibles sur le marché - notamment les processeur Intel® précités ;
Seules les fonctionnalités permises par l'enclave nous intéressent ici, ces fonctionnalités pouvant être mises en œuvre via des lignes de commande spécifiques. A ce titre, l'homme du métier pourra se référer au guide édité en 2016 par Intel® : Software Guard Extensions, Developer Guide.
[0042] Pour une description plus accessible des enclaves, et plus particulièrement d'Intel® SGX, l'homme du métier peut également se référer à A. Adamski, Overview of Intel SGX - Part 1, SGX Internal, ou à D. Boneh, Surnaming Schemes, Fast Verification, and Applications to SGX Technology, in Topics in Cryptology, CT - RSA 2017, The Cryptographers' Track at the RSA Conférence 2017, San Francisco, CA, USA, Feb.14-17, 2017, Proceedings, pp.149-164, ou encore à K. Severinsen, Secure Programming with Intel SGX and Novel Applications, Thesis submitted for the Degree of Master in Programming and Networks, Dept. Of Informatics, Faculty of Mathematics and Natural Science, University of Oslo, Autumn 2017.
[0043] Pour résumer, en référence à laFIG.2, une enclave8comprend, en premier lieu, une zone9mémoire sécurisée (dénommée Page Cache d'enclave, en anglais Enclave Page Cache ou EPC), qui contient du code et des données relatives à l'enclave elle-même, et dont le contenu est chiffré et déchiffré en temps réel par une puce dédiée dénommée Moteur de Chiffrement de Mémoire (en anglais Memory Encryption Engine ou MEE). L'EPC9est implémentée au sein d'une partie de la mémoire vive dynamique (DRAM) 10 allouée au processeur7, et à laquelle les applications ordinaires (notamment le système d'exploitation) n'ont pas accès.
[0044] 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).
[0045] Pour pouvoir exploiter une telle enclave8, une application11doit être segmentée en, d'une part, une ou plusieurs parties12non sécurisées (en anglais untrusted partes)), et, d'autre part, une ou plusieurs parties 13 sécurisées (en anglais trusted part(s)).
[0046] Seuls les processus induits par la (les) partie(s)13sécurisée(s) de l'application11peuvent accéder à l'enclave8. Les processus induits par la (les) partie(s)12non sécurisée(s) ne peuvent pas accéder à l'enclave8, c'est-à-dire qu'ils ne peuvent pas dialoguer avec les processus induits par la (les) partie(s)13sécurisée(s).
[0047] La création (également dénommée instanciation) de l'enclave8et le déroulement de processus en son sein sont commandés via un jeu14d'instructions particulières exécutables par le processeur7et appelées par la (les) partie(s)13sécurisée(s) de l'application11.
[0048] Parmi ces instructions :
ECREATE commande la création d'une enclave8 ;
EINIT commande l'initialisation de l'enclave8 ;
EADD commande le chargement de code dans l'enclave8 ;
EENTER commande l'exécution de code dans l'enclave8 ;
ERESUME commande une nouvelle exécution de code dans l'enclave8 ;
EEXIT commande la sortie de l'enclave8, typiquement à la fin d'un processus exécuté dans l'enclave8.
[0049] 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.
[0050] Nous expliquerons ci-après comment sont exploitées les enclaves.
[0051] Les nœuds2du réseau1blockchain é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 terminal 16 é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éseau1blockchain. La traçabilité des données15peut être réalisée par inscription, dans le registre5blockchain, d'une ou plusieurs empreintes numériques des mémorisations ainsi effectuées.
[0052] Ce stockage distribué des données15est avantageusement piloté par un contrat intelligent, activé par exemple par le terminal16émetteur qui, tout en transmettant les données15à stocker au réseau1, transmet au contrat intelligent un appel par la procédure décrite précédemment.
[0053] Si la réplication des données15au sein du réseau1blockchain résout le problème de la pérennité des données15, il ne résout pas le problème de leur confidentialité.
[0054] 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 terminal16é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.
[0055] 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.
[0056] 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.
[0057] 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).
[0058] 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, typiquement en activant un contrat intelligent déployé sur la blockchain5.
[0059] A réception de la requête de stockage par au moins un nœud2du réseau1, le contrat intelligent sélectionne, au sein du réseau1au moins un nœud2Ed'entrée, équipé d'une unité de traitement informatique dans laquelle est implémentée une enclave8.
[0060] Cette enclave8est alors instanciée en application des instructions du contrat intelligent, et les données15y sont chargées à partir du terminal16émetteur et via une ligne17de communication sécurisée (par ex. utilisant le protocole Transport Layer Security ou TLS). A cet effet, l'enclave8peut être pourvue, dès son instanciation, d'une émulation d'interface18de communication supportant le protocole choisi (ici TLS) pour l'échange des données sécurisées.
[0061] Le protocole blockchain est avantageusement chargé dans l'enclave8, pour former un module19blockchain apte à interroger le registre5blockchain et/ou à participer au processus de création et validation des blocs4.
[0062] Une transaction20contenant une empreinte numérique du chargement des données ainsi effectué est ici inscrite dans un bloc4de la blockchain5, aux fins de traçabilité.
[0063] Cette transaction20peut être transmise au module19blockchain par le terminal16émetteur, pour être inscrite par un ou plusieurs nœuds2du réseau (par le processus décrit plus haut) dans un nouveau bloc4du registre5blockchain. En variante, le module20blockchain émet de lui-même une transaction20pour inscription dans un nouveau bloc4.
[0064] Dans l'enclave8du nœud d'entrée se déroulent alors les opérations suivantes.
[0065] 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.
[0066] Selon un mode préféré de réalisation, le chiffrement est symétrique. Dans ce cas, la première clé21de chiffrement et la première clé23de déchiffrement sont une seule et même clé.
[0067] Une deuxième opération consiste à fragmenter la première clé23de déchiffrement. Plus précisément, la première clé23de déchiffrement est fragmentée en un nombre N prédéterminé de fragments23.i(i un entier, 2≤i≤N).
[0068] 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.
[0069] 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.
[0070] Une quatrième opération consiste à fragmenter le condensat 25 de référence en un nombre prédéterminé M de fragments25.j(j un entier, 2≤j≤M).
[0071] 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.
[0072] 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.
[0073] 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é.
[0074] 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).
[0075] 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.
[0076] Une septième opération consiste à désigner, parmi le réseau1, un premier groupe de nœuds2Ade stockage.
[0077] Une huitième opération consiste à distribuer le deuxième conteneur27crypté vers les nœuds2Ade stockage du premier groupe.
[0078] 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.
[0079] 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.
[0080] 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).
[0081] Une dixième opération110consiste à 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.
[0082] 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.
[0083] 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 condensat 25 de référence.
[0084] 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.
[0085] 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).
[0086] 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.
[0087] 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).
[0088] 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.kk.
[0089] Ces opérations achevées, l'enclave8peut être refermée.
[0090] Hors de l'enclave8, les opérations suivantes sont réalisées :
<tb><SEP>o Le 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.
[0091] Pour assurer la traçabilité de ces opérations, au moins une transaction contenant une empreinte numérique des distributions ou des mémorisations ainsi effectuées est avantageusement inscrite dans un bloc4de la chaîne5de blocs, par un ou plusieurs nœuds2du réseau1. Cette transaction peut être initiée par les nœuds2A,2B,2Cet2Dde stockage, mais elle peut également être initiée par l'enclave8elle-même (et plus précisément par le module19blockchain) avant sa fermeture.
[0092] 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) une preuve que chaque nœud2Adu premier groupe garde en mémoire, intact, les données15(sous forme du deuxième conteneur27crypté), sans toutefois permettre à un quelconque nœud2Adu premier groupe d'accéder aux données15.
[0093] 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, qui sont avantageusement pilotées par un processus inscrit dans un contrat31intelligent déployé sur la blockchain5et activé ponctuellement ou régulièrement.
[0094] Une opération préalable consiste à désigner (DES), parmi les nœuds2du réseau1, un nœud2Fde contrôle et un nœud2Gde calcul chacun équipé d'une unité de traitement informatique dans laquelle est implémentée une enclave8. Cette désignation peut être commandée par le processus du contrat31intelligent. Le nœud2Gde calcul sert de mandataire aux nœuds2Ade stockage qui ne sont pas nécessairement équipés d'enclaves dans leurs unités de traitement.
[0095] Ensuite, pour chaque nœud2Ade stockage du premier groupe, tel que désigné (DES) successivement par le contrat31intelligent, la phase de contrôle comprend la répétition des opérations suivantes.
[0096] Une première opération consiste à instancier l'enclave8du nœud2Fde contrôle. Cette instanciation peut être commandée par le processus du contrat31intelligent.
[0097] Une deuxième opération consiste à instancier l'enclave8du nœud2Gde calcul. Cette instanciation peut être commandée par le processus du contrat31intelligent.
[0098] Une troisième opération consiste à établir une liaison sécurisée entre l'enclave8du nœud2Fde contrôle et l'enclave du nœud2Gde calcul.
[0099] 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.
[0100] Une cinquième opération consiste à charger ces P fragments28.kde la deuxième clé28de chiffrement dans l'enclave8du nœud2Fde contrôle.
[0101] 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.
[0102] Une septième opération consiste, depuis l'enclave8du nœud2Fde contrôle, à transmettre à l'enclave8du nœud2Gde calcul la deuxième clé28de déchiffrement ainsi reconstituée.
[0103] Une huitième opération consiste, pour le nœud2Fde contrôle, à requérir (REQ) L fragments25.jdu condensat25de référence
[0104] Une neuvième opération consiste à charger ces L fragments25.jdu condensat25de référence dans l'enclave8du nœud2Fde contrôle.
[0105] Une dixième opération 110 consiste à reconstituer, dans l'enclave8du nœud2Fde contrôle, le condensat25de référence à partir des L fragments25.jainsi chargés.
[0106] Une onzième opération consiste à charger dans l'enclave8du nœud2Gde calcul, à partir du nœud2Ade stockage, le deuxième conteneur27crypté.
[0107] Une douzième opération consiste, dans l'enclave8du nœud2Gde calcul, à 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é.
[0108] Une treizième opération consiste, dans l'enclave8du nœud2Gde calcul, à 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).
[0109] Une quatorzième opération consiste, à partir de l'enclave8du nœud2Gde calcul, à transmettre à l'enclave8du nœud2Fde contrôle, le condensat25'de contrôle ainsi calculé.
[0110] 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.
[0111] 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.
[0112] Dans les deux cas, hors de l'enclave8(tant du nœud2Gde calcul que du nœud2Fde contrôle), une opération supplémentaire consiste à inscrire, dans un bloc4de la blockchain5, au moins une transaction contenant une empreinte numérique de ce résultat (ici Y ou N).
[0113] Le procédé qui vient d'être décrit présente les avantages suivants.
[0114] 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.
[0115] 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œud2Gde calcul, de reconstituer temporairement dans le nœud2Gde calcul 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.
[0116] Un nœud2Ade stockage ayant fourni (via le nœud2Gde calcul) 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.
Claims (4)
1. Procédé de stockage sécurisé de données (15) informatiques au sein d'un réseau (1) pair-à-pair composé d'une pluralité de nœuds (2) formant une base de données distribuée sur laquelle est mémorisée, par réplication sur chaque nœud (2), une chaîne (5) de blocs, 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 un bloc (4) de la chaîne (5) de blocs, par un ou plusieurs nœuds (2) du réseau (1), au moins une transaction (20) contenant une empreinte numérique de la requête de stockage et/ou du chargement ainsi effectué ;
- Dans l'enclave (8) du nœud (2E) d'entrée :
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 ;
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 au moins un bloc (4) de la chaîne (5) de blocs, par un ou plusieurs nœuds (2) du réseau (1), au moins une transaction contenant une 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 et d'un nœud (2G) de calcul chacun é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 (2F) de contrôle ;
- Instancier l'enclave (8) du nœud (2G) de calcul ;
- Etablir une liaison sécurisée entre l'enclave (8) du nœud (2F) de contrôle et l'enclave (8) du nœud (2G) de calcul ;
- 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 ;
o Transmettre la deuxième clé (28) cryptographique de déchiffrement à l'enclave (8) du nœud (2G) de calcul ;
- Dans l'enclave (8) du nœud (2G) de calcul :
o Charger le deuxième conteneur (27) crypté à partir d'un nœud (2A) de stockage du premier groupe ;
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 dans un bloc (4) de la chaîne (5) de blocs, par un ou plusieurs nœuds (2) du réseau (1), au moins une transaction contenant une empreinte numérique de ce résultat.
2. Procédé selon la revendication 1, dans lequel la fragmentation de la première clé (23) de déchiffrement est réalisée en application des règles de Shamir.
3. Procédé selon la revendication 1, dans lequel la fragmentation de la deuxième clé (28) de déchiffrement est réalisée en application des règles de Shamir.
4. Procédé selon la revendication 1, dans lequel la fragmentation du condensat (25) de référence est réalisée en application des règles de Shamir.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CH00741/19A CH716267A2 (fr) | 2019-06-07 | 2019-06-07 | Procédé de stockage de données informatiques sur un réseau blockchain avec preuve de stockage à partir d'un noeud de calcul épuipé d'une enclave cryptographique. |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CH00741/19A CH716267A2 (fr) | 2019-06-07 | 2019-06-07 | Procédé de stockage de données informatiques sur un réseau blockchain avec preuve de stockage à partir d'un noeud de calcul épuipé d'une enclave cryptographique. |
Publications (1)
Publication Number | Publication Date |
---|---|
CH716267A2 true CH716267A2 (fr) | 2020-12-15 |
Family
ID=73727396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CH00741/19A CH716267A2 (fr) | 2019-06-07 | 2019-06-07 | Procédé de stockage de données informatiques sur un réseau blockchain avec preuve de stockage à partir d'un noeud de calcul épuipé d'une enclave cryptographique. |
Country Status (1)
Country | Link |
---|---|
CH (1) | CH716267A2 (fr) |
-
2019
- 2019-06-07 CH CH00741/19A patent/CH716267A2/fr not_active Application Discontinuation
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112491812B (zh) | 区块链一体机的哈希更新方法及装置 | |
US20210234702A1 (en) | Multi-decentralized private blockchains network | |
CN105071936A (zh) | 用于安全数据共享的系统和方法 | |
WO2021057182A1 (fr) | Procédé et appareil de mise à jour de confiance pour logique fpga | |
US20220166605A1 (en) | Cryptographic Key Storage System and Method | |
WO2021057124A1 (fr) | Procédé et dispositif de mise en œuvre de chaîne de blocs de confidentialité à base de fpga | |
CH716295A2 (fr) | Procédé de signature multiple d'une transaction destinée à une blockchain, au moyen de clés cryptographiques distribuées parmi les noeuds d'un réseau pair-à-pair. | |
WO2020136206A1 (fr) | Plateforme de sécurisation de données | |
CH716285A2 (fr) | Procédé de contrôle de données biométriques d'un individu, avec inscription, dans une blockchain, d'un résultat d'analyse. | |
CH716267A2 (fr) | Procédé de stockage de données informatiques sur un réseau blockchain avec preuve de stockage à partir d'un noeud de calcul épuipé d'une enclave cryptographique. | |
CH716266A2 (fr) | Procédé de stockage de données informatiques sur un réseau blockchain avec preuve de stockage à partir d'un noeud de stockage équipé d'une enclave cryptographique. | |
CH716294A2 (fr) | Procédé de signature décentralisée, sous contrôle biométrique et sous conditions d'identification personnelle et de géolocalisation, d'une transaction destinée à une blockchain. | |
CH716298A2 (fr) | Procédé de stockage, sous forme cryptée, d'une application sur un réseau blockchain, avec audit préalable du code source de cette application. | |
CH716261A2 (fr) | Procédé de stockage de données informatiques par distribution d'un conteneur crypté et de sa clé de déchiffrement sur un réseau blockchain. | |
CH716262A2 (fr) | Procédé de stockage de données informatiques par distribution d'un conteneur crypté et de sa clé de déchiffrement sur des noeuds distincts d'un réseau blockchain. | |
CH716263A2 (fr) | Procédé de stockage de données informatiques par distribution d'un conteneur crypté et de sa clé de déchiffrement fragmentée sur un réseau blockchain. | |
CH716269A2 (fr) | Procédé de stockage de données informatiques par distribution sur un réseau public, avec sauvegarde sur un réseau privé ayant un noeud maître équipé d'une enclave. | |
CH716272A2 (fr) | Procédé de stockage de données informatiques par distribution sur un réseau public, avec sauvegarde sur un réseau privé ayant des noeuds équipés d'enclaves. | |
CH716273A2 (fr) | Procédé de stockage de données informatiques sur un réseau, avec double distribution sur deux ensembles disjoints de noeuds du réseau. | |
CH716284A2 (fr) | Procédé de traitement distribué, au sein d'un réseau blockchain et sous enclaves, de données informatiques chiffrées avec une clé fragmentée. | |
CH716265A2 (fr) | Procédé de stockage de données informatiques sur un réseau avec preuve de stockage à partir d'un noeud de calcul équipé d'une enclave cryptographique. | |
CH716264A2 (fr) | Procédé de stockage de données informatiques sur un réseau avec preuve de stockage obtenue par un noeud de stockage équipé d'une enclave cryptographique. | |
CH716287A2 (fr) | Procédé de traitement de données biométriques d'un individu, avec phases de calibrage et de contrôle et inscription, dans une blockchain, d'un résultat d'analyse. | |
CH716281A2 (fr) | Procédé de traitement, au sein d'un réseau blockchain et sous enclave, de données informatiques chiffrées au moyen d'une application chiffrée. | |
CH716288A2 (fr) | Procédé de traitement de données biométriques d'un individu, avec phases de calibrage et de contrôle et inscription, dans une blockchain, sous condition de géolocalisation, d'un résultat d'analyse. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AZW | Rejection (application) |