ES2932500T3 - Seleccionar y asegurar delegados de prueba para funciones criptográficas - Google Patents

Seleccionar y asegurar delegados de prueba para funciones criptográficas 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
English (en)
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/es
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]

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)

Description

DESCRIPCIÓN
Seleccionar y asegurar delegados de prueba para funciones criptográficas
Antecedentes
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.
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.
Sumario de la divulgación
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.
Las realizaciones están definidas por las reivindicaciones dependientes.
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.
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.
Otros aspectos y aplicaciones de la tecnología divulgada se apreciarán al leer y comprender las figuras y la descripción adjuntas.
Breve descripción de los dibujos
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.
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:
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;
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;
la figura 3 es un diagrama de bloques que ilustra un ejemplo de un sistema;
la figura 4 es un diagrama de bloques que ilustra un ejemplo del sistema de la figura 3;
la figura 5 es un diagrama de bloques que ilustra un ejemplo de un subconjunto del sistema de la figura 4;
la figura 6 es un flujo de datos de ejemplo para un proceso; y
la figura 7 es un flujo de datos de ejemplo para otro proceso, de acuerdo con aspectos de la presente divulgación.
Descripción detallada
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.
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.
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.
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.
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.
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.
Dispositivos ilustrativos/entornos operativos
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.
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.
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.
Dispositivo informático ilustrativo
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Sistemas ilustrativos
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.
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.
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.
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.
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.
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.
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.
Dispositivo ilustrativo
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
En algunos ejemplos, un programa subordinado criptográfico tiene propiedades comunes independientemente del tipo:
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.
Nombre: un nombre común que se asigna a la dirección para una identidad más legible en algunos ejemplos.
Código: código escrito en un idioma que es soportado por su contenedor principal en algunos ejemplos.
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.
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.
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.
Contenedor principal: un contenedor de programa subordinado criptográfico en el que se ejecuta el programa subordinado criptográfico, en algunos ejemplos.
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.
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.
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.
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.
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.
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:
- El registro de tejidos de programa subordinado criptográfico, que consiste en el registro y la base de datos para la configuración.
• Programa subordinado criptográfico: nombre e ID, API de nivel de superficie y eventos que exponen a las redes de cadena de bloques.
• Cadenas de bloques u otros registros distribuidos: nombre de red, tipo, lista de nodos, metadatos.
• 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.
- 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.
- 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.
- 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.
- 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.
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.
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.
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.
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.
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.
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.).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 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 un
canal seguro entre el depósito 465 de claves y el contenedor de programa subordinado criptográfico ejecutándose
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.
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 con
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 la
clave privada de programa subordinado criptográfico. En algunos ejemplos, el tejido 460 de programa subordinado criptográfico recibe la carga útil.
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 Id
de vinculación. El tejido 460 de programa subordinado criptográfico puede entonces generar un compendio de hash
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 red
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.
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 las
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á.
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 se
puede almacenar en una cadena de bloques, tal como la red 450 de cadena de bloques, o, en lugar de almacenarse
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.
En algunos ejemplos, un caso de libro mayor de contratos inteligentes se genera en parte a partir de un esquema.
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 completarse
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.
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.
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.
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.
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 una
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.
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.
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.
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.
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.
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.
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:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Procesos ilustrativos
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Conclusión
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.

Claims (15)

REIVINDICACIONES
1. Un aparato, que comprende:
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:
recibir (686; 786) una solicitud de recursos criptográficos, donde la solicitud de recursos criptográficos incluye una identidad (ID) de vinculación;
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;
determinar (689; 789) qué tipo de código de generación de prueba es adecuado para cada recurso criptográfico extraído; y
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.
2. El aparato de la reivindicación 1, incluyendo las acciones adicionalmente:
para cada recurso criptográfico extraído:
determinar (691) si se requiere información secreta para el recurso criptográfico; y
si se determina que se requiere información secreta para el recurso criptográfico:
determinar qué información secreta se requieren para el recurso criptográfico en base al tipo de recurso criptográfico extraído; e
iniciar (698) un túnel seguro entre un módulo de seguridad de hardware y el recurso criptográfi
información secreta en el recurso criptográfico.
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.
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.
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.
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.
7. Un método, que comprende:
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;
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:
determinar (689; 789) qué tipo de código de generación de prueba es adecuado para cada recurso criptográfico extraído; y
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.
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:
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; e
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.
9. El método de la reivindicación 8, que comprende además:
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.
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.
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.
12. El aparato de la reivindicación 1, incluyendo las acciones adicionalmente:
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.
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.
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.
15. Un aparato, que comprende:
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:
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; y
enviar una solicitud para los delegados de prueba determinados para un servicio (562) de motor de prueba.
ES18756360T 2017-10-16 2018-08-11 Seleccionar y asegurar delegados de prueba para funciones criptográficas Active ES2932500T3 (es)

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 SELECTION AND SECURITY OF EVIDENCE DELEGATES FOR CRYPTOGRAPHIC FUNCTIONS

Publications (1)

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

Family

ID=63254812

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18756360T Active ES2932500T3 (es) 2017-10-16 2018-08-11 Seleccionar y asegurar delegados de prueba para funciones criptográficas

Country Status (5)

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

Families Citing this family (18)

* 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
US10528722B2 (en) 2017-05-11 2020-01-07 Microsoft Technology Licensing, Llc Enclave pool shared key
US10740455B2 (en) 2017-05-11 2020-08-11 Microsoft Technology Licensing, Llc Encave pool management
US10637645B2 (en) * 2017-05-11 2020-04-28 Microsoft Technology Licensing, Llc Cryptlet identity
US10833858B2 (en) 2017-05-11 2020-11-10 Microsoft Technology Licensing, Llc Secure cryptlet tunnel
US11488121B2 (en) 2017-05-11 2022-11-01 Microsoft Technology Licensing, Llc Cryptlet smart contract
US10747905B2 (en) 2017-05-11 2020-08-18 Microsoft Technology Licensing, Llc Enclave ring and pair topologies
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
JP7090800B2 (ja) * 2018-04-20 2022-06-24 ヴィシャール・グプタ 分散型文書およびエンティティ検証エンジン
WO2020014512A1 (en) 2018-07-11 2020-01-16 Americorp Investments Llc Blockchain operating system
US11023490B2 (en) 2018-11-20 2021-06-01 Chicago Mercantile Exchange Inc. Selectively replicated trustless persistent store
JP7354620B2 (ja) * 2019-06-28 2023-10-03 株式会社リコー サービスシステム、情報登録方法
CN110751555B (zh) * 2019-09-25 2021-01-12 支付宝(杭州)信息技术有限公司 基于fpga实现合约调用的方法及装置
CN110704063B (zh) * 2019-09-30 2021-09-07 支付宝(杭州)信息技术有限公司 编译和执行智能合约的方法及装置
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 (ja) * 2021-10-07 2023-04-13 富士通株式会社 情報処理プログラム、情報処理方法、及び情報処理装置

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
US10853750B2 (en) * 2015-07-31 2020-12-01 British Telecommunications Public Limited Company Controlled resource provisioning in distributed computing environments
CN105429752B (zh) * 2015-11-10 2019-10-22 中国电子科技集团公司第三十研究所 一种云环境下用户密钥的处理方法及系统
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 (zh) * 2017-05-26 2017-09-29 中山市博林树投资管理有限公司 一种虚拟化资源池环境下的资源共享系统

Also Published As

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

Similar Documents

Publication Publication Date Title
ES2932500T3 (es) Seleccionar y asegurar delegados de prueba para funciones criptográficas
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
EP3622662B1 (en) Cryptlet smart contract
US11176246B2 (en) Enclave pool shared key
US10749687B2 (en) Binding version stamp for smart contracts
US20180330077A1 (en) Enclave pools