CH716298A2 - A method of storing, in encrypted form, an application on a blockchain network, with prior audit of the source code of this application. - Google Patents

A method of storing, in encrypted form, an application on a blockchain network, with prior audit of the source code of this application. Download PDF

Info

Publication number
CH716298A2
CH716298A2 CH00770/19A CH7702019A CH716298A2 CH 716298 A2 CH716298 A2 CH 716298A2 CH 00770/19 A CH00770/19 A CH 00770/19A CH 7702019 A CH7702019 A CH 7702019A CH 716298 A2 CH716298 A2 CH 716298A2
Authority
CH
Switzerland
Prior art keywords
enclave
source code
storage node
network
sep
Prior art date
Application number
CH00770/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 CH00770/19A priority Critical patent/CH716298A2/en
Publication of CH716298A2 publication Critical patent/CH716298A2/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/53Network services using third party service providers
    • 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)
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0872Generation of secret information including derivation or calculation of cryptographic keys or passwords using geo-location information, e.g. location data, time, relative position or proximity to other entities
    • 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/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • 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/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
    • 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
    • H04L9/3255Cryptographic 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 using group based signatures, e.g. ring or threshold signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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
    • 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/2111Location-sensitive, e.g. geographical location, GPS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]

Landscapes

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

Abstract

L'invention concerne un procédé de stockage, sur un réseau ( 1 ) blockchain, d'un conteneur ( 23 ) crypté contenant un exécutable ( 21 ) dérivé d'un code source ( 15 ) d'une application ; le code source ( 15 ) est préalablement audité, dans une enclave ( 8 ) cryptographique, au moyen d'un programme ( 16 ) d'audit pour vérifier que qu'il ne contient aucune commande décrétée interdite.The invention relates to a method for storing, on a blockchain network (1), an encrypted container (23) containing an executable (21) derived from a source code (15) of an application; the source code (15) is previously audited, in a cryptographic enclave (8), by means of an audit program (16) to verify that it does not contain any order declared prohibited.

Description

DOMAINE TECHNIQUETECHNICAL AREA

[0001] L'invention a trait au domaine de l'informatique. Elle concerne, plus précisément, le stockage d'une application, sous forme cryptée, sur un réseau blockchain. The invention relates to the field of computing. It concerns, more precisely, the storage of an application, in encrypted form, on a blockchain network.

ART ANTERIEURPRIOR ART

[0002] Une application est un programme informatique comprenant des instructions pour traiter des données en entrée (en anglais, input) en vue de produire un résultat (en anglais, output). An application is a computer program comprising instructions for processing input data (in English, input) in order to produce a result (in English, output).

[0003] Les instructions sont ordinairement écrites sous forme d'un code source écrit dans un langage informatique de haut niveau, compréhensible par un être humain mais inexploitable par un processeur. Le code source subit donc une compilation, qui produit un fichier en langage machine, exécutable par un processeur. Par convention, on appelle généralement „exécutable“ un tel fichier. [0003] The instructions are usually written in the form of source code written in a high-level computer language, understandable by a human being but unusable by a processor. The source code therefore undergoes a compilation, which produces a file in machine language, executable by a processor. By convention, such a file is generally called an "executable".

[0004] Si de nombreuses applications sont exécutées localement pour traiter des données locales, la proportion d'applications exécutées à distance pour traiter des données en ligne va croissant. [0004] While many applications are executed locally to process local data, the proportion of applications executed remotely to process data online is increasing.

[0005] A présent que le traitement de données en masse (en anglais big data) tend à s'industrialiser, des applications spécialisées scrutent les flux de données (tout particulièrement les données personnelles des usagers) circulant sur la Toile, procèdent à des analyses de ces données, effectuent des calculs (notamment statistiques) puis stockent leurs résultats sur des bases de données aux fins d'une exploitation ultérieure (notamment commerciale). Now that the processing of mass data (in English big data) tends to industrialize, specialized applications scrutinize the data flows (especially the personal data of users) circulating on the Web, carry out analyzes of these data, perform calculations (in particular statistics) then store their results in databases for the purposes of subsequent exploitation (in particular commercial).

[0006] Les usagers n'ont ni la connaissance, ni a fortiori le contrôle des applications qui traitent leurs données personnelles. Or l'exploitation sans limite de ces données personnelles est de plus en plus contestée. [0006] The users have neither the knowledge, nor a fortiori the control of the applications which process their personal data. However, the unlimited use of these personal data is increasingly contested.

[0007] Crypter les données est une solution radicale, qui, d'un côté, présente l'avantage de préserver leur confidentialité, mais, d'un autre côté, présente l'inconvénient d'empêcher tout traitement des données par un tiers. [0007] Encrypting data is a radical solution which, on the one hand, has the advantage of preserving their confidentiality, but, on the other hand, has the drawback of preventing any processing of the data by a third party.

[0008] Cependant il existe de nombreux cas où les usagers peuvent souhaiter que leurs données soient traitées par des tiers. [0008] However, there are many cases where users may wish their data to be processed by third parties.

[0009] Ainsi, certaines données médicales des patients doivent pouvoir être traitées par des organismes de santé (hôpitaux, cliniques, médecins) ; certaines données administratives des citoyens doivent pouvoir être traitées par les administrations ; certaines données financières doivent pouvoir être traitées par le fisc. [0009] Thus, certain medical data of patients must be able to be processed by health organizations (hospitals, clinics, doctors); certain administrative data of citizens must be able to be processed by the administrations; certain financial data must be able to be processed by the tax authorities.

[0010] Cependant il peut être souhaitable que l'usager, propriétaire des données, ait un droit de regard sur les fonctionnalités des applications qui traitent ses données. [0010] However, it may be desirable for the user, owner of the data, to have a right to inspect the functionalities of the applications which process his data.

[0011] Mais les tiers éditeurs d'applications ne sont pas nécessairement disposés à communiquer leur code source. [0011] However, third-party application editors are not necessarily willing to communicate their source code.

[0012] Le besoin existe donc d'une solution permettant de vérifier que les instructions d'une application destinée à traiter des données satisfont certaines conditions (typiquement, que ces instructions n'exécutent pas une copie pure et simple des données traitées), tout en préservant la confidentialité de l'application, afin de protéger son éditeur contre les copies. [0012] There is therefore a need for a solution making it possible to verify that the instructions of an application intended to process data satisfy certain conditions (typically, that these instructions do not execute an outright copy of the processed data), all by preserving the confidentiality of the application, in order to protect its publisher against copies.

RESUME DE L'INVENTIONSUMMARY OF THE INVENTION

[0013] Il est proposé un procédé de stockage d'une application tierce déterminée par un code source, à partir d'une unité de traitement informatique, dite émetteur, reliée ou intégrée à 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 les opérations suivantes : <tb><SEP>- A partir de l'émetteur, transmettre au réseau une requête de stockage ; <tb><SEP>- A réception de la requête par le réseau : <tb><SEP><SEP>o Sélectionner un nœud dit de calcul, équipé d'une unité de traitement dans laquelle est implémenté un environnement d'exécution sécurisé par cryptographie, dit enclave ; <tb><SEP><SEP>o Sélectionner un nœud de stockage sur lequel est mémorisé un programme d'audit de code source, ce programme d'audit comprenant une liste de commandes décrétées interdites, et des instructions pour vérifier qu'un code source ne contient pas de commande décrétée interdite ; <tb><SEP>- Instancier l'enclave du nœud de calcul ; <tb><SEP>- A partir de l'émetteur, charger dans l'enclave le code source de l'application tierce, via une ligne de communication sécurisée ; <tb><SEP>- A partir du nœud de stockage, charger dans l'enclave le programme d'audit de code source ; <tb><SEP>- Dans l'enclave : <tb><SEP><SEP>o Exécuter le programme d'audit sur le code source de l'application tierce ; <tb><SEP><SEP>o Si le code source ainsi audité ne contient aucune commande décrétée interdite, le compiler pour obtenir un fichier exécutable de l'application tierce ; <tb><SEP><SEP>o Chiffrer le fichier exécutable pour former un conteneur crypté, en lui associant une clé cryptographique de déchiffrement ; <tb><SEP><SEP>o Désigner, parmi le réseau, un ou plusieurs nœuds primaires de stockage et un ou plusieurs nœuds secondaires de stockage distincts des nœuds primaires de stockage ; <tb><SEP><SEP>o Distribuer le conteneur crypté vers le ou les nœuds primaires de stockage ; <tb><SEP><SEP>o Distribuer la clé cryptographique de déchiffrement vers le ou les nœuds secondaires de stockage ; <tb><SEP>- Hors de l'enclave : <tb><SEP><SEP>o Mémoriser le conteneur crypté au sein de chaque nœud primaire de stockage ; <tb><SEP><SEP>o Mémoriser la clé cryptographique de déchiffrement au sein de chaque nœud secondaire de stockage ; <tb><SEP>- Inscrire dans un bloc de la chaîne de blocs, par un ou plusieurs nœuds du réseau, au moins une transaction contenant une empreinte numérique des distributions ou des mémorisations ainsi effectuées.A method is proposed for storing a third-party application determined by a source code, from a computer processing unit, called the transmitter, connected or integrated into a peer-to-peer network composed of a plurality nodes forming a distributed database on which is stored, by replication on each node, a chain of blocks, this method comprising the following operations: <tb> <SEP> - From the transmitter, send a storage request to the network; <tb> <SEP> - On receipt of the request by the network: <tb><SEP> <SEP> o Select a so-called computation node, equipped with a processing unit in which an execution environment secured by cryptography, called an enclave, is implemented; <tb><SEP> <SEP> o Select a storage node on which is stored a source code audit program, this audit program comprising a list of commands declared prohibited, and instructions for verifying that a code source does not contain a command declared prohibited; <tb> <SEP> - Instantiate the compute node enclave; <tb> <SEP> - From the transmitter, load the source code of the third-party application into the enclave, via a secure communication line; <tb> <SEP> - From the storage node, load the source code audit program into the enclave; <tb> <SEP> - In the enclave: <tb><SEP> <SEP> o Run the audit program on the source code of the third party application; <tb><SEP> <SEP> o If the source code thus audited does not contain any command declared prohibited, compile it to obtain an executable file of the third-party application; <tb><SEP> <SEP> o Encrypt the executable file to form an encrypted container, by associating it with a cryptographic decryption key; <tb><SEP> <SEP> o Designate, among the network, one or more primary storage nodes and one or more secondary storage nodes distinct from the primary storage nodes; <tb><SEP> <SEP> o Distribute the encrypted container to the primary storage node (s); <tb><SEP> <SEP> o Distribute the cryptographic decryption key to the secondary storage node (s); <tb> <SEP> - Outside the enclave: <tb><SEP> <SEP> o Store the encrypted container within each primary storage node; <tb><SEP> <SEP> o Store the cryptographic decryption key within each secondary storage node; <tb> <SEP> - Enter in a block of the chain of blocks, by one or more nodes of the network, at least one transaction containing a digital fingerprint of the distributions or memorizations thus carried out.

[0014] Selon un mode préféré de réalisation, sont en outre prévues les opérations suivantes : <tb><SEP>- Dans l'enclave : <tb><SEP><SEP>o Fragmenter la clé cryptographique de déchiffrement pour former un nombre prédéterminé de fragments ; <tb><SEP><SEP>o Désigner, parmi le réseau, un groupe de nœuds secondaires de stockage en nombre égal aux fragments ; <tb><SEP><SEP>o Distribuer chaque fragment de la clé cryptographique de déchiffrement vers un nœud secondaire de stockage, chaque nœud secondaire de stockage recevant un unique fragment ; <tb><SEP>- Hors de l'enclave : <tb><SEP><SEP>o Mémoriser chaque fragment de la clé cryptographique de déchiffrement au sein de chaque nœud secondaire de stockage.[0014] According to a preferred embodiment, the following operations are also provided: <tb> <SEP> - In the enclave: <tb><SEP> <SEP> o Fragment the cryptographic decryption key to form a predetermined number of fragments; <tb><SEP> <SEP> o Designate, among the network, a group of secondary storage nodes in a number equal to the fragments; <tb><SEP> <SEP> o Distribute each fragment of the cryptographic decryption key to a secondary storage node, each secondary storage node receiving a unique fragment; <tb> <SEP> - Outside the enclave: <tb><SEP> <SEP> o Store each fragment of the decryption cryptographic key within each secondary storage node.

BREVE DESCRIPTION DES FIGURESBRIEF DESCRIPTION OF THE FIGURES

[0015] 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 diagramme fonctionnel illustrant des étapes de d'un procédé de stockage d'une application, sous forme d'un exécutable crypté, sur un réseau blockchain.[0015] Other objects and advantages of the invention will appear in the light of the description of an embodiment, given below with reference to the accompanying drawings in which: <tb> <SEP> LaFIG.1 is a simplified block diagram illustrating a peer-to-peer network on which a chain of blocks is distributed; <tb> <SEP> LaFIG.2 is a simplified functional diagram illustrating different components of a computer processing unit involved in the creation and operation of a secure execution environment called an enclave; <tb> <SEP> LaFIG.3 is a functional diagram illustrating the steps of a process for storing an application, in the form of an encrypted executable, on a blockchain network.

DESCRIPTION DETAILLEE DE L'INVENTIONDETAILED DESCRIPTION OF THE INVENTION

[0016] Le procédé proposé vise à stocker, sous forme d'un exécutable, une application initialement déterminée par un code source, après avoir audité le code source pour vérifier qu'il satisfait certaines conditions prédéterminées. The proposed method aims to store, in the form of an executable, an application initially determined by a source code, after having audited the source code to verify that it satisfies certain predetermined conditions.

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

[0018] 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“.[0018] Blockchain technology is organized in layers. She understands : A layer of hardware infrastructure, called a “blockchain network”; A protocol layer called the “blockchain protocol”; An information layer, called the “blockchain register”.

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

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

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

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

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

[0024] 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. [0024] According to a particular embodiment, the digital fingerprint of each bloc4 is a digest (or hash) of the data of bloc4, that is to say the result of a hash function applied to the data of block4 (including body4A and header4B except for the digital fingerprint itself). The hash function is typically SHA-256.

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

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

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

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

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

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

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

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

[0033] 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.[0033] A smart contract comprises two elements: An account, called a “Contract account”, in the memory area of which is written a source code containing computer instructions implementing the functions assigned to the smart contract; An executable code (in English Executable Bytecode) resulting from a compilation of the source code, this executable code being stored or deployed within the register5blockchain, that is to say inserted as a transaction in a block4 of the register5blockchain.

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

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

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

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

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

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

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

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

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

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

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

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

[0046] 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 set of particular instructions executable by the processor7et called by the part (s) 13secure (s) of the application11.

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

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

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

[0050] Sur laFIG.3, on a représenté un diagramme fonctionnel qui illustre différentes étapes du procédé de stockage d'une application. Cette application est déterminée par un code source15, qui est stocké sur une unité de traitement informatique, dite émetteurE, reliée au réseau1blockchain. In theFIG.3, there is shown a functional diagram which illustrates different steps of the method of storing an application. This application is determined by a source code15, which is stored on a computer processing unit, called transmitterE, connected to the network1blockchain.

[0051] Selon un mode préféré de réalisation, le procédé est mis en oeuvre par un contrat intelligentSCdéployé sur la blockchain5. According to a preferred embodiment, the method is implemented by an intelligent contract SC deployed on the blockchain5.

[0052] L'application est destinée à traiter des données (non représentées), telles que des données personnelles, médicales, financières, d'un utilisateur. The application is intended to process data (not shown), such as personal, medical, financial data of a user.

[0053] Le code source15est auditable, c'est-à-dire qu'il peut être examiné pour détecter d'éventuelles instructions non souhaitables ; cependant, il n'est pas applicable tel quel : il convient de le compiler pour en dériver un exécutable susceptible d'être appliqué aux données à traiter. The source code15 is auditable, that is to say that it can be examined to detect any undesirable instructions; however, it is not applicable as it is: it should be compiled to derive an executable capable of being applied to the data to be processed.

[0054] A cet effet, il est prévu un programme16d'audit de code source, qui comprend une liste prédéterminée de commandes décrétées interdites (telle que la copie au moins partielle des données à traiter), et des instructions pour vérifier que le code source15ne contient pas de commande décrétée interdite. To this end, a source code audit program is provided, which comprises a predetermined list of commands declared prohibited (such as at least partial copying of the data to be processed), and instructions for verifying that the source code is not contains no order declared prohibited.

[0055] Comme illustré sur laFIG.3, le programme16d'audit est stocké (sous forme d'un fichier, de préférence directement sous forme d'un exécutable) sur un nœud2Sde stockage du réseau. As illustrated in laFIG.3, the audit program is stored (in the form of a file, preferably directly in the form of an executable) on a storage node 2S of the network.

[0056] Une première opération101consiste, à partir de l'émetteurE, à transmettre au réseau1une requête de stockage. Dans l'exemple illustré, cette requête est exécutée par un appel (CALL) du contrat intelligentSC. A first operation 101 consists, from the transmitter, in transmitting to the network 1 a storage request. In the example illustrated, this request is executed by a call (CALL) of the intelligent contractSC.

[0057] Une deuxième opération102consiste, à réception de la requête de stockage, à : <tb><SEP>o Sélectionner un nœud2Cdit de calcul, équipé d'une unité de traitement dans laquelle est implémentée une enclave 8 ; <tb><SEP>o Sélectionner un nœud2Sde stockage sur lequel est mémorisé le programme16d'audit.A second operation 102 consists, on receipt of the storage request, in: <tb> <SEP> o Select a calculation node2Cdit, equipped with a processing unit in which an enclave 8 is implemented; <tb> <SEP> o Select a storage node 2 on which the audit program is stored.

[0058] Ces opérations sont typiquement conduites par exécution des instructions du contrat intelligentSC. These operations are typically carried out by executing the instructions of the intelligentSC contract.

[0059] Une troisième opération consiste à instancier l'enclave8du nœud2Cde calcul. Le code du contrat intelligentSCest chargé dans l'enclave8pour exécution. Est également chargée dans l'enclave8une machine virtuelle (EVM lorsque le contrat intelligentSCest programmé selon les spécifications d'Ethereum) destinée à permettre l'exécution du code du contrat intelligentSC. A third operation consists in instantiating the computation enclave8du node2C. The smart contract code SC is loaded into the enclave8 for execution. Also loaded into the enclave8 is a virtual machine (EVM when the smart contract SC is programmed according to Ethereum's specifications) intended to allow execution of the code of the smart contract SC.

[0060] Une quatrième opération104consiste, à partir de l'émetteurE, à charger dans l'enclave8le code source15de l'application tierce, 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. A fourth operation104 consists, from the transmitterE, in loading the source code15of the third-party application into the enclave8, via a secure communication line (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.

[0061] Une cinquième opération105consiste, à partir du nœud2Sde stockage, à charger dans l'enclave8(également, de préférence, via une ligne de communication sécurisée) le programme16d'audit. A fifth operation105 consists, from the storage node2S, in loading into the enclave8 (also, preferably, via a secure communication line) the audit program16.

[0062] Une sixième opération106consiste, dans l'enclave8, à exécuter le programme16d'audit sur le code source15de l'application tierce, aux fins de vérifier que celui-ci ne contient pas d'instruction décrétée interdite. A cet effet, l'enclave8comprend un module19d'audit. A sixth operation 106 consists, in the enclave 8, in executing the audit program 16 on the source code 15 of the third-party application, for the purpose of verifying that it does not contain an instruction declared prohibited. For this purpose, the enclave8 includes an audit module19.

[0063] Si le code source15ainsi audité ne contient aucune commande décrétée interdite, il est décrété certifié. Sur laFIG.3, pour les seuls besoins de la compréhension, le code source15audité est assorti d'un certificat qui illustre le succès de l'audit réalisé. If the source code15 thus audited does not contain any order declared prohibited, it is declared certified. In FIG. 3, for the sole purpose of understanding, the audited source code15 is accompanied by a certificate which illustrates the success of the audit carried out.

[0064] Dans ce cas, une septième opération107consiste alors à compiler le code source15ainsi audité, au moyen d'un compilateur20(préalablement chargé dans l'enclave5), le résultat de cette compilation étant un fichier21exécutable de l'application tierce. A cet effet, l'enclave8comprend un module22de compilation. In this case, a seventh operation 107 then consists in compiling the source code15 thus audited, by means of a compiler20 (previously loaded in the enclave5), the result of this compilation being an executable file21 of the third-party application. For this purpose, the enclave8 includes a compilation module22.

[0065] Une huitième opération108consiste à crypter le fichier21exécutable pour former un conteneur23crypté, au moyen d'une clé cryptographique de chiffrement, en lui associant une clé24cryptographique de déchiffrement. Selon un mode de réalisation préféré, le chiffrement est symétrique, de sorte que la clé de chiffrement et la clé24de déchiffrement sont une seule et même clé. An eighth operation108consists in encrypting the executable file21 to form an encrypted container23, by means of an encryption cryptographic key, by associating it with a decryption cryptographic key24. According to a preferred embodiment, the encryption is symmetrical, so that the encryption key and the decryption key are one and the same key.

[0066] Le chiffrement est réalisé au sein d'un module25de chiffrement dont est pourvue l'enclave8. The encryption is carried out within an encryption module25 with which the enclave8 is provided.

[0067] Le conteneur23crypté contenant le fichier21exécutable de l'application tierce, d'une part, et la clé24de déchiffrement associée, d'autre part, peuvent alors être distribués sur le réseau1blockchain. The encrypted container23 containing the executable file21 of the third-party application, on the one hand, and the associated decryption key24, on the other hand, can then be distributed over the blockchain network.

[0068] Cependant, selon un mode préféré de réalisation, la clé24est, auparavant, fragmentée. [0068] However, according to a preferred embodiment, the key 24 is previously fragmented.

[0069] Ainsi, comme illustré sur laFIG.3, une neuvième opération109consiste à fragmenter la clé24de déchiffrement. Plus précisément, la clé24de déchiffrement est fragmentée en un nombre N prédéterminé de fragments24.i, (i un entier, 2≤i≤N). Thus, as illustrated in theFIG.3, a ninth operation109 consists in fragmenting the decryption key24. More precisely, the decryption key24 is fragmented into a predetermined number N of fragments24.i, (i an integer, 2≤i≤N).

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

[0071] Une dixième opération110consiste alors à désigner, parmi le réseau1, un ou plusieurs nœuds2Aprimaires de stockage destinés à recevoir le conteneur23crypté, et un ou plusieurs nœuds2Bsecondaires de stockage distinct(s) du (des) nœuds2Aprimaires de stockage, et destiné(s) à recevoir la clé24. A tenth operation 110 then consists in designating, among the network 1, one or more primary storage nodes 2 intended to receive the encrypted container 23, and one or more secondary storage nodes 2 B distinct from the primary storage nodes 2, and intended for to receive the key 24.

[0072] Plus précisément, dans le cas où la clé24est fragmentée, cette dixième opération comprend la désignation, parmi le réseau1, d'un groupe de plusieurs nœuds2Bsecondaires de stockage, en nombre N égal au nombre de fragments24.ide la clé24de déchiffrement. More precisely, in the case where the key24 is fragmented, this tenth operation comprises the designation, among the network1, of a group of several secondary storage nodes2B, in number N equal to the number of fragments24.ide the decryption key24.

[0073] Comme on le voit sur laFIG.3, ces nœuds2Bsecondaires de stockage sont de préférence distinct(s) des nœuds2Aprimaires de stockage - en d'autres termes, les nœuds2Aprimaires de stockage et les nœuds2Bsecondaires de stockage forment deux groupes disjoints (représentés en pointillés sur laFIG.3). As seen in Fig.3, these secondary storage 2B nodes are preferably distinct from primary storage nodes2 - in other words, primary storage nodes2 and secondary storage nodes2B form two disjoint groups (shown in dotted lines in FIG. 3).

[0074] Une onzième opération consiste à distribuer le conteneur23crypté vers le ou les nœuds2Aprimaires de stockage. An eleventh operation consists in distributing the encrypted container23 to the primary storage node or nodes.

[0075] Une douzième opération112consiste à distribuer la clé24de déchiffrement vers le(s) nœud(s)2Bsecondaire(s) de stockage. Plus précisément, dans l'exemple illustré, cette douzième opération112consiste à distribuer les fragments24.ide la clé24cryptographique de déchiffrement vers les nœuds2Bsecondaires de stockage, chaque nœud2Bsecondaire de stockage recevant un unique fragment24.i. A twelfth operation112 consists in distributing the key24de decryption to the secondary storage node (s) 2B (s). More precisely, in the example illustrated, this twelfth operation112 consists in distributing the fragments24.ide the cryptographic decryption key24 to the secondary storage nodes2B, each secondary storage node2B receiving a unique fragment24.i.

[0076] Selon un mode préféré de réalisation, l'enclave8est pourvue d'un module26de distribution du conteneur23crypté, auquel le module25de chiffrement communique le conteneur23crypté, ainsi qu'un module27de fragmentation et de distribution de clé, auquel le module25de chiffrement communique la clé24de déchiffrement pour fragmentation et distribution aux nœuds2Bsecondaires de stockage. According to a preferred embodiment, the enclave8 is provided with a distribution module26 for the encrypted container23, to which the encryption module25 communicates the encrypted container23, as well as a fragmentation and key distribution module27, to which the encryption module25 communicates the decryption key24. for fragmentation and distribution to secondary storage 2B nodes.

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

[0078] Hors de l'enclave8, les opérations suivantes sont réalisées : <tb><SEP>o Le conteneur23crypté est mémorisé au sein de chaque nœud2Aprimaire de stockage ; <tb><SEP>o La clé24est mémorisée au sein de chaque nœud2Bsecondaire de stockage - et plus précisément, dans l'exemple illustré, chaque fragment24.ide la clé24cryptographique de déchiffrement est mémorisé au sein de chaque nœud2Brespectif secondaire de stockage.Outside the enclave8, the following operations are carried out: <tb> <SEP> o The encrypted container23 is stored within each primary storage node2; <tb> <SEP> o Key24 is stored within each secondary storage node2B - and more specifically, in the example shown, each fragment24.ide the decryption cryptographic key24 is stored within each secondary storage node2B respective.

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

[0080] Grâce au procédé qui vient d'être décrit, il est possible de vérifier que les instructions d'une application destinée à traiter des données satisfont certaines conditions (typiquement, que ces instructions n'exécutent pas une copie pure et simple des données traitées), tout en préservant la confidentialité de l'application, ce qui permet notamment de protéger son éditeur contre les copies. Thanks to the method which has just been described, it is possible to verify that the instructions of an application intended to process data satisfy certain conditions (typically, that these instructions do not execute a pure and simple copy of the data. processed), while preserving the confidentiality of the application, which makes it possible in particular to protect its publisher against copies.

[0081] Une fois l'audit réalisé, l'application est compilée puis stockée sous forme d'un exécutable, prêt à l'emploi pour le traitement des données. L'audit réalisé sur le code source de l'application permet de garantir que les données ne feront pas l'objet d'une exploitation indue. Once the audit has been performed, the application is compiled and then stored in the form of an executable, ready to use for data processing. The audit carried out on the source code of the application guarantees that the data will not be subjected to undue exploitation.

Claims (2)

1. Procédé de stockage d'une application tierce déterminée par un code source (15), à partir d'une unité de traitement informatique, dite émetteur (E), reliée ou intégrée à 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 les opérations suivantes : - A partir de l'émetteur (E), transmettre au réseau (1) une requête de stockage ; - A réception de la requête par le réseau (1) : o Sélectionner un nœud (2C) dit de calcul, équipé d'une unité de traitement dans laquelle est implémenté un environnement d'exécution sécurisé par cryptographie, dit enclave (8) ; o Sélectionner un nœud (2S) de stockage sur lequel est mémorisé un programme (16) d'audit de code source, ce programme (16)d'audit comprenant une liste de commandes décrétées interdites, et des instructions pour vérifier qu'un code source ne contient pas de commande décrétée interdite ; - Instancier l'enclave (8) du nœud (2C) de calcul ; - A partir de l'émetteur (E), charger dans l'enclave (8) le code source (15) de l'application tierce, via une ligne (17) de communication sécurisée ; - A partir du nœud de stockage (2A), charger dans l'enclave le programme (16) d'audit de code source ; - Dans l'enclave (5) : o Exécuter le programme (16) d'audit sur le code source (15) de l'application tierce ; o Si le code source (15) ainsi audité ne contient aucune commande décrétée interdite, le compiler pour obtenir un fichier (21) exécutable de l'application tierce ; o Chiffrer le fichier (21) exécutable pour former un conteneur (23) crypté, en lui associant une clé (24) cryptographique de déchiffrement ; o Désigner, parmi le réseau (1), un ou plusieurs nœuds (2A) primaires de stockage et un ou plusieurs nœuds (2B) secondaires de stockage distincts des nœuds (2A) primaires de stockage ; o Distribuer le conteneur (23) crypté vers le ou les nœuds (2A) primaires de stockage ; o Distribuer la clé (24) cryptographique de déchiffrement vers le ou les nœuds (2B) secondaires de stockage ; - Hors de l'enclave (8) : o Mémoriser le conteneur (23) crypté au sein de chaque nœud (2A) primaire de stockage ; o Mémoriser la clé (24) cryptographique de déchiffrement au sein de chaque nœud (2B) secondaire de stockage ; - Inscrire dans un bloc (4) de la chaîne (5) de blocs, par un ou plusieurs nœuds (2) du réseau (1), au moins une transaction contenant une empreinte numérique des distributions ou des mémorisations ainsi effectuées.1. Method for storing a third-party application determined by a source code (15), from a computer processing unit, called the transmitter (E), connected or integrated into a compound peer-to-peer network (1) of a plurality of nodes (2) forming a distributed database on which is stored, by replication on each node (2), a chain (5) of blocks, this method comprising the following operations: - From the transmitter (E), transmit to the network (1) a storage request; - On receipt of the request by the network (1): o Select a so-called computing node (2C), equipped with a processing unit in which an execution environment secured by cryptography, called an enclave (8) is implemented; o Select a storage node (2S) on which is stored a source code audit program (16), this audit program (16) comprising a list of commands declared prohibited, and instructions for verifying that a code source does not contain a command declared prohibited; - Instantiate the enclave (8) of the compute node (2C); - From the transmitter (E), load the source code (15) of the third-party application into the enclave (8), via a secure communication line (17); - From the storage node (2A), load the source code audit program (16) into the enclave; - In the enclave (5): o Run the audit program (16) on the source code (15) of the third-party application; o If the source code (15) thus audited does not contain any command declared prohibited, compile it to obtain an executable file (21) of the third-party application; o Encrypt the executable file (21) to form an encrypted container (23), by associating it with a cryptographic decryption key (24); o Designate, from among the network (1), one or more primary storage nodes (2A) and one or more secondary storage nodes (2B) distinct from the primary storage nodes (2A); o Distribute the encrypted container (23) to the primary storage node (s) (2A); o Distribute the cryptographic decryption key (24) to the secondary storage node (s) (2B); - Outside the enclave (8): o Store the encrypted container (23) within each primary storage node (2A); o Store the cryptographic decryption key (24) within each secondary storage node (2B); - Enter in a block (4) of the chain (5) of blocks, through one or more nodes (2) of the network (1), at least one transaction containing a digital fingerprint of the distributions or memorizations thus carried out. 2. Procédé selon la revendication 1, qui comprend les opérations suivantes : - Dans l'enclave (8) : o Fragmenter la clé (24) cryptographique de déchiffrement pour former un nombre prédéterminé de fragments (24.i) ; o Désigner, parmi le réseau (1), un groupe de nœuds (2B) secondaires de stockage en nombre égal aux fragments (24.i); o Distribuer chaque fragment (24.i) de la clé (24) cryptographique de déchiffrement vers un nœud (2B) secondaire de stockage, chaque nœud (2B) secondaire de stockage recevant un unique fragment (24.i) ; - Hors de l'enclave (8) : o Mémoriser chaque fragment (24.i) de la clé (24) cryptographique de déchiffrement au sein de chaque nœud (2B) secondaire de stockage.2. The method of claim 1, which comprises the following operations: - In the enclave (8): o Fragment the cryptographic decryption key (24) to form a predetermined number of fragments (24.i); o Designate, among the network (1), a group of secondary storage nodes (2B) in a number equal to the fragments (24.i); o Distribute each fragment (24.i) of the cryptographic decryption key (24) to a secondary storage node (2B), each secondary storage node (2B) receiving a single fragment (24.i); - Outside the enclave (8): o Memorize each fragment (24.i) of the cryptographic decryption key (24) within each secondary storage node (2B).
CH00770/19A 2019-06-07 2019-06-07 A method of storing, in encrypted form, an application on a blockchain network, with prior audit of the source code of this application. CH716298A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CH00770/19A CH716298A2 (en) 2019-06-07 2019-06-07 A method of storing, in encrypted form, an application on a blockchain network, with prior audit of the source code of this application.

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CH00770/19A CH716298A2 (en) 2019-06-07 2019-06-07 A method of storing, in encrypted form, an application on a blockchain network, with prior audit of the source code of this application.

Publications (1)

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

Family

ID=73727430

Family Applications (1)

Application Number Title Priority Date Filing Date
CH00770/19A CH716298A2 (en) 2019-06-07 2019-06-07 A method of storing, in encrypted form, an application on a blockchain network, with prior audit of the source code of this application.

Country Status (1)

Country Link
CH (1) CH716298A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112906068A (en) * 2021-03-18 2021-06-04 上海能链众合科技有限公司 Calculation control method for block chain external agent technology

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112906068A (en) * 2021-03-18 2021-06-04 上海能链众合科技有限公司 Calculation control method for block chain external agent technology
CN112906068B (en) * 2021-03-18 2024-03-12 上海零数众合信息科技有限公司 Block chain external agent technology calculation control method

Similar Documents

Publication Publication Date Title
CN110060054B (en) Method, node, system and storage medium for implementing privacy protection in block chain
CN111899017A (en) Method, node and storage medium for realizing privacy protection in block chain
WO2021057167A1 (en) Method and device for transaction processing for fpga-based secure smart contract processor
WO2021057273A1 (en) Method and apparatus for realizing efficient contract calling on fpga
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.
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.
CH716285A2 (en) Method for checking the biometric data of an individual, with registration, in a blockchain, of an analysis result.
CH716294A2 (en) Decentralized signature process, under biometric control and under conditions of personal identification and geolocation, of a transaction intended for a blockchain.
CH716275A2 (en) A method of processing, within a blockchain and sub-enclave network, encrypted computer data by means of an encrypted application.
CH716279A2 (en) A method of processing, within a blockchain and sub-enclave network, encrypted computer data by means of an encrypted application containing source code.
CH716277A2 (en) Process for processing, within a blockchain and sub-enclave network, computer data encrypted by means of an encrypted application, subject to geolocation.
CH716276A2 (en) A method of processing, within a blockchain and sub-enclave network, computer data encrypted by means of an encrypted application, for an authorized third party.
CH716281A2 (en) A method of processing, within a blockchain and sub-enclave network, encrypted computer data by means of an encrypted application.
CH716283A2 (en) A method of distributed processing, within a blockchain network and sub-enclaves, of computer data encrypted by means of an encrypted application.
CH716284A2 (en) Process for distributed processing, within a blockchain network and sub-enclaves, of computer data encrypted with a fragmented key.
CH716297A2 (en) A method of processing, in an enclave, encrypted computer data by means of an encrypted application containing source code, with prior auditing thereof.
CH716263A2 (en) A method of storing computer data by distributing an encrypted container and its fragmented decryption key on a blockchain network.
CH716266A2 (en) A method of storing computer data on a blockchain network with proof of storage from a storage node equipped with a cryptographic enclave.
CH716261A2 (en) A method of storing computer data by distributing an encrypted container and its decryption key on a blockchain network.
CH716287A2 (en) Process for processing biometric data of an individual, with phases of calibration and control and registration, in a blockchain, of an analysis result.
CH716262A2 (en) A method of storing computer data by distributing an encrypted container and its decryption key on separate nodes of a blockchain network.
CH716267A2 (en) A method of storing computer data on a blockchain network with proof of storage from a computing node equipped with a cryptographic enclave.
CH716288A2 (en) Process for processing biometric data of an individual, with phases of calibration and control and registration, in a blockchain, subject to geolocation, of an analysis result.
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.
CH716289A2 (en) A method of checking the biometric data of an individual, with registration, in a blockchain, subject to personal identification, of an analysis result.

Legal Events

Date Code Title Description
AZW Rejection (application)