ES2932500T3 - Select and secure test delegates for cryptographic functions - Google Patents

Select and secure test delegates for cryptographic functions Download PDF

Info

Publication number
ES2932500T3
ES2932500T3 ES18756360T ES18756360T ES2932500T3 ES 2932500 T3 ES2932500 T3 ES 2932500T3 ES 18756360 T ES18756360 T ES 18756360T ES 18756360 T ES18756360 T ES 18756360T ES 2932500 T3 ES2932500 T3 ES 2932500T3
Authority
ES
Spain
Prior art keywords
cryptographic
resource
backend
examples
enclave
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES18756360T
Other languages
Spanish (es)
Inventor
John Marley Gray
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Application granted granted Critical
Publication of ES2932500T3 publication Critical patent/ES2932500T3/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/029Firewall traversal, e.g. tunnelling or, creating pinholes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network 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 wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network 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 wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
    • 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/3218Cryptographic 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 proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3234Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving additional secure or trusted devices, e.g. TPM, smartcard, USB or software token
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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/3271Cryptographic 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 challenge-response
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • G06Q20/0658Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash e-cash managed locally
    • 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/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/127Trusted platform modules [TPM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Executing Machine-Instructions (AREA)
  • Regulating Braking Force (AREA)
  • Photoreceptors In Electrophotography (AREA)
  • Storage Device Security (AREA)

Abstract

La tecnología divulgada generalmente está dirigida a funciones criptográficas para contratos inteligentes. En un ejemplo de la tecnología, se recibe una solicitud de recursos criptográficos. La solicitud de recursos criptográficos incluye una identidad vinculante (ID). Los recursos criptográficos se extraen de al menos un grupo de recursos criptográficos de una pluralidad de grupos de recursos criptográficos en respuesta a la solicitud de recursos criptográficos. Los conjuntos de recursos criptográficos separados de la pluralidad de conjuntos de recursos criptográficos son conjuntos de tipos separados de recursos criptográficos. Se determina qué tipo de código de delegado de prueba es adecuado para cada recurso criptográfico obtenido. Para cada recurso criptográfico obtenido, el tipo determinado de código de delegado de prueba se inyecta en el recurso criptográfico obtenido. (Traducción automática con Google Translate, sin valor legal)The disclosed technology is generally targeted at cryptographic functions for smart contracts. In one example of the technology, a request for cryptographic resources is received. The request for cryptographic resources includes a binding identity (ID). Cryptographic resources are extracted from at least one cryptographic resource pool of a plurality of cryptographic resource pools in response to the cryptographic resource request. The separate sets of cryptographic resources of the plurality of sets of cryptographic resources are sets of separate types of cryptographic resources. It is determined which type of test delegate code is suitable for each obtained cryptographic resource. For each obtained cryptographic resource, the given type of test delegate code is injected into the obtained cryptographic resource. (Automatic translation with Google Translate, without legal value)

Description

DESCRIPCIÓNDESCRIPTION

Seleccionar y asegurar delegados de prueba para funciones criptográficasSelect and secure test delegates for cryptographic functions

AntecedentesBackground

Los sistemas de cadena de bloques son unos sistemas que se han propuesto para una variedad de escenarios de aplicación, lo que incluye aplicaciones en la industria financiera, en la atención médica, en IoT, etc. Por ejemplo, el sistema Bitcoin se desarrolló para permitir que el efectivo electrónico se transfiera directamente de una parte a otra sin pasar por una institución financiera. Un bitcoin (por ejemplo, una moneda electrónica) está representado por una cadena de transacciones que transfiere la propiedad de una parte a otra parte. Para transferir la propiedad de un bitcoin, se puede generar una nueva transacción y añadirla a una pila de transacciones en un bloque. La nueva transacción, que incluye la clave pública del nuevo propietario, puede ser firmada digitalmente por el propietario con la clave privada del propietario para transferir la propiedad al nuevo propietario al estar representado por la clave pública del nuevo propietario.Blockchain systems are systems that have been proposed for a variety of application scenarios, including applications in the financial industry, healthcare, IoT, etc. For example, the Bitcoin system was developed to allow electronic cash to be transferred directly from one party to another without going through a financial institution. A bitcoin (for example, an electronic currency) is represented by a chain of transactions that transfers ownership from one party to another party. To transfer ownership of a bitcoin, a new transaction can be generated and added to a stack of transactions in a block. The new transaction, which includes the new owner's public key, can be digitally signed by the owner with the owner's private key to transfer ownership to the new owner by being represented by the new owner's public key.

Una vez que el bloque está lleno, el bloque se puede "coronar" con un encabezado de bloque que es un compendio de hash de todos los identificadores de transacción dentro del bloque. El encabezado del bloque puede grabarse como la primera transacción en el siguiente bloque de la cadena, creando una jerarquía matemática llamada "cadena de bloques". Para verificar al propietario actual se puede seguir la cadena de bloques de transacciones para verificar cada transacción, desde la primera transacción hasta la última transacción. El nuevo propietario sólo necesita tener la clave privada que coincida con la clave pública de la transacción que transfirió el bitcoin. La cadena de bloques puede crear una prueba matemática de propiedad en una entidad representada por una identidad de seguridad (por ejemplo, una clave pública), que en el caso del sistema bitcoin es casi anónima. De acuerdo con Tramer Florian et al, "Sealed-Glass Proofs: Using Transparent Enclaves to Prove and Sell Knowledge", Simposio europeo sobre seguridad y privacidad del IEEE de 2017, doi:10.1109/EUROSP.2017.28, páginas 19 a 34, ciertos sistemas de hardware confiables, tales como como la nueva extensión de la arquitectura del conjunto de instrucciones SGX de Intel, se destinan a proporcionar garantías sólidas de confidencialidad e integridad para las aplicaciones. Los autores proponen, formalizan y exploran una primitiva criptográfica que se denomina prueba de vidrio sellado (SGP) que modela la computación posible en un entorno de ejecución aislado con fuga ilimitada, y, de este modo, frente a canales laterales arbitrarios. Un SGP modela específicamente las capacidades del equipo físico informático (hardware) de confianza que puedan certificar la ejecución correcta de un fragmento de código, siendo su ejecución transparente, lo que significa que la información secreta y el estado de una aplicación serán visibles para otros procesos en el mismo anfitrión. Los autores observan que los SGP permiten la computación verificable segura en entornos de conocimiento cero, ya que la fuga de datos sólo da como resultado que el que va a hacer comprobaciones aprenda sus propios información secreta.Once the block is full, the block can be "topped" with a block header that is a hash digest of all transaction ids within the block. The block header can be recorded as the first transaction in the next block in the chain, creating a mathematical hierarchy called a "block chain." To verify the current owner, you can follow the blockchain of transactions to verify each transaction, from the first transaction to the last transaction. The new owner only needs to have the private key that matches the public key of the transaction that transferred the bitcoin. The blockchain can create a mathematical proof of ownership in an entity represented by a security identity (for example, a public key), which in the case of the bitcoin system is nearly anonymous. According to Tramer Florian et al, "Sealed-Glass Proofs: Using Transparent Enclaves to Prove and Sell Knowledge," 2017 IEEE European Symposium on Security and Privacy, doi:10.1109/EUROSP.2017.28, pages 19-34, certain systems Trusted hardware, such as the new extension to Intel's SGX instruction set architecture, are intended to provide strong guarantees of confidentiality and integrity for applications. The authors propose, formalize, and explore a cryptographic primitive called Sealed Glass Proof (SGP) that models computation possible in an isolated execution environment with unlimited leakage, and thus against arbitrary side channels. An SGP specifically models the capabilities of trusted hardware that can certify the correct execution of a piece of code, its execution being transparent, which means that the secret information and state of an application will be visible to other processes. on the same host. The authors note that SGPs enable secure verifiable computing in zero-knowledge environments, since data leakage only results in the tester learning his own secret information.

Sumario de la divulgaciónDisclosure Summary

El objeto de la presente invención es proporcionar métodos y aparatos para mejorar la seguridad de la información. Este objeto se soluciona mediante el objeto de las reivindicaciones independientes.The object of the present invention is to provide methods and apparatus for improving information security. This object is solved by the object of the independent claims.

Las realizaciones están definidas por las reivindicaciones dependientes.Embodiments are defined by the dependent claims.

Este sumario se proporciona para presentar una selección de conceptos en una forma simplificada que se describen adicionalmente en la descripción detallada. Este sumario no pretende identificar las características clave o las características esenciales del objeto reivindicado, ni pretende ser utilizado para limitar el alcance del objeto reclamado.This summary is provided to present a selection of concepts in a simplified form that are further described in the detailed description. This summary is not intended to identify the key features or essential features of the claimed item, nor is it intended to be used to limit the scope of the claimed item.

Dicho brevemente, la tecnología divulgada generalmente se dirige a funciones criptográficas para contratos inteligentes. En un ejemplo de la tecnología, se recibe una solicitud de recursos criptográficos. En algunos ejemplos, la solicitud de recursos criptográficos incluye una identidad (ID) de vinculación. En algunos ejemplos, los recursos criptográficos se extraen de al menos un grupo de recursos criptográficos, perteneciente a una pluralidad de grupos de recursos criptográficos, y en respuesta a la solicitud de recursos criptográficos. En algunos ejemplos, los grupos de recursos criptográficos desagregados de la pluralidad de grupos de recursos criptográficos son grupos de tipos desagregados de recursos criptográficos. En algunos ejemplos, se determina qué tipo de código de delegado de prueba es adecuado para cada recurso criptográfico extraído. En algunos ejemplos, para cada recurso criptográfico extraído, el tipo determinado de código de delegado de prueba se inyecta en el recurso criptográfico extraído.Put briefly, the disclosed technology is generally directed at cryptographic functions for smart contracts. In one example of the technology, a request for cryptographic resources is received. In some examples, the request for cryptographic resources includes a binding identity (ID). In some examples, cryptographic resources are extracted from at least one cryptographic resource group, belonging to a plurality of cryptographic resource groups, and in response to the cryptographic resource request. In some examples, the groups of disaggregated cryptographic resources of the plurality of groups of cryptographic resources are groups of disaggregated types of cryptographic resources. In some examples, it is determined which type of test delegate code is appropriate for each mined cryptographic resource. In some examples, for each mined cryptographic resource, the given type of test delegate code is injected into the mined cryptographic resource.

Otros aspectos y aplicaciones de la tecnología divulgada se apreciarán al leer y comprender las figuras y la descripción adjuntas.Other aspects and applications of the disclosed technology will be appreciated by reading and understanding the accompanying figures and description.

Breve descripción de los dibujosBrief description of the drawings

Los ejemplos no limitantes y no exhaustivos de la presente divulgación se describen con referencia a los siguientes dibujos. En los dibujos, los números de referencia similares se refieren a partes similares en las diversas figuras, a menos que se especifique lo contrario. Los dibujos del presente documento no están necesariamente dibujados a escala.Non-limiting and non-exhaustive examples of the present disclosure are described with reference to the following drawings. In the drawings, like reference numerals refer to like parts in the various figures, unless otherwise specified. The drawings in this document are not necessarily drawn to scale.

Para una mejor comprensión de la presente divulgación, se hará referencia a la siguiente descripción detallada, que debe leerse en asociación con los dibujos que se acompañan, en los cuales:For a better understanding of the present disclosure, reference will be made to the following detailed description, which should be read in association with the accompanying drawings, in which:

la figura 1 es un diagrama de bloques que ilustra un ejemplo de un entorno adecuado en el que pueden emplearse aspectos de la tecnología;Figure 1 is a block diagram illustrating an example of a suitable environment in which aspects of the technology may be employed;

la figura 2 es un diagrama de bloques que ilustra un ejemplo de un dispositivo informático adecuado de acuerdo con aspectos de la tecnología divulgada;Figure 2 is a block diagram illustrating an example of a suitable computing device in accordance with aspects of the disclosed technology;

la figura 3 es un diagrama de bloques que ilustra un ejemplo de un sistema;Figure 3 is a block diagram illustrating an example of a system;

la figura 4 es un diagrama de bloques que ilustra un ejemplo del sistema de la figura 3;Figure 4 is a block diagram illustrating an example of the system of Figure 3;

la figura 5 es un diagrama de bloques que ilustra un ejemplo de un subconjunto del sistema de la figura 4;Figure 5 is a block diagram illustrating an example of a subassembly of the system of Figure 4;

la figura 6 es un flujo de datos de ejemplo para un proceso; yFigure 6 is an example data flow for a process; and

la figura 7 es un flujo de datos de ejemplo para otro proceso, de acuerdo con aspectos de la presente divulgación.Figure 7 is an example data flow for another process, in accordance with aspects of the present disclosure.

Descripción detalladaDetailed description

La siguiente descripción proporciona detalles específicos para una comprensión completa de y una descripción que facilita diversos ejemplos de la tecnología. El experto en la técnica comprenderá que la tecnología puede practicarse sin muchos de estos detalles. En algunos casos, las estructuras y funciones bien conocidas no se han mostrado ni descrito en detalle para evitar complicar innecesariamente la descripción de ejemplos de la tecnología. Se pretende que la terminología utilizada en esta descripción se interprete de la manera más amplia posible, aunque se utilice junto con una descripción detallada de ciertos ejemplos de la tecnología. Aunque, más adelante en la descripción, se ponga el énfasis en ciertos términos, cualquier terminología destinada a ser interpretada de manera restringida se definirá sin tapujos y específicamente como tal en la sección de la descripción detallada. A lo largo de la especificación y de las reivindicaciones, los siguientes términos tienen al menos los significados asociados explícitamente en el presente documento, a menos que el contexto indique lo contrario. Los significados identificados más adelante en la descripción no limitan necesariamente los términos, sino que simplemente proporcionan ejemplos ilustrativos de los términos. Por ejemplo, cada uno de los términos "basado/a en" y "se basa en" no es excluyente, y es equivalente al término "basado/a/se basa, al menos en parte, en", e incluye la opción de basarse en factores adicionales, algunos de los cuales pueden no estar descritos en el presente documento. Como otro ejemplo, el término "mediante" no es excluyente, y es equivalente al término "mediante, al menos en parte", e incluye la opción que medien factores adicionales, algunos de los cuales pueden no estar descritos en el presente documento. Acerca del significado de "en", que se incluye "en" y "sobre", aclaremos que la frase "en una realización" o "en un ejemplo", tal como se usa en el presente documento, no se refiere necesariamente a la misma realización o ejemplo, aunque podría ser así. El uso de designadores numéricos textuales particulares no implica la existencia de designadores numéricos de menor valor. Por ejemplo, decir que "un widget seleccionado del grupo consta de una tercera entidad informática cualquiera y de una cuarta barra" no implicaría en sí mismo que haya al menos tres elementos de entidad cualquiera, ni que haya al menos cuatro elementos de barra. Las referencias en singular se hacen meramente a efectos de claridad en la lectura, e incluyen referencias en plural, a menos que se excluyan específicamente las referencias en plural. El término "o" es un operador "o" inclusivo, a menos que se indique específicamente lo contrario. Por ejemplo, las frases "A o B" significan "A, B o A y B". Tal como se utilizan en el presente documento, los términos "componente" y "sistema" pretenden abarcar equipo físico informático (hardware), equipo lógico informático (software) o diversas combinaciones de hardware y software. De este modo, un sistema o componente puede ser, por ejemplo, un proceso, un proceso que se ejecuta en un dispositivo informático, el dispositivo informático o una porción de alguno de ellos.The following description provides specific details for a complete understanding of and a description that facilitates various examples of the technology. One skilled in the art will understand that the technology can be practiced without many of these details. In some cases, well-known structures and functions have not been shown or described in detail to avoid unnecessarily complicating the description of examples of the technology. The terminology used in this description is intended to be construed as broadly as possible, even though it is used in conjunction with a detailed description of certain examples of the technology. Although emphasis is placed on certain terms later in the description, any terminology intended to be narrowly construed will be clearly and specifically defined as such in the detailed description section. Throughout the specification and claims, the following terms have at least the meanings explicitly associated herein, unless the context otherwise indicates. The meanings identified later in the description do not necessarily limit the terms, but merely provide illustrative examples of the terms. For example, each of the terms "based on" and "is based on" is not exclusive, and is equivalent to the term "based on/is based, at least in part, on", and includes the option of be based on additional factors, some of which may not be described in this document. As another example, the term "through" is not exclusive, and is equivalent to the term "through, at least in part", and includes the option of additional factors, some of which may not be described herein. Regarding the meaning of "in", which includes "in" and "on", let us clarify that the phrase "in one embodiment" or "in an example", as used herein, does not necessarily refer to the same realization or example, although it could be so. The use of particular textual numeric designators does not imply the existence of lower value numeric designators. For example, saying that "a widget selected from the group consists of any third computing entity and a fourth bar" would not by itself imply that there are at least any three entity elements, nor that there are at least four bar elements. Singular references are made merely for clarity of reading, and include plural references, unless plural references are specifically excluded. The term "or" is an inclusive "or" operator, unless specifically stated otherwise. For example, the phrases "A or B" mean "A, B, or A and B." As used herein, the terms "component" and "system" are intended to encompass computer hardware, computer software, or various combinations of hardware and software. Thus, a system or component can be, for example, a process, a process running on a computing device, the computing device, or a portion thereof.

Dicho brevemente, la tecnología divulgada se dirige en general a funciones criptográficas para contratos inteligentes. En un ejemplo de la tecnología, se recibe una solicitud de recursos criptográficos. En algunos ejemplos, la solicitud de recursos criptográficos incluye una identidad (ID) de vinculación. En algunos ejemplos, los recursos criptográficos se extraen de al menos un grupo de recursos criptográficos, perteneciente a una pluralidad de grupos de recursos criptográficos, y en respuesta a una solicitud de recursos criptográficos. En algunos ejemplos, los conjuntos de recursos criptográficos desagregados de la pluralidad de conjuntos de recursos criptográficos son conjuntos de tipos desagregados de recursos criptográficos. En algunos ejemplos, se determina qué tipo de código de delegado de prueba es adecuado para cada recurso criptográfico extraído. En algunos ejemplos, para cada recurso criptográfico extraído, el tipo determinado de código de delegado de prueba se inyecta en el recurso criptográfico extraído.Briefly stated, the disclosed technology is generally directed at cryptographic functions for smart contracts. In one example of the technology, a request for cryptographic resources is received. In some examples, the request for cryptographic resources includes a binding identity (ID). In some examples, cryptographic resources are extracted from at least one cryptographic resource group, belonging to a plurality of cryptographic resource groups, and in response to a request for cryptographic resources. In some examples, the disaggregated cryptographic resource sets of the plurality of cryptographic resource sets are sets of disaggregated cryptographic resource types. In some examples, it is determined which type of test delegate code is appropriate for each mined cryptographic resource. In some examples, for each mined cryptographic resource, the given type of test delegate code is injected into the mined cryptographic resource.

En algunos ejemplos aparece el programa subordinado criptográfico o applet criptográfico, un componente de código que puede ejecutarse en un entorno seguro y comunicarse utilizando canales seguros. Una aplicación para los programas subordinados criptográficos son los contratos inteligentes. En algunos ejemplos, un contrato inteligente es un código informático que ejecuta parcial o totalmente y hace cumplir parcial o totalmente un acuerdo o transacción, tal como un intercambio de dinero y/o propiedad, y que puede hacer uso de la tecnología de cadena de bloques. En lugar de ejecutar la lógica de un contrato inteligente en la propia cadena de bloques, en algunos ejemplos, la lógica puede realizarse mediante los programas subordinados criptográficos que se ejecuten fuera de la cadena de bloques. En algunos ejemplos, la cadena de bloques puede estar, de alguna manera, aún más involucrada, tal como en el seguimiento del estado y de la recepción de la salida del programa subordinado criptográfico.In some examples, the cryptographic helper program or cryptographic applet appears, a code component that can run in a secure environment and communicate using secure channels. One application for cryptographic backends is smart contracts. In some examples, a smart contract is computer code that partially or fully executes and partially or fully enforces an agreement or transaction, such as an exchange of money and/or property, and that may make use of blockchain technology. . Rather than running smart contract logic on the blockchain itself, in some examples, the logic may be performed by cryptographic backends running outside of the blockchain. In some examples, the blockchain may be further involved in some way, such as tracking the status and receipt of the output of the cryptographic backend.

Parte o la totalidad del código de programa subordinado criptográfico puede estar asociado con una restricción para ejecutar en un entorno seguro. En consecuencia, parte del código del programa subordinado criptográfico se puede ejecutar en un enclave. En algunos ejemplos, un enclave es un entorno de ejecución, proporcionado por hardware o software, que es privado, resistente a manipulaciones y seguro frente a interferencias externas. En algunos ejemplos, las salidas del código de programa subordinado criptográfico están firmadas por al menos la clave de enclave privada del enclave de anfitrión de un par de claves de enclave almacenadas por el enclave de anfitrión. Las salidas pueden certificarse fuera de banda desde la cadena de bloques, por ejemplo, con la clave pública del programa subordinado criptográfico y el enclave. Los enclaves para uso de los programas subordinados criptográficos se pueden agrupar en algunos ejemplos. La agrupación de enclaves puede permitir que los enclaves se provean bajo demanda, por ejemplo, en tiempo de ejecución, en base a las necesidades informáticas seguras de las aplicaciones en ejecución.Some or all of the cryptographic backend code may be associated with a restriction to run in a secure environment. Consequently, some of the cryptographic backend code can be executed in an enclave. In some examples, an enclave is an execution environment, provided by hardware or software, that is private, tamper resistant, and secure from outside interference. In some examples, the outputs of the cryptographic backbone program code are signed by at least the host enclave's private enclave key out of a pair of enclave keys stored by the host enclave. The outputs can be certified out of band from the blockchain, for example, with the public key of the cryptographic backbone and the enclave. The enclaves for use by the cryptographic backends can be grouped into a few examples. Enclave pooling can allow enclaves to be provisioned on demand, eg, at runtime, based on the secure computing needs of running applications.

Un enclave es un ejemplo de un recurso criptográfico que puede ser requerido por el programa subordinado criptográfico. El programa subordinado criptográfico puede requerir otros recursos y/o recursos criptográficos adicionales, tales como una matriz de puertas programables en campo (FPGA), configurada para realizar una función criptográfica particular, un circuito integrado específico de aplicación (ASIC), configurado para realizar una función criptográfica particular, y/o un recurso compuesto, que puede incluir dos o más recursos criptográficos combinados para realizar una función criptográfica particular. Del mismo modo que se pueden agrupar los enclaves para uso de los programas subordinados criptográficos, en algunos ejemplos se pueden agrupar otros recursos criptográficos, teniendo, cada tipo de recurso criptográfico, un grupo desagregado. La agrupación de recursos criptográficos puede permitir que los recursos criptográficos se provean bajo demanda, por ejemplo, en tiempo de ejecución, en base a las necesidades informáticas seguras de las aplicaciones en ejecución.An enclave is an example of a cryptographic resource that may be required by the cryptographic backend. The cryptographic backend program may require other resources and/or additional cryptographic resources, such as a Field Programmable Gate Array (FPGA), configured to perform a particular cryptographic function, an Application Specific Integrated Circuit (ASIC), configured to perform a particular cryptographic function, and/or a composite resource, which may include two or more cryptographic resources combined to perform a particular cryptographic function. In the same way that enclaves can be grouped for use by cryptographic backends, in some examples other cryptographic resources can be grouped, each type of cryptographic resource having a disaggregated group. Pooling of cryptographic resources may allow cryptographic resources to be provisioned on demand, eg, at runtime, based on the secure computing needs of running applications.

Un contenedor de programa subordinado criptográfico puede determinar el tipo, la calidad y la cantidad de cada recurso criptográfico que requiere el programa subordinado criptográfico, y puede enviar una solicitud de los recursos criptográficos determinados a un servicio de motor de prueba. El servicio de motor de prueba puede luego extraer los recursos criptográficos solicitados del grupo o de los grupos de recursos criptográficos correspondientes. El servicio de motor de prueba puede entonces inyectar código de generación de prueba, si es que existe, en los recursos criptográficos, lo que puede hacer que los recursos criptográficos se conviertan en delegados de prueba. Si el programa subordinado criptográfico requiere alguna información secreta, tal como claves, el servicio del motor de prueba puede hacer que se inicie un túnel seguro entre el programa subordinado criptográfico y un módulo de seguridad de hardware (HSM) si el programa subordinado criptográfico puede recibir la información secreta mediante el túnel seguro. El servicio de motor de prueba puede enviar luego los delegados de prueba solicitados al contenedor de programa subordinado criptográfico. Se puede ejecutar luego el código de programa subordinado criptográfico, y los delegados de prueba han de permitir que se realicen las funciones criptográficas solicitadas por el código de programa subordinado criptográfico, junto con las pruebas necesarias.A cryptographic backend container may determine the type, quality, and quantity of each cryptographic resource that the cryptographic backend requires, and may send a request for the determined cryptographic resources to a test engine service. The test engine service can then extract the requested cryptographic resources from the corresponding cryptographic resource pool or pools. The test engine service can then inject test generation code, if any, into the crypto resources, which can cause the crypto resources to become test delegates. If the crypto backend requires some secret information, such as keys, the test engine service can cause a secure tunnel to start between the crypto back-end and a hardware security module (HSM) if the crypto back-end can receive secret information through the secure tunnel. The test engine service can then send the requested test delegates to the cryptographic backend container. The cryptographic backend code can then be executed, and the test delegates are to allow the cryptographic functions requested by the cryptographic backend code to be performed, along with the necessary tests.

Dispositivos ilustrativos/entornos operativosIllustrative Devices/Operating Environments

La figura 1 es un diagrama del entorno 100 en el que se pueden practicar aspectos de la tecnología. Como se muestra, el entorno 100 incluye dispositivos informáticos 110, así como nodos 120 de red, conectados mediante la red 130. Aunque en la figura 1 se muestren componentes particulares del entorno 100, el entorno 100 puede incluir también componentes adicionales y/o diferentes en otros ejemplos. Por ejemplo, en ciertos ejemplos, el entorno 100 puede incluir también dispositivos de almacenamiento en red, gestores de mantenimiento y/u otros componentes adecuados (no mostrados). Los dispositivos informáticos 110 mostrados en la figura 1 pueden estar en diversas ubicaciones, incluso en las instalaciones, en la nube, o similares. Por ejemplo, los dispositivos informáticos 110 pueden estar en el lado del cliente, en el lado del servidor, o similares.Figure 1 is a diagram of the environment 100 in which aspects of the technology can be practiced. As shown, environment 100 includes computing devices 110, as well as network nodes 120, connected via network 130. Although particular components of environment 100 are shown in Figure 1, environment 100 may also include additional and/or different components. in other examples. For example, in certain examples, environment 100 may also include network storage devices, maintenance managers, and/or other suitable components (not shown). The computing devices 110 shown in Figure 1 may be in various locations, including on-premises, in the cloud, or the like. For example, computing devices 110 may be client-side, server-side, or the like.

Como se muestra en la figura 1, la red 130 puede incluir uno o más nodos 120 de red que interconectan múltiples dispositivos informáticos 110 y conectan dispositivos informáticos 110 a una red externa 140, por ejemplo, Internet o una intranet. Por ejemplo, los nodos 120 de red pueden incluir conmutadores, enrutadores, concentradores, controladores de red u otros elementos de red. En determinados ejemplos, los dispositivos informáticos 110 se pueden organizar en marcos, zonas de acción, grupos, conjuntos u otras divisiones adecuadas. Por ejemplo, en el ejemplo ilustrado, los dispositivos informáticos 110 se agrupan en tres conjuntos de anfitrión identificados individualmente como conjuntos primero, segundo y tercero 112a-112c de anfitrión. En el ejemplo ilustrado, cada uno de los conjuntos 112a-112c de anfitrión está acoplado operativamente a un nodo correspondiente 120a-120c de red, respectivamente, que se denominan comúnmente como nodos de red "en lo alto del marco" o "TOR". Los nodos 120a-120c de red TOR pueden luego acoplarse operativamente a nodos adicionales 120 de red para formar una red informática en una topología jerárquica, plana, de malla o de otros tipos adecuados de topología que permita las comunicaciones entre los dispositivos informáticos 110 y la red externa 140. En otros ejemplos, múltiples conjuntos 112a-112c de anfitrión pueden compartir un único nodo 120 de red. Los dispositivos informáticos 110 pueden ser prácticamente cualquier tipo de dispositivo informático de fines generales o específicos. Por ejemplo, estos dispositivos informáticos pueden ser dispositivos de usuario tales como ordenadores de escritorio, ordenadores portátiles, tabletas, dispositivos de visualización, cámaras, impresoras o teléfonos inteligentes. Sin embargo, en un entorno de centro de datos, estos dispositivos informáticos pueden ser dispositivos de servidor, tales como ordenadores de servidor de aplicaciones, ordenadores de anfitrión informáticos virtuales u ordenadores de servidor de archivos. Lo que es más, los dispositivos informáticos 110 pueden configurarse individualmente para proporcionar servicios informáticos, de almacenamiento y/u otros servicios informáticos adecuados.As shown in Figure 1, network 130 may include one or more network nodes 120 that interconnect multiple computing devices 110 and connect computing devices 110 to an external network 140, eg, the Internet or an intranet. For example, network nodes 120 may include switches, routers, hubs, network controllers, or other network elements. In certain examples, the computing devices 110 may be organized into frames, action zones, groups, sets, or other suitable divisions. For example, in the illustrated example, computing devices 110 are grouped into three host sets individually identified as first, second, and third host sets 112a-112c. In the illustrated example, each of the host sets 112a-112c is operatively coupled to a corresponding host node 120a-120c. network, respectively, which are commonly referred to as "top-of-the-frame" or "TOR" network nodes. The TOR network nodes 120a-120c can then be operatively coupled to additional network nodes 120 to form a computing network in a hierarchical, flat, mesh topology, or other suitable types of topology that allows communications between the computing devices 110 and the web. external network 140. In other examples, multiple host sets 112a-112c may share a single network node 120. Computing devices 110 can be virtually any type of general or specific purpose computing device. For example, these computing devices can be user devices such as desktop computers, laptops, tablets, displays, cameras, printers, or smartphones. However, in a data center environment, these computing devices may be server devices, such as application server computers, virtual computing host computers, or file server computers. What's more, computing devices 110 can be individually configured to provide suitable computing, storage, and/or other computing services.

En algunos ejemplos, uno o más de los dispositivos informáticos 110 es un dispositivo de IoT, un dispositivo que comprende parte o la totalidad de un servicio de soporte de IoT, un dispositivo que comprende parte o la totalidad de un backend de aplicación, o similar, como se analiza con mayor detalle más adelante.In some examples, one or more of the computing devices 110 is an IoT device, a device that comprises part or all of an IoT support service, a device that comprises part or all of an application backend, or the like. , as discussed in more detail later.

Dispositivo informático ilustrativoIllustrative computing device

La figura 2 es un diagrama que ilustra un ejemplo del dispositivo informático 200 en el que se pueden practicar aspectos de la tecnología. El dispositivo informático 200 puede ser prácticamente cualquier tipo de dispositivo informático de fines generales o específicos. Por ejemplo, el dispositivo informático 200 puede ser un dispositivo de usuario tal como un ordenador de escritorio, un ordenador portátil, una tableta, un dispositivo de visualización, una cámara, una impresora o un teléfono inteligente. Del mismo modo, el dispositivo informático 200 también puede ser un dispositivo de servidor, tal como un ordenador servidor de aplicaciones, un ordenador anfitrión de informática virtual o un ordenador servidor de archivos; por ejemplo, el dispositivo informático 200 puede ser un ejemplo del dispositivo informático 110 o del nodo 120 de red de la figura 1. El dispositivo informático 200 también puede ser un dispositivo IoT que se conecta a una red para recibir servicios IoT. Del mismo modo, el dispositivo informático 200 puede ser un ejemplo de cualquiera de los dispositivos ilustrados o a los que se hace referencia en las figuras 3-5, como se analiza con mayor detalle más adelante. Como se ilustra en la figura 2, el dispositivo informático 200 incluye el circuito 210 de procesamiento, la memoria operativa 220, el controlador 230 de memoria, la memoria 250 de almacenamiento de datos, la interfaz 260 de entrada, la interfaz 270 de salida y el adaptador 280 de red. Cada uno de estos componentes mencionados anteriormente del dispositivo informático 200 incluye al menos un elemento de hardware.Figure 2 is a diagram illustrating an example computing device 200 on which aspects of the technology can be practiced. Computing device 200 can be virtually any type of general or specific purpose computing device. For example, computing device 200 may be a user device such as a desktop computer, laptop computer, tablet computer, display device, camera, printer, or smartphone. Similarly, computing device 200 may also be a server device, such as an application server computer, virtual computing host computer, or file server computer; for example, computing device 200 can be an example of computing device 110 or network node 120 of Figure 1. Computing device 200 can also be an IoT device that connects to a network to receive IoT services. Similarly, computing device 200 can be an example of any of the devices illustrated or referenced in Figures 3-5, as discussed in more detail below. As illustrated in Figure 2, computing device 200 includes processing circuitry 210, working memory 220, memory controller 230, data storage memory 250, input interface 260, output interface 270, and the network adapter 280. Each of these aforementioned components of computing device 200 includes at least one hardware element.

El dispositivo informático 200 incluye al menos un circuito 210 de procesamiento configurado para ejecutar instrucciones, tales como instrucciones para implantar las cargas de trabajo, los procesos o la tecnología descritos en el presente documento. El circuito 210 de procesamiento puede incluir un microprocesador, un microcontrolador, un procesador de gráficos, un coprocesador, una matriz de puertas programables en campo, un dispositivo lógico programable, un procesador de señales o cualquier otro circuito adecuado para procesar datos. El circuito 210 de procesamiento es un ejemplo de núcleo. Las instrucciones antes mencionadas, junto con otros datos (por ejemplo, conjuntos de datos, metadatos, instrucciones del sistema operativo, etc.), pueden almacenarse en la memoria operativa 220 durante el tiempo de ejecución del dispositivo informático 200. La memoria operativa 220 también puede incluir cualquiera de una variedad de dispositivos/componentes de almacenamiento de datos, tales como memorias volátiles, memorias semivolátiles, memorias de acceso aleatorio, memorias estáticas, cachés, memorias intermedias u otros medios utilizados para almacenar información en tiempo de ejecución. En un ejemplo, la memoria operativa 220 no retiene información cuando el dispositivo informático 200 está apagado. En lugar de esto, el dispositivo informático 200 puede configurarse para transferir instrucciones desde un componente de almacenamiento de datos no volátil (por ejemplo, el componente 250 de almacenamiento de datos) a la memoria operativa 220 como parte de un proceso de arranque o de otro proceso de carga.Computing device 200 includes at least one processing circuit 210 configured to execute instructions, such as instructions to implement the workloads, processes, or technology described herein. Processing circuitry 210 may include a microprocessor, microcontroller, graphics processor, coprocessor, field-programmable gate array, programmable logic device, signal processor, or any other suitable circuitry for processing data. Processing circuit 210 is an example of a core. The aforementioned instructions, along with other data (eg, data sets, metadata, operating system instructions, etc.), may be stored in working memory 220 during the execution time of computing device 200. Working memory 220 also it may include any of a variety of data storage devices/components, such as volatile memories, semi-volatile memories, random access memories, static memories, caches, buffers, or other media used to store information at run time. In one example, working memory 220 does not retain information when computing device 200 is turned off. Instead, computing device 200 may be configured to transfer instructions from a non-volatile data storage component (eg, data storage component 250) to working memory 220 as part of a boot or other process. Loading process.

La memoria operativa 220 puede incluir memoria de doble velocidad de datos (DDR4) de cuarta generación, memoria de doble velocidad de datos (DDR3) de tercera generación, otra memoria de acceso aleatorio dinámico (DRAM), memoria de alto ancho de banda (HBM), memoria de cubo de memoria híbrida (HMC), memoria floja 3D [s/c.], memoria estática de acceso aleatorio (SRAM) u otra memoria, y tal memoria puede comprender uno o más circuitos de memoria integrados en un DIMM, SIMM, SODIMM u otro empaquetado. Tales dispositivos o módulos de memoria operativa pueden organizarse de acuerdo con canales, intervalos y bancos. Por ejemplo, los dispositivos de memoria operativa pueden acoplarse al circuito 210 de procesamiento mediante el controlador 230 de memoria en canales. Un ejemplo de dispositivo informático 200 puede incluir uno o dos DIMM por canal, con uno o dos intervalos por canal. La memoria operativa dentro de un intervalo puede funcionar con un reloj compartido y una dirección compartida y un bus de órdenes. Además, un dispositivo de memoria operativa puede organizarse en varios bancos, donde un banco puede considerarse como una matriz direccionada por fila y columna. En base a tal organización de la memoria operativa, las direcciones físicas dentro de la memoria operativa pueden ser referidas por una tupla de canal, intervalo, banco, fila y columna.Operating memory 220 may include fourth generation double data rate memory (DDR4), third generation double data rate memory (DDR3), other dynamic random access memory (DRAM), high bandwidth memory (HBM). ), Hybrid Memory Cube (HMC) memory, 3D floppy memory [s/c.], Static Random Access Memory (SRAM) or other memory, and such memory may comprise one or more memory circuits integrated into a DIMM, SIMM, SODIMM or other packaging. Such working memory devices or modules may be organized according to channels, intervals and banks. For example, working memory devices may be coupled to processing circuitry 210 via channelized memory controller 230. An example computing device 200 may include one or two DIMMs per channel, with one or two slots per channel. The working memory within an interval can work with a shared clock and a shared address and command bus. Furthermore, a working memory device can be organized into several banks, where a bank can be thought of as a row and column-addressed array. Based on such organization of working memory, physical addresses within working memory can be referred to by a tuple of channel, interval, bank, row and column.

A pesar del anterior análisis, la memoria operativa 220 no incluye ni abarca específicamente, de por sí, medios de comunicación, ni medio de comunicación alguno, ni señal alguna.Despite the foregoing discussion, working memory 220 does not specifically include or encompass, by itself, means of communication, no means of communication, no signal.

El controlador 230 de memoria está configurado para que el circuito 210 de procesamiento interactúe con la memoria operativa 220. Por ejemplo, el controlador 230 de memoria puede configurarse para interconectar órdenes, direcciones y datos entre la memoria operativa 220 y el circuito 210 de procesamiento. El controlador 230 de memoria puede también configurarse para abstraer o, si no, gestionar ciertos aspectos de la gestión de memoria desde o para el circuito 210 de procesamiento. Aunque el controlador 230 de memoria se ilustra como un controlador único de memoria, desagregado del circuito 210 de procesamiento, en otros ejemplos se pueden emplear múltiples controladores de memoria, los controladores de memoria pueden estar integrados con la memoria operativa 220, o similares. Además, el/los controlador/es de memoria pueden estar integrados en el circuito 210 de procesamiento. Caben éstas y también otras variaciones.Memory controller 230 is configured for processing circuitry 210 to interface with working memory 220. For example, memory controller 230 may be configured to interface commands, addresses, and data between working memory 220 and processing circuitry 210. Memory controller 230 may also be configured to abstract or otherwise manage certain aspects of memory management from or to processing circuitry 210. Although memory controller 230 is illustrated as a single memory controller, unbundled from processing circuitry 210, in other examples multiple memory controllers may be employed, the memory controllers may be integrated with working memory 220, or the like. Furthermore, the memory controller(s) may be integrated into the processing circuit 210. These and other variations fit as well.

En el dispositivo informático 200, la memoria 250 de almacenamiento de datos, la interfaz 260 de entrada, la interfaz 270 de salida y el adaptador 280 de red interactúan con el circuito 210 de procesamiento por el bus 240. Aunque la figura 2 ilustra el bus 240 como un único bus pasivo, otras configuraciones, tal como una colección de buses, una colección de enlaces punto a punto, un controlador de entrada/salida, un puente, otra circuitería de interfaz o cualquier colección de estos elementos puede también emplearse adecuadamente. para que la memoria 250 de almacenamiento de datos, la interfaz 260 de entrada, la interfaz 270 de salida o el adaptador 280 de red interactúe con el circuito 210 de procesamiento.In computing device 200, data storage memory 250, input interface 260, output interface 270, and network adapter 280 interact with processing circuitry 210 over bus 240. Although Figure 2 illustrates the bus 240 as a single passive bus, other configurations, such as a collection of buses, a collection of point-to-point links, an input/output controller, a bridge, other interface circuitry, or any collection of these elements may also be suitably employed. so that the data storage memory 250, the input interface 260, the output interface 270 or the network adapter 280 interacts with the processing circuit 210.

En el dispositivo informático 200, la memoria 250 de almacenamiento de datos se emplea para el almacenamiento de datos no volátiles a largo plazo. La memoria 250 de almacenamiento de datos puede incluir cualquier elemento de entre una variedad de dispositivos/componentes de almacenamiento de datos no volátiles, tales como memorias no volátiles, discos, unidades de disco, discos duros, unidades de estado sólido o cualquier otro medio que pueda usarse para el almacenamiento no volátil de la información. Sin embargo, la memoria 250 de almacenamiento de datos no incluye ni abarca específicamente, de por sí, medios de comunicación, ni medio de comunicación alguno, ni señal alguna. A diferencia de la memoria operativa 220, la memoria 250 de almacenamiento de datos es utilizada por el dispositivo informático 200 para el almacenamiento de datos a largo plazo no volátil, en lugar de para el almacenamiento de datos en tiempo de ejecución.In computing device 200, data storage memory 250 is used for long-term non-volatile data storage. Data storage memory 250 may include any of a variety of non-volatile data storage devices/components, such as non-volatile memories, disks, disk drives, hard drives, solid state drives, or any other media that can be used for non-volatile storage of information. However, the data storage memory 250 does not specifically include or encompass, by itself, communication media, or any communication medium, or any signal. Unlike working memory 220, data storage memory 250 is used by computing device 200 for long-term, non-volatile data storage, rather than run-time data storage.

Además, el dispositivo informático 200 puede incluir o estar acoplado a cualquier tipo de medios legibles por procesador, tal como medios de almacenamiento legibles por procesador (como, por ejemplo, la memoria operativa 220 y la memoria 250 de almacenamiento de datos) o medios de comunicación (por ejemplo, señales de comunicación y ondas de radio). Si bien el término “medios de almacenamiento legible por procesador” incluye la memoria operativa 220 y la memoria 250 de almacenamiento de datos, el término "medios de almacenamiento legibles por procesador", a lo largo de la especificación y de las reivindicaciones, ya sea que se use en singular o en plural, se define en el presente documento de modo que el término "medios de almacenamiento legibles por procesador" excluya y no abarque específicamente, de por sí, medios de comunicación, ni medio de comunicación alguno, ni señal alguna. Sin embargo, el término "medios de almacenamiento legibles por procesador" abarca caché de procesador, memoria de acceso aleatorio (RAM), memoria de registro, y/o similares.In addition, computing device 200 may include or be coupled to any type of processor-readable media, such as processor-readable storage media (such as working memory 220 and data storage memory 250) or memory media. communication (for example, communication signals and radio waves). While the term "processor-readable storage media" includes operating memory 220 and data storage memory 250, the term "processor-readable storage media" throughout the specification and claims, either whether used in the singular or the plural, is defined herein so that the term "processor-readable storage media" specifically excludes and does not include, by itself, communication media, or any communication medium, or signal some. However, the term "processor-readable storage media" encompasses processor cache, random access memory (RAM), register memory, and/or the like.

El dispositivo informático 200 también incluye la interfaz 260 de entrada, que puede configurarse para permitir que el dispositivo informático 200 reciba entradas de usuarios o de otros dispositivos. Además, el dispositivo informático 200 incluye una interfaz 270 de salida, que puede configurarse para proporcionar salida desde el dispositivo informático 200. En un ejemplo, la interfaz 270 de salida incluye una memoria intermedia de marco, un procesador de gráficos, un procesador de gráficos o un acelerador, y está configurada para ofrecer representaciones visuales presentadas en un dispositivo de visualización desagregado (tal como un monitor, un proyector, un ordenador cliente de informática virtual, etc.). En otro ejemplo, la interfaz 270 de salida incluye un dispositivo de visualización y está configurada para presentar representaciones visuales para su visualización. En otro ejemplo más, la interfaz 260 de entrada y/o la interfaz 270 de salida puede/n incluir un receptor/transmisor asíncrono universal ("UART"), una interfaz periférica en serie ("SPI"), un circuito interintegrado ("I2C"), una entrada/salida de para fines generales (GPIO), y/o similares. Lo que es más, la interfaz 260 de entrada y/o la interfaz 270 de salida pueden incluir o interactuar con cualquier número o tipo de periféricos.Computing device 200 also includes input interface 260, which can be configured to allow computing device 200 to receive input from users or other devices. In addition, computing device 200 includes an output interface 270, which can be configured to provide output from computing device 200. In one example, output interface 270 includes a frame buffer, graphics processor, graphics processor or an accelerator, and is configured to deliver visual representations presented on a disaggregated display device (such as a monitor, projector, virtual computing client computer, etc.). In another example, output interface 270 includes a display device and is configured to present visual representations for viewing. In yet another example, input interface 260 and/or output interface 270 may/n include a universal asynchronous receiver/transmitter ("UART"), a serial peripheral interface ("SPI"), an interintegrated circuit (" I2C"), a general purpose input/output (GPIO), and/or the like. What's more, input interface 260 and/or output interface 270 may include or interact with any number or type of peripherals.

En el ejemplo ilustrado, el dispositivo informático 200 está configurado para comunicarse con otros dispositivos informáticos o entidades mediante el adaptador 280 de red. El adaptador 280 de red puede incluir un adaptador de red con cable, por ejemplo, un adaptador Ethernet, un adaptador Token Ring o un adaptador de línea de abonado digital (DSL). El adaptador 280 de red puede también incluir un adaptador de red inalámbrica, como, por ejemplo, un adaptador Wi-Fi, un adaptador Bluetooth, un adaptador ZigBee, un adaptador de evolución a largo plazo (LTE), o un adaptador 5G.In the illustrated example, computing device 200 is configured to communicate with other computing devices or entities via network adapter 280. Network adapter 280 may include a wired network adapter, for example, an Ethernet adapter, a Token Ring adapter, or a digital subscriber line (DSL) adapter. The network adapter 280 may also include a wireless network adapter, such as a Wi-Fi adapter, a Bluetooth adapter, a ZigBee adapter, a Long Term Evolution (LTE) adapter, or a 5G adapter.

Aunque el dispositivo informático 200 se ilustra con ciertos componentes configurados en una disposición particular, estos componentes y disposición son un mero ejemplo de dispositivo informático en el que se puede emplear la tecnología. En otros ejemplos, la memoria 250 de almacenamiento de datos, la interfaz 260 de entrada, la interfaz 270 de salida o el adaptador 280 de red pueden acoplarse directamente al circuito 210 de procesamiento, o acoplarse al circuito 210 de procesamiento, mediante un controlador de entrada/salida, un puente u otra circuitería de interfaz. Caben también otras variaciones de la tecnología.Although the computing device 200 is illustrated with certain components configured in a particular arrangement, these components and arrangement are merely an example of a computing device in which the technology may be employed. In other examples, data storage memory 250, input interface 260, output interface 270, or network adapter 280 may be directly coupled to processing circuitry 210, or coupled to processing circuitry 210, by a data controller. input/output, jumper, or other circuitry interface. Other variations of the technology are also possible.

Algunos ejemplos del dispositivo informático 200 incluyen al menos una memoria (por ejemplo, la memoria operativa 220), adaptada para almacenar datos en tiempo de ejecución, y al menos un procesador (por ejemplo, la unidad 210 de procesamiento), que está adaptado para ejecutar el código ejecutable por el procesador que, en respuesta a la ejecución, permite que el dispositivo informático 200 realice acciones.Some examples of computing device 200 include at least one memory (eg, working memory 220), adapted to store data at run time, and at least one processor (eg, processing unit 210), which is adapted to executing executable code by the processor which, in response to execution, allows the computing device 200 to perform actions.

Sistemas ilustrativosillustrative systems

La figura 3 es un diagrama de bloques que ilustra un ejemplo de un sistema (300). El sistema 300 puede incluir la red 330, así como los dispositivos 311 y 312 de participantes, los dispositivos 341 y 342 de miembros, los dispositivos 316 y 317 de contraparte, los nodos 351 y 352 de validación (VN), los recursos criptográficos 371 y 372, los dispositivos 361 y 362 de tejido de programa subordinado criptográfico, y el depósito 365 de claves de claves, todos los cuales pueden conectarse a la red 330.Figure 3 is a block diagram illustrating an example of a system (300). System 300 may include network 330, as well as participant devices 311 and 312, member devices 341 and 342, counterpart devices 316 and 317, validation nodes (VNs) 351 and 352, cryptographic resources 371 and 372, cryptographic backend fabric devices 361 and 362, and key repository 365, all of which are connectable to network 330.

Los dispositivos 311 y 312 de participantes, los dispositivos 316 y 317 de contraparte, los dispositivos 341 y 342 de miembros, los VN 351 y 352, los dispositivos 361 y 362 de tejido de programa subordinado criptográfico y/o el depósito 365 de claves pueden incluir, cada uno, ejemplos del dispositivo informático 200 de la figura 2. La figura 3, y la correspondiente descripción de la figura 3, en la especificación, ilustra un sistema de ejemplo con fines ilustrativos que no limita el alcance de la divulgación.Participant devices 311 and 312, counterpart devices 316 and 317, member devices 341 and 342, VNs 351 and 352, cryptographic backend fabric devices 361 and 362, and/or key repository 365 may each include examples of the computing device 200 of Figure 2. Figure 3, and the corresponding description of Figure 3, in the specification, illustrate an example system for illustrative purposes that does not limit the scope of the disclosure.

La red 330 puede incluir una o más redes informáticas, ya sean redes cableadas y/o inalámbricas, donde cada red puede ser, por ejemplo, una red inalámbrica, una red de área local (LAN), una red de área amplia (WAN), y/o una red global tal como Internet. En un conjunto interconectado de redes LAN, incluidas aquéllas basadas en diferentes arquitecturas y protocolos, un enrutador actúa como un enlace entre las LAN, lo que permite que los mensajes se envíen de una a otra. Además, los enlaces de comunicación dentro de las LAN típicamente incluyen cable coaxial o par de cable trenzado, mientras que los enlaces de comunicación entre redes pueden utilizar líneas telefónicas analógicas, líneas digitales dedicadas completas o fraccionadas, incluyendo T1, T2, T3 y T4, redes digitales de servicios integrados (ISDN), líneas de abonado digitales (DSL), enlaces inalámbricos que incluyen enlaces por satélite, u otros enlaces de comunicaciones conocidos por el experto en la técnica. Además, los ordenadores remotos y otros dispositivos electrónicos relacionados podrían conectarse de manera remota a redes LAN o WAN mediante un módem y un enlace telefónico temporal. La red 330 puede incluir otras redes diversas, como una o más redes que utilicen protocolos de red local, tales como 6LoWPAN, ZigBee, o similares. Algunos dispositivos IoT pueden estar conectados a un dispositivo de usuario mediante una red diferente, en la red 330, a otros dispositivos IoT. En esencia, la red 330 incluye cualquier tecnología de comunicación por la que la información pueda viajar entre los dispositivos 311 y 312 de participantes, los dispositivos 316 y 317 de contraparte, los dispositivos 341 y 342 de miembros, los VN 351 y 352, los dispositivos 361 y 362 de tejido de programa subordinado criptográfico, los recursos criptográficos 371 y 372, y/o el depósito 365 de claves. Aunque cada dispositivo o servicio se muestra conectado en tanto conectado a la red 330, eso no significa que cada dispositivo se comunique con los demás dispositivos mostrados. En algunos ejemplos, algunos dispositivos/servicios que se muestran sólo se comunican con otros dispositivos/servicios que se muestran mediante uno o más dispositivos intermediarios. Además, aunque la red 330 se ilustra como una sola red, la red 330 puede incluir, en algunos ejemplos, múltiples redes, que pueden o no estar conectadas entre sí, comunicándose, algunos de los dispositivos que se muestran, entre sí, a través de una red de las múltiples redes, y comunicándose, otros de los dispositivos que se muestran, entre sí, con una red diferente de las múltiples redes.Network 330 may include one or more computer networks, either wired and/or wireless networks, where each network may be, for example, a wireless network, a local area network (LAN), a wide area network (WAN) , and/or a global network such as the Internet. In an interconnected set of LANs, including those based on different architectures and protocols, a router acts as a link between the LANs, allowing messages to be sent from one to the other. Furthermore, communication links within LANs typically include coaxial cable or twisted pair cable, while communication links between networks may use analog telephone lines, full or fractional dedicated digital lines, including T1, T2, T3, and T4, integrated services digital networks (ISDN), digital subscriber lines (DSL), wireless links including satellite links, or other communication links known to those skilled in the art. In addition, remote computers and other related electronic devices could be remotely connected to LAN or WAN networks using a modem and a temporary telephone link. Network 330 may include various other networks, such as one or more networks using local network protocols, such as 6LoWPAN, ZigBee, or the like. Some IoT devices may be connected to a user device via a different network, in network 330, to other IoT devices. In essence, network 330 includes any communication technology by which information can travel between participant devices 311 and 312, counterpart devices 316 and 317, member devices 341 and 342, VNs 351 and 352, cryptographic backend fabric devices 361 and 362, the cryptographic resources 371 and 372, and/or the key repository 365 . Although each device or service is shown connected as connected to the network 330, that does not mean that each device communicates with the other devices shown. In some examples, some displayed devices/services only communicate with other displayed devices/services through one or more intermediary devices. Furthermore, while network 330 is illustrated as a single network, network 330 may include, in some examples, multiple networks, which may or may not be connected to each other, some of the devices shown communicating with each other through of a network of the multiple networks, and communicating, other of the devices shown, with each other, with a different network of the multiple networks.

En algunos ejemplos, los VN 351 y VN 352 son parte de una red de cadena de bloques. En algunos ejemplos, los VN 351 y 352 son dispositivos que, durante el funcionamiento normal, validan y procesan transacciones de cadena de bloques cursadas, y ejecutan código de cadena. En algunos ejemplos, los dispositivos 341 y 342 de miembros son dispositivos utilizados por los miembros para comunicarse a través de la red 330, tal como para la comunicación entre un miembro y su VN correspondiente, como, por ejemplo, para respaldar un VN. En algunos ejemplos, los dispositivos 311 y 312 de participantes son dispositivos utilizados por los participantes para comunicarse a través de la red 330, tal como para solicitar una transacción.In some examples, VN 351 and VN 352 are part of a blockchain network. In some examples, VNs 351 and 352 are devices that, during normal operation, validate and process enacted blockchain transactions and execute chain code. In some examples, member devices 341 and 342 are devices used by members to communicate over network 330, such as for communication between a member and its corresponding VN, such as to support a VN. In some examples, the participant devices 311 and 312 are devices used by the participants to communicate over the network 330, such as to request a transaction.

En algunos ejemplos, los dispositivos 316 y 317 de contraparte son dispositivos utilizados por las contrapartes o como contrapartes de un contrato inteligente que hace uso de un programa subordinado criptográfico de contrato mediante el tejido de programa subordinado criptográfico (donde el tejido de programa subordinado criptográfico incluye, por ejemplo, el dispositivo 361 de tejido de programa subordinado criptográfico y el dispositivo 362 de tejido de programa subordinado criptográfico). Cada uno de los dispositivos 316 y 317 de contraparte puede ser, representar y/o actuar en nombre de una persona, empresa, dispositivo IoT, contrato inteligente, y/o similares.In some examples, the counterparty devices 316 and 317 are devices used by the counterparties or as counterparties to a smart contract that makes use of a contract cryptographic backend via the cryptographic backend fabric (where the cryptographic backend fabric includes eg, cryptographic backend fabric device 361 and cryptographic backend fabric device 362). Each of the counterpart devices 316 and 317 may be, represent, and/or act on behalf of a person, company, IoT device, smart contract, and/or the like.

Una disposición de ejemplo del sistema 300 se puede describir como sigue. En algunos ejemplos, cada recurso criptográfico puede ser cualquiera de entre una variedad de diferentes tipos de recursos criptográficos, tales como un enclave, una FPGA configurada para realizar una función criptográfica particular, un ASIC configurado para realizar una función criptográfica particular, y/o un recurso compuesto, que puede incluir dos o más recursos criptográficos combinados para realizar una función criptográfica particular. Los enclaves son entornos de ejecución, proporcionados por hardware o software, que son privados, resistentes a manipulaciones y seguros frente a interferencias externas. Las salidas de un enclave están firmadas digitalmente por el enclave. Los dispositivos 361 y 362 de tejido de programa subordinado criptográfico son parte de un tejido de programa subordinado criptográfico que proporciona tiempo de ejecución y otra funcionalidad para los programas subordinados criptográficos, como se analiza con mayor detalle más adelante. El depósito 365 de claves puede usarse para proporcionar un almacenamiento persistente seguro para las claves utilizadas por los programas subordinados criptográficos para los servicios de identidad, firma digital y encriptación, y/u otros tipos de información secreta.An example arrangement of system 300 can be described as follows. In some examples, each cryptographic resource may be any of a variety of different types of cryptographic resources, such as an enclave, an FPGA configured to perform a particular cryptographic function, an ASIC configured to perform a particular cryptographic function, and/or a composite resource, which may include two or more cryptographic resources combined to perform a particular cryptographic function. Enclaves are execution environments, provided by hardware or software, that are private, tamper resistant, and secure from outside interference. Exits from an enclave are digitally signed by the enclave. Cryptographic backend fabric devices 361 and 362 are part of a cryptographic backend fabric that provides runtime and other functionality for cryptographic backend programs, as discussed in more detail below. Key repository 365 can be used to provide secure persistent storage for keys used by cryptographic backends for identity, digital signature and encryption services, and/or other types of secret information.

El sistema 300 puede incluir más o menos dispositivos que los ilustrados en la figura 3, que se muestra únicamente a modo de ejemplo.System 300 may include more or fewer devices than are illustrated in Figure 3, which is shown by way of example only.

Dispositivo ilustrativoillustrative device

La figura 4 es un diagrama de bloques que ilustra un ejemplo del sistema 400, que puede emplearse como ejemplo del sistema 300 de la figura 3. El sistema 400 puede incluir dispositivos 411 y 412 de participantes, dispositivos 416 y 417 de contraparte, dispositivos 441 y 442 de miembros, red 450 de cadena de bloques, tejido 460 de programa subordinado criptográfico, recurso criptográfico 470 y depósito 465 de claves.Figure 4 is a block diagram illustrating an example of system 400, which can be used as an example of system 300 of Figure 3. System 400 may include participant devices 411 and 412, counterpart devices 416 and 417, devices 441 and 442 members, 450 blockchain network, 460 cryptographic backbone fabric, 470 cryptographic resource, and 465 key repository.

En algunos ejemplos, durante el funcionamiento normal, la red 450 de cadena de bloques puede validar y procesar transacciones de cadena de bloques cursadas. En algunos ejemplos, los dispositivos 441 y 442 de miembros son dispositivos utilizados por los miembros para comunicarse con la red 450 de cadenas de bloques. En algunos ejemplos, los dispositivos 411 y 412 de participantes son dispositivos utilizados por los participantes para comunicarse con la red 450 de cadenas de bloques, tal como para solicitar una transacción. En algunos ejemplos, los recursos criptográficos 470 pueden incluir enclaves, FPGA configuradas para realizar una función criptográfica particular, ASIC configurados para realizar una función criptográfica particular, recursos criptográficos compuestos configurados para realizar una función criptográfica particular, y/o similares. En algunos ejemplos, los enclaves son entornos de ejecución, proporcionados por hardware o software, que son privados, resistentes a manipulaciones y seguros frente a interferencias externas. En algunos ejemplos, las salidas de un enclave están firmadas digitalmente por el enclave. El depósito 465 de claves puede usarse para proporcionar un almacenamiento persistente seguro para las claves utilizadas por los programas subordinados criptográficos para los servicios de identidad, firma digital y encriptación.In some examples, during normal operation, the blockchain network 450 may validate and process completed blockchain transactions. In some examples, member devices 441 and 442 are devices used by members to communicate with the blockchain network 450 . In some examples, the participant devices 411 and 412 are devices used by the participants to communicate with the blockchain network 450, such as to request a transaction. In some examples, cryptographic resources 470 may include enclaves, FPGAs configured to perform a particular cryptographic function, ASICs configured to perform a particular cryptographic function, composite cryptographic resources configured to perform a particular cryptographic function, and/or the like. In some examples, enclaves are execution environments, provided by hardware or software, that are private, tamper-resistant, and secure from outside interference. In some examples, outputs from an enclave are digitally signed by the enclave. Key repository 465 may be used to provide secure persistent storage for keys used by cryptographic backends for identity, digital signature, and encryption services.

En algunos ejemplos, los dispositivos 416 y 417 de contraparte son dispositivos utilizados por contrapartes o como contrapartes de un contrato inteligente que hace uso de un programa subordinado criptográfico de contrato mediante el tejido 460 de programa subordinado criptográfico. Los dispositivos 416 y 417 de contraparte pueden ser, representar y/o actuar en nombre de una persona, empresa, dispositivo IoT, contrato inteligente y/o similar, como se analiza con mayor detalle más adelante.In some examples, the counterparty devices 416 and 417 are devices used by counterparties or as counterparties to a smart contract making use of a contract cryptographic backend via the cryptographic backend fabric 460. The counterparty devices 416 and 417 may be, represent, and/or act on behalf of a person, company, IoT device, smart contract, and/or the like, as discussed in more detail below.

La red 450 de cadena de bloques puede incluir una serie de nodos VN. En algunos ejemplos, cada miembro de la red 450 de cadena de bloques puede, mediante un dispositivo (por ejemplo, los 441 o 442) de miembro, mantener uno o más VN en la red 450 de cadena de bloques. Los participantes pueden solicitar, mediante dispositivos (por ejemplo, los 411 o 412) de participantes, transacciones a realizar por la red 450 de cadena de bloques. Durante el funcionamiento normal, los Vn , en la red 450 de cadena de bloques, validan y procesan las transacciones cursadas, y ejecutan el código lógico.Blockchain network 450 may include a number of VN nodes. In some examples, each member of the blockchain network 450 may, through a member device (eg, the 441 or 442), maintain one or more VNs in the blockchain network 450. Participants can request, through participant devices (for example, 411 or 412), transactions to be carried out by the block chain network 450. During normal operation, the Vn's, in the block chain network 450, validate and process the transactions carried out, and execute the logical code.

Las transacciones realizadas por la red 450 de cadena de bloques pueden almacenarse en cadenas de bloques. En algunos ejemplos, las cadenas de bloques son libros de contabilidad descentralizados que graban las transacciones realizadas por la cadena de bloques de manera verificable. Se pueden almacenar múltiples transacciones en un bloque. Una vez que un bloque está lleno, el bloque puede cubrirse con un encabezado de bloque que es un compendio de hash de todos los identificadores de transacciones dentro de un bloque. El encabezado de bloque puede grabarse como primera transacción en el siguiente bloque de la cadena, creando, de este modo, una cadena de bloques.Transactions performed by the blockchain network 450 may be stored on blockchains. In some examples, blockchains are decentralized ledgers that record transactions made by the blockchain in a verifiable manner. Multiple transactions can be stored in a block. Once a block is full, the block can be covered with a block header that is a hash digest of all the transaction identifiers within a block. The block header can be recorded as the first transaction in the next block in the chain, thus creating a chain of blocks.

También se puede usar una red de cadena de bloques para el procesamiento de contratos inteligentes. En algunos ejemplos, un contrato inteligente es un código informático que ejecuta parcial o totalmente y hace cumplir parcial o totalmente un acuerdo o transacción, como un intercambio de dinero y/o propiedad, y que puede hacer uso de la tecnología de cadena de bloques. En lugar de ejecutar la lógica de un contrato inteligente en la propia cadena de bloques, la lógica puede, en cambio, con la ayuda del tejido 460 de programa subordinado criptográfico, ejecutarse mediante unos programas subordinados criptográficos que se ejecutan fuera de la red 450 de cadena de bloques. En algunos ejemplos, un programa subordinado criptográfico es un componente de código que se puede ejecutar en un entorno seguro y ser comunicado mediante canales seguros. En algunos ejemplos, el tejido 460 de programa subordinado criptográfico está configurado para proporcionar tiempo de ejecución y otras funciones para los programas subordinados criptográficos.A blockchain network can also be used for smart contract processing. In some examples, a smart contract is computer code that partially or fully executes and partially or fully enforces an agreement or transaction, such as an exchange of money and/or property, and that may make use of blockchain technology. Instead of executing the logic of a smart contract on the blockchain itself, the logic can instead, with the help of the cryptographic backend fabric 460, be executed by cryptographic backends running outside the network 450 of block chain. In some examples, a cryptographic backend is a piece of code that can be executed in a secure environment and communicated over secure channels. In some examples, the cryptographic backend fabric 460 is configured to provide runtime and other functions for the cryptographic backends.

En algunos ejemplos, el tejido 460 de programa subordinado criptográfico es una plataforma en la nube sin servidor que proporciona una infraestructura central para el middleware que permite aplicaciones basadas en cadenas de bloques con funcionalidad aumentada. En algunos ejemplos, el tejido 460 de programa subordinado criptográfico se compone de varios componentes que brindan funcionalidad para un envoltorio de seguridad perfeccionado de la aplicación de cadena de bloques en la nube, así como una interfaz de programa de aplicación (API) común que abstrae la cadena de bloques subyacente y sus matices de los desarrolladores.In some examples, the cryptographic backbone fabric 460 is a serverless cloud platform that provides a core infrastructure for middleware that enables chain-based applications. blocks with increased functionality. In some examples, the cryptographic backbone fabric 460 is comprised of various components that provide functionality for an enhanced security wrapper of the cloud blockchain application, as well as a common application program interface (API) that abstracts the underlying blockchain and its nuances from the developers.

En algunos ejemplos, el tejido 460 de programa subordinado criptográfico gestiona la escala, la conmutación por error, el almacenamiento en caché, la monitorización y/o la gestión de los programas subordinados criptográficos, así como una plataforma de clave segura en tiempo de ejecución para los programas subordinados criptográficos que permite la creación, la persistencia y la hidratación de claves privadas a escala. ("Hidratación" se refiere a la activación y la orquestación en la memoria desde el almacenamiento persistente). Esto permite que los programas subordinados criptográficos creen, almacenen y usen pares de claves en un entorno de ejecución seguro para realizar una variedad de funciones que incluyen, por ejemplo, firmas digitales, firmas de anillo, pruebas de conocimiento cero, umbral y encriptación homomórfica.In some examples, the cryptographic backend fabric 460 manages the scaling, failover, caching, monitoring, and/or management of the cryptographic backends, as well as a runtime secure key platform for cryptographic backends that enable the creation, persistence, and hydration of private keys at scale. (“Hydration” refers to activation and orchestration in memory from persistent storage.) This allows cryptographic backends to create, store, and use key pairs in a secure execution environment to perform a variety of functions including, for example, digital signatures, ring signatures, zero-knowledge proofs, thresholding, and homomorphic encryption.

En algunos ejemplos, entre otros componentes, el tejido 460 de programa subordinado criptográfico incluye un servicio de contenedor de programa subordinado criptográfico (CCS) y un servicio de motor de prueba, cada uno de los cuales se analiza con mayor detalle más adelante.In some examples, among other components, the cryptographic backend fabric 460 includes a cryptographic backend container service (CCS) and a test engine service, each of which is discussed in more detail below.

En algunos ejemplos, un programa subordinado criptográfico puede ser un componente de software heredero de las clases base que implanta interfaces que proporcionan integraciones y primitivas criptográficas para aplicaciones de confianza distribuida. En algunos ejemplos, es suficiente que los desarrolladores conozcan las clases base y cómo implantar las interfaces requeridas y opcionales para que los programas subordinados criptográficos se desarrollen en la plataforma. Los marcos, patrones y diseños de desarrollo de software establecidos se pueden utilizar para las interfaces de usuario y la integración en los sistemas existentes.In some examples, a cryptographic backend may be a software component inheriting from the base classes that implements interfaces that provide integrations and cryptographic primitives for distributed trust applications. In some examples, it is enough for developers to know the base classes and how to implement required and optional interfaces for cryptographic backends to develop on the platform. Established software development frameworks, patterns, and designs can be used for user interfaces and integration into existing systems.

Los tipos de programa subordinado criptográfico pueden incluir unos programas subordinados criptográficos de utilidad y unos programas subordinados criptográficos de contrato. Los programas subordinados criptográficos de utilidad realizan normalmente la integración de datos externos mediante eventos internos o externos, brindan acceso a datos o lógica reutilizable para contratos inteligentes de cadena de bloques, pero también pueden proporcionar API de nivel de servicio para que otros sistemas funcionen con cadenas de bloques. Los programas subordinados criptográficos de utilidad cuyo objetivo principal es inyectar datos certificados en cadenas de bloques pueden denominarse programa subordinado criptográfico de "oráculo". En algunos ejemplos, los programas subordinados criptográficos de contrato contienen una lógica específica de contrato inteligente con la que están de acuerdo las contrapartes que firman el contrato. Ambos tipos de programa subordinado criptográfico pueden proporcionar una API orientada a la cadena de bloques y una a Pi de nivel de superficie.Cryptographic backend types may include utility cryptographic backends and contract cryptographic backends. Cryptographic utility backends typically perform external data integration using internal or external events, provide data access or reusable logic for blockchain smart contracts, but can also provide service level APIs for other systems to work with chains. of blocks. Cryptographic utility backends whose primary purpose is to inject certified data into blockchains may be referred to as "oracle" cryptographic backend. In some examples, the contract cryptographic backends contain specific smart contract logic that the counterparties signing the contract agree to. Both types of cryptographic backend can provide a blockchain-oriented API and a surface-level P i API.

Independientemente de cómo se implante un contrato inteligente, los programas subordinados criptográficos de utilidad se pueden usar para proporcionar información y cómputo adicional para contratos inteligentes en bibliotecas reutilizables. Estas bibliotecas se pueden usar para crear un marco en el que se diseñen aplicaciones distribuidas y se expongan de manera común mediante el tejido 460 de programa subordinado criptográfico, tanto en la nube pública como en la privada, y en entornos de cadena de bloques.Regardless of how a smart contract is implemented, cryptographic utility backends can be used to provide additional information and computation for smart contracts in reusable libraries. These libraries can be used to create a framework in which distributed applications are designed and exposed in a common way using the cryptographic backend fabric 460, in both public and private cloud and blockchain environments.

Los programas subordinados criptográficos de contrato pueden redefinir la implantación de la lógica que ejecuta un contrato inteligente. En algunos ejemplos, estos programas subordinados criptográficos prescriben que cualquier lógica se ejecute fuera de la cadena, utilizando la cadena de bloques subyacente como base de datos.Contract cryptographic backends can redefine the implementation of the logic that executes a smart contract. In some examples, these cryptographic backends prescribe any logic to be executed off-chain, using the underlying blockchain as the database.

Los programas subordinados criptográficos de utilidad pueden proporcionar una funcionalidad discreta, como proporcionar información externa, por ejemplo, precios de mercado, datos externos de otros sistemas, o fórmulas patentadas. Estos pueden llamarse "oráculos de cadena de bloques" en el sentido de que pueden observar e inyectar eventos y datos del "mundo real" en los sistemas de cadena de bloques. Los contratos inteligentes pueden interactuar con estos utilizando un patrón de publicación/suscripción en el que el programa subordinado criptográfico de utilidad publica un evento para suscribir contratos inteligentes. Los desencadenantes de eventos pueden ser externos a la cadena de bloques (por ejemplo, un cambio de precio) o internos a la cadena de bloques (por ejemplo, una señal de datos) dentro de un contrato inteligente o de un código de operación.Cryptographic utility plugins may provide unobtrusive functionality, such as providing external information, eg, market prices, external data from other systems, or proprietary formulas. These can be called “blockchain oracles” in the sense that they can observe and inject “real world” events and data into blockchain systems. Smart contracts can interact with these using a publish/subscribe pattern in which the cryptographic utility backend publishes an event to subscribe smart contracts. Event triggers can be external to the blockchain (for example, a price change) or internal to the blockchain (for example, a data signal) within a smart contract or opcode.

En algunos ejemplos, estos programas subordinados criptográficos también pueden ser llamados directamente por otros programas subordinados criptográficos dentro del tejido de programa subordinado criptográfico, y exponer una API externa o de nivel de superficie a la que pueden llamar otros sistemas. Por ejemplo, un sistema empresarial de gestión de relaciones con el cliente (CRM) puede publicar un evento en un programa subordinado criptográfico de suscripción, el cual, a su vez, publica información en una cadena de bloques en la red 450 de cadenas de bloques en base a esa información. De esta manera, se puede proporcionar integración bidireccional a contratos inteligentes y cadenas de bloques a través del tejido 460 de programa subordinado criptográfico.In some examples, these cryptographic backends may also be called directly by other cryptographic backends within the cryptographic backend fabric, and expose an external or surface-level API that can be called by other systems. For example, an enterprise customer relationship management (CRM) system may publish an event to a subscription cryptographic backend, which, in turn, publishes information to a blockchain on the blockchain network 450 based on that information. In this manner, two-way integration to smart contracts and blockchains can be provided through the cryptographic backend fabric 460.

Los programas subordinados criptográficos de contrato o control pueden representar la lógica o el estado completo en un acuerdo contractual entre contrapartes. En algunos ejemplos, los programas subordinados criptográficos de contrato utilizados en sistemas basados en contratos inteligentes pueden usar el libro mayor de la cadena de bloques para almacenar de manera auténtica los datos de un contrato utilizando la lógica de contrato inteligente para la validez de los datos, pero la lógica sustituta de un programa subordinado criptográfico de contrato proporciona "separación de preocupaciones" dentro del diseño de una aplicación. La relación entre un contrato inteligente en cadena y un programa subordinado criptográfico de contrato puede denominarse relación de confianza.Contract or control cryptographic backbones can represent the logic or complete state in a contractual agreement between counterparties. In some examples, contract cryptographic backends used in smart contract-based systems may use the ledger of the chain of blocks to authentically store the data of a contract using smart contract logic for data validity, but the surrogate logic of a contract crypto backend provides "separation of concerns" within an application design. The relationship between an on-chain smart contract and a contract cryptographic backend can be referred to as a trust relationship.

Para los sistemas que no están basados en contratos inteligentes, en algunos ejemplos, los programas subordinados criptográficos de contrato ejecutan la lógica y escriben sus datos en la cadena de bloques sin el contrato inteligente o el esquema bien definido en la cadena de bloques.For systems that are not based on smart contracts, in some examples, cryptographic contract backends execute logic and write their data to the blockchain without the smart contract or well-defined schema on the blockchain.

En esencia, en algunos ejemplos, los programas subordinados criptográficos de contrato pueden ejecutar la lógica de un acuerdo contractual entre contrapartes a escala, en un entorno privado seguro, y aun así almacenar sus datos en la cadena de bloques subyacente, independientemente del tipo.In essence, in some examples, contract cryptographic backends can execute the logic of a contractual agreement between counterparties at scale, in a secure private environment, and still store their data on the underlying blockchain, regardless of type.

En algunos ejemplos, un programa subordinado criptográfico tiene propiedades comunes independientemente del tipo:In some examples, a cryptographic backend has common properties regardless of type:

Identidad: por ejemplo, un par de claves. La identidad puede ser creada por el propio programa subordinado criptográfico o asignada. La clave pública también se conoce como la dirección del programa subordinado criptográfico en algunos ejemplos. La clave privada se puede usar para firmar todas las transacciones del programa subordinado criptográfico. Las claves privadas pueden almacenarse en el depósito 465 de claves o extraerse mediante un canal seguro al rehidratar o asignar una identidad a un programa subordinado criptográfico.Identity: For example, a pair of keys. The identity may be created by the cryptographic backend itself or assigned. The public key is also known as the address of the cryptographic backbone in some examples. The private key can be used to sign all transactions of the cryptographic backend. Private keys may be stored in the keystore 465 or extracted via a secure channel by rehydrating or assigning an identity to a cryptographic backend.

Nombre: un nombre común que se asigna a la dirección para una identidad más legible en algunos ejemplos.Name: A common name that is assigned to the address for a more readable identity in some examples.

Código: código escrito en un idioma que es soportado por su contenedor principal en algunos ejemplos.Code: Code written in a language that is supported by its parent container in some examples.

Vinculación de programa subordinado criptográfico: una pequeña lista de vinculaciones que representan las direcciones y parámetros del cliente (por ejemplo, cuentas o contratos de cadena de bloques) para la vinculación en algunos ejemplos.Cryptographic backend binding: A small list of bindings that represent the addresses and client parameters (for example, accounts or blockchain contracts) for the binding in some examples.

Eventos: lista de eventos publicados o vistos por el programa subordinado criptográfico en algunos ejemplos. Estos desencadenantes de eventos se pueden ver en datos o eventos de cadena de bloques o en algunos ejemplos externos.Events: List of events published or seen by the cryptographic backend in some examples. These event triggers can be seen in data or blockchain events or some external examples.

API: un conjunto de API de nivel de superficie que pueden usar los sistemas sin cadena de bloques u otros programas subordinados criptográficos, así como los métodos de devolución de llamada del abonado en algunos ejemplos.API – A set of surface-level APIs that can be used by non-blockchain systems or other cryptographic backends, as well as subscriber callback methods in some examples.

Contenedor principal: un contenedor de programa subordinado criptográfico en el que se ejecuta el programa subordinado criptográfico, en algunos ejemplos.Parent container: A cryptographic backend container in which the cryptographic backend runs, in some instances.

Manifiesto: ajustes de configuración de notación de objetos de JavaScript (JSON) simples para un programa subordinado criptográfico que se utiliza para la implantación en el tejido, en algunos ejemplos.Manifest – Simple JavaScript Object Notation (JSON) configuration settings for a cryptographic backend that is used for deployment to the fabric, in some examples.

Un contenedor de programa subordinado criptográfico puede proporcionar un tiempo de ejecución para que se ejecuten los programas subordinados criptográficos. Los contenedores de programa subordinado criptográfico pueden proporcionar abstracciones para los programas subordinados criptográficos como E/S, seguridad, gestión de claves y optimización del tiempo de ejecución.A cryptographic backend container may provide a runtime for the cryptographic backends to execute. Cryptographic backend wrappers can provide abstractions for cryptographic backends such as I/O, security, key management, and runtime optimization.

Los contenedores de programa subordinado criptográfico pueden proporcionar almacenamiento y recuperación de claves seguras para que los programas subordinados criptográficos se usen para la identidad, las firmas digitales y la encriptación. Los programas subordinados criptográficos pueden almacenar y extraer claves automáticamente a través del contenedor de programa subordinado criptográfico, que se integra con el depósito 465 de claves mediante un canal seguro o túnel de programa subordinado criptográfico.Cryptographic backend containers can provide secure key storage and retrieval for cryptographic backends to use for identity, digital signatures, and encryption. Cryptographic backends can automatically store and extract keys through the crypto backend container, which integrates with the key repository 465 via a secure channel or crypto backend tunnel.

Un programa subordinado criptográfico puede declarar, en el manifiesto, su configuración, su enclave, su tipo, etc. En algunos ejemplos, el contenedor de programa subordinado criptográfico asegura que las dependencias que necesita el programa subordinado criptográfico están en su lugar para que se ejecute.A cryptographic backend can declare, in the manifest, its configuration, its enclave, its type, etc. In some examples, the crypto-helper wrapper ensures that the dependencies needed by the crypto-helper are in place for it to run.

Los requisitos de recursos criptográficos para un programa subordinado criptográfico se pueden establecer en el manifiesto de programa subordinado criptográfico o en la política. En algunos ejemplos, las opciones y la configuración de recursos criptográficos se establecen en el servicio de contenedor de programa subordinado criptográfico, que forma parte del tejido 460 de programa subordinado criptográfico en algunos ejemplos.The cryptographic resource requirements for a cryptographic backplane can be set in the cryptographic backplane manifest or in the policy. In some examples, cryptographic resource configuration and options are set in the cryptographic backend container service, which is part of the cryptographic backend fabric 460 in some examples.

En algunos ejemplos, el servicio de contenedor de programa subordinado criptográfico es el centro del tejido 460 de programa subordinado criptográfico. En algunos ejemplos, las funciones y componentes principales del servicio de contenedor de programa subordinado criptográfico son:In some examples, the crypto backend container service is the center of the crypto backend fabric 460. In some examples, the main functions and components of the service cryptographic backend container are:

- El registro de tejidos de programa subordinado criptográfico, que consiste en el registro y la base de datos para la configuración.- The registry of cryptographic backend fabrics, which consists of the registry and the database for configuration.

• Programa subordinado criptográfico: nombre e ID, API de nivel de superficie y eventos que exponen a las redes de cadena de bloques.• Cryptographic backend: name and ID, surface level APIs, and events that expose blockchain networks.

• Cadenas de bloques u otros registros distribuidos: nombre de red, tipo, lista de nodos, metadatos.• Block chains or other distributed records: network name, type, list of nodes, metadata.

• Contratos inteligentes: direcciones de contratos inteligentes en cadena e interfaces binarias de aplicación (ABI) u otra definición de interfaz que se suscribe a o tiene relaciones de confianza con los programas subordinados criptográficos, así como con la red de cadena de bloques del anfitrión.• Smart Contracts: On-chain smart contract addresses and application binary interfaces (ABIs) or other interface definition that subscribe to or have trust relationships with cryptographic backends as well as the host's blockchain network.

- Vinculación de los programas subordinados criptográficos, que es una colección de todas las vinculaciones a las que sirve el tejido. Una vinculación de programa subordinado criptográfico puede asignar contratos inteligentes a unos programas subordinados criptográficos o unos programas subordinados criptográficos a otros programas subordinados criptográficos para validación y enrutamiento de mensajes. Una vinculación de programa subordinado criptográfico puede representar una vinculación única entre un contrato inteligente y un programa subordinado criptográfico (o par/anillo). Los detalles sobre la vinculación, como los parámetros de suscripción, los parámetros de interfaz y/o la dirección del contrato inteligente, se utilizan para enrutar mensajes entre los programas subordinados criptográficos, sus clientes, contratos inteligentes, u otros programas subordinados criptográficos.- Cryptographic backend binding, which is a collection of all bindings served by the fabric. A crypto backend binding may assign smart contracts to one crypto back-end or one crypto back-end to other crypto back-end for message validation and routing. A crypto backend binding may represent a unique binding between a smart contract and a crypto back-end (or peer/ring). Details about the binding, such as subscription parameters, interface parameters, and/or smart contract address, are used to route messages between cryptographic backends, their clients, smart contracts, or other cryptographic backends.

- Registro informático seguro: es un registro de enclaves y de sus atributos tales como capacidades, versión, costes y configuración. Definiciones de grupo de enclaves de clústeres y servicios criptográficos adicionales, proporcionados por grupos de enclave, tales como derivación de clave, firmas de anillo y encriptación de umbral. El registro informático seguro también puede incluir un registro de otros tipos de recursos criptográficos y de sus atributos, así como definiciones de grupos de otros tipos de recursos criptográficos.- Secure computer registry: it is a registry of enclaves and their attributes such as capacities, version, costs and configuration. Cluster enclave group definitions and additional cryptographic services, provided by enclave groups, such as key derivation, ring signatures, and threshold encryption. The secure computing registry may also include a registry of other types of cryptographic resources and their attributes, as well as group definitions of other types of cryptographic resources.

- Catálogo de los programas subordinados criptográficos, que puede ser una API de transferencia de estado (REST) representacional y/o un sitio web para que los desarrolladores descubran y registren programa subordinado criptográfico en sus aplicaciones, ya sea para vincular un contrato inteligente o para usar en el diseño de una integración o interfaz de usuario.- Catalog of cryptographic backends, which can be a representational REST API and/or a website for developers to discover and register cryptographic backends in their applications, either to bind a smart contract or to use in the design of an integration or user interface.

- API para abstraer el formato de transacciones de la cadena de bloques y el suministro de atomicidad, consistencia, aislamiento y durabilidad (ACID), anexar transacciones y leer consultas de programa subordinado criptográfico y de cualquier otro sistema que desee acceso "directo" a la cadena de bloques subyacente. Esta API se puede exponer de diversas maneras, por ejemplo, con mensajes mediante bus de servicio, llamadas a procedimientos remotos (RPC) y/o REST.- API for abstracting the blockchain transaction format and providing atomicity, consistency, isolation, and durability (ACID), appending transactions, and reading queries from crypto backend and any other system that wants "direct" access to the underlying blockchain. This API can be exposed in a variety of ways, for example, with messaging via service bus, remote procedure calls (RPC), and/or REST.

Los programas subordinados criptográficos, las cadenas de bloques y los contratos inteligentes pueden registrarse en el servicio de registro de tejidos de programa subordinado criptográfico. El servicio de contenedor de programa subordinado criptográfico puede publicar el catálogo de programa subordinado criptográfico para el contrato inteligente en cadena, la interfaz de usuario (UI) frontal y los desarrolladores de integración de sistemas descubren y usan programa subordinado criptográfico. Los desarrolladores que utilizan las API de nivel de servicio pueden interactuar con la cadena de bloques mediante programa subordinado criptográfico y no preocuparse, o incluso no necesariamente saber, que están trabajando con datos de cadena de bloques. Las interfaces de usuario y las integraciones con otros sistemas pueden interactuar con las API de nivel de superficie de programa subordinado criptográfico para integrar y diseñar aplicaciones rápidamente.Cryptographic backends, blockchains, and smart contracts can be registered with the Crypto Backend Fabric Registry Service. The crypto backend container service can publish the crypto backend catalog for the on-chain smart contract, the front end user interface (UI) and system integration developers discover and use the crypto backend. Developers using the service level APIs can interact with the blockchain via cryptographic backend and not care, or even necessarily know, that they are working with blockchain data. User interfaces and integrations with other systems can interact with cryptographic backend surface level APIs to quickly integrate and build applications.

Los enclaves pueden ser hardware o software. Por ejemplo, se puede formar un enclave de software ejecutando un hipervisor o una máquina virtual segura (VSM). Un ejemplo de un enclave de hardware es un enclave de hardware seguro como SGX de Intel. Un enclave de hardware puede tener un conjunto de claves que están quemadas/atacadas químicamente en el silicio, que se pueden usar para firmar la salida del enclave para servir como certificación de su ejecución segura. Por lo general, hay una proporción de 1 a 1 de código y enclave en el que se ejecuta. Sin embargo, en la nube, los programas subordinados criptográficos pueden enunciarse por casos dinámicamente y pueden o no obtener el mismo enclave de hardware.Enclaves can be hardware or software. For example, a software enclave can be formed running a hypervisor or a secure virtual machine (VSM). An example of a hardware enclave is a secure hardware enclave such as Intel's SGX. A hardware enclave can have a set of keys that are burned/etched into the silicon, which can be used to sign out of the enclave to serve as certification of its secure execution. Typically, there is a 1-to-1 ratio of code to the enclave in which it runs. However, in the cloud, cryptographic backends can be instanced dynamically and may or may not get the same hardware enclave.

En algunos ejemplos, los recursos del enclave se agrupan y organizan en categorías en base a sus capacidades. Por ejemplo, puede haber enclaves de VSM y enclaves de hardware que pueden obtener diferentes perfeccionamientos en rendimiento o memoria a lo largo del tiempo. Los programas subordinados criptográficos se pueden configurar para solicitar cualquier enclave o un tipo específico de enclave, y, potencialmente, un enclave de hardware de mayor rendimiento en tiempo de ejecución.In some examples, site resources are grouped and categorized based on their capabilities. For example, there may be VSM enclaves and hardware enclaves that may gain different improvements in performance or memory over time. Cryptographic backends can be configured to request any enclave or a specific type of enclave, and potentially a higher performing hardware enclave at run time.

En algunos ejemplos, los enclaves son entornos de ejecución seguros donde el código se puede ejecutar en un entorno privado aislado y se puede certificar que los resultados de la ejecución segura se han ejecutado sin alteraciones y en privado. Esto significa que la información secreta, tal como las claves privadas, se puede crear y utilizar dentro de un enclave para firmar transacciones y demostrar a terceros que se ha ejecutado dentro de un enclave.In some examples, enclaves are secure execution environments where code can be executed in a private, isolated environment and the results of secure execution can be certified to have been executed without alterations and in private. This means that secret information, such as private keys, can be created and used within an enclave to sign transactions and prove to third parties that it was executed within an enclave.

En algunos ejemplos, para suministrar los programas subordinados criptográficos a escala, el tejido 460 de programa subordinado criptográfico agrupa los enclaves al recibir una solicitud de agrupación de enclave. En algunos ejemplos, también se pueden agrupar otros tipos de recursos criptográficos. En algunos ejemplos, un grupo de recursos criptográficos actúa como un recurso donde, al recibir una solicitud de recursos criptográficos para un programa subordinado criptográfico, el tejido 460 de programa subordinado criptográfico puede extraer un recurso criptográfico a partir de un grupo de recursos criptográficos y asignarlo a un programa subordinado criptográfico en tiempo de ejecución en base a los requisitos de ese programa subordinado criptográfico.In some examples, to provision the crypto backends at scale, the crypto backend fabric 460 bundles the enclaves upon receiving an enclave bundle request. In some examples, other types of cryptographic resources may also be bundled. In some examples, a cryptographic resource pool acts as a resource where, upon receiving a request for cryptographic resources for a cryptographic backend, the cryptographic backplane fabric 460 may extract a cryptographic resource from a cryptographic resource pool and allocate it. to a cryptographic backend at runtime based on the requirements of that cryptographic backend.

Por ejemplo, se puede establecer la política de que todos los programas subordinados criptográficos que ejecuten un contrato inteligente entre las contrapartes A y B requieran siempre un enclave SGX V2 de Intel. Alternativamente, el requisito del enclave puede dejarse sin especificar, de modo que se proporcione el enclave de menor coste (por ejemplo, en términos de dinero, tiempo, ya activo, etc.).For example, you can set the policy that all cryptographic backends running a smart contract between counterparties A and B always require an Intel SGX V2 enclave. Alternatively, the enclave requirement can be left unspecified, so that the least cost enclave (eg, in terms of money, time, already active, etc.) is provided.

En algunos ejemplos, los enclaves entre los recursos criptográficos 470 se registran dentro del conjunto de enclaves. En algunos ejemplos, se genera una firma compartida de grupo de enclaves para el grupo de enclaves, donde la firma compartida de grupo de enclaves se deriva de la clave privada de cada enclave en el grupo de enclaves. En algunos ejemplos, la gestión de grupos utiliza la enunciación por casos de enclaves justo a tiempo (JIT) para usarlos cuando están activos, pero los devuelve al grupo tan pronto se ha hecho el trabajo. En algunos ejemplos, un programa subordinado criptográfico que tiene una vida útil asíncrona y que no completará su trabajo, puede liberar su enclave en un punto de control y volver a enunciar un caso en un enclave diferente. En algunos ejemplos, el cambio de enclaves produce diferentes certificaciones que pueden ser validadas por la firma compartida del grupo de enclaves.In some examples, the enclaves between the cryptographic resources 470 are registered within the set of enclaves. In some examples, an enclave group shared signature is generated for the enclave group, where the enclave group shared signature is derived from the private key of each enclave in the enclave group. In some examples, pool management uses just-in-time (JIT) enclave case enunciation to use them when they are active, but returns them to the pool as soon as the job is done. In some examples, a cryptographic helpmate that has an asynchronous lifetime and will not complete its work, may release its enclave at a checkpoint and relist a case in a different enclave. In some examples, changing enclaves produces different certifications that can be validated by the shared signature of the enclave group.

En algunos ejemplos, cuando un conjunto de enclaves se registra con el tejido 460 de programa subordinado criptográfico, cada clave pública de enclave se graba en el registro de grupo de enclaves. En algunos ejemplos, las características se graban en el momento del registro y se pueden modificar para categorías de grupo que no se infieren del hardware. En algunos ejemplos, una vez que se han registrado todos los enclaves, las claves de todos los enclaves se usan para generar un par de claves para el grupo que se almacena en depósito 465 de claves. En tiempo de ejecución, el servicio de contenedor de programa subordinado criptográfico puede determinar las dependencias del entorno de tiempo de ejecución de los programas subordinados criptográficos en base a su registro o política y solicitar un enclave fuera del grupo de enclaves. El grupo de enclaves puede activar un enclave y devolver su dirección al servicio de contenedor de programa subordinado criptográfico, que puede luego inyectar el contenedor de programa subordinado criptográfico apropiado. En algunos ejemplos, al contenedor de programa subordinado criptográfico se le proporciona la ID de programa subordinado criptográfico y una vinculación activa, que el contenedor de programa subordinado criptográfico usa para extraer el binario de programa subordinado criptográfico del almacenamiento seguro y ejecutar una verificación de firma de código de hash en el programa subordinado criptográfico, que puede ser parte del identificador compuesto del programa subordinado criptográfico. En algunos ejemplos, el contenedor de programa subordinado criptográfico extrae luego cualesquiera claves solicitadas por el programa subordinado criptográfico del depósito 465 de claves y las pasa junto con la vinculación de programa subordinado criptográfico activa al constructor del programa subordinado criptográfico para enunciar su caso dentro del enclave. En algunos ejemplos, el código del programa subordinado criptográfico se ejecuta en el enclave y la carga útil se firma digitalmente con la clave privada del enclave.In some examples, when a set of enclaves registers with the cryptographic backend fabric 460, each enclave public key is recorded in the enclave group registry. In some examples, features are recorded at record time and can be modified for group categories that are not inferred from the hardware. In some examples, once all the enclaves have been registered, the keys of all the enclaves are used to generate a key pair for the group that is stored in the key repository 465 . At runtime, the Cryptographic Backend Container Service can determine the runtime environment dependencies of the Cryptographic backends based on its registry or policy and request an enclave outside of the enclave pool. The enclave group may activate an enclave and return its address to the cryptographic backend container service, which may then inject the appropriate cryptographic backend container. In some examples, the Cryptographic Backchild Container is provided with the Cryptographic Helper ID and an active binding, which the Cryptographic Backhand Container uses to extract the Cryptographic Backend binary from secure storage and run a signature verification of hash code in the cryptographic backend, which may be part of the composite identifier of the cryptographic backend. In some examples, the crypto backend container then extracts any keys requested by the crypto backend from the key repository 465 and passes them along with the active crypto back-end binding to the crypto back-end constructor to state their case within the enclave. . In some examples, the cryptographic backend code is executed in the enclave and the payload is digitally signed with the enclave's private key.

Una vez que un programa subordinado criptográfico ha terminado con su trabajo sincrónico, puede llamar a su método de punto de control que puede pasar cualesquiera nuevas claves generadas durante su sesión para que el contenedor de programa subordinado criptográfico persista en el depósito 465 de claves, así como que libere el enclave del programa subordinado criptográfico nuevamente al grupo. Al devolver el enclave, el enclave vuelve entonces a estar disponible para ser utilizado por otro programa subordinado criptográfico.Once a crypto feeder has finished with its synchronous work, it can call its checkpoint method which can pass any new keys generated during its session to the crypto feeder container to persist in the key repository, 465 thus like I release the enclave of the cryptographic backend program back to the group. Returning the enclave then makes the enclave available again for use by another cryptographic backend.

En algunos ejemplos, si un programa subordinado criptográfico requiere un enclave, u otro recurso criptográfico, que no está disponible y que no estará disponible dentro de una ventana de llamada definida, se registra un error, y se lanza una excepción.In some examples, if a cryptographic helper requires an enclave, or other cryptographic resource, that is not and will not be available within a defined call window, an error is logged, and an exception is thrown.

Se pueden añadir nuevos enclaves al grupo de enclaves, lo que generará una nueva firma compartida para el grupo. En algunos ejemplos, se utiliza una firma compartida cuando la vida útil de un programa subordinado criptográfico abarca varios enclaves y es necesario establecer la continuidad de la certificación. En algunos ejemplos, la firma compartida es histórica, por lo que, si un programa subordinado criptográfico está certificado en múltiples enclaves, se verifica la firma compartida, y, si la firma actual no coincide, se verifica la versión anterior de la firma, hasta que se encuentre una coincidencia. En estos ejemplos, si no se encuentra ninguna coincidencia, la cadena de certificación no es válida. New enclaves can be added to the enclave group, which will generate a new shared signature for the group. In some examples, a shared signature is used when the lifetime of a cryptographic backplane spans multiple enclaves and certification continuity needs to be established. In some examples, the shared signature is historical, so if a cryptographic backplane is certified in multiple enclaves, the shared signature is checked, and if the current signature does not match, the previous version of the signature is checked, up to that a match is found. In these examples, if no match is found, the certification chain is invalid.

De esta manera, en estos ejemplos, un enclave malicioso no puede dar paso a una transacción validada. En estos ejemplos, si un enclave malicioso contribuye a una transacción, la firma del enclave compartido no se realizará, y la cadena de certificación no sería válida.Thus, in these examples, a malicious enclave cannot lead to a validated transaction. In these examples, if a malicious enclave contributes to a transaction, the signature of the shared enclave will fail, and the certification chain would be invalid.

En algunos ejemplos, el servicio de contenedor de programa subordinado criptográfico tiene un enrutador de cadena de bloques que proporciona la API de abstracción para operaciones de datos contra cadenas de bloques. Cada tipo diferente de cadena de bloques puede tener un proveedor o conector de mensajes de cadena de bloques que se enchufa al enrutador de cadena de bloques para formatear mensajes apropiadamente para cada cadena de bloques. En algunos ejemplos, los conectores de cadenas de bloques tienen una dirección válida en cada una de las cadenas de bloques a las que el conector de cadenas de bloques sirve y firma transacciones con la clave para esta dirección. En algunos ejemplos, los conectores de cadenas de bloques se ejecutan dentro de un enclave para fines de firma de transacciones.In some examples, the crypto backend container service has a blockchain router that provides the abstraction API for data operations against blockchains. Each different type of blockchain may have a blockchain message provider or connector that plugs into the blockchain router to format messages appropriately for each blockchain. In some examples, the Blockchain Connectors have a valid address on each of the Blockchains that the Blockchain Connector serves and signs transactions with the key for this address. In some examples, blockchain connectors run within an enclave for transaction signing purposes.

El enrutador de cadenas de bloques depende de la vinculación de los programas subordinados criptográficos para enrutar mensajes al conector de cadenas de bloques apropiado. El conector de cadenas de bloques utiliza la información de vinculación de programa subordinado criptográfico para formatear los mensajes correctamente y garantizar el suministro al destinatario objetivo.The Blockchain Router relies on binding cryptographic backends to route messages to the appropriate Blockchain Connector. The blockchain connector uses the cryptographic backend binding information to format messages correctly and ensure delivery to the intended recipient.

En algunos ejemplos, la vinculación de programa subordinado criptográfico es una estructura de datos que proporciona la abstracción entre el programa subordinado criptográfico y la cadena de bloques, los contratos inteligentes y las cuentas subyacentes. La vinculación de programa subordinado criptográfico puede o no estar asegurada en sí misma, ya que sólo puede contener identificador/es de componentes vinculados (por ejemplo, identificadores únicos) que las partes autorizadas usan para buscar detalles de otros servicios. En algunos ejemplos, utilizados en el enrutamiento de mensajes, la vinculación proporciona las propias ID de programa subordinado criptográfico e ID de contrato inteligente. En algunos ejemplos, la dirección del contrato inteligente se busca y se vincula a una ID de cadena de bloques específica que mapea una dirección de nodo.In some examples, the crypto backend binding is a data structure that provides the abstraction between the crypto backend and the underlying blockchain, smart contracts, and accounts. The cryptographic backend binding may or may not itself be secured, as it may only contain bound component identifier(s) (eg, unique identifiers) that are used by authorized parties to look up details of other services. In some examples, used in message routing, the binding provides its own cryptographic backer ID and smart contract ID. In some examples, the smart contract address is looked up and linked to a specific blockchain ID that maps a node address.

Los datos pueden estar envueltos en múltiples capas de certificaciones digitales (por ejemplo, firmas) firmadas por el productor de datos o "en nombre de" un usuario o dispositivo IOT, el programa subordinado criptográfico, su enclave de anfitrión, y, luego, el conector de cadenas de bloques. Este capeado de firmas puede entenderse como realizado a modo de capas de cebolla.Data may be wrapped in multiple layers of digital attestations (for example, signatures) signed by the data producer or "on behalf of" a user or IOT device, the cryptographic backend, its host enclave, and then the Blockchain Connector. This layering of signatures can be understood as being made in the manner of onion layers.

El criptodelegado, que es una parte del tejido 460 de programa subordinado criptográfico en algunos ejemplos, puede proporcionar un punto de optimización para verificar estas firmas en capas antes de pasar a ser validadas por todos los nodos, lo que, en consecuencia, reduce la verificación de firmas redundantes, rechaza las cadenas de certificación no válidas y/o libera recursos informáticos.The cryptodelegate, which is a part of the cryptographic backend fabric 460 in some examples, can provide an optimization point for verifying these layered signatures before they are validated by all nodes, thereby reducing verification. of redundant signatures, rejects invalid certification chains and/or frees up computing resources.

El depósito 465 de claves puede proporcionar almacenamiento persistente seguro de claves utilizadas por los programas subordinados criptográficos para servicios de identidad, firmas digitales y encriptación. Los contenedores de programa subordinado criptográfico pueden proporcionar abstracciones a los programas subordinados criptográficos para almacenar y extraer claves en tiempo de ejecución. En algunos ejemplos, se establece un canal de comunicación seguro, llamado túnel de programa subordinado criptográfico, entre el depósito 465 de claves y el enclave que aloja el contenedor de programa subordinado criptográfico. En algunos ejemplos, el contenedor de programa subordinado criptográfico proporciona automáticamente y bajo demanda el almacenamiento y la recuperación de claves privadas y de información secreta utilizadas por los programas subordinados criptográficos alojados.Key repository 465 may provide secure persistent storage of keys used by cryptographic backends for identity services, digital signatures, and encryption. Cryptographic backend wrappers can provide abstractions for cryptographic backends to store and extract keys at run time. In some examples, a secure communication channel, called a crypto backend tunnel, is established between the key repository 465 and the enclave hosting the crypto back-end container. In some examples, the cryptographic backend container automatically provides on-demand storage and retrieval of private keys and secret information used by the hosted cryptographic backends.

Por ejemplo, en algunos ejemplos, cuando se crea el caso de un programa subordinado criptográfico dentro de su anfitrión contenedor de programa subordinado criptográfico, si su identidad se establece mediante un par de claves en el depósito de claves, el contenedor de programa subordinado criptográfico extraerá de forma segura y proporcionará el par de claves al programa subordinado criptográfico tras la enunciación por casos. O bien, si el programa subordinado criptográfico crea su propio par de claves o uno nuevo, el contenedor de programa subordinado criptográfico puede almacenar automáticamente estas nuevas claves cuando se desactive el programa subordinado criptográfico. En algunos ejemplos, el programa subordinado criptográfico puede usar la clave privada para firmar transacciones y enviar mensajes. Un ejemplo de una clave asignada es un programa subordinado criptográfico que firma transacciones como una contraparte, corporación, usuario o dispositivo específica/o en un contrato inteligente con la clave privada de la contraparte.For example, in some examples, when creating the instance of a crypto-helper inside its crypto-back-to-body container host, if its identity is established by a key pair in the key repository, the crypto-back-to-body container will extract in a secure manner and will provide the key pair to the crypto-backdropper upon enunciation by cases. Or, if the crypto backend creates its own or a new key pair, the crypto back-end container can automatically store these new keys when the crypto back-end is deactivated. In some examples, the cryptographic backend can use the private key to sign transactions and send messages. An example of an assigned key is a cryptographic backend that signs transactions as a specific counterparty, corporation, user, or device/or in a smart contract with the counterparty's private key.

En algunos ejemplos, los programas subordinados criptográficos pueden solicitar claves o información secreta de su contenedor para otros servicios criptográficos como encriptación, desencriptación y firma de mensajes. En algunos ejemplos, el contenedor de programa subordinado criptográfico busca y localiza las claves utilizadas por los programas subordinados criptográficos, ya sea con fines de identidad u otros fines criptográficos, utilizando vinculación de programa subordinado criptográfico que se resuelve o bien en una ID de caso de programa subordinado criptográfico o bien en una Id de contraparte, y solicitando o almacenando mediante el túnel de programa subordinado criptográfico hasta el depósito 465 de claves. En algunos ejemplos, se utiliza un gráfico de claves de vinculación de programa subordinado criptográfico para grabar ubicaciones clave para resolver y ubicar claves para una contraparte diferente en un caso desagregado de depósito 465 de claves que puede ser controlada por esa contraparte. La derivación de claves para múltiples identidades de programa subordinado criptográfico de una sola contraparte puede proporcionar múltiples casos de concurrencia que hay que distinguir. Además, en escenarios de ejemplo para escenarios de derivación de clave de un solo uso, donde el depósito 465 de claves emite o un programa subordinado criptográfico crea una clave derivada para la firma de programa subordinado criptográfico, cuando se realiza la firma, la clave derivada se destruye, ya que sólo estaba en la memoria del enclave. Los servicios de ciclo de vida de la clave, como la caducidad y el restablecimiento de la clave, pueden proporcionarse como utilidades.In some examples, cryptographic helpers may request keys or secret information from their container for other cryptographic services such as encryption, decryption, and message signing. In some examples, the Cryptographic Backend Container looks up and locates the keys used by the Cryptographic Backends, either for identity or other cryptographic purposes, using resolving Cryptographic Backend Binding or in a Cryptographic Backend Case ID. cryptographic backend or in a counterparty Id, and requesting or storing via the cryptographic backend tunnel to the key repository 465 . In some examples, a graph of cryptographic backend binding keys for recording key locations to resolve and allocate keys for a different counterparty in an unbundled case of key repository 465 that can be controlled by that counterparty. Derivation of keys for multiple cryptographic backend identities from a single counterparty may provide multiple concurrency cases to be distinguished. In addition, in example scenarios for one-time key derivation scenarios, where the key repository 465 issues or a cryptographic backend creates a derived key for cryptographic backend signing, when signing is performed, the derived key it is destroyed, since it was only in the memory of the enclave. Key lifecycle services, such as key expiration and key reset, can be provided as utilities.

En algunos ejemplos, los desarrolladores pueden construir sus contratos inteligentes utilizando objetos en contra de su lógica y simplemente conservar su estado de objeto en el libro mayor de la cadena de bloques sin tener que escribir un esquema de contrato inteligente. En algunos ejemplos, lo contrario también es cierto, y se puede diseñar y mapear un modelo de objeto a partir de un esquema de contrato inteligente existente. Este entorno puede proporcionar portabilidad de cadena de bloques y facilidad de desarrollo para soluciones de cadena de bloques. En algunos ejemplos, el criptodelegado es un conjunto de capacidades que se suministran de manera diferente en base a la cadena de bloques o al libro mayor subyacente. En algunos ejemplos, el criptodelegado es parte del tejido 460 de programa subordinado criptográfico. En algunos ejemplos, el criptodelegado funciona, en esencia, como una integración del lado del cliente o del lado del nodo para el tejido 460 de programa subordinado criptográfico. Entre otras cosas, el criptodelegado puede realizar comprobaciones de certificación en los mensajes antes del suministro a la plataforma del nodo subyacente, por ejemplo, bloqueando las transacciones no válidas antes de que se propaguen por la red 450 de la cadena de bloques.In some examples, developers can build their smart contracts using objects against their logic and simply persist their object state in the blockchain ledger without having to write a smart contract schema. In some examples, the reverse is also true, and an object model can be designed and mapped from an existing smart contract schema. This environment can provide blockchain portability and ease of development for blockchain solutions. In some examples, the crypto delegate is a set of capabilities that are provisioned differently based on the underlying blockchain or ledger. In some examples, the cryptodelegate is part of the cryptographic backend fabric 460. In some examples, the crypto-delegate functions, in essence, as a client-side or node-side integration for the cryptographic backend fabric 460. Among other things, the crypto-delegate can perform certification checks on messages prior to delivery to the underlying node platform, for example, blocking invalid transactions before they propagate through the blockchain network 450 .

Como se analizó anteriormente, cuando se forma un grupo de enclaves, los enclaves del grupo pueden registrarse con el grupo de enclaves. En algunos ejemplos, cuando los enclaves están así registrados con el tejido 460 de programa subordinado criptográfico, el tejido 460 de programa subordinado criptográfico puede recibir cada clave pública de enclave, y cada clave pública de enclave puede grabarse en el registro de grupos de enclaves. Además, como parte del proceso que se produce cuando se forma un grupo de enclaves, el tejido 460 de programa subordinado criptográfico puede derivar una clave compartida de grupo de enclaves a partir de la clave pública de cada enclave en el grupo de enclaves. El tejido 460 de programa subordinado criptográfico puede generar una nueva clave compartida de grupo de enclaves si cambia la membresía del grupo de enclaves.As discussed above, when a settlement group is formed, the settlements in the group can register with the settlement group. In some examples, when the enclaves are so registered with the cryptographic backend fabric 460, the cryptographic backend fabric 460 may receive each enclave public key, and each enclave public key may be recorded in the enclave group registry. In addition, as part of the process that occurs when an enclave group is formed, the cryptographic backbone fabric 460 may derive an enclave group shared key from the public key of each enclave in the enclave group. The cryptographic backend fabric 460 may generate a new enclave group shared key if the enclave group membership changes.

Un contenedor de programa subordinado criptográfico puede solicitar un enclave de un grupo de enclaves asociado en respuesta a una necesidad. La solicitud puede especificar un tamaño o tipo particular de enclave. Por ejemplo, algunos tipos de enclaves son más seguros que otros, y pueden estar asociados con un coste mayor, por lo que se puede solicitar un enclave que tenga un nivel particular de seguridad de acuerdo con la solicitud particular. Cuando se realiza la solicitud, el tejido 460 de programa subordinado criptográfico puede extraer un enclave adecuado del grupo de enclaves y asignarlo al contenedor de programa subordinado criptográfico en base a la solicitud particular. Un contenedor de programa subordinado criptográfico también puede solicitar otros tipos de recursos criptográficos de grupos de recursos criptográficos asociados en respuesta a una necesidad, tal como FPGA configuradas para realizar recursos criptográficos particulares, recursos criptográficos compuestos, y/o similares. Cuando se hace la solicitud de recursos criptográficos, el tejido 460 de programa subordinado criptográfico puede extraer los recursos criptográficos adecuados de los grupos de recursos criptográficos correspondientes y asignarlos al contenedor de programa subordinado criptográfico en base a la solicitud particular.A cryptographic backend container may request an enclave from an associated enclave group in response to a need. The request may specify a particular size or type of enclave. For example, some types of enclaves are more secure than others, and may be associated with a higher cost, so an enclave having a particular level of security may be requested according to the particular request. When the request is made, the cryptographic backend fabric 460 may extract a suitable enclave from the enclave pool and assign it to the cryptographic backend container based on the particular request. A cryptographic backend container may also request other types of cryptographic resources from associated cryptographic resource groups in response to a need, such as FPGAs configured to carry particular cryptographic resources, composite cryptographic resources, and/or the like. When the request for crypto resources is made, the crypto back-end fabric 460 may extract the appropriate crypto resources from the corresponding crypto resource pools and allocate them to the crypto back-end container based on the particular request.

El código de programa subordinado criptográfico que se va a ejecutar puede ejecutarse entonces, usando los recursos criptográficos asignados según sea necesario. Como parte de la ejecución del código de programa subordinado criptográfico, el código de programa subordinado criptográfico puede generar una carga útil en el enclave del anfitrión. La carga útil del enclave del anfitrión puede entonces ser firmada y/o encriptada por la clave privada del programa subordinado criptográfico, así como firmada digitalmente por la clave del enclave privado del enclave del anfitrión. Luego, los recursos criptográficos se pueden desasignar del primer programa subordinado criptográfico, de modo que el programa subordinado criptográfico ya no se ejecute en los recursos criptográficos y que los recursos criptográficos estén disponibles para otros programas subordinados criptográficos. La carga útil se puede certificar fuera de banda desde la cadena de bloques, por ejemplo, con la clave pública del programa subordinado criptográfico y la clave pública del enclave.The cryptographic backend program code to be executed can then be executed, using the allocated cryptographic resources as necessary. As part of the execution of the cryptographic backbone program code, the cryptographic backbone program code may generate a payload in the host enclave. The host enclave payload can then be signed and/or encrypted by the private key of the cryptographic backend, as well as digitally signed by the private enclave key of the host enclave. The cryptographic resources can then be deallocated from the first cryptographic helper, so that the cryptographic helper is no longer running on the cryptographic resources and the cryptographic resources are available to other cryptographic helpers. The payload can be certified out of band from the blockchain, for example, with the public key of the cryptographic backbone and the public key of the enclave.

En algunos casos, el código de programa subordinado criptográfico puede también ejecutarse en otro enclave. Por ejemplo, en algunos ejemplos, como se analizó anteriormente, la gestión del grupo puede usar la enunciación por casos de enclaves "justo a tiempo" (JIT), pero devolverlos al grupo una vez que se haya realizado el trabajo. En algunos ejemplos, un programa subordinado criptográfico que tiene una vida útil asíncrona y que no completará su trabajo puede desasignar su enclave en un punto de control.In some cases, the cryptographic backend program code may also run in another enclave. For example, in some examples, as discussed above, group management may use just-in-time (JIT) case enunciation of enclaves, but return them to the group once the work is done. In some examples, a cryptographic helpmate that has an asynchronous lifetime and will not complete its work can deallocate its enclave at a checkpoint.

En consecuencia, el tejido 460 de programa subordinado criptográfico puede extraer un enclave adecuado diferente del grupo de enclaves, y el programa subordinado criptográfico puede volver a enunciar un caso en el nuevo enclave. El programa subordinado criptográfico puede luego continuar ejecutándose en el otro enclave anfitrión (por ejemplo, el nuevo enclave). La carga útil del otro enclave de anfitrión puede ser firmada digitalmente por la clave de enclave privada del otro enclave de anfitrión. El otro enclave de anfitrión se puede desasignar para que el programa subordinado criptográfico ya no se ejecute en el enclave y el otro enclave de anfitrión esté disponible para otros programas subordinados criptográficos.Accordingly, the crypto background fabric 460 can extract a different suitable enclave from the enclave pool, and the crypto background program can re-state an instance in the new one. enclave. The cryptographic backend can then continue to run on the other host enclave (eg, the new enclave). The payload of the other host enclave may be digitally signed by the private enclave key of the other host enclave. The other host enclave can be deallocated so that the cryptographic backend no longer runs in the enclave and the other host enclave is available to other cryptographic backends.

En algunos ejemplos, el programa subordinado criptográfico puede ser ejecutado por aún más enclaves, tal como por lo menos un tercer enclave, de una manera similar a la descrita anteriormente para el segundo enclave.In some examples, the cryptographic backend may be executed by still more enclaves, such as at least a third enclave, in a manner similar to that described above for the second enclave.

Debido a que el programa subordinado criptográfico en este ejemplo se ejecuta en más de un enclave, la salida del código de programa subordinado criptográfico puede contener dos o más firmas digitales, cada una de las cuales se origina a partir de la clave privada de diferentes enclaves del grupo de enclaves, además de una firma digital que se origina en la clave de programa subordinado criptográfico privada, así como posiblemente otras firmas digitales como parte de la cebolla de firmas. En algunos ejemplos, las firmas digitales que se originan a partir de una clave de enclave de un enclave que pertenece al grupo de enclaves se pueden validar comparándolas con la clave del grupo de enclaves compartida. En algunos ejemplos, la verificación de las firmas digitales puede realizarla el tejido de programa subordinado criptográfico.Because the crypto background program in this example runs in more than one enclave, the output of the crypto background program code can contain two or more digital signatures, each originating from the private key of different enclaves. of the enclave group, plus a digital signature originating from the private cryptographic backbone program key, as well as possibly other digital signatures as part of the signature onion. In some examples, digital signatures originating from an enclave key of an enclave belonging to the enclave group can be validated by comparing it to the shared enclave group key. In some examples, verification of digital signatures may be performed by the cryptographic backend fabric.

En algunos ejemplos, el código del programa subordinado criptográfico se empaqueta como un programa subordinado criptográfico que tiene su propia identidad, que es un compuesto de múltiples componentes. En algunos ejemplos, la identidad de programa subordinado criptográfico es la combinación del hash binario del programa subordinado criptográfico compilado, la clave pública del programa subordinado criptográfico y el identificador de vinculación.In some examples, the cryptographic handset code is packaged as a cryptographic handset having its own identity, which is a composite of multiple components. In some examples, the cryptographic backend identity is the combination of the compiled cryptographic backend binary hash, the public key of the cryptographic backend, and the binding identifier.

En algunos ejemplos, la identidad de programa subordinado criptográfico que se compone de estos tres componentes permite compilar y reutilizar un único binario en muchos casos de ese tipo de contrato.In some examples, the cryptographic backend identity that is composed of these three components allows a single binary to be compiled and reused in many instances of that type of contract.

Por ejemplo, para un contrato financiero binario de programa subordinado criptográfico que es un intercambio de tipos de interés, en un ejemplo, el programa subordinado criptográfico de intercambio tendría un hash clave pública que representaría de manera única ese binario de programa subordinado criptográfico en el tejido. En este ejemplo, cuando se crea un nuevo intercambio de tipos de interés, se crea un caso de ese contrato representado por una Id de vinculación. En algunos ejemplos, la vinculación representa las propiedades/reglas del caso de intercambio, tales como las identidades de las contrapartes, el sitio de donde el programa subordinado criptográfico obtiene el precio del tipo de interés y la frecuencia con la que se produce, y/o similares.For example, for a crypto backend binary financial contract that is an interest rate swap, in one example, the exchange crypto back-end would have a public key hash that would uniquely represent that crypto back-end binary in the fabric. . In this example, when a new interest rate swap is created, an instance of that contract represented by a binding Id is created. In some examples, the peg represents the properties/rules of the exchange case, such as the identities of the counterparties, where the crypto backend obtains the interest rate price and how often it occurs, and/or or similar.

De esta manera, puede haber numerosos casos de un intercambio de tipos de interés con un único programa subordinado criptográfico binario que ejecuta cada uno de estos contratos. El caso único es la identidad de programa subordinado criptográfico compuesta que representa el contrato en este ejemplo.Thus, there can be numerous instances of an interest rate swap with a single binary cryptographic backend executing each of these contracts. The unique case is the composite cryptographic backend identity that represents the contract in this example.

En consecuencia, en algunos ejemplos, la combinación de tres componentes, (1) hash binario, (2) clave pública de programa subordinado criptográfico y (3) Id de vinculación, es el identificador de caso que luego se representa como un compendio de hash para contrato que se graba en el libro mayor de la cadena de bloques que representa la versión de la lógica que controla el contrato inteligente. Esta identidad de programa subordinado criptográfico se puede usar al margen de si se usa o no el grupo de enclaves y de si se usa o no la clave compartida. En algunos ejemplos, un caso de programa subordinado criptográfico consta de los tres componentes (1) hash binario, (2) clave pública de programa subordinado criptográfico y (3) Id de vinculación, donde un programa subordinado criptográfico general que no ha sido enunciado en caso consta de dos componentes: (1) hash binario y (2) clave pública de programa subordinado criptográfico, y donde una enunciación por caso de ese programa subordinado criptográfico añadiría luego la Id de vinculación de ese caso del programa subordinado criptográfico para generar la identidad de programa subordinado criptográfico para ese caso del programa subordinado criptográfico.Consequently, in some examples, the combination of three components, (1) binary hash, (2) cryptographic backbone public key, and (3) binding id, is the instance identifier which is then represented as a hash digest. for contract that is written to the ledger of the blockchain that represents the version of the logic that controls the smart contract. This cryptographic backer identity can be used regardless of whether or not the enclave pool is used and whether or not the shared key is used. In some examples, a cryptographic backbone instance consists of the three components (1) binary hash, (2) cryptographic backbone public key, and (3) binding id, where a general cryptographic backbone that has not been enunciated in instance consists of two components: (1) binary hash and (2) crypto backend public key, and where an utterance per instance of that crypto back-end would then add the binding id of that instance of the crypto back-end to generate the identity Cryptographic Backgrounder for that instance of the Cryptographic Backgrounder.

Los programas subordinados criptográficos pueden instalarse y registrarse en el tejido 460 de programa subordinado criptográfico. Durante el proceso de instalación de un programa subordinado criptográfico en el tejido 460, el tejido 460 de programa subordinado criptográfico extrae el binario de programa subordinado criptográfico para el programa subordinado criptográfico que se está instalando, y genera un hash del binario de programa subordinado criptográfico. El tejido 460 de programa subordinado criptográfico también puede solicitar al depósito 465 de claves que cree una cadena de claves que puede incluir, entre otras cosas, un par de claves para el programa subordinado criptográfico, donde el par de claves incluye una clave privada de programa subordinado criptográfico y la clave pública de programa subordinado criptográfico, y solicitar que la clave pública de programa subordinado criptográfico se envíe al tejido 460 de programa subordinado criptográfico. El tejido 460 de programa subordinado criptográfico puede recibir la clave pública y crear una identidad de programa subordinado criptográfico para el programa subordinado criptográfico, donde la identidad de programa subordinado criptográfico consta de dos componentes (1) el hash del binario y (2) la clave pública de programa subordinado criptográfico, porque el programa subordinado criptográfico no está enunciado en caso. El tejido 460 de programa subordinado criptográfico puede registrar el programa subordinado criptográfico con la identidad de programa subordinado criptográfico en un registro de programa subordinado criptográfico en el tejido 460 de programa subordinado criptográfico, donde la identidad de programa subordinado criptográfico se almacena como una entrada en el registro de programa subordinado criptográfico como parte del momento de registro. En algunos ejemplos, el registro de programa subordinado criptográfico puede actuar como una especie de catálogo del que se pueden seleccionar los programas subordinados criptográficos.Cryptographic backends may be installed and registered in the cryptographic backend fabric 460. During the process of installing a crypto backend on fabric 460, the crypto back-end fabric 460 extracts the crypto back-end binary for the crypto back-end being installed, and generates a hash of the crypto back-end binary. The crypto backbone fabric 460 may also request the key repository 465 to create a key chain that may include, among other things, a key pair for the crypto back-end program, where the key pair includes a program private key. crypto backend and the crypto back-end public key, and request that the crypto back-end public key be sent to the crypto back-end fabric 460. The crypto-backdrop fabric 460 may receive the public key and create a crypto-back-drop identity for the crypto-back-drop, where the crypto-back-drop identity consists of two components (1) the hash of the binary and (2) the key public of cryptographic backend, because the cryptographic backend is not stated in case. The crypto feeder fabric 460 may register the crypto feeder with the crypto feeder identity in a crypto feeder record in the crypto feeder fabric 460, where the crypto feeder identity Cryptographic helper is stored as an entry in the Cryptographic helper registry as part of registration time. In some examples, the cryptographic backend registry may act as a sort of catalog from which cryptographic backends can be selected.

En algunos ejemplos, cuando se hace una solicitud para un programa subordinado criptográfico particular, y el programa subordinado criptográfico aún tiene que ser enunciado en caso, el tejido 460 de programa subordinado criptográfico intercepta la solicitud. Si el programa subordinado criptográfico necesitara ejecutarse en un programa subordinado criptográfico, entonces, independientemente de si se usa o no la agrupación de enclaves, el tejido 460In some examples, when a request is made for a particular crypto backend, and the crypto back-end has yet to be enunciated in case, the crypto back-end fabric 460 intercepts the request. If the cryptographic backend needed to run in a cryptographic backend, then regardless of whether or not enclave pooling is used, the fabric 460

de programa subordinado criptográfico puede entonces identificar un enclave que se usará para ejecutar el programa subordinado criptográfico. El tejido 460 de programa subordinado criptográfico puede enviar un contenedor de programa subordinado criptográfico al enclave que se va a ejecutar en el enclave, y el contenedor de programa subordinado criptográfico puede extraer el par de claves de programa subordinado criptográfico para el programa subordinado criptográfico. En algunos ejemplos, como se analizó anteriormente, esto se logra mediante unThe cryptographic backend can then identify an enclave that will be used to run the cryptographic backend. The crypto backend fabric 460 may send a crypto back-end container to the enclave to be executed in the enclave, and the crypto back-end container may extract the crypto back-end key pair for the crypto back-end. In some examples, as discussed above, this is accomplished by a

canal seguro entre el depósito 465 de claves y el contenedor de programa subordinado criptográfico ejecutándosesecure channel between key repository 465 and cryptographic back-end container running

en el enclave. El tejido 460 de programa subordinado criptográfico también puede enviar el binario de programa subordinado criptográfico al enclave, y el programa subordinado criptográfico puede comenzar a ejecutarse en el enclave.in the enclave. The crypto backend fabric 460 may also send the crypto back-end binary to the enclave, and the crypto back-end can start executing on the enclave.

El tejido 460 de programa subordinado criptográfico puede entonces generar la vinculación de programa subordinado criptográfico para el programa subordinado criptográfico, y la identificación de vinculación, asociada conThe crypto backend fabric 460 may then generate the crypto back-end binding for the crypto back-end, and the binding identification, associated with it.

la vinculación de los programas subordinados criptográficos, para el programa subordinado criptográfico. El programa subordinado criptográfico que se ejecuta en el enclave puede generar una carga útil que puede estar firmada digitalmente por al menos la clave de enclave privada del enclave anfitrión, y firmada o encriptada por lathe binding of the cryptographic background programs, for the cryptographic background program. The cryptographic back-end running on the enclave may generate a payload that may be digitally signed by at least the private enclave key of the host enclave, and signed or encrypted by the enclave.

clave privada de programa subordinado criptográfico. En algunos ejemplos, el tejido 460 de programa subordinado criptográfico recibe la carga útil.private key of cryptographic backbone. In some examples, the cryptographic backend fabric 460 receives the payload.

El tejido 460 de programa subordinado criptográfico puede también generar la identidad de programa subordinado criptográfico, como una combinación del hash binario, la clave pública de programa subordinado criptográfico y la IdThe crypto backend fabric 460 may also generate the crypto back-end identity, as a combination of the binary hash, the crypto back-end public key, and the crypto backend Id.

de vinculación. El tejido 460 de programa subordinado criptográfico puede entonces generar un compendio de hashof linkage. The cryptographic backend fabric 460 can then generate a hash digest

de la identidad de programa subordinado criptográfico, y hacer que el compendio de hash de la identidad de programa subordinado criptográfico sea proporcionado/comunicado al libro mayor de la cadena de bloques en la redof the crypto feeder identity, and cause the hash digest of the crypto feeder identity to be provided/communicated to the ledger of the blockchain in the network

450 de la cadena de bloques, donde el compendio de hash puede grabarse en el libro mayor de la cadena de bloques que representa la versión de la lógica que controla el contrato inteligente.450 of the blockchain, where the hash digest can be written to the blockchain ledger that represents the version of the logic that controls the smart contract.

Se puede realizar una comprobación periódicamente para asegurarse de que la versión de la identidad de programa subordinado criptográfico es correcta, que la firma es correcta y similares. En algunos ejemplos, se procede a asegurarse de que el programa subordinado criptográfico no se cambie a menos que todas las partes estén de acuerdo con el cambio. En algunos ejemplos, si todas las partes aceptan un cambio en un contrato inteligente, la identidad de programa subordinado criptográfico cambia en consecuencia a una versión actualizada. En algunos ejemplos, la versión del programa subordinado criptográfico se puede comprobar para asegurarse de que el caso del programa subordinado criptográfico no se haya modificado de una manera que no haya sido acordada por todas lasA check may be performed periodically to make sure that the version of the cryptographic backend identity is correct, that the signature is correct, and the like. In some examples, it proceeds to ensure that the cryptographic backend is not changed unless all parties agree to the change. In some examples, if all parties agree to a change to a smart contract, the crypto feeder identity changes accordingly to an updated version. In some examples, the version of the cryptographic helper can be checked to ensure that the case of the cryptographic helper has not been modified in a way that has not been agreed upon by all parties.

partes. En estos ejemplos, si el caso de programa subordinado criptográfico se cambia sin que todas las partes acuerden el cambio, el caso de programa subordinado criptográfico ya no funcionará.parts. In these examples, if the cryptographic backend instance is changed without all parties agreeing to the change, the cryptographic backend instance will no longer function.

En algunos ejemplos, un contrato inteligente de programa subordinado criptográfico incluye un programa subordinado criptográfico de contrato, la vinculación de programa subordinado criptográfico del programa subordinado criptográfico de contrato, y un caso de contrato inteligente almacenado en un libro mayor, donde el caso del libro mayor de contrato inteligente también se indica en la vinculación de programa subordinado criptográfico del programa subordinado criptográfico de contrato. El caso del libro mayor de contrato inteligente seIn some examples, a crypto backbone smart contract includes a contract crypto back-end, the crypto back-bin binding of the contract crypto back-end, and a smart contract instance stored in a ledger, where the ledger instance smart contract backend is also indicated in the contract crypto backend binding of the contract crypto backend. The case of the smart contract ledger is

puede almacenar en una cadena de bloques, tal como la red 450 de cadena de bloques, o, en lugar de almacenarsecan be stored on a blockchain, such as the 450 blockchain network, or, instead of being stored

en una cadena de bloques, se puede almacenar en otro almacén de datos. En algunos ejemplos, el caso del li mayor de contrato inteligente tiene una dirección pública única identificada tal como "0x9f37b1e1d82ebc0a163cd45f9fa5b384ea7313e8". El caso del libro mayor de contrato inteligente puede incluir el estado del contrato, así como otra información relevante sobre el contrato, así como las firmas digitales de las identidades de las contrapartes del contrato. El caso del libro mayor de contrato inteligente puede incluir diversa información sobre la vigencia del contrato, incluyendo información tal como los pagos realizados, e información tal como si el contrato está activo, completo, en espera de las firmas de las contrapartes, o rescindido.in a blockchain, it can be stored in another data store. In some examples, the case of the smart contract major li has a uniquely identified public address such as "0x9f37b1e1d82ebc0a163cd45f9fa5b384ea7313e8". The smart contract ledger case may include the contract status as well as other relevant information about the contract, as well as the digital signatures of the identities of the contract counterparties. The smart contract ledger case can include various information about the life of the contract, including information such as payments made, and information such as whether the contract is active, complete, awaiting counterparty signatures, or terminated.

En algunos ejemplos, un caso de libro mayor de contratos inteligentes se genera en parte a partir de un esquema.In some examples, a smart contract ledger case is generated in part from a schema.

En algunos ejemplos, un esquema es una plantilla de libro mayor de contrato inteligente, que se utiliza para generar un caso de libro mayor de contrato inteligente junto con información básica sobre el contrato que debe completarseIn some examples, a schema is a smart contract ledger template, which is used to generate a smart contract ledger case along with basic information about the contract that needs to be completed.

con el fin de generar el caso de libro mayor de contrato inteligente a partir de la plantilla, lo que puede incluir, por ejemplo, las propiedades semilla iniciales para el contrato inteligente. Por ejemplo, para un ejemplo de contrato inteligente que es un acuerdo de préstamo, las propiedades semilla iniciales pueden incluir, por ejemplo, quién es el prestamista, cuánto dinero se va a prestar, y/o similares. Los términos subsiguientes del contrato pueden determinarse a través de la negociación del contrato posterior, como se analiza con mayor detalle a continuación. En algunos ejemplos, aunque el caso del libro mayor de contrato inteligente incluya el estado del contrato inteligente, más las firmas digitales y otros datos relevantes relacionados con el contrato inteligente, no implicará el contrato inteligente completo al no incluir la lógica del contrato inteligente. La lógica del contrato inteligente puede ser realizada por un programa subordinado criptográfico de contrato para el cual la vinculación de programa subordinado criptográfico del programa subordinado criptográfico de contrato incluye una vinculación que es un mapeo de la dirección única del caso correspondiente del libro mayor de contrato inteligente. En algunos ejemplos, la vinculación de programa subordinado criptográfico incluye también el mapeo de un conjunto de contrapartes del contrato representadas como claves públicas que pueden estar ligadas a otros sistemas de identidad. Estas contrapartes pueden representar a dos o más personas, empresas, dispositivos IoT, otros contratos inteligentes, y/o similares. La vinculación de programa subordinado criptográfico también puede incluir fuentes externas. Por ejemplo, las fuentes externas pueden incluir uno o más programas subordinados criptográficos de utilidad que brinden datos externos que un contrato necesita para su lógica, tal como un tipo de interés o un precio de mercado, para calcular un pago o una tarifa. Se puede usar un programa subordinado criptográfico de utilidad para presentar, por ejemplo, datos de mercado particulares, y para certificar el valor de los datos de mercado presentados. La vinculación de programa subordinado criptográfico puede incluir datos, procedentes de fuentes externas, que se van a recibir, así como, por ejemplo, la frecuencia con la que se va a recibir la información externa.in order to generate the smart contract ledger case from the template, which may include, for example, the initial seed properties for the smart contract. For example, for an example smart contract that is a loan agreement, the initial seed properties may include, for example, who is the lender, how much money is to be loaned, and/or the like. Subsequent terms of the contract may determined through subsequent contract negotiation, as discussed in more detail below. In some examples, even though the smart contract ledger case includes the state of the smart contract, plus digital signatures and other relevant data related to the smart contract, it will not imply the entire smart contract by not including the smart contract logic. The smart contract logic may be carried out by a contract crypto feeder for which the contract crypto feeder binding of the contract crypto feeder includes a binding that is a unique address mapping of the corresponding smart contract ledger instance . In some examples, cryptographic backend binding also includes mapping a set of contract counterparts represented as public keys that may be bound to other identity systems. These counterparties may represent two or more people, companies, IoT devices, other smart contracts, and/or the like. The cryptographic backend binding may also include external sources. For example, external sources may include one or more cryptographic utility plugins that provide external data that a contract needs for its logic, such as an interest rate or market price, to calculate a payment or fee. A utility cryptographic plugin can be used to present, for example, particular market data, and to certify the value of the presented market data. The cryptographic backend binding may include data, from external sources, that is to be received, as well as, for example, the frequency with which the external information is to be received.

Un tejido 460 de programa subordinado criptográfico, con unos programas subordinados criptográficos de contrato instalados, puede recibir un mensaje, por ejemplo, desde el dispositivo 416 y/o 417 de contraparte, para realizar un nuevo contrato inteligente.A cryptographic backend fabric 460, with a contract cryptographic backend installed, may receive a message, for example, from the counterpart device 416 and/or 417, to perform a new smart contract.

En algunos ejemplos, el programa subordinado criptográfico de contrato puede requerir un enclave. Si es así, puede ocurrir lo siguiente en algunos ejemplos. El tejido 460 de programa subordinado criptográfico identifica un enclave que se va a usar para ejecutar el programa subordinado criptográfico de contrato. El tejido 460 de programa subordinado criptográfico envía un contenedor de programa subordinado criptográfico al enclave que se va a ejecutar en el enclave, y el contenedor de programa subordinado criptográfico puede extraer el par de claves de programa subordinado criptográfico para el programa subordinado criptográfico. Esto se puede lograr mediante un canal seguro entre depósito 465 de claves y el contenedor de programa subordinado criptográfico que se ejecuta en el enclave. El tejido 460 de programa subordinado criptográfico también puede enviar el binario de programa subordinado criptográfico para el programa subordinado criptográfico de contrato al enclave, y el programa subordinado criptográfico de contrato puede comenzar a ejecutarse en el enclave.In some examples, the contracting cryptographic backend may require an enclave. If so, the following may occur in some examples. The cryptographic backend fabric 460 identifies an enclave to be used to execute the contract cryptographic backend. The crypto backend fabric 460 sends a crypto back-end container to the enclave to be executed in the enclave, and the crypto back-end container can extract the crypto back-end key pair for the crypto back-end. This can be accomplished by a secure channel between key repository 465 and the cryptographic backend container running on the enclave. The crypto backend fabric 460 may also send the crypto back-end binary for the contract crypto back-end to the enclave, and the contract crypto back-end can start executing on the enclave.

En otros ejemplos, el programa subordinado criptográfico de contrato no necesita un enclave, o puede necesitar un enclave en un momento posterior, pero no para la ejecución inicial del programa subordinado criptográfico de contrato. Por ejemplo, es posible que el programa subordinado criptográfico de contrato deba ejecutarse en un enclave durante ciertas porciones de tiempo y no otras, las porciones de tiempo durante las cuales el programa subordinado criptográfico necesita ejecutarse en un enclave pueden no incluir la ejecución inicial del programa subordinado criptográfico de contrato, por ejemplo. En este caso, el tejido 460 de programa subordinado criptográfico hace que el programa subordinado criptográfico de contrato comience a ejecutarse. De cualquier manera, en este punto, en algunos ejemplos, el programa subordinado criptográfico de contrato comienza a ejecutarse, ya se haga o no en un enclave.In other examples, the contract crypto backend does not need an enclave, or it may need an enclave at a later time, but not for initial execution of the contract crypto back-end. For example, it is possible that the contract cryptographic backend needs to run in an enclave during certain time slices and not others, the time slices during which the cryptographic backend needs to run in an enclave may not include the initial execution of the program contract cryptographic backbone, for example. In this case, the cryptographic backend fabric 460 causes the contract cryptographic backend to start executing. At any rate, at this point, in some instances, the contract cryptographic backend begins to run, whether or not it is done in an enclave.

Después de que el programa subordinado criptográfico de contrato comience a ejecutarse, el programa subordinado criptográfico de contrato puede realizar una solicitud de información, tal como una solicitud de las propiedades semilla iniciales del contrato. El tejido 460 de programa subordinado criptográfico puede recibir la solicitud y puede enviar una solicitud a las contrapartes (por ejemplo, mediante del dispositivo 416 y/o 417de contrapartida) de la información solicitada por el programa subordinado criptográfico de contrato. Luego, el tejido 460 de programa subordinado criptográfico puede recibir la respuesta a la solicitud. Luego, el tejido 460 de programa subordinado criptográfico puede extraer un esquema asociado con el contrato solicitado. En algunos ejemplos, el tejido 460 de programa subordinado criptográfico puede tener ya una copia almacenada del esquema en el tejido 460 de programa subordinado criptográfico; en otros ejemplos, el tejido 460 de programa subordinado criptográfico solicita y recibe unaAfter the contract crypto feeder begins to execute, the contract crypto feeder may make a request for information, such as a request for the initial seed properties of the contract. The cryptographic backend fabric 460 may receive the request and may send a request to the counterparties (eg, via the counterparty 416 and/or 417) for the information requested by the contract cryptographic backend. Then, the cryptographic backend fabric 460 can receive the response to the request. The cryptographic backend fabric 460 can then extract a schema associated with the requested contract. In some examples, the cryptographic backend fabric 460 may already have a stored copy of the schema in the cryptographic backend fabric 460; in other examples, the cryptographic backend fabric 460 requests and receives a

En base a la información recibida de la respuesta a la solicitud y al esquema, el tejido 460 de programa subordinado criptográfico puede crear un contrato inteligente y luego hacer que se haga uso un caso de contrato inteligente en un libro mayor. En algunos ejemplos, el libro mayor es un libro mayor de la red 450 de cadena de bloques. En otros ejemplos, el libro mayor es un libro mayor de un almacén de datos que no forma parte de una cadena de bloques. Después de que se haga uso el libro mayor de contratos inteligentes, el tejido 460 de programa subordinado criptográfico puede recibir la dirección única del libro mayor de contratos inteligentes, donde la dirección actúa como la identificación única del caso del libro mayor de contrato inteligente.Based on the information received from the request response and the schema, the cryptographic backbone fabric 460 may create a smart contract and then cause a smart contract instance to be used in a ledger. In some examples, the ledger is a blockchain network 450 ledger. In other examples, the ledger is a data warehouse ledger that is not part of a blockchain. After the smart contract ledger is used, the cryptographic backend fabric 460 may receive the unique address of the smart contract ledger, where the address acts as the unique ID of the smart contract ledger instance.

El tejido 460 de programa subordinado criptográfico puede también generar la vinculación de programa subordinado criptográfico, que incluye vinculaciones para el programa subordinado criptográfico de contrato. En algunos ejemplos, cada una de estas vinculaciones es un mapeo entre el programa subordinado criptográfico de contrato y otro programa subordinado criptográfico, un contrato inteligente o una identificación de una contraparte del contrato inteligente. Las vinculaciones se pueden usar para enrutar mensajes entre el programa subordinado criptográfico y el otro programa subordinado criptográfico o contrato inteligente, para el que la vinculación mapee el programa subordinado criptográfico. La vinculación del programa subordinado criptográfico puede representar las propiedades y/o reglas del programa subordinado criptográfico. Por ejemplo, en un ejemplo de un programa subordinado criptográfico que es un intercambio de tipos de interés, la vinculación del programa subordinado criptográfico puede incluir las identidades (clave pública) de las contrapartes del intercambio de tipos de interés, donde el programa subordinado criptográfico obtiene la tarificación de los tipos de interés y con qué frecuencia el programa subordinado criptográfico obtiene la tarificación de los tipos de interés.The crypto backend fabric 460 may also generate the crypto back-end binding, which includes bindings for the contract crypto back-end. In some Examples, each of these bindings is a mapping between the contract cryptographic backend and another cryptographic backend, a smart contract, or an identification of a smart contract counterparty. Bindings can be used to route messages between the crypto backend and the other crypto back-end or smart contract, to which the binding maps to the crypto back-end. The cryptographic backend binding may represent the properties and/or rules of the cryptographic backend. For example, in an example of a crypto feeder being an interest rate exchange, the binding of the crypto feed may include the identities (public key) of the interest rate exchange counterparties, where the crypto feed obtains the interest rate pricing and how often the cryptographic back-end gets the interest rate pricing.

La vinculación del programa subordinado criptográfico puede incluir una vinculación que sea un mapeo entre el programa subordinado criptográfico de contrato y la dirección única del caso de libro mayor de contrato inteligente, que sirve como identificación única del caso de libro mayor de contrato inteligente. La vinculación del programa subordinado criptográfico también puede incluir una vinculación para cada contraparte que se represente como una clave pública. La vinculación del programa subordinado criptográfico puede incluir un mapeo a fuentes externas de datos, tal como un mapeo a un programa subordinado criptográfico de utilidad que proporcione y certifique los datos de mercado que necesita la lógica del programa subordinado criptográfico de contrato inteligente.The cryptographic backbone binding may include a binding that is a mapping between the contract cryptographic backbone and the unique address of the smart contract ledger instance, which serves as the unique identification of the smart contract ledger instance. The cryptographic backbone program binding may also include a binding for each counterparty that is represented as a public key. The binding of the crypto backend may include a mapping to external data sources, such as a mapping to a utility crypto backend that provides and certifies market data needed by the smart contract crypto backend logic.

El tejido 460 de programa subordinado criptográfico puede entonces comunicar la vinculación del programa subordinado criptográfico al programa subordinado criptográfico de contrato.The crypto backend fabric 460 may then communicate the binding of the crypto back-end to the contract crypto back-end.

El tejido 460 de programa subordinado criptográfico puede comunicarse con el caso del libro mayor de contrato inteligente para actualizar el caso del libro mayor de contrato inteligente cuando sea apropiado, tal como cuando hay un cambio de estado, o similar. El tejido 460 de programa subordinado criptográfico puede también enunciar casos de recursos para el programa subordinado criptográfico de contrato y enrutar mensajes a través del sistema. El programa subordinado criptográfico de contrato puede controlar el proceso de negociación del contrato, y los términos se actualizan a medida que se acuerdan durante la negociación. La comunicación para la negociación puede producirse, por ejemplo, entre el contrato criptográfico y uno o más dispositivos de la contraparte (por ejemplo, 416 y/o 417) mediante el tejido 460 de programa subordinado criptográfico. En algunos ejemplos, el contrato inteligente finaliza una vez que todas las partes firman digitalmente el contrato inteligente. En algunos ejemplos, se completa la vinculación del contrato una vez que todas las partes han firmado digitalmente el contrato inteligente, y el programa subordinado criptográfico de contrato comienza a ejecutar la lógica del contrato real. The cryptographic backend fabric 460 may communicate with the smart contract ledger instance to update the smart contract ledger instance when appropriate, such as when there is a change of state, or the like. The crypto backend fabric 460 may also state resource instances to the contract crypto back-end and route messages through the system. The contract cryptographic backend can control the contract negotiation process, and the terms are updated as they are agreed upon during negotiation. Communication for trading may occur, for example, between the crypto contract and one or more counterpart devices (eg, 416 and/or 417) via the crypto backend fabric 460. In some examples, the smart contract ends once all parties digitally sign the smart contract. In some examples, contract binding is complete once all parties have digitally signed the smart contract, and the contract cryptographic backend begins executing the actual contract logic.

En algunos ejemplos, después de que se haya completado el contrato inteligente, el caso del programa subordinado criptográfico de contrato ya no existe, pero el caso del libro mayor del contrato inteligente aún existe, y es posible que una parte autorizada revise el libro mayor para obtener información histórica sobre el contrato. En algunos ejemplos, el programa subordinado criptográfico de contrato no almacena su estado de manera persistente ni ningún otro aspecto del contrato; más bien, el programa subordinado criptográfico de contrato usa el caso del libro mayor del contrato inteligente para almacenar el estado del programa subordinado criptográfico de contrato y otros datos del contrato inteligente.In some examples, after the smart contract has been completed, the contract cryptographic backbone instance no longer exists, but the smart contract ledger instance still exists, and the ledger may be reviewed by an authorized party for Obtain historical information about the contract. In some examples, the contract cryptographic backend does not persistently store its state or any other aspect of the contract; rather, the contract crypto backend uses the ledger instance of the smart contract to store the state of the contract crypto back-end and other smart contract data.

Como ejemplo no limitante, una visión general de un proceso que emplea el uso de un contrato inteligente de programa subordinado criptográfico puede incluir:As a non-limiting example, an overview of a process employing the use of a cryptographic backend smart contract may include:

1. Una solicitud para un nuevo contrato que se realiza al tejido de programa subordinado criptográfico, que en algunos casos se realiza a un programa subordinado criptográfico de contrato que se está ejecutando en espera o recién enunciado en caso por el tejido para manejar la solicitud para comenzar el proceso de creación de contrato.1. A request for a new contract that is made to the crypto backbone fabric, which in some cases is made to a contract crypto backend that is running on standby or newly announced in case by the fabric to handle the request for Begin the contract creation process.

2. El programa subordinado criptográfico de contrato toma la nueva solicitud de contrato, que incluye la información semilla inicial requerida para iniciar el contrato, que puede ser tanta o tan poca información como sea necesaria para ese contrato, tal como, por ejemplo, nombre del contrato, descripción, primera contraparte (por ejemplo, el prestamista), etc.) [s/c.] El programa subordinado criptográfico de contrato puede validar esta solicitud y generar un mensaje de constructor de contrato que se envíe al tejido de programa subordinado criptográfico. Este mensaje puede estar firmado con al menos el programa subordinado criptográfico y sus firmas de enclave. Este mensaje también podrá firmarse con la firma de la primera contraparte. Este mensaje puede también incluir la/s dirección/es pública/s en el mensaje para el programa subordinado criptográfico de contrato y/o cualquiera/cualesquiera contraparte/s en el mensaje de constructor.2. The contract cryptographic backend takes the new contract request, which includes the initial seed information required to start the contract, which can be as much or as little information as is needed for that contract, such as, for example, name of the contract. contract, description, first counterparty (for example, the lender), etc.) [s/c.] The contract crypto-backdropper may validate this request and generate a contract constructor message that is sent to the crypto-backdrop fabric . This message may be signed with at least the cryptographic backend and its enclave signatures. This message may also be signed with the signature of the first counterparty. This message may also include the public address(es) in the message to the contract cryptographic backend and/or any/any counterparty(s) in the constructor message.

3. El tejido de programa subordinado criptográfico puede validar esta solicitud, determinar el tipo de cadena de bloques de destino, formatear una transacción específica de cadena de bloques y enrutar este mensaje a la cadena de bloques adecuada. En este ejemplo, la transacción fluye desde el tejido de programa subordinado criptográfico, quizás ejecutándose en una nube pública o privada, hasta un nodo de cadena de bloques que puede ejecutarse en cualquier lugar. 3. The cryptographic backend fabric can validate this request, determine the destination blockchain type, format a specific blockchain transaction, and route this message to the appropriate blockchain. In this example, the transaction flows from the cryptographic backbone fabric, perhaps running in a public or private cloud, to a blockchain node that can run anywhere.

4. El nodo de la cadena de bloques puede validar este mensaje, que en algunos casos puede ser validado primero por el criptodelegado que valida las capas externas de la cebolla de firmas, por ejemplo, para asegurarse de que este mensaje de transacción se origine en la/s fuente/s válida/s y segura/s, mediante las firmas de programa subordinado criptográfico y el enclave. Luego, el mensaje puede enviarse al nodo de la cadena de bloques para su ejecución. En algunos casos, no hay disponible un criptodelegado, y se verifica sólo la firma específica de la cadena de bloques antes de enviar el mensaje al nodo para su ejecución.4. The blockchain node may validate this message, which in some cases may first be validated by the crypto-delegate that validates the outer layers of the signature onion, for example, to ensure that this transaction message originates from the valid and secure source(s), using the cryptographic backend signatures and the enclave. The message can then be sent to the blockchain node for execution. In some cases, a crypto-delegate is not available, and only the blockchain-specific signature is verified before the message is sent to the node for execution.

5. El nodo de la cadena de bloques, al recibir esta solicitud de un nuevo contrato mediante un mensaje de constructor, puede ejecutar el código que crea el caso de contrato inteligente utilizando el esquema definido en el constructor e incrustadas la/s dirección/direcciones pública/s del contrato que posee el programa subordinado criptográfico y cualquier/cualesquiera contraparte/s en los lugares apropiados dentro del esquema, por ejemplo, para garantizar que sólo el programa subordinado criptográfico de contrato pueda actualizar este caso del contrato, y establece cualquier/cualesquiera contraparte/s en sus roles dentro de este contrato. Este contrato inteligente recibe un identificador único, normalmente una clave pública, que sirve como una dirección a la que se pueden enviar futuros mensajes de interacción en esa cadena de bloques. Esta dirección puede ser devuelta desde el mensaje de constructor y pasada de vuelta al tejido de programa subordinado criptográfico desde el nodo.5. The blockchain node, upon receiving this request for a new contract via a constructor message, can execute the code that creates the smart contract instance using the schema defined in the constructor and embedded address(es) public contract(s) held by the crypto backbone and any/any counterparty(s) in the appropriate places within the schema, for example, to ensure that only the contract crypto backplane can update this contract instance, and sets any/ any counterparty(s) in their roles under this contract. This smart contract is given a unique identifier, typically a public key, which serves as an address to which future interaction messages on that blockchain can be sent. This address may be returned from the constructor message and passed back to the cryptographic backend fabric from the node.

6. El tejido de programa subordinado criptográfico puede recibir esta dirección y crear una vinculación de programa subordinado criptográfico de contrato base. En algunos ejemplos, la vinculación incluye referencias al programa subordinado criptográfico de contrato, la dirección del caso del contrato inteligente y cualquier/cualesquiera contraparte/s proporcionada/s en el mensaje de constructor.6. The Cryptographic Backend Fabric can receive this address and create a Base Contract Cryptographic Backend Binding. In some examples, the binding includes references to the contract cryptographic backend, the smart contract instance address, and any counterparty(s) provided in the constructor message.

7. El tejido de programa subordinado criptográfico puede luego proporcionar esta vinculación al programa subordinado criptográfico de contrato para que se active con un nuevo identificador compuesto, por ejemplo, su hash binario, la dirección pública y el identificador de vinculación. Este programa subordinado criptográfico de contrato ahora puede estar obligado a dar servicio solo a la vinculación con la que está asociado, y sólo se le permitirá trabajar con información secreta, claves privadas, para aquellas entidades enumeradas en su vinculación.7. The crypto backend fabric can then provide this binding to the contracting crypto back-end to activate with a new composite identifier, eg, its binary hash, public address and binding identifier. This contract cryptographic backbone may now be required to service only the binding it is associated with, and will only be allowed to work with secret information, private keys, for those entities listed in its binding.

8. En algunos casos, esta ID de vinculación se pasa luego de vuelta al remitente de la solicitud de contrato nueva original, por ejemplo, una aplicación de usuario o quizás otro sistema. Los mensajes adicionales enviados al tejido de programa subordinado criptográfico que hacen referencia a esta ID de vinculación deben enrutarse al programa subordinado criptográfico de contrato vinculado con esa ID. En algunos casos, estos mensajes adicionales incluyen detalles adicionales del contrato que se están añadiendo o se van a añadir, tales como el plazo del préstamo, el monto prestado y el acuerdo de contraparte (por ejemplo, a los términos del contrato). Cada uno de estos mensajes puede ser manejado por el programa subordinado criptográfico de contrato, validado, firmado y suministrado como estado a la dirección del contrato inteligente subyacente.8. In some cases, this binding ID is then passed back to the sender of the original new contract request, eg a user application or perhaps another system. Additional messages sent to the Cryptographic Backend Fabric that reference this Bind ID should be routed to the Contract Cryptographic Backend bound with that ID. In some cases, these additional messages include additional contract details that are being or will be added, such as the loan term, the amount borrowed, and the counterparty agreement (for example, to the contract terms). Each of these messages can be handled by the contract cryptographic backend, validated, signed, and supplied as status to the address of the underlying smart contract.

9. En algunos casos, se requieren datos externos para que un contrato funcione, como, por ejemplo, un tipo de interés variable que puede cambiar de un mes a otro. En estos casos, un tejido de programa subordinado criptográfico puede añadir un programa subordinado criptográfico de utilidad a la vinculación del contrato. En algunos ejemplos, esta parte de la vinculación del proveedor de datos externo incluye la identificación del programa subordinado criptográfico de utilidad que proporciona estos datos, los requisitos para recibir estos datos externos como un evento: en base al tiempo, umbral o ad hoc/a pedido del programa subordinado criptográfico de contrato. En algunos casos, estas reglas de actualización de datos externos se graban en el contrato y son acordadas por todas las contrapartes como datos relacionados con la fuente y las circunstancias para que se acepten las actualizaciones. Por ejemplo, una regla puede definir que las tasas de interés se determinen el 5° día de cada mes a las 16:00 h usando la tasa de tesorería a 5 años 10 puntos base a partir de una fuente con el nombre “fuente de tasa de interés” y con una clave pública determinada. Una vez acordada, esta fuente de datos externa se puede añadir a la vinculación del programa subordinado criptográfico del programa subordinado criptográfico de contrato, y se puede crear una vinculación para el programa subordinado criptográfico de utilidad y enviarla al programa subordinado criptográfico de utilidad. El programa subordinado criptográfico de utilidad puede usar sus reglas de vinculación para desencadenar actualizaciones de datos que se enviarán al programa subordinado criptográfico de contrato. Cualesquiera actualizaciones de datos pueden ser firmadas por el programa subordinado criptográfico de utilidad y su enclave de anfitrión, por ejemplo, para validación. Las actualizaciones de datos externos proporcionadas por los programas subordinados criptográficos de utilidad a los programas subordinados criptográficos de contrato pueden persistir en la dirección del contrato inteligente con las firmas de los programas subordinados criptográficos de utilidad junto con los resultados de los cálculos de los programas subordinados criptográficos de contrato con firmas, para, por ejemplo, proporcionar pruebas y certificaciones de validez de los datos.9. In some cases, external data is required for a contract to work, such as a variable interest rate that can change from month to month. In these cases, a cryptographic backend fabric may add a utility cryptographic backend to the contract binding. In some examples, this part of the external data provider binding includes the identification of the cryptographic utility backend providing this data, the requirements to receive this external data as an event: time-based, threshold-based, or ad hoc/a order of the contract cryptographic backbone. In some cases, these external data update rules are written into the contract and agreed upon by all counterparties as data related to the source and circumstances for updates to be accepted. For example, a rule might define interest rates to be determined on the 5th day of each month at 4:00 p.m. using the 5-year treasury rate 10 basis points from a source named “rate source”. of interest" and with a given public key. Once agreed, this external data source can be added to the cryptographic backend binding of the contract cryptographic backend, and a binding for the cryptographic utility backend can be created and sent to the cryptographic utility backend. The utility cryptographic backend can use its binding rules to trigger data updates to be sent to the contract cryptographic backend. Any data updates may be signed by the cryptographic utility backend and its host enclave, eg, for validation. External data updates provided by the cryptographic utility backends to the contract cryptographic backends can be persisted in the smart contract address with the signatures of the cryptographic utility backends along with the results of the cryptographic backend computations of contract with signatures, to, for example, provide proofs and certifications of validity of the data.

10. Una vez que una vinculación de programa subordinado criptográfico tiene una dirección de libro mayor de contrato inteligente, las firmas de la contraparte y la/s fuente/s de datos externa/s opcional/es definidas por ella se vuelven completamente operativas, y pueden normalmente ejecutarse de manera independiente durante todo el plazo del contrato, interactuando, por ejemplo, mediante mensajes relevantes para su vinculación. Tales mensajes pueden estar asociados a pagos, recibos, notificaciones, etc. 10. Once a crypto feeder binding has a smart contract ledger address, the counterparty's signatures and optional external data source(s) defined by it become fully operational, and they can normally be executed independently during the entire contract term, interacting, for example, through messages relevant to their binding. Such messages may be associated with payments, receipts, notifications, etc.

La figura 5 es un diagrama de bloques que ilustra un ejemplo de sistema 500, que puede emplearse como un subconjunto del sistema 400 de la figura 4. El sistema 500 puede incluir el contenedor 535 de programa subordinado criptográfico, el servicio 561 de contenedor de programa subordinado criptográfico, el servicio 562 de motor de prueba, el depósito 565 de claves, el delegado 571 de prueba, y los grupos 579 de recursos criptográficos. El servicio 561 de contenedor de programa subordinado criptográfico y el servicio 562 de motor de prueba pueden ser cada uno una parte de un tejido de programa subordinado criptográfico, tal como el tejido 460 de programa subordinado criptográfico de la figura 4. El contenedor 535 de programa subordinado criptográfico puede incluir el programa subordinado criptográfico 531.Figure 5 is a block diagram illustrating an example of system 500, which may be used as a subset of system 400 of Figure 4. System 500 may include cryptographic backend program container 535, program container service 561 cryptographic subordinate, test engine service 562, key repository 565, test delegate 571, and cryptographic resource groups 579. The cryptographic backend container service 561 and the test engine service 562 may each be a part of a cryptographic backend fabric, such as the cryptographic backend fabric 460 of Figure 4. The program container 535 cryptographic backend may include cryptographic backend program 531.

La agrupación de recursos criptográficos en grupos 579 de recursos criptográficos puede permitir que los recursos criptográficos se provean bajo demanda, por ejemplo, en tiempo de ejecución, en base a las necesidades informáticas seguras de las aplicaciones en ejecución. Los programas subordinados criptográficos pueden tener requisitos para funciones criptográficas matemáticamente intensas realizadas en hardware configurado para realizar las funciones criptográficas matemáticamente intensas, y los grupos de recursos criptográficos pueden actuar como medio para asignar el hardware configurado para realizar las funciones criptográficas matemáticamente intensas. Los grupos 579 de recursos criptográficos pueden incluir, por ejemplo, un grupo de enclaves, un grupo de FPGA configurado para realizar una función acelerada de prueba de conocimiento cero, uno o más grupos de recursos criptográficos compuestos, y/o similares. Cada uno de los conjuntos de recursos criptográficos compuestos puede incluir un tipo de recurso criptográfico que incluya uno o más recursos criptográficos combinados configurados para realizar una función criptográfica. Por ejemplo, un grupo de recursos criptográficos compuestos de ejemplo es un grupo de recursos criptográficos donde cada recurso criptográfico del grupo incluye una tarjeta gráfica, una o más FPGA y un enclave, combinados en un haz para realizar juntos una función criptográfica particular.Grouping cryptographic resources into cryptographic resource groups 579 may allow cryptographic resources to be provisioned on demand, eg, at runtime, based on the secure computing needs of running applications. Cryptographic backbones may have requirements for mathematically strong cryptographic functions performed on hardware configured to perform the mathematically strong cryptographic functions, and cryptographic resource pools may act as a means to allocate hardware configured to perform the mathematically strong cryptographic functions. Cryptographic resource groups 579 may include, for example, a group of enclaves, a group of FPGAs configured to perform an accelerated zero-knowledge proof function, one or more composite cryptographic resource groups, and/or the like. Each of the composite cryptographic resource sets may include a cryptographic resource type that includes one or more combined cryptographic resources configured to perform a cryptographic function. For example, an exemplary composite cryptographic resource group is a cryptographic resource group where each cryptographic resource in the group includes a graphics card, one or more FPGAs, and an enclave, combined in a bundle to together perform a particular cryptographic function.

El servicio 561 de contenedor de programa subordinado criptográfico puede crear el contenedor 535 de programa subordinado criptográfico. El contenedor 535 de programa subordinado criptográfico puede leer metadatos del programa subordinado criptográfico 531, puede determinar los tipos, la calidad y la cantidad de cada recurso criptográfico requerido por el programa subordinado criptográfico 531, y puede enviar una solicitud de los recursos criptográficos determinados. al servicio 562 de motor de prueba. Por ejemplo, un programa subordinado criptográfico en particular puede requerir un enclave para firmas digitales, y una FPGA para una prueba acelerada de conocimiento cero.The cryptographic backend container service 561 may create the cryptographic backend container 535 . The cryptographic helper container 535 can read metadata from the cryptographic helper 531, can determine the types, quality, and quantity of each cryptographic resource required by the cryptographic helper 531, and can send a request for the determined cryptographic resources. to test engine service 562. For example, a particular cryptographic backend program may require an enclave for digital signatures, and an FPGA for accelerated zero-knowledge proof.

El servicio 562 de motor de prueba puede extraer luego los recursos criptográficos solicitados de los grupos 579 de recursos criptográficos. El servicio 562 de motor de prueba puede luego inyectar código de generación de prueba, si existe, en los recursos criptográficos extraídos, lo que hace que los recursos criptográficos extraídos se conviertan en delegados de prueba, tales como el delegado 571 de prueba. A modo de ejemplo, es posible que se necesite un enclave para realizar una firma de curva elíptica. En algunos de estos ejemplos, el código para realizar una firma de código elíptica se inyecta en el enclave mediante el servicio 562 de motor de prueba. En algunos ejemplos, la combinación del recurso criptográfico extraído y el código de generación de prueba es un delegado de prueba. En algunos ejemplos, el fin del delegado de prueba es realizar una función criptográfica particular junto con cualquier prueba necesaria. El servicio 562 de motor de prueba puede acceder a una biblioteca que incluye diversos tipos de código de generación de prueba, extraer el código de generación de prueba necesario, e inyectar luego el código de generación de prueba necesario en el recurso criptográfico.The test engine service 562 can then extract the requested cryptographic resources from the cryptographic resource pools 579 . The test engine service 562 may then inject test generation code, if any, into the mined crypto resources, causing the mined crypto resources to become test delegates, such as test delegate 571 . As an example, an enclave may be required to perform an elliptic curve signature. In some of these examples, the code to perform an elliptical code signing is injected into the enclave by the test engine service 562. In some examples, the combination of the mined cryptographic resource and the test generation code is a test delegate. In some examples, the purpose of the test delegate is to perform a particular cryptographic function along with any necessary tests. The test engine service 562 may access a library that includes various types of test generation code, extract the necessary test generation code, and then inject the necessary test generation code into the cryptographic resource.

Si se requiere información secreta, tal como claves, el servicio 562 de motor de prueba puede hacer que se inicie un túnel seguro entre el programa subordinado criptográfico 531 y un HSM, tal como el depósito 565 de claves, para que el programa subordinado criptográfico 531 pueda recibir la información secreta mediante el túnel seguro. Por ejemplo, un delegado de firma puede necesitar que las claves privadas almacenadas en el depósito de claves se inyecten en el delegado de firma. En algunos ejemplos, para al menos un primer recurso criptográfico de los recursos criptográficos extraídos, el servicio 562 de motor de prueba determina qué información secreta se requiere para el primer recurso criptográfico en base al tipo de recurso criptográfico extraído, e inicia un túnel seguro entre un HSM (por ejemplo, el depósito 567 de claves) y el primer recurso criptográfico para inyectar de la información secreta en el primer recurso criptográfico. En algunos ejemplos, para al menos un segundo recurso criptográfico de los recursos criptográficos extraídos, el servicio 562 de motor de prueba determina qué información secreta se requiere para el segundo recurso criptográfico, en donde la información secreta extraída para el segundo recurso criptográfico es diferente de la información secreta extraída para el primer recurso criptográfico en base al segundo recurso criptográfico, que es un tipo de recurso criptográfico diferente al primer recurso criptográfico.If secret information, such as keys, is required, the test engine service 562 may cause a secure tunnel to be started between the cryptographic backend 531 and an HSM, such as the key repository 565, so that the cryptographic backend 531 can receive the secret information through the secure tunnel. For example, a signing delegate may require that the private keys stored in the keystore be injected into the signing delegate. In some examples, for at least a first cryptographic resource of the extracted cryptographic resources, the test engine service 562 determines what secret information is required for the first cryptographic resource based on the type of the extracted cryptographic resource, and initiates a secure tunnel between an HSM (eg, key repository 567) and the first cryptographic resource for injecting the secret information into the first cryptographic resource. In some examples, for at least one second of the extracted cryptographic resources, the test engine service 562 determines what secret information is required for the second cryptographic resource, wherein the extracted secret information for the second cryptographic resource is different from the extracted secret information for the first cryptographic resource based on the second cryptographic resource, which is a different type of cryptographic resource than the first cryptographic resource.

El servicio 562 de motor de prueba puede enviar luego, al contenedor 535 de programa subordinado criptográfico, los delegados de prueba solicitados, como, por ejemplo, el delegado 571 de prueba. El código de programa subordinado criptográfico puede entonces ejecutarse, y los delegados de prueba permitirán que se realicen las funciones criptográficas requeridas por el código de programa subordinado criptográfico del programa subordinado criptográfico 531, junto con cualquier prueba necesaria.The test engine service 562 may then send, to the cryptographic backbone container 535, the requested test delegates, such as test delegate 571. The cryptographic backend code can then be executed, and the test delegates will allow the cryptographic functions required by the cryptographic backend code of the cryptographic backend 531 to be performed, along with any necessary tests.

Procesos ilustrativosillustrative processes

Para mayor claridad, los procesos descritos en el presente documento se describen en términos de operaciones realizadas en secuencias particulares por dispositivos o componentes particulares de un sistema. Sin embargo, se observa que otros procesos no se limitan a las secuencias, dispositivos o componentes indicados. Por ejemplo, ciertos actos pueden realizarse en diferentes secuencias, en paralelo, omitirse o pueden complementarse con actos o características adicionales, ya sea que tales secuencias, paralelismos, actos o características se describan o no en el presente documento. Asimismo, cualquiera de las tecnologías descritas en esta divulgación puede incorporarse a los procesos descritos o a otros procesos, ya sea que esa tecnología se describa o no específicamente junto con un proceso. Los procesos divulgados también pueden ser realizados en o por otros dispositivos, componentes o sistemas, ya sea que tales dispositivos, componentes o sistemas se describan o no en el presente documento. Estos procesos se pueden también realizar de variadas maneras. Por ejemplo, pueden incorporarse en un artículo de fabricación, por ejemplo, como instrucciones legibles por procesador almacenadas en un medio de almacenamiento legible por procesador, o realizarse como un proceso implantado por ordenador. Como ejemplo alternativo, estos procesos pueden codificarse como instrucciones ejecutables por procesador y transmitirse mediante un medio de comunicación.For clarity, the processes described in this document are described in terms of operations performed in particular sequences by particular devices or components of a system. However, it is noted that other processes are not limited to the indicated sequences, devices or components. For example, certain acts may be performed in different sequences, in parallel, omitted, or may be supplemented by additional acts or features, whether or not such sequences, parallels, acts, or features are described herein. In addition, any of the technologies described in this disclosure may be incorporated into the described processes or into other processes, whether or not that technology is specifically described in conjunction with a process. The disclosed processes may also be performed on or by other devices, components, or systems, whether or not such devices, components, or systems are described herein. These processes can also be carried out in various ways. For example, they may be embodied in an article of manufacture, eg, as processor-readable instructions stored on a processor-readable storage medium, or performed as a computer-implemented process. As an alternate example, these processes may be encoded as processor-executable instructions and transmitted via a communication medium.

La figura 6 es un diagrama que ilustra un flujo de datos para un sistema (600) que puede emplearse como ejemplo del sistema 500 de la figura 5. En algunos ejemplos, el sistema 600 incluye el servicio 662 de motor de prueba, el servicio 661 de contenedor de programa subordinado criptográfico (CCS), el contenedor 635 de programa subordinado criptográfico y el HSM 665.Figure 6 is a diagram illustrating a data flow for a system 600 that can be used as an example of the system 500 of Figure 5. In some examples, system 600 includes test engine service 662, service 661 Cryptographic Backend Container (CCS), the Cryptographic Backend Container 635, and the HSM 665.

En el ejemplo ilustrado, en primer lugar, se da el paso 681. En el paso 681, en algunos ejemplos, el CCS 661 recibe una solicitud para generar un caso de programa subordinado criptográfico. Como se muestra, el paso 682 se da en algunos ejemplos a continuación. En el paso 682, en algunos ejemplos, el CCS 661 crea un contenedor 635 de programa subordinado criptográfico para el programa subordinado criptográfico solicitado. Como se muestra, el paso 683 se da en algunos ejemplos a continuación. En el paso 683, en algunos ejemplos, el CCS 651 proporciona, al contenedor 635 de programa subordinado criptográfico, la ID de programa subordinado criptográfico y la vinculación para el programa subordinado criptográfico solicitado. Como se muestra, el paso 684 se da en algunos ejemplos a continuación. En el paso 684, en algunos ejemplos, el contenedor 635 de programa subordinado criptográfico extrae, del almacenamiento seguro, el binario de programa subordinado criptográfico para el programa subordinado criptográfico solicitado.In the illustrated example, first, step 681 is taken. In step 681, in some examples, the CCS 661 receives a request to generate a cryptographic backend instance. As shown, step 682 is given in some examples below. In step 682, in some examples, the CCS 661 creates a cryptographic helper container 635 for the requested cryptographic helper. As shown, step 683 is given in some examples below. In step 683, in some examples, the CCS 651 provides, to the cryptographic backend container 635, the cryptographic backend ID and the binding for the requested cryptographic backend. As shown, step 684 is given in some examples below. In step 684, in some examples, the crypto-helper container 635 retrieves, from secure storage, the crypto-helper binary for the requested crypto-helper.

Como se muestra, el paso 685 se da en algunos ejemplos a continuación. En el paso 685, en algunos ejemplos, el contenedor 635 de programa subordinado criptográfico determina cuáles son los requisitos de los programas subordinados criptográficos en base a los metadatos en el código de los programas subordinados criptográficos. Como se muestra, el paso 686 se da en algunos ejemplos a continuación. En el paso 686, en algunos ejemplos, el contenedor 635 de programa subordinado criptográfico comunica una solicitud al servicio 662 de motor de prueba. En algunos ejemplos, la solicitud es una solicitud de los delegados de prueba que necesita el programa subordinado criptográfico, como se determinó previamente en el paso 685. En algunos ejemplos, la solicitud se envía con la ID de vinculación para el programa subordinado criptográfico.As shown, step 685 is given in some examples below. In step 685, in some examples, the cryptographic backend container 635 determines what the requirements of the cryptographic backends are based on the metadata in the code of the cryptographic backends. As shown, step 686 is given in some examples below. At step 686, in some examples, the cryptographic backend container 635 communicates a request to the proof engine service 662. In some examples, the request is a request for the test delegates needed by the cryptographic backend, as previously determined in step 685. In some examples, the request is sent with the binding ID for the cryptographic backend.

Como se muestra, el paso 687 se da en algunos ejemplos a continuación. En el paso 687, en algunos ejemplos, el servicio 662 de motor de prueba determina si el servicio de motor de prueba puede cumplir con la solicitud con recursos en sus conjuntos de recursos criptográficos. Si no, en algunos ejemplos, el servicio 662 de motor de prueba solicita al contenedor 635 de programa subordinado criptográfico más tiempo para cumplir con la solicitud, y permanece en el paso 687. Si, en cambio, la determinación en el paso 687 es positiva, en algunos ejemplos, el proceso continúa en el paso 688.As shown, step 687 is given in some examples below. In step 687, in some examples, the test engine service 662 determines if the test engine service can fulfill the request with resources in its cryptographic resource pools. If not, in some examples, the test engine service 662 requests the cryptographic back-end container 635 for more time to fulfill the request, and remains at step 687. If, instead, the determination in step 687 is positive , in some examples, the process continues at step 688.

En el paso 688, en algunos ejemplos, el servicio 662 de motor de prueba extrae los recursos criptográficos correspondientes a los delegados de prueba solicitados de los grupos de delegados criptográficos correspondientes. Como se muestra, el paso 689 se da en algunos ejemplos a continuación. En el paso 689, en algunos ejemplos, el servicio 662 de motor de prueba determina, para cada uno de los delegados criptográficos extraídos, qué tipo de código de generación de prueba se utilizará para ese delegado criptográfico. En algunos ejemplos, hay una biblioteca de código de generación de prueba que el servicio 662 de motor de prueba usa para seleccionar y extraer el tipo particular de código de generación de prueba para cada delegado criptográfico extraído en base al tipo de delegado criptográfico extraído.In step 688, in some examples, the test engine service 662 extracts the cryptographic resources corresponding to the requested test delegates from the corresponding cryptographic delegate groups. As shown, step 689 is given in some examples below. In step 689, in some examples, the test engine service 662 determines, for each of the extracted cryptographic delegates, what type of test generation code will be used for that cryptographic delegate. In some examples, there is a test generation code library that the test engine service 662 uses to select and extract the particular type of test generation code for each extracted cryptographic delegate based on the extracted cryptographic delegate type.

Como se muestra, el paso 690 se da en algunos ejemplos a continuación. En el paso 690, en algunos ejemplos, para cada uno de los recursos criptográficos extraídos, el servicio 662 de motor de prueba inyecta el tipo determinado de código de generación de prueba para el recurso criptográfico. En algunos ejemplos, una vez que el código del motor de prueba se ha inyectado en un recurso criptográfico, el recurso criptográfico es ya un delegado de prueba. Como se muestra, el paso 691 se da en algunos ejemplos a continuación. En el paso 691, en algunos ejemplos, el servicio 662 de motor de prueba determina si la información secreta (por ejemplo, claves) se va a utilizar o no para los delegados de prueba, en base al tipo de recurso criptográfico de cada delegado de prueba. Si no, en algunos ejemplos, el proceso avanza al paso 695. De otro modo, en algunos ejemplos, el proceso avanza al paso 692. En el paso 692, en algunos ejemplos, el servicio 662 de motor de prueba comunica al HSM 665 una solicitud de envío de información secreta desde el HSM 665 a los delegados de prueba mediante un túnel seguro. As shown, step 690 is given in some examples below. In step 690, in some examples, for each of the mined cryptographic resources, the test engine service 662 injects the given type of test generation code for the cryptographic resource. In some examples, once the test engine code has been injected into a crypto resource, the crypto resource is already a test delegate. As shown, step 691 is given in some examples below. In step 691, in some examples, the test engine service 662 determines whether or not secret information (eg, keys) is to be used for the test delegates, based on the type of cryptographic resource of each test delegate. proof. Otherwise, in some examples, the process proceeds to step 695. Otherwise, in some examples, the process proceeds to step 692. At step 692, in some examples, the test engine service 662 communicates to the HSM 665 a request to send secret information from the HSM 665 to the test delegates through a secure tunnel.

Como se muestra, el paso 693 se da en algunos ejemplos a continuación. En el paso 693, en algunos ejemplos, el HSM 665 recupera la información secreta solicitada. Como se muestra, el paso 694 se da en algunos ejemplos a continuación. En el paso 694, en algunos ejemplos, el HSM 665 suministra la información secreta solicitada a los delegados de prueba especificados por el servicio de motor de prueba mediante un túnel seguro entre el HSM 665 en el delegado de prueba especificado. Como se muestra, el paso 695 se da en algunos ejemplos a continuación. En el paso 695, en algunos ejemplos, el servicio 662 de motor de prueba envía los delegados de prueba solicitados al contenedor 635 de programa subordinado criptográfico. Como se muestra, el paso 696 se da en algunos ejemplos a continuación. En el paso 696, en algunos ejemplos, el contenedor 635 de programa subordinado criptográfico hace que se ejecute el código de programa subordinado criptográfico, y el código de programa subordinado criptográfico, mientras se ejecuta, solicita la/s función/es criptográfica/s que proporciona/n el/los delegado/s de prueba.As shown, step 693 is given in some examples below. In step 693, in some examples, the HSM 665 retrieves the requested secret information. As shown, step 694 is given in some examples below. In step 694, in some examples, the HSM 665 supplies the requested secret information to the test delegates specified by the test engine service via a secure tunnel between the HSM 665 at the specified test delegate. As shown, step 695 is given in some examples below. In step 695, in some examples, the test engine service 662 sends the requested test delegates to the cryptographic backend container 635 . As shown, step 696 is given in some examples below. In step 696, in some examples, the cryptographic backend wrapper 635 causes the cryptographic backend code to execute, and the cryptographic backend code, while executing, requests the cryptographic function(s) that provides the test delegate(s).

Como se muestra, el paso 697 se da en algunos ejemplos a continuación. En el paso 697, en algunos ejemplos, el contenedor 635 de programa subordinado criptográfico maneja la carga útil generada por el código de programa subordinado criptográfico durante la ejecución del código de programa subordinado criptográfico, y comunica la carga útil al CCS 661. Como se muestra, el paso 698 se da en algunos ejemplos a continuación. En el paso 698, en algunos ejemplos, el contenedor de programa subordinado criptográfico 661 hace que los delegados de prueba envíen nueva información secreta para que sea persistente al HSM 665 mediante un túnel seguro. Como se muestra, el paso 699 se da en algunos ejemplos a continuación. En el paso 699, en algunos ejemplos, el contenedor 635 de criptografía libera ellos recurso/s criptográfico/s a sus respectivos grupos de recursos criptográficos.As shown, step 697 is given in some examples below. In step 697, in some examples, the crypto backend container 635 handles the payload generated by the crypto back-end code during the execution of the crypto back-end code, and communicates the payload to the CCS 661. As shown , step 698 is given in some examples below. In step 698, in some examples, the cryptographic backend container 661 causes the test delegates to send new secret information to be persistent to the HSM 665 via a secure tunnel. As shown, step 699 is given in some examples below. In step 699, in some examples, the crypto container 635 releases the crypto resource(s) to their respective crypto resource pools.

La figura 7 es un diagrama de flujo que ilustra un proceso (780) de ejemplo para transacciones seguras y ejecución confidencial de lógica, que puede ser realizado por un servicio de motor de prueba, tal como el servicio de motor de prueba de la figura 5 y/o de la figura 6.Figure 7 is a flowchart illustrating an example process (780) for secure transactions and confidential logic execution, which may be performed by a Test Engine Service, such as the Test Engine Service of Figure 5. and/or figure 6.

En el ejemplo ilustrado, el paso 786 se da primero. En el paso 786, en algunos ejemplos, se recibe una solicitud de recursos criptográficos. En algunos ejemplos, la solicitud de recursos criptográficos incluye una identidad (ID) de vinculación. Como se muestra, el paso 788 se da en algunos ejemplos a continuación. En el paso 788, en algunos ejemplos, los recursos criptográficos se extraen de al menos un grupo de recursos criptográficos de una pluralidad de grupos de recursos criptográficos en respuesta a la solicitud de recursos criptográficos. En algunos ejemplos, los conjuntos de recursos criptográficos separados de la pluralidad de conjuntos de recursos criptográficos son conjuntos de tipos separados de recursos criptográficos.In the illustrated example, step 786 is given first. At step 786, in some examples, a request for cryptographic resources is received. In some examples, the request for cryptographic resources includes a binding identity (ID). As shown, step 788 is given in some examples below. In step 788, in some examples, cryptographic resources are retrieved from at least one cryptographic resource pool of a plurality of cryptographic resource pools in response to the cryptographic resource request. In some examples, the separate sets of cryptographic resources of the plurality of sets of cryptographic resources are sets of separate types of cryptographic resources.

Como se muestra, el paso 789 se da en algunos ejemplos a continuación. En el paso 789, en algunos ejemplos, se determina qué tipo de código de generación de prueba es adecuado para cada recurso criptográfico extraído. Como se muestra, el paso 790 se da en algunos ejemplos a continuación. En el paso 790, en algunos ejemplos, para cada recurso criptográfico extraído, el tipo determinado de código de generación de prueba se inyecta en el recurso criptográfico extraído. A continuación, el proceso puede pasar al bloque de retorno, donde se reanudan otros procesos.As shown, step 789 is given in some examples below. In step 789, in some examples, it is determined which type of test generation code is suitable for each mined cryptographic resource. As shown, step 790 is given in some examples below. In step 790, in some examples, for each mined cryptographic resource, the given type of test generation code is injected into the mined cryptographic resource. The process can then proceed to the return block, where other processes are resumed.

ConclusiónConclusion

Si bien la descripción detallada anterior describe ciertos ejemplos de la tecnología y describe el mejor modo contemplado, sin que incumba lo detallado que aparezca lo anterior en el texto, la tecnología se puede practicar de muchas maneras. Los detalles pueden variar en la implantación, sin dejar de estar abarcados por la tecnología descrita en este documento. Como se indicó anteriormente, la terminología particular utilizada al describir ciertas características o aspectos de la tecnología no debe tomarse como que implica que se esté redefiniendo en este documento para restringirse a rasgos, características o aspectos específicos con los que se asocia esa terminología. En general, los términos utilizados en las siguientes reivindicaciones no deben interpretarse como una limitación de la tecnología a los ejemplos específicos divulgados en este documento, a menos que la descripción detallada defina explícitamente tales términos. En consecuencia, el alcance real de la tecnología abarca no sólo los ejemplos divulgados, sino también todas las maneras equivalentes de practicar o implantar la tecnología. While the detailed description above describes certain examples of the technology and describes the best mode envisioned, no matter how detailed the foregoing appears in the text, the technology can be practiced in many ways. Details may vary upon implementation, while still being covered by the technology described in this document. As stated above, particular terminology used when describing certain features or aspects of the technology should not be taken to imply that it is being redefined herein to be restricted to specific features, characteristics, or aspects with which that terminology is associated. In general, the terms used in the following claims should not be construed as limiting the technology to the specific examples disclosed herein, unless the detailed description explicitly defines such terms. Consequently, the actual scope of the technology encompasses not only the disclosed examples, but also all equivalent ways of practicing or implementing the technology.

Claims (15)

REIVINDICACIONES 1. Un aparato, que comprende:1. An apparatus, comprising: un dispositivo que incluye al menos una memoria adaptada para almacenar datos de tiempo de ejecución para el dispositivo, y al menos un procesador que está adaptado para ejecutar código ejecutable por procesador que, en respuesta a la ejecución, permite que el dispositivo realice acciones, que incluyen:a device including at least one memory adapted to store runtime data for the device, and at least one processor that is adapted to execute processor-executable code that, in response to execution, allows the device to perform actions, which include: recibir (686; 786) una solicitud de recursos criptográficos, donde la solicitud de recursos criptográficos incluye una identidad (ID) de vinculación;receiving (686;786) a request for cryptographic resources, wherein the request for cryptographic resources includes a binding identity (ID); extraer (688; 788) recursos criptográficos de al menos un grupo de recursos criptográficos de una pluralidad de grupos de recursos criptográficos en respuesta a la solicitud de recursos criptográficos, donde los grupos de recursos criptográficos desagregados de la pluralidad de grupos de recursos criptográficos son grupos de tipos desagregados de recursos criptográficos;extract (688;788) cryptographic resources from at least one cryptographic resource group of a plurality of cryptographic resource groups in response to the cryptographic resource request, where the disaggregated cryptographic resource groups of the plurality of cryptographic resource groups are groups of disaggregated types of cryptographic resources; determinar (689; 789) qué tipo de código de generación de prueba es adecuado para cada recurso criptográfico extraído; ydetermining (689; 789) what type of test generation code is suitable for each mined cryptographic resource; and para cada recurso criptográfico extraído, inyectar (690; 790) el tipo determinado de código de generación de prueba en el recurso criptográfico extraído.for each extracted cryptographic resource, injecting (690;790) the determined type of test generation code into the extracted cryptographic resource. 2. El aparato de la reivindicación 1, incluyendo las acciones adicionalmente:The apparatus of claim 1, further including: para cada recurso criptográfico extraído:for each mined crypto resource: determinar (691) si se requiere información secreta para el recurso criptográfico; ydetermining (691) whether secret information is required for the cryptographic resource; and si se determina que se requiere información secreta para el recurso criptográfico:if it is determined that secret information is required for the cryptographic resource: determinar qué información secreta se requieren para el recurso criptográfico en base al tipo de recurso criptográfico extraído; edetermining what secret information is required for the cryptographic resource based on the type of the extracted cryptographic resource; and iniciar (698) un túnel seguro entre un módulo de seguridad de hardware y el recurso criptográfiinitiate (698) a secure tunnel between a hardware security module and the cryptographic resource información secreta en el recurso criptográfico.secret information in the cryptographic resource. 3. El aparato de la reivindicación 1, en el que uno de los conjuntos de recursos criptográficos de la pluralidad de conjuntos de recursos criptográficos es un conjunto de enclaves que incluye una pluralidad de enclaves, y otro de los conjuntos de recursos criptográficos de la pluralidad de conjuntos de recursos criptográficos es un conjunto de un tipo de recursos criptográficos distintos de los enclaves.The apparatus of claim 1, wherein one of the cryptographic resource sets of the plurality of cryptographic resource sets is an enclave set including a plurality of enclaves, and another of the cryptographic resource sets of the plurality of Cryptographic Resource Sets is a set of a type of cryptographic resources other than enclaves. 4. El aparato de la reivindicación 3, en el que dicho otro de los conjuntos de recursos criptográficos es un conjunto de matrices de puertas programables en campo especializadas para una función acelerada de prueba de conocimiento cero.The apparatus of claim 3, wherein said other set of cryptographic resources is a set of specialized field-programmable gate arrays for an accelerated zero-knowledge proof function. 5. El aparato de la reivindicación 1, en el que uno de los conjuntos de recursos criptográficos de la pluralidad de conjuntos de recursos criptográficos es un conjunto de recursos criptográficos compuestos, y en el que cada recurso criptográfico del conjunto de recursos criptográficos compuestos es un recurso criptográfico compuesto que incluye un haz de recursos criptográficos configurados para funcionar juntos al realizar una función criptográfica.The apparatus of claim 1, wherein one of the cryptographic resource sets of the plurality of cryptographic resource sets is a composite cryptographic resource set, and wherein each cryptographic resource of the composite cryptographic resource set is a composite cryptographic resource that includes a bundle of cryptographic resources configured to work together when performing a cryptographic function. 6. El aparato de la reivindicación 5, en el que el haz de recursos criptográficos incluye al menos un enclave y al menos una matriz de puertas programables en campo.The apparatus of claim 5, wherein the cryptographic resource bundle includes at least one enclave and at least one field-programmable gate array. 7. Un método, que comprende:7. A method, comprising: extraer (688; 788) recursos criptográficos de al menos un grupo de recursos criptográficos de una pluralidad de grupos de recursos criptográficos, donde los grupos de recursos criptográficos desagregados de la pluralidad de grupos de recursos criptográficos son grupos de tipos desagregados de recursos criptográficos;extracting (688; 788) cryptographic resources from at least one cryptographic resource group of a plurality of cryptographic resource groups, wherein the disaggregated cryptographic resource groups of the plurality of cryptographic resource groups are disaggregated type groups of cryptographic resources; inyectar código de generación de prueba en los recursos criptográficos extraídos, donde inyectar código de generación de prueba en los recursos criptográficos extraídos incluye:inject test generation code into the mined cryptographic resources, where inject test generation code into the mined cryptographic resources includes: determinar (689; 789) qué tipo de código de generación de prueba es adecuado para cada recurso criptográfico extraído; ydetermining (689; 789) what type of test generation code is suitable for each mined cryptographic resource; and para cada recurso criptográfico extraído, inyectar (690; 790) el tipo determinado de código de generación de prueba en el recurso criptográfico extraído.for each cryptographic resource extracted, inject (690; 790) the given type of test generation code in the mined crypto resource. 8. El método de la reivindicación 7, en el que el método comprende adicionalmente, para al menos un primer recurso criptográfico de los recursos criptográficos extraídos:The method of claim 7, wherein the method further comprises, for at least a first one of the extracted cryptographic resources: determinar qué información secreta se va a emplear para el primer recurso criptográfico en base al tipo de recurso criptográfico extraído; edetermining which secret information is to be used for the first cryptographic resource based on the type of the extracted cryptographic resource; and iniciar (698) un túnel seguro entre un módulo de seguridad de hardware y el primer recurso criptográfi inyectar la información secreta en el primer recurso criptográfico.initiating (698) a secure tunnel between a hardware security module and the first cryptographic resource; injecting the secret information into the first cryptographic resource. 9. El método de la reivindicación 8, que comprende además:The method of claim 8, further comprising: para al menos un segundo recurso criptográfico de los recursos criptográficos extraídos, determinar qué información secreta se requiere para el segundo recurso criptográfico, donde la información secreta extraída para el segundo recurso criptográfico es diferente de la información secreta extraída para el primer recurso criptográfico en base al segundo recurso criptográfico, siendo un tipo diferente de recurso criptográfico que el primer recurso criptográfico.for at least one second cryptographic resource of the extracted cryptographic resources, determining which secret information is required for the second cryptographic resource, wherein the extracted secret information for the second cryptographic resource is different from the extracted secret information for the first cryptographic resource based on the second cryptographic resource, being a different type of cryptographic resource than the first cryptographic resource. 10. El método de la reivindicación 9, en el que el primer recurso criptográfico es un enclave, y el segundo recurso criptográfico es al menos un elemento de entre una matriz de puertas programables en campo configurada para una función criptográfica, un circuito integrado específico de aplicación configurado para una función criptográfica, y un recurso criptográfico compuesto que incluye un haz de recursos criptográficos configurados para funcionar juntos al realizar una función criptográfica.The method of claim 9, wherein the first cryptographic resource is an enclave, and the second cryptographic resource is at least one of an array of field-programmable gates configured for a cryptographic function, a security-specific integrated circuit application configured for a cryptographic function, and a composite cryptographic resource that includes a bundle of cryptographic resources configured to work together in performing a cryptographic function. 11. El método de la reivindicación 10, en el que el enclave es proporcionado por al menos un elemento de entre una máquina virtual segura y un enclave de hardware seguro.The method of claim 10, wherein the enclave is provided by at least one of a secure virtual machine and a secure hardware enclave. 12. El aparato de la reivindicación 1, incluyendo las acciones adicionalmente:The apparatus of claim 1, further including: enviar los recursos criptográficos extraídos a un contenedor de programa subordinado criptográfico después de inyectar el tipo determinado de código de generación de prueba.sending the extracted cryptographic resources to a cryptographic backend container after injecting the given type of test generation code. 13. El aparato de la reivindicación 3, en el que cada enclave del grupo de enclaves es proporcionado por al menos un elemento de entre una máquina virtual segura y un enclave de hardware seguro.The apparatus of claim 3, wherein each enclave in the group of enclaves is provided by at least one of a secure virtual machine and a secure hardware enclave. 14. El aparato de la reivindicación 3, en el que los enclaves del conjunto de enclaves son entornos de ejecución seguros, privados y resistentes a manipulaciones, en los que se puede ejecutar el código de manera segura frente a interferencias externas, y para los que se puede certificar que los resultados de la ejecución han discurrido de manera inalterada y en privado.The apparatus of claim 3, wherein the enclaves in the set of enclaves are secure, private, tamper-resistant execution environments, in which code can be executed securely from outside interference, and for which it can be certified that the results of the execution have flowed unaltered and in private. 15. Un aparato, que comprende:15. An apparatus, comprising: un dispositivo que incluye al menos una memoria adaptada para almacenar datos de tiempo de ejecución para el dispositivo, y al menos un procesador que está adaptado para ejecutar código ejecutable por procesador, que, como respuesta a la ejecución, permite que el dispositivo realice acciones, que incluyen:a device including at least one memory adapted to store runtime data for the device, and at least one processor that is adapted to execute processor-executable code, which, in response to execution, allows the device to perform actions, including: extraer un binario de programa subordinado criptográfico para un primer programa subordinado criptográfico (531); determinar qué delegados (571) de prueba requiere el primer programa subordinado criptográfico, donde un delegado de prueba es un recurso criptográfico en el que se ha inyectado el código del motor de prueba; y en el que los delegados (571) de prueba requeridos por el primer programa subordinado criptográfico incluyen al menos un primer delegado de prueba y un segundo delegado de prueba, donde el primer delegado de prueba es un enclave, y donde el segundo delegado de prueba es un tipo de delegado de prueba distinto de un enclave; yextracting a cryptographic backend binary for a first cryptographic backend (531); determining which test delegates (571) are required by the first cryptographic backend, where a test delegate is a cryptographic resource into which test engine code has been injected; and wherein the test delegates (571) required by the first cryptographic backend program include at least a first test delegate and a second test delegate, where the first test delegate is an enclave, and where the second test delegate is is a type of test delegate other than an enclave; and enviar una solicitud para los delegados de prueba determinados para un servicio (562) de motor de prueba. send a request for the determined test delegates for a test engine service (562).
ES18756360T 2017-10-16 2018-08-11 Select and secure test delegates for cryptographic functions Active ES2932500T3 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/785,371 US10681033B2 (en) 2017-10-16 2017-10-16 Selecting and securing proof delgates for cryptographic functions
PCT/US2018/046392 WO2019078945A1 (en) 2017-10-16 2018-08-11 Selecting and securing proof delgates for cryptographic functions

Publications (1)

Publication Number Publication Date
ES2932500T3 true ES2932500T3 (en) 2023-01-20

Family

ID=63254812

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18756360T Active ES2932500T3 (en) 2017-10-16 2018-08-11 Select and secure test delegates for cryptographic functions

Country Status (5)

Country Link
US (1) US10681033B2 (en)
EP (1) EP3698516B1 (en)
CN (1) CN111213340B (en)
ES (1) ES2932500T3 (en)
WO (1) WO2019078945A1 (en)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10664591B2 (en) 2017-05-11 2020-05-26 Microsoft Technology Licensing, Llc Enclave pools
US10833858B2 (en) 2017-05-11 2020-11-10 Microsoft Technology Licensing, Llc Secure cryptlet tunnel
US10637645B2 (en) * 2017-05-11 2020-04-28 Microsoft Technology Licensing, Llc Cryptlet identity
US10740455B2 (en) 2017-05-11 2020-08-11 Microsoft Technology Licensing, Llc Encave pool management
US10747905B2 (en) 2017-05-11 2020-08-18 Microsoft Technology Licensing, Llc Enclave ring and pair topologies
US10528722B2 (en) 2017-05-11 2020-01-07 Microsoft Technology Licensing, Llc Enclave pool shared key
US11488121B2 (en) 2017-05-11 2022-11-01 Microsoft Technology Licensing, Llc Cryptlet smart contract
US11461768B2 (en) 2017-08-21 2022-10-04 American Express Travel Related Services Company, Inc. Systems and methods for data file transfer balancing and control on blockchain
US10469248B2 (en) * 2017-10-17 2019-11-05 Amrican Express Travel Related Services Company, Inc. API request and response balancing and control on blockchain
US10567320B2 (en) 2017-10-17 2020-02-18 American Express Travel Related Services Company, Inc. Messaging balancing and control on blockchain
US11664995B2 (en) * 2018-04-20 2023-05-30 Vishal Gupta Decentralized document and entity verification engine
US10708250B2 (en) * 2018-07-11 2020-07-07 Americorps Investments Llc Blockchain operating system
US11023490B2 (en) * 2018-11-20 2021-06-01 Chicago Mercantile Exchange Inc. Selectively replicated trustless persistent store
JP7354620B2 (en) * 2019-06-28 2023-10-03 株式会社リコー Service system, information registration method
CN112927077B (en) * 2019-09-25 2022-05-24 支付宝(杭州)信息技术有限公司 Method and device for realizing contract calling based on FPGA
CN110704063B (en) * 2019-09-30 2021-09-07 支付宝(杭州)信息技术有限公司 Method and device for compiling and executing intelligent contract
WO2021178450A1 (en) * 2020-03-02 2021-09-10 Metallicus, Inc. Universal payment messaging over a blockchain ledger using embedded on-chain user identification values
WO2023058186A1 (en) * 2021-10-07 2023-04-13 富士通株式会社 Information processing program, information processing method, and information processing apparatus
CN115086015B (en) * 2022-06-10 2024-05-24 深圳市东进技术股份有限公司 Cloud password service platform based on OAuth authentication and password resource allocation method

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10102510B2 (en) * 2012-11-28 2018-10-16 Hoverkey Ltd. Method and system of conducting a cryptocurrency payment via a mobile device using a contactless token to store and protect a user's secret key
US10389709B2 (en) * 2014-02-24 2019-08-20 Amazon Technologies, Inc. Securing client-specified credentials at cryptographically attested resources
US10740732B2 (en) 2015-05-20 2020-08-11 Ripple Luxembourg S.A. Resource transfer system
EP3329440A1 (en) * 2015-07-31 2018-06-06 British Telecommunications public limited company Controlled resource provisioning in distributed computing environments
CN105429752B (en) * 2015-11-10 2019-10-22 中国电子科技集团公司第三十研究所 The processing method and system of user key under a kind of cloud environment
US9679276B1 (en) 2016-01-26 2017-06-13 Stampery, Inc. Systems and methods for using a block chain to certify the existence, integrity, and/or ownership of a file or communication
CN107220767A (en) * 2017-05-26 2017-09-29 中山市博林树投资管理有限公司 A kind of resource sharing system under virtual resources pool environment

Also Published As

Publication number Publication date
CN111213340A (en) 2020-05-29
EP3698516A1 (en) 2020-08-26
CN111213340B (en) 2023-05-09
WO2019078945A1 (en) 2019-04-25
EP3698516B1 (en) 2022-10-12
US10681033B2 (en) 2020-06-09
US20190116174A1 (en) 2019-04-18

Similar Documents

Publication Publication Date Title
ES2932500T3 (en) Select and secure test delegates for cryptographic functions
EP3622686B1 (en) Enclave ring and pair topologies
US10833858B2 (en) Secure cryptlet tunnel
US11728992B2 (en) Cryptlet binding key graph
EP3622687B1 (en) Enclave pool management
EP3622661B1 (en) Cryptlet identity
US11176246B2 (en) Enclave pool shared key
EP3622662B1 (en) Cryptlet smart contract
US10749687B2 (en) Binding version stamp for smart contracts
US20180330077A1 (en) Enclave pools