ES2880458T3 - Protección de datos de cadena de bloques basada en un modelo de cuenta genérico y un cifrado homomórfico - Google Patents

Protección de datos de cadena de bloques basada en un modelo de cuenta genérico y un cifrado homomórfico Download PDF

Info

Publication number
ES2880458T3
ES2880458T3 ES18867276T ES18867276T ES2880458T3 ES 2880458 T3 ES2880458 T3 ES 2880458T3 ES 18867276 T ES18867276 T ES 18867276T ES 18867276 T ES18867276 T ES 18867276T ES 2880458 T3 ES2880458 T3 ES 2880458T3
Authority
ES
Spain
Prior art keywords
transaction
random number
node
transaction amount
commitment
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
ES18867276T
Other languages
English (en)
Inventor
Wenbin Zhang
Baoli Ma
Huanyu Ma
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.)
Advanced New Technologies Co Ltd
Original Assignee
Advanced New Technologies Co Ltd
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 Advanced New Technologies Co Ltd filed Critical Advanced New Technologies Co Ltd
Application granted granted Critical
Publication of ES2880458T3 publication Critical patent/ES2880458T3/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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/088Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • 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/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Algebra (AREA)
  • Probability & Statistics with Applications (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

Un procedimiento implementado por ordenador realizado por un nodo de consenso para validar una transacción (400) entre un primer nodo y un segundo nodo dentro de una red de cadena de bloques (102), estando caracterizando el procedimiento por: recibir datos de transacción (408) asociados a la transacción (400), donde los datos de transacción comprenden: datos representativos de una pluralidad de activos, un primer compromiso que oculta un primer número aleatorio y un importe de transacción de la transacción, un segundo compromiso que oculta un segundo número aleatorio y un cambio calculado en base a deducir el importe de transacción de un valor total de la pluralidad de activos, el importe de transacción y un tercer número aleatorio ambos cifrados por una clave pública del segundo nodo en base a un esquema de cifrado homomórfico - HE - determinista lineal, el cambio y un cuarto número aleatorio ambos cifrados por una clave pública del primer nodo en base al esquema de HE determinista lineal, una o más pruebas de intervalo, una prueba de conocimiento nulo - ZKP - y una firma digital generada en base a una clave privada correspondiente a la clave pública del primer nodo; verificar (322) la firma digital en base a la clave pública del primer nodo; determinar (328) que la una o más pruebas de intervalo demuestran que el importe de transacción y el cambio son cada uno mayores que, o iguales a, cero; determinar (326) que el valor total de la pluralidad de activos es igual a una suma del importe de transacción y del cambio; y determinar (330), en base a la ZKP, que la transacción (400) es válida al determinar que el primer número aleatorio es igual al tercer número aleatorio, que el segundo número aleatorio es igual al cuarto número aleatorio y que el importe de transacción oculto en el primer compromiso es igual al importe de transacción cifrado por la clave pública del segundo nodo.

Description

DESCRIPCIÓN
Protección de datos de cadena de bloques basada en un modelo de cuenta genérico y un cifrado homomórfico
ANTECEDENTES
Las redes de cadena de bloques, que también pueden denominarse sistemas de cadena de bloques, redes de consenso, redes de sistema de libro mayor distribuido o cadena de bloques, permiten a las entidades participantes almacenar datos de forma segura e inmutable. Una cadena de bloques puede describirse como un libro mayor de transacciones, y múltiples copias de la cadena de bloques se almacenan en la red de cadena de bloques. Tipos de ejemplo de cadenas de bloques pueden incluir cadenas de bloques públicas, cadenas de bloques de consorcio y cadenas de bloques privadas. Una cadena de bloques pública está abierta para que todas las entidades utilicen la cadena de bloques y participen en el proceso de consenso. Una cadena de bloques de consorcio es una cadena de bloques en la que el proceso de consenso está controlado por un conjunto de nodos preseleccionados, tal como ciertas organizaciones o instituciones. Una cadena de bloques privada se proporciona a una entidad en particular, que controla de manera centralizada los permisos de lectura y escritura.
Las cadenas de bloques pueden utilizar diferentes modelos de mantenimiento de registros para registrar transacciones entre usuarios. Ejemplos de modelos de mantenimiento de registros incluyen el modelo de salida de transacción no gastada (UTXO) y el modelo de saldo de cuenta. En el modelo UTXO, cada una de las transacciones gasta la salida de transacciones anteriores y genera nuevas salidas que se pueden gastar en transacciones posteriores. Se registran las transacciones no gastadas de un usuario, y el saldo disponible para gastarse se calcula como la suma de todas las transacciones no gastadas. En el modelo de saldo de cuenta, el saldo de cuenta de cada uno de los usuarios se registra como un estado global. Para cada transacción, se comprueba el saldo de una cuenta de gastos para garantizar que sea mayor que, o igual a, el importe de la transacción. Esto es comparable a la banca tradicional.
Una cadena de bloques incluye una serie de bloques, cada uno de los cuales contiene una o más transacciones ejecutadas en la red. Cada uno de los bloques puede ser análogo a una página del libro mayor, mientras que la cadena de bloques en sí es una copia completa del libro mayor. Las transacciones individuales se confirman y se añaden a un bloque, que se añade a la cadena de bloques. Las copias de la cadena de bloques se repiten en los nodos de la red. De esta manera, existe un consenso global sobre el estado de la cadena de bloques. Además, la cadena de bloques está abierta para que todos los nodos la vean, al menos en el caso de las redes públicas. Para proteger la privacidad de los usuarios de cadenas de bloques, se implementan tecnologías de cifrado.
Según el modelo de saldo de cuenta, pueden utilizarse esquemas de compromiso para ocultar valores con los que ambas partes de una transacción se comprometen. Los esquemas de compromiso pueden surgir de la necesidad de que las partes se comprometan con una elección o valor y, a continuación, comuniquen ese valor a las otras partes involucradas. Por ejemplo, en un esquema de compromiso de Pedersen (PC) interactivo, un primer usuario puede comprometerse con un importe de transacción t enviando un valor de compromiso PC(t, r) que se genera en base a un valor aleatorio r. Se genera el valor de compromiso, y un segundo usuario solo puede revelar el importe de transacción t mediante la obtención del número aleatorio r. Para garantizar que el importe de transacción sea válido, se puede crear una prueba de intervalo para probar que el importe de transacción es mayor que o igual a cero y menor que o igual al importe de cuenta.
En algunos casos, se pueden realizar múltiples transacciones desde un usuario. Debido a que la prueba de intervalo está asociada al saldo restante de la cuenta, las múltiples transacciones deben verificarse secuencialmente en la cadena de bloques. De este modo, las pruebas de intervalo correspondientes se pueden asociar correctamente a los saldos restantes de la cuenta después de cada una de las transacciones. Sin embargo, verificar múltiples transacciones secuencialmente puede llevar mucho tiempo. Un modelo de mantenimiento de registros que permita verificaciones paralelas de transacciones sería ventajoso, especialmente para tareas que requieren mucho tiempo. El documento CN 108764874 describe procedimientos de reembolso anónimos basados en cadena de bloques.
RESUMEN
La invención se define en las reivindicaciones adjuntas. Las implementaciones de la memoria descriptiva incluyen procedimientos implementados por ordenador para verificaciones de preservación de privacidad no interactivas de transacciones de cadena de bloques. Más en particular, las implementaciones de la memoria descriptiva se refieren a un procedimiento implementado por ordenador capaz de validar múltiples transacciones asociadas a una cuenta de un nodo de cadena de bloques en paralelo, en base a esquemas de compromiso y cifrado homomórfico sin revelar información de privacidad, tal como importes de transacciones, saldos de cuentas o números aleatorios para generar compromisos con otros nodos de cadena de bloques.
En algunas implementaciones, las acciones incluyen recibir datos de transacción asociados a la transacción, donde los datos de transacción comprenden: datos representativos de una pluralidad de activos, un primer compromiso que oculta un primer número aleatorio y un importe de transacción de la transacción, un segundo compromiso que oculta un segundo número aleatorio y un cambio calculado en base a deducir el importe de transacción de un valor total de la pluralidad de activos, el importe de transacción y un tercer número aleatorio, ambos cifrados por una clave pública del segundo nodo en base a un esquema de cifrado (HE) determinista lineal, el cambio y un cuarto número aleatorio, ambos cifrados por una clave pública del primer nodo en base al esquema de HE determinista lineal, una o más pruebas de intervalo, una prueba de conocimiento nulo (ZKP), y una firma digital generada en base a una clave privada correspondiente a la clave pública del primer nodo; verificar la firma digital en base a la clave pública del primer nodo; determinar que la una o más pruebas de intervalo demuestran que el importe de transacción y el cambio son cada uno mayores que, o iguales a, cero; determinar que el valor total de la pluralidad de activos es igual a una suma del importe de transacción y del cambio; y determinar, en base a la ZKP, que la transacción es válida al determinar que el primer número aleatorio es igual al tercer número aleatorio, el segundo número aleatorio es igual al cuarto número aleatorio y el importe de transacción oculto en el primer compromiso es igual al importe de transacción cifrado por la clave pública del segundo nodo. Otras implementaciones incluyen sistemas, aparatos y programas informáticos correspondientes, configurados para realizar las acciones de los procedimientos, codificados en dispositivos de almacenamiento informático.
Estas y otras implementaciones pueden incluir, opcionalmente, una o más de las siguientes características: la transacción se realiza entre una cuenta asociada al primer nodo y una cuenta asociada al segundo nodo, y el procedimiento comprende además actualizar, después de determinar que la transacción es válida, la cuenta del primer nodo y la cuenta del segundo nodo en base al importe de transacción y el cambio; cada uno de la pluralidad de activos está asociado a uno o más de un tipo de activo, un valor de activo oculto en un compromiso y un número aleatorio utilizado para generar el compromiso; determinar que cada uno de la pluralidad de activos está asociado a un mismo tipo de activo; el primer compromiso, el segundo compromiso y el compromiso que oculta el valor de activo se generan en base a un esquema de compromiso que es homomórfico, y donde la determinación de que el valor total de la pluralidad de activos es igual a la suma del importe de transacción y del cambio se realiza en base al homomorfismo del esquema de compromiso; el esquema de HE determinista lineal deriva de un esquema de HE probabilístico basado en cambiar un número aleatorio asociado al esquema de HE probabilístico en un número fijo; la ZKP comprende un compromiso que oculta un quinto número aleatorio y un sexto número aleatorio, un texto cifrado del quinto número aleatorio y el sexto número aleatorio cifrados por la clave pública de la segunda cuenta en base al esquema de HE determinista lineal, y un texto cifrado del quinto número aleatorio y el sexto número aleatorio cifrados por la clave pública de la primera cuenta en base al esquema de HE determinista lineal; la ZKP se genera y utiliza para determinar que la transacción es válida en base a propiedades del HE determinista lineal; la determinación de que la transacción es válida se realiza en base a la ZKP sin interacciones entre el primer nodo y el segundo nodo a través del exterior de la red de cadena de bloques.
La memoria descriptiva también proporciona uno o más medios de almacenamiento legibles por ordenador no transitorios acoplados a uno o más procesadores y que tienen instrucciones almacenadas en los mismos que, cuando se ejecutan por el uno o más procesadores, hacen que el uno o más procesadores realicen operaciones de acuerdo con implementaciones de los procedimientos proporcionados en el presente documento.
La memoria descriptiva proporciona además un sistema para implementar los procedimientos proporcionados en el presente documento. El sistema incluye uno o más procesadores y un medio de almacenamiento legible por ordenador acoplado al uno o más procesadores que tienen instrucciones almacenadas en los mismos que, cuando se ejecutan por el uno o más procesadores, hacen que el uno o más procesadores realicen operaciones de acuerdo con implementaciones de los procedimientos proporcionados en el presente documento.
Las implementaciones de la materia objeto descrita en esta memoria descriptiva pueden implementarse para lograr ventajas o efectos técnicos particulares. Por ejemplo, las implementaciones de la memoria descriptiva permiten que el saldo de cuenta y el importe de transacción de nodos de cadena de bloques sean privados durante las transacciones. El destinatario de una transferencia de fondos no necesita confirmar la transacción o utilizar un número aleatorio para verificar un compromiso; la validación de transacción puede ser no interactiva. Un nodo de cadena de bloques puede validar la transacción en base a HE y esquemas de compromiso para permitir una prueba de conocimiento nulo.
La metodología descrita permite mejorar la seguridad de cuenta/datos de diversos dispositivos informáticos móviles. El saldo de las cuentas y los importes de transacción pueden cifrarse en base a HE y ocultarse mediante esquemas de compromiso. Por lo tanto, un nodo de consenso puede actualizar los saldos de cuenta en el libro mayor después de la transacción en base a las propiedades de HE sin revelar el saldo de cuenta real de la cuenta. Debido a que no es necesario enviar el número aleatorio a un destinatario para confirmar la transacción, se puede reducir el riesgo de fuga de datos y se necesitan menos recursos de cálculo y de memoria para gestionar el número aleatorio.
Se aprecia que los procedimientos de acuerdo con la memoria descriptiva pueden incluir cualquier combinación de los aspectos y características descritos en el presente documento. Es decir, los procedimientos de acuerdo con la memoria descriptiva no se limitan a las combinaciones de aspectos y características específicamente descritos en el presente documento, sino que también incluyen cualquier combinación de los aspectos y características proporcionados.
Los detalles de una o más implementaciones de la memoria descriptiva se establecen en los dibujos adjuntos y en la siguiente descripción. Otras características y ventajas de la memoria descriptiva serán evidentes a partir de la descripción y los dibujos, y de las reivindicaciones.
DESCRIPCIÓN DE LOS DIBUJOS
La FIG. 1 representa un ejemplo de un entorno que puede ser utilizado para ejecutar implementaciones de la memoria descriptiva.
La FIG. 2 representa un ejemplo de una arquitectura conceptual de acuerdo con implementaciones de la memoria descriptiva.
La FIG. 3 representa un ejemplo de un proceso de validación con privacidad protegida de una transacción de cadena de bloques en base a cifrado homomórfico.
La FIG. 4 representa un ejemplo de una transacción de cadena de bloques de acuerdo con las implementaciones de la memoria descriptiva.
La FIG. 5 representa otro ejemplo de un proceso de validación con privacidad protegida de una transacción de cadena de bloques en base a cifrado homomórfico.
La FIG. 6 representa un ejemplo de un procedimiento que puede ser ejecutado de acuerdo con implementaciones de la memoria descriptiva.
La FIG. 7 representa otro ejemplo de un procedimiento que puede ser ejecutado de acuerdo con implementaciones de la memoria descriptiva.
La FIG. 8 representa un ejemplo de un nodo de cadena de bloques que puede llevar a cabo un proceso de acuerdo con implementaciones de la memoria descriptiva.
Los símbolos de referencia similares en los distintos dibujos indican elementos similares.
DESCRIPCIÓN DETALLADA
Las implementaciones de la memoria descriptiva incluyen procedimientos implementados por ordenador para verificaciones de preservación de privacidad no interactivas de transacciones de cadena de bloques. Más en particular, las implementaciones de la memoria descriptiva se refieren a un procedimiento implementado por ordenador capaz de validar múltiples transacciones asociadas a una cuenta de un nodo de cadena de bloques en paralelo, en base a esquemas de compromiso y cifrado homomórfico sin revelar información de privacidad, tal como importes de transacciones, saldos de cuentas o números aleatorios para generar compromisos con otros nodos de cadena de bloques. En algunas implementaciones, las acciones incluyen recibir datos de transacción asociados a la transacción, donde los datos de transacción comprenden: datos representativos de una pluralidad de activos, un primer compromiso que oculta un primer número aleatorio y un importe de transacción de la transacción, un segundo compromiso que oculta un segundo número aleatorio y un cambio calculado en base a deducir el importe de transacción de un valor total de la pluralidad de activos, el importe de transacción y un tercer número aleatorio, ambos cifrados por una clave pública del segundo nodo en base a un esquema de cifrado homomórfico (HE) determinista lineal, el cambio y un cuarto número aleatorio, ambos cifrados por una clave pública del primer nodo en base al esquema de HE determinista lineal, una o más pruebas de intervalo, una prueba de conocimiento nulo (ZKP), y una firma digital generada en base a una clave privada correspondiente a la clave pública del primer nodo; verificar la firma digital en base a la clave pública del primer nodo; determinar que la una o más pruebas de intervalo demuestran que el importe de transacción y el cambio son cada uno mayores que, o iguales a, cero; determinar que el valor total de la pluralidad de activos es igual a una suma del importe de transacción y del cambio; y determinar, en base a la ZKP, que la transacción es válida al determinar que el primer número aleatorio es igual al tercer número aleatorio, el segundo número aleatorio es igual al cuarto número aleatorio y el importe de transacción oculto en el primer compromiso es igual al importe de transacción cifrado por la clave pública del segundo nodo. Otras implementaciones incluyen sistemas, aparatos y programas informáticos correspondientes, configurados para realizar las acciones de los procedimientos, codificados en dispositivos de almacenamiento informático.
Para proporcionar un contexto adicional para las implementaciones de la memoria descriptiva, y como se ha introducido anteriormente, los sistemas de libro mayor distribuido (DLS), que también pueden denominarse redes de consenso (por ejemplo, formadas por nodos de igual a igual), y redes de cadena de bloques, permiten a las entidades participantes realizar transacciones de forma segura e inmutable y almacenar datos. La cadena de bloques se utiliza en el presente documento para hacer referencia, en general, a un DLS sin hacer referencia a ningún caso de uso particular.
Una cadena de bloques es una estructura de datos que almacena transacciones de manera que las transacciones son inmutables y pueden verificarse posteriormente. Una cadena de bloques incluye uno o más bloques. Cada uno de los bloques de la cadena está vinculado a un bloque anterior inmediatamente antes de él en la cadena al incluir un valor hash criptográfico del bloque anterior. Cada uno de los bloques también incluye una marca de tiempo, su propio valor hash criptográfico y una o más transacciones. Las transacciones, que ya han sido verificadas por los nodos de la red de cadena de bloques, se someten a una función hash y se codifican en un árbol Merkle. Un árbol Merkle es una estructura de datos en la que los datos en los nodos hoja del árbol se han sometido a una función hash, y todos los valores hash en cada una de las ramas del árbol se concatenan en la raíz de la rama. Este proceso continúa subiendo por el árbol hasta la raíz de todo el árbol, que almacena un valor hash que es representativo de todos los datos del árbol. Un valor hash que pretende ser de una transacción almacenada en el árbol se puede verificar rápidamente determinando si es coherente con la estructura del árbol.
Mientras que una cadena de bloques es una estructura de datos para almacenar transacciones, una red de cadena de bloques es una red de nodos de cálculo que gestionan, actualizan y mantienen una o más cadenas de bloques. Como se presentó anteriormente, una red de cadena de bloques se puede proporcionar como una red de cadena de bloques pública, una red de cadena de bloques privada o una red de cadena de bloques de consorcio.
En una cadena de bloques pública, el proceso de consenso está controlado por nodos de la red de consenso. Por ejemplo, cientos, miles, incluso millones de entidades pueden participar en una cadena de bloques pública, cada una de las cuales opera al menos un nodo en la cadena de bloques pública. En consecuencia, la cadena de bloques pública puede considerarse una red pública con respecto a las entidades participantes. En algunos ejemplos, la mayoría de las entidades (nodos) deben firmar cada uno de los bloques para que el bloque sea válido y se añada a la cadena de bloques. Las redes de cadena de bloques públicas de ejemplo incluyen redes de pago de igual a igual particulares que utilizan un libro mayor distribuido, denominado cadena de bloques. Como se señaló anteriormente, el término cadena de bloques, sin embargo, se utiliza para hacer referencia, en general, a libros mayores distribuidos sin una referencia particular a una red de cadena de bloques particular.
En general, una cadena de bloques pública admite transacciones públicas. Una transacción pública se comparte con todos los nodos de la cadena de bloques y la cadena de bloques se repite en todos los nodos. Es decir, todos los nodos están en perfecto estado de consenso con respecto a la cadena de bloques. Para lograr un consenso (p. ej., un acuerdo para la adición de un bloque a una cadena de bloques), se implementa un protocolo de consenso en la red de cadena de bloques. Ejemplos de protocolos de consenso incluyen, sin limitación, prueba de trabajo (POW), prueba de participación (POS) y prueba de autoridad (POA). En el presente documento se hace referencia a POW como un ejemplo no limitativo.
Las implementaciones de la memoria descriptiva incluyen procedimientos implementados por ordenador para verificaciones de preservación de privacidad no interactivas de transacciones de cadena de bloques. Más en particular, las implementaciones de la memoria descriptiva se refieren a un procedimiento implementado por ordenador capaz de validar múltiples transacciones asociadas a una cuenta de un nodo de cadena de bloques en paralelo, en base a esquemas de compromiso y cifrado homomórfico sin revelar información de privacidad, tal como importes de transacciones, saldos de cuentas o números aleatorios para generar compromisos con otros nodos de cadena de bloques.
De acuerdo con las implementaciones de la memoria descriptiva, los nodos de cadena de bloques pueden utilizar un modelo de cuenta genérico que puede admitir verificaciones de transacciones en paralelo como un procedimiento de mantenimiento de registros. En comparación con el modelo de saldo de cuenta, los nodos de cadena de bloques que adoptan el modelo de cuenta genérico pueden mantener registros de una pluralidad de activos en lugar de saldos de cuenta. Cada uno de la pluralidad de activos puede asociarse a al menos uno de entre un tipo de activo, un ID de activo o un valor de activo. El activo bajo el modelo de cuenta genérico puede estar en cualquier forma o tipo, tal como monetario o fijo. Los activos monetarios pueden incluir moneda real o criptomoneda. En algunas implementaciones, los activos fijos pueden convertirse en activos monetarios asociados a una cantidad monetaria. La cantidad monetaria puede utilizarse entonces para realizar transacciones entre cuentas de una red de cadena de bloques. A efectos ilustrativos, se supone que los activos descritos en las implementaciones de la memoria descriptiva se convierten en el mismo tipo de moneda y se guardan en las cuentas de cadena de bloques bajo el modelo de cuenta genérico.
Para proteger la privacidad de datos, las transacciones se pueden registrar en una cadena de bloques (libro mayor) en base al compromiso sin revelar el importe de transacción o la información de cantidad monetaria asociada a las cuentas de usuario de cadena de bloques. Un esquema de compromiso puede utilizarse para generar un compromiso de un importe de transacción utilizando un número aleatorio. Un esquema de compromiso de ejemplo incluye, sin limitación, el esquema de PC. Debido a que el importe de transacción está oculto en el compromiso, se pueden utilizar una o más pruebas de intervalo para demostrar que el importe de transacción no excede el valor de la cuenta de usuario de cadena de bloques.
Bajo el modelo de saldo de cuenta, las pruebas de intervalo están asociadas al saldo de cuenta. Si se realiza más de una transacción, pero no todas las transacciones se validan y registran en la cadena de bloques, las pruebas de intervalo pueden estar asociadas a saldos de cuenta incorrectos y, por lo tanto, pueden no ser válidas. En comparación, bajo el modelo de cuenta genérico, el valor de cuenta puede calcularse como la suma de una pluralidad de activos. Cuando un importe de transacción se va a transferir entre cuentas de usuario de cadena de bloques, al menos una parte de la pluralidad de activos con valor combinado mayor que, o igual a, el importe de transacción puede utilizarse para cubrir el importe de transacción. Se pueden realizar transferencias adicionales con la condición de que los activos restantes tengan un valor combinado mayor que el importe a transferir. Incluso si las transacciones no se validan ni registran en la cadena de bloques, las pruebas de intervalo que muestran que el valor combinado de los activos restantes es mayor que, o igual a, el importe de transacción puede seguir siendo válidas. Por lo tanto, se puede realizar más de una verificación de transacción en paralelo bajo el modelo de cuenta genérico.
De acuerdo con las implementaciones de la memoria descriptiva, las transacciones de cadena de bloques pueden validarse y registrarse en una cadena de bloques (libro mayor) en base al compromiso sin revelar el saldo de cuenta de transacción, el importe de transacción o el número aleatorio utilizado para generar el compromiso. Un esquema de compromiso, tal como el esquema de PC, puede utilizarse para generar un compromiso de un importe de transacción en base a un número aleatorio. El importe de transacción y el número aleatorio pueden cifrarse utilizando HE probabilístico o determinista lineal. El importe de transacción y el número aleatorio también pueden utilizarse para generar un conjunto de valores como ZKP para validar la transacción en base a las propiedades del esquema de HE utilizado. El compromiso del importe de transacción, el importe de transacción cifrado, el número aleatorio y la ZKP pueden ser utilizados por un nodo de cadena de bloques para verificar si la transacción es válida sin que se revelen los saldos de cuenta, el importe de transacción o el número aleatorio.
La FIG. 1 representa un ejemplo de un entorno 100 que puede ser utilizado para ejecutar implementaciones de la memoria descriptiva. En algunos ejemplos, el entorno 100 de ejemplo permite a las entidades participar en una cadena de bloques pública 102. El entorno 100 de ejemplo incluye sistemas informáticos 106, 108 y una red 110. En algunos ejemplos, la red 110 incluye una red de área local (LAN), una red de área amplia (WAN), e Internet, o una combinación de las mismas, y conecta sitios web, dispositivos de usuario (p. ej., dispositivos informáticos) y sistemas de procesamiento. En algunos ejemplos, se puede acceder a la red 110 a través de un enlace de comunicaciones cableado y/o inalámbrico.
En el ejemplo representado, los sistemas informáticos 106, 108 pueden incluir cada uno cualquier sistema informático apropiado que permita la participación como nodo en la cadena de bloques pública 102. Dispositivos informáticos de ejemplo incluyen, sin limitación, un servidor, un ordenador de sobremesa, un ordenador portátil, una tableta electrónica y un teléfono inteligente. En algunos ejemplos, los sistemas informáticos 106, 108 alojan uno o más servicios implementados por ordenador para interactuar con la cadena de bloques pública 102. Por ejemplo, el sistema informático 106 puede alojar servicios implementados por ordenador de una primera entidad (p. ej., el usuario A), tal como un sistema de gestión de transacciones que la primera entidad utiliza para gestionar sus transacciones con otra u otras entidades (p. ej., otros usuarios). El sistema informático 108 puede alojar servicios implementados por ordenador de una segunda entidad (p. ej., el usuario B), tal como un sistema de gestión de transacciones que la segunda entidad utiliza para gestionar sus transacciones con otra u otras entidades (p. ej., otros usuarios). En el ejemplo de la FIG. 1, la cadena de bloques pública 102 se representa como una red de nodos de igual a igual, y los sistemas informáticos 106, 108 proporcionan nodos de la primera entidad, y de la segunda entidad respectivamente, que participan en la cadena de bloques pública 102.
La FIG. 2 representa un ejemplo de una arquitectura conceptual 200 de acuerdo con implementaciones de la memoria descriptiva. La arquitectura conceptual 200 de ejemplo incluye una capa de entidad 202, una capa de servicios alojados 204 y una capa de cadena de bloques pública 206. En el ejemplo representado, la capa de entidad 202 incluye tres entidades, Entidad_1 (E1), Entidad_2 (E2) y Entidad_3 (E3), teniendo cada una de las entidades un respectivo sistema de gestión de transacciones 208.
En el ejemplo representado, la capa de servicios alojados 204 incluye interfaces de cadena de bloques 210 para cada uno de los sistemas de gestión de transacciones 208. En algunos ejemplos, un sistema de gestión de transacciones respectivo 208 se comunica con una interfaz de cadena de bloques respectiva 210 a través de una red (por ejemplo, la red 110 de la FIG. 1) utilizando un protocolo de comunicación (por ejemplo, protocolo de transferencia de hipertexto seguro (HTTPS)). En algunos ejemplos, cada interfaz de cadena de bloques 210 proporciona una conexión de comunicación entre un sistema de gestión de transacciones respectivo 208 y la capa de cadena de bloques 206. Más particularmente, cada una de las interfaces de cadena de bloques 210 permite a la respectiva entidad realizar transacciones registradas en una red de cadena de bloques 212 de la capa de cadena de bloques 206. En algunos ejemplos, la comunicación entre una interfaz de cadena de bloques 210 y la capa de cadena de bloques 206 se realiza utilizando llamadas a procedimientos remotos (RPC). En algunos ejemplos, las interfaces de cadena de bloques 210 "alojan" nodos de cadena de bloques para los respectivos sistemas de gestión de transacciones 208. Por ejemplo, las interfaces de cadena de bloques 210 proporcionan la interfaz de programación de aplicaciones (API) para acceder a la red de cadena de bloques 212.
Como se describe en el presente documento, la red de cadena de bloques 212 se proporciona como una red de igual a igual que incluye una pluralidad de nodos 214 que registran de forma inmutable información en una cadena de bloques 216. Aunque se representa esquemáticamente una única cadena de bloques 216, se proporcionan múltiples copias de la cadena de bloques 216, que se mantienen en la red de cadena de bloques 212. Por ejemplo, cada uno de los nodos 214 almacena una copia de la cadena de bloques 216. En algunas implementaciones, la cadena de bloques 216 almacena información asociada a transacciones que se realizan entre dos o más entidades que participan en la cadena de bloques pública.
La FIG. 3 representa un ejemplo de un proceso 300 de validación con privacidad protegida de una transacción de cadena de bloques en base a HE. En un nivel alto, el proceso 300 se lleva a cabo por un nodo de usuario A 302, un nodo de usuario B (no mostrado en la FIG. 3) y un nodo de cadena de bloques 304, también denominado nodo de consenso. Tanto la cuenta del nodo de usuario A 302 como la cuenta del nodo de usuario B pueden tener un modelo de mantenimiento de registros basado en un modelo de cuenta genérico. Es decir, los registros de cuentas del nodo de usuario A 302 y del nodo de usuario B se mantienen como una pluralidad de activos. Una transacción, tal como una transferencia de valor, se puede realizar desde el nodo de usuario A 302 al nodo de usuario B. El nodo de usuario
A 302 puede seleccionar uno o más activos de cuenta que tengan un valor total mayor que o igual al importe de transacción para cubrir la transacción. La diferencia entre un valor total del uno o más activos y el importe de transacción puede considerarse como el cambio de la transacción que queda en el nodo de usuario A 302.
Para proteger la privacidad de las cuentas, el nodo de usuario A 302 puede generar compromisos de valores de los activos utilizados para cubrir la transacción. El nodo de usuario A 302 también puede generar un compromiso del importe de transacción de la transacción. El nodo de usuario A 302 también puede usar HE para cifrar el importe de transacción, el cambio y los números aleatorios utilizados para generar los compromisos. Para verificar la validez de la transacción, el nodo de cadena de bloques 304 puede comparar el importe de transacción, el cambio y los números aleatorios ocultos en los compromisos y cifrados mediante HE en base a una ZKP. Si el importe de transacción, el cambio y los números aleatorios coinciden, se determina que la transacción es válida por el nodo de cadena de bloques
304. Más detalles del proceso 300 de ejemplo se analizan en la siguiente descripción de la FIG. 3.
En 306, el nodo de usuario A 302 selecciona una pluralidad de activos para transferir un importe de transacción al nodo de usuario B. El nodo de usuario A 302 y el nodo de usuario B pueden ser nodos de consenso de cadena de bloques o nodos de usuario que utilizan la red de cadena de bloques sin participar en el proceso de consenso. Tal como se analizó anteriormente, el nodo de usuario A 302 puede usar un modelo de cuenta genérico para mantener registros. En lugar de mantener el saldo de cuenta para su registro bajo el modelo de saldo de cuenta, el valor de cuenta del nodo de usuario A 302 se mide por el valor total de los activos que posee. El nodo de usuario A 302 puede seleccionar una pluralidad de activos que tienen valor suficiente para cubrir el importe de transacción. Por ejemplo, si el importe de transacción es de 7,5 dólares estadounidenses, el nodo de usuario A 302 puede seleccionar tres activos que valen 5, 2 y 1 dólares estadounidenses, respectivamente, para cubrir el importe de transacción.
En algunas implementaciones, cada activo puede asociarse a una dirección de transacción o ID de activo que identifica el activo correspondiente. El ID de activo puede ser el valor hash de la información de activo. Los ID de activo de k activos seleccionados pueden representarse como ID1, ..., IDk .
En 308, el nodo de usuario A 302 calcula un cambio en base a un valor total de la pluralidad de activos y el importe de transacción. Debido a que los activos se seleccionan para tener un valor total mayor que el importe de transacción, el cambio se puede calcular como el valor total de los activos seleccionados deducido por el importe de transacción.
Usando t para representar el importe de transacción y t0 para representar el cambio, el cálculo del cambio puede expresarse como tü = a1 + ... ak - t, donde a1, ..., ak son, respectivamente, seleccionados por el nodo de usuario A 302 para cubrir el importe de transacción t.
En 310, el nodo de usuario A 302 genera un número aleatorio correspondiente al importe de transacción y un número aleatorio correspondiente al cambio. El número aleatorio correspondiente al importe de transacción t puede denotarse como r. El número aleatorio correspondiente al cambio t0 puede denotarse como r0. En algunas implementaciones, se puede generar una pluralidad de números aleatorios para producir compromisos de los valores de activo. Por ejemplo, supóngase que a1, ..., ak son los valores de activo, los números aleatorios que corresponden a los valores de activo se pueden expresar como ra1, ... , rak.
En algunas implementaciones, el número aleatorio r0 puede calcularse en lugar de generarse aleatoriamente. El cálculo se puede expresar como r0 = ra1 +... rak - r, donde r es el número aleatorio generado para producir compromiso para el importe de transacción t. Mediante el uso del número aleatorio calculado r0 , el nodo de usuario A 302 no necesita generar una ZKP adicional para demostrar que el valor total de los activos transferidos es igual al valor total de los activos recibidos. En algunas implementaciones, otro número aleatorio r' puede calcularse como r' = r1+ ... rk
- r - r0 , para ayudar a la ZKP.
En 312, el nodo de usuario A 302 genera compromisos del importe de transacción y el cambio, y cifra los números aleatorios correspondientes en base a un HE probabilístico. En algunas implementaciones, se pueden utilizar esquemas de compromiso homomórficos, tal como PC, para generar los compromisos. Utilizando el PC como ejemplo no limitativo, el PC del importe de transacción t puede generarse utilizando el número aleatorio r, que puede expresarse como PC(r, t) = g rht, donde g y h pueden ser generadores de una curva elíptica, y PC(r, t) es una multiplicación escalar de puntos de curva. De manera similar, el PC del cambio t0 puede expresarse como PC(r0 , t0) = g r0ht0.
El número aleatorio r puede cifrarse utilizando la clave pública del nodo de usuario B en base a un esquema de HE probabilístico, tal como un esquema de cifrado de Okamoto-Uchiyama (OU). Debe entenderse que otros esquemas de HE, tales como Boneh-Goh-Nissim, también pueden utilizarse. Utilizando OU como ejemplo no limitativo, el número aleatorio puede cifrarse en base a OU al tratar el importe de transacción t como un número aleatorio, que puede expresarse como OUB(r, t) = urvt , o simplemente OUB(t), donde u es un generador de (Z/nZ)* que cumple las condiciones v = un mod n y n = p x q, donde p y q son dos números primos. Un OU probabilístico puede satisfacer la propiedad de que OU(a b) = OU(a) x OU(b), donde a y b son el texto plano utilizado para OU.
El número aleatorio r0 puede cifrarse utilizando la clave pública del nodo de usuario A 302. El número aleatorio puede cifrarse en base a OU tratando el cambio t0 como un número aleatorio, que puede expresarse como OUA (r0 , tü).
El texto cifrado del importe de transacción puede expresarse entonces como T = (PC(t, r), OUB(r, t)), y el texto cifrado del cambio puede expresarse como T0 = (PC(t0 , r0), OUA (r0 , t0)). De manera similar, el texto cifrado de los k activos seleccionados puede expresarse como T i = (PC(t¡, n ), OUa (h , t i)), donde i = 1, ..., k.
En 314, el nodo de usuario A 302 genera una o más pruebas de intervalo. En algunas implementaciones, se puede generar una primera prueba de intervalo, RP1, para mostrar que el importe de transacción t > 0. Se puede generar una segunda prueba de intervalo, RP2 , para mostrar que el cambio t0 > 0, o, en otras palabras, que el valor total de la pluralidad de activos es mayor que, o igual a, el importe de transacción.
En 316, el nodo de usuario A 302 genera una ZKP. La ZKP puede utilizarse para mostrar que el número aleatorio y el importe de transacción ocultos en PC(r, t) son los mismos que el número aleatorio y el importe de transacción cifrados en OUB(r, t), y el número aleatorio y el importe de transacción ocultos en PC(r0 , t0) son los mismos que el número aleatorio y el importe de transacción cifrados en OUA (r0 , t0). Para generar la ZKP, se pueden seleccionar dos números aleatorios t'1 y r'1. Los dos números aleatorios se pueden utilizar para generar tres valores, que son P = PC(t'1, r'1), P' = OUB(r'1, t '1), P" = OUA (r'1, t '1). Los tres valores se pueden utilizar para generar un valor hash expresado como x = Hash(P, P', P"). El valor hash x se puede utilizar para calcular t'2 = t'1 + xt, r'2 = r'1 + xr, t'3 = t'1 + xt y r'3 = r'1 + xr0. La ZKP puede expresarse entonces como (P, P', t'2 , r'2 , P", t'3 , r'3).
En 318, el nodo de usuario A 302 utiliza una clave privada para generar una firma digital para firmar datos de transacción. En algunas implementaciones, los datos de transacción pueden incluir los ID de activo de los k activos seleccionados (ID1, ..., IDk), el texto cifrado del importe de transacción (T), el texto cifrado del cambio (T0), las pruebas de intervalo (RP1 y RP2), el número aleatorio r' y la ZKP.
En 320, el nodo de usuario A 302 envía la copia firmada digitalmente de los datos de transacción a una red de cadena de bloques.
En 322, el nodo de cadena de bloques 304 verifica la firma digital. La verificación de la firma digital se puede realizar para garantizar que los datos de transacción sean enviados por el nodo de usuario A 302. En algunas implementaciones, el nodo de cadena de bloques 304 incluye un mecanismo de evitación de doble gasto que puede verificar si la transacción ya se ha realizado. De ser así, el nodo de cadena de bloques 304 puede rechazar la transacción.
En 324, el nodo de cadena de bloques 304 verifica si los activos seleccionados están asociados a la cuenta del nodo de usuario A. La verificación puede basarse en los ID de activo de los activos.
En 326, el nodo de cadena de bloques 304 verifica que el valor total de la pluralidad seleccionada de activos es igual a la suma del importe de transacción y del cambio. En otras palabras, la cadena de bloques verifica que a1 +... ak = t t0. Como se analizó anteriormente, bajo el modelo de cuenta genérico, los activos se pueden mantener en la cadena de bloques como PC para proteger la privacidad de datos. De acuerdo con el homomorfismo de PC, PC(ra1, a1) x ... x PC(rak, ak) = PC(ra1 + ... rak, a1 + ... ak), y PC(r, t) x PC(r0 , to) = PC(r r0 , t to). Por lo tanto, al demostrarse que PC(ra1, a1) x ... x PC(rak, ak) = PC(r, t) x PC(r0 , to) x g r', puede probarse que a1 + ... ak = t t0.
En 328, el nodo de cadena de bloques 304 verifica la una o más pruebas de intervalo.
En 330, el nodo de cadena de bloques 304 verifica la ZKP. Tal como se analizó anteriormente, la ZKP puede generarse para verificar si el número aleatorio correspondiente al importe de transacción cifrado utilizando la clave pública del nodo de usuario B es el mismo que el número aleatorio correspondiente oculto por el PC, y si el número aleatorio correspondiente al cambio cifrado utilizando la clave pública del nodo de usuario A 302 es el mismo que el número aleatorio correspondiente oculto por el PC. En algunas implementaciones, para verificar la ZKP, el nodo de cadena de bloques 304 puede calcular primero el valor hash x como x = Hash(P, P', P"). El nodo de cadena de bloques 304 puede verificar entonces si las condiciones PC(t'2 , r'2) = P x PC(t, r)x , OUB(r'2 , t'2) = P' x OUB(r, t)x , PC(t'3 , r'3) = P x PC(t0 , r0)x y OUA (r'3 , t'3) = P" x OUA (r0 , to)x son todas verdaderas. Si todas son verdaderas, el proceso 300 de ejemplo avanza hasta 332. De lo contrario, el nodo de cadena de bloques 304 puede rechazar la transacción.
En 332, el nodo de cadena de bloques 304 actualiza las cuentas del nodo de usuario A 302 y del nodo de usuario B. Debido a que las cuentas del nodo de usuario A 302 y del nodo de usuario B mantienen activos como registros bajo el modelo de cuenta genérico, después de la transacción, la pluralidad de activos transferidos desde el nodo de usuario A 302 pueden eliminarse de la cuenta del nodo de usuario A 302. El cambio se puede agregar nuevamente a la cuenta del nodo de usuario A 302. El importe de transacción y el ID de activo correspondiente se pueden agregar como un nuevo activo a la cuenta del nodo de usuario B. En algunas implementaciones, la actualización se puede realizar en base a la actualización de listas de activos mantenidas por cuentas correspondientes del nodo de usuario A 302 y el nodo de usuario B. En algunas implementaciones, la actualización se puede realizar en base a la adición de textos cifrados del importe de transacción y el cambio en los valores de activo cifrados mantenidos por el nodo de usuario A 302 y el nodo de usuario B. La actualización de las cuentas se describe en más detalle en el presente documento con referencia a la FIG. 4.
La FIG. 4 representa un ejemplo de una transacción de cadena de bloques 400 de acuerdo con las implementaciones de la memoria descriptiva. Como se muestra en la transacción de cadena de bloques 400 de ejemplo, un nodo de usuario A 402 transfiere un importe de transacción t a un nodo de usuario B 404. Antes de la transacción, el nodo de usuario A 402 tiene n activos que incluyen (ID1, T1), (ID2 , T2), (IDn, Tn).
Utilizando como ejemplo los esquemas de compromiso, los esquemas de cifrado y el proceso de transacción descritos en el presente documento con referencia a la FIG. 3, el nodo de usuario A 402 puede generar los datos de transacción 408, que pueden incluir los ID de activo de los k activos seleccionados, ID, ID2 , ..., IDk . Los datos de transacción 408 pueden incluir además T0 , T, RP1, RP2 , r' y la ZKP. Después de que se generen los datos de transacción 408, el nodo de usuario A 402 puede añadir su firma digital y enviar los datos de transacción firmados digitalmente a la red de cadena de bloques 406 para su consenso.
Después de la transacción, los k activos seleccionados pueden eliminarse de la cuenta del activo de usuario A 402. El cambio se puede volver a añadir al nodo de usuario A 402. Por lo tanto, el nodo de usuario A 402 puede tener los siguientes activos expresados como (IDk+1, Tk+1), (IDk+2, Tk+2), ..., (IDn, Tn), (ID0 , T0), donde ID0 representa el ID de activo del cambio tü .
Antes de la transacción, el nodo de usuario B 404 tiene m activos, que pueden expresarse como (IDr , T1 ), (ID?, T?), (IDm', Tm ). Después de la transacción, el importe de transacción se puede añadir al nodo de usuario B 404. El nodo de usuario B 404 puede tener los siguientes activos expresados como (IDr , T r ), (ID?, T?), (IDm', Tm'), (IDt , t ), donde IDt representa el ID de activo del importe de transacción t.
La FIG. 5 representa un ejemplo de un proceso 500 de validación con privacidad protegida de una transacción de cadena de bloques en base a HE. En un nivel alto, el proceso 500 de ejemplo se lleva a cabo por un nodo de usuario A 502, un nodo de usuario B (no mostrado en la FIG. 5) y un nodo de cadena de bloques 504, también denominado nodo de consenso. Tanto la cuenta del nodo de usuario A 502 como la cuenta del nodo de usuario B pueden estar basados en un modelo de cuenta genérico. Una transacción, tal como una transferencia de valor, se puede realizar desde el nodo de usuario A 502 al nodo de usuario B. El nodo de usuario A 502 puede seleccionar uno o más activos de cuenta que tengan un valor total mayor que o igual al importe de transacción para cubrir la transacción. La diferencia entre un valor total del uno o más activos y el importe de transacción puede considerarse como el cambio de la transacción que queda en el nodo de usuario A 502.
Para proteger la privacidad de las cuentas, el nodo de usuario A 502 puede generar compromisos de valores de los activos utilizados para cubrir la transacción y el importe de la transacción utilizando un esquema de compromiso, tal como PC. El nodo de usuario A 502 también puede utilizar HE determinista lineal para cifrar números aleatorios utilizados para generar los compromisos. El HE determinista lineal puede tener las siguientes propiedades: HE(s t) = HE(s) x He(t) y HE(kt) = HE(t)k . Para verificar la validez de la transacción, el nodo de cadena de bloques 504 puede comparar los números aleatorios ocultos en el compromiso y cifrados por HE en base a una ZKP. Si los números aleatorios coinciden, el nodo de cadena de bloques 504 puede determinar que la transacción es válida. Más detalles del proceso 500 de ejemplo se analizan en la siguiente descripción de la FIG. 5.
En 506, el nodo de usuario A 502 selecciona una pluralidad de activos para transferir un importe de transacción al nodo de usuario B. El nodo de usuario A 502 y el nodo de usuario B pueden ser nodos de consenso de cadena de bloques o nodos de usuario que utilizan la red de cadena de bloques sin participar en el proceso de consenso. El nodo de usuario A 502 puede seleccionar una pluralidad de activos que tienen valor suficiente para cubrir el importe de transacción.
En algunas implementaciones, cada activo puede asociarse a una dirección de transacción o ID de activo que identifica el activo correspondiente. El ID de activo puede ser el valor hash de la información de activo. Los ID de activo de k activos seleccionados pueden representarse como ID1, ..., IDk .
En 508, el nodo de usuario A 502 calcula un cambio en base a un valor total de la pluralidad de activos y el importe de transacción. Debido a que los activos se seleccionan para tener un valor total mayor que el importe de transacción, el cambio se puede calcular como el valor total de los activos seleccionados deducido por el importe de transacción.
Usando t para representar el importe de transacción y t0 para representar el cambio, el cálculo del cambio puede expresarse como t0 = a1 + ... ak - t, donde a1, ..., ak son, respectivamente, los valores de activo de k activos seleccionados por el nodo de usuario A 502 para cubrir un importe de transacción t.
En 510, el nodo de usuario A 502 genera un número aleatorio correspondiente al importe de transacción y un número aleatorio correspondiente al cambio. El número aleatorio correspondiente al importe de transacción t puede denotarse como r. El número aleatorio correspondiente al cambio tü puede denotarse como r0. En algunas implementaciones, se puede generar una pluralidad de números aleatorios para producir compromisos de los valores de activo. Por ejemplo, supóngase que a1, ..., ak son los valores de activo, los números aleatorios que corresponden a los valores de activo se pueden expresar como ra1, ... , rak.
En algunas implementaciones, el número aleatorio r0 puede calcularse en lugar de generarse aleatoriamente. El cálculo se puede expresar como r0 = ra1 +... rak - r, donde r es el número aleatorio generado para producir compromiso para el importe de transacción t. Calculando el r0 , el nodo de usuario A 502 no necesita generar una ZKP adicional para demostrar que el valor total de los activos transferidos es igual al valor total de los activos recibidos. En algunas implementaciones, un número aleatorio r' puede calcularse como r' = n+ ... rk - r - r0.
En 512, el nodo de usuario A 502 genera compromisos del importe de transacción y el cambio, y cifra los números aleatorios correspondientes en base a un HE determinista. En algunas implementaciones, se pueden utilizar esquemas de compromiso homomórficos, tal como PC, para generar los compromisos. Utilizando el PC como ejemplo no limitativo, el PC del importe de transacción t puede generarse utilizando el número aleatorio r, que puede expresarse como PC(r, t) = g rht, donde g y h pueden ser generadores de una curva elíptica, y PC(r, t) es una multiplicación escalar de puntos de curva. De manera similar, el PC del cambio t0 puede expresarse como PC(r0 , t0) = g r0ht0.
El número aleatorio r puede cifrarse utilizando la clave pública del nodo de usuario B en base a un HE determinista lineal. El HE determinista lineal se puede obtener de un HE probabilístico, tal como HE de Paillier, Benaloh, OU, de Naccache-Stern, de Boneh-Goh-Nissim, de Damgard-Jurik o de misma probabilidad, fijando el número aleatorio en el esquema de HE a 0 o 1 u otro número apropiado. El número aleatorio cifrado puede expresarse como HE(r).
El número aleatorio r0 puede cifrarse utilizando la clave pública del nodo de usuario A. El número aleatorio puede cifrarse en base a un HE determinista lineal. El número aleatorio cifrado puede expresarse como HE(r0).
El texto cifrado del importe de transacción t puede expresarse entonces como T = (grht , HEB(r)), y el texto cifrado del cambio puede expresarse como T0 = (gr0ht0 , HEa (^)). De manera similar, el texto cifrado de los k activos seleccionados puede expresarse como Ti = (griht i, HE(ri), donde i = 1, ..., k.
En 514, el nodo de usuario A 502 genera una o más pruebas de intervalo. En algunas implementaciones, se puede generar una primera prueba de intervalo, RP1, para mostrar que el importe de transacción t > 0. Se puede generar una segunda prueba de intervalo, RP2 , para mostrar que el cambio t0 > 0, o, en otras palabras, que el valor total de la pluralidad de activos es mayor que, o igual a, el importe de transacción.
En 516, el nodo de usuario A 502 genera una ZKP. La ZKP se puede utilizar para mostrar que el número aleatorio oculto en PC(r, t) es el mismo que el número aleatorio cifrado en HE(r), y el número aleatorio oculto en PC(r0 , to) es el mismo que el número aleatorio cifrado en HE(r0). Para generar la ZKP, se pueden seleccionar dos números aleatorios t'1 y r'1. Los dos números aleatorios se pueden utilizar para generar tres valores, que son P = gr 1 hf 1, P' = HEb ^ ) , P" = HEa (^1). Los tres valores se pueden utilizar para generar un valor hash expresado como x = Hash(P, P', P"). El valor hash x se puede utilizar para calcular t'2 = t'1 + xt, r'2 = r'1 + xr, t'3 = t'1 + xt y r'3 = r'1 + xr0. La ZKP puede expresarse entonces como (P, P', t'2 , r'2 , P", t'3 , r'3).
En 518, el nodo de usuario A 502 utiliza una clave privada para generar una firma digital para firmar datos de transacción. En algunas implementaciones, los datos de transacción pueden incluir los ID de activo de los k activos seleccionados (ID1, ..., IDk), el texto cifrado del importe de transacción (T), el texto cifrado del cambio (T0), las pruebas de intervalo (RP1 y RP2), el número aleatorio r' y la ZKP.
En 520, el nodo de usuario A 502 envía la copia firmada digitalmente de los datos de transacción a una red de cadena de bloques.
En 522, el nodo 504 de cadena de bloques verifica la firma digital. La verificación de la firma digital se puede realizar para garantizar que los datos de transacción sean enviados por el nodo de usuario A 502. En algunas implementaciones, el nodo de cadena de bloques 504 incluye un mecanismo de evitación de doble gasto que puede verificar si la transacción ya se ha realizado. De ser así, el nodo de cadena de bloques 504 puede rechazar la transacción.
En 524, el nodo de cadena de bloques 504 verifica si los activos seleccionados están asociados a la cuenta del nodo de usuario A. La verificación puede basarse en los ID de activo de los activos.
En 526, el nodo de cadena de bloques 504 verifica que el valor total de la pluralidad seleccionada de activos es igual a la suma del importe de transacción y del cambio. En otras palabras, el nodo de cadena de bloques 504 verifica que a1 +... ak = t t0. Como se analizó anteriormente, bajo el modelo de cuenta genérico, los activos se pueden mantener en la cadena de bloques como PC para proteger la privacidad de datos. De acuerdo con el homomorfismo de PC, PC(ra i , ai ) x ... x PC(rak, ak) = PC(ra i + ... rak, a i + ... ak), y PC(r, t) x PC(r0 , tü) = PC(r r0 , t tü). Por lo tanto, al demostrarse que PC(ra i , a i ) x ... x PC(rak, ak) = PC(r, t) x pC(r0 , t0) x gr', puede probarse que a i + ... ak = t t0.
En 528, el nodo de cadena de bloques 504 verifica la una o más pruebas de intervalo.
En 530, el nodo de cadena de bloques 504 verifica la ZKP. Tal como se analizó anteriormente, la ZKP puede generarse para verificar si el número aleatorio correspondiente al importe de transacción cifrado utilizando la clave pública del nodo de usuario B es el mismo que el número aleatorio correspondiente oculto por el PC, y si el número aleatorio correspondiente al cambio cifrado utilizando la clave pública del nodo de usuario A 502 es el mismo que el número aleatorio correspondiente oculto por el PC. En algunas implementaciones, para verificar la ZKP, el nodo de cadena de bloques 504 puede calcular primero el valor hash x como x = Hash(P, P', P"). El nodo de cadena de bloques 504 puede verificar entonces si las condiciones gr'2hf2= P x (grht)x , HEB(r') = P' x HE (r)x , gr'3hf3 = P x (gr0ht0)x y HEA (r'3) = P" x HEA (r0)x son todas verdaderas. Si todas son verdaderas, el proceso 500 de ejemplo avanza hasta 532. De lo contrario, el nodo de cadena de bloques 504 puede rechazar la transacción.
En 532, el nodo de cadena de bloques 504 actualiza las cuentas del nodo de usuario A 502 y del nodo de usuario B. Debido a que las cuentas del nodo de usuario A 502 y del nodo de usuario B mantienen activos como registros bajo el modelo de cuenta genérico, después de la transacción, la pluralidad de activos transferidos desde el nodo de usuario A 502 pueden eliminarse de la cuenta del nodo de usuario A 502. El cambio se puede agregar nuevamente a la cuenta del nodo de usuario A 502. El importe de transacción y el ID de activo correspondiente se pueden agregar como un nuevo activo a la cuenta del nodo de usuario B. En algunas implementaciones, la actualización se puede realizar en base a la actualización de listas de activos mantenidas por cuentas correspondientes del nodo de usuario A 502 y el nodo de usuario B. En algunas implementaciones, la actualización se puede realizar en base a la adición de textos cifrados del importe de transacción y el cambio en los valores de activo cifrados mantenidos por el nodo de usuario A 502 y el nodo de usuario B. Una transacción de cadena de bloques 400 de ejemplo y las actualizaciones de cuenta correspondientes se describen en la descripción de la Fig. 4.
La FIG. 6 representa un ejemplo de un proceso 600 que puede ser ejecutado de acuerdo con implementaciones de la memoria descriptiva. Para mayor claridad de presentación, la siguiente descripción describe generalmente el procedimiento 600 en el contexto de las otras figuras de esta descripción. Sin embargo, se entenderá que el proceso 600 de ejemplo puede realizarse, por ejemplo, mediante cualquier sistema, entorno, software y hardware, o una combinación de sistemas, entornos, software y hardware, según sea apropiado. En algunas implementaciones, las etapas del proceso 600 de ejemplo pueden ejecutarse en paralelo, en combinación, en bucles o en cualquier orden.
En 602, un nodo de consenso recibe datos de transacción asociados a la transacción. En algunos ejemplos, los datos de transacción comprenden datos representativos de una pluralidad de activos, un primer compromiso que oculta un primer número aleatorio y un importe de transacción de la transacción, un segundo compromiso que oculta un segundo número aleatorio y un cambio calculado en base a deducir el importe de transacción de un valor total de la pluralidad de activos, el importe de transacción y un tercer número aleatorio ambos cifrados por una clave pública del segundo nodo en base a un esquema de HE probabilístico, el cambio y un cuarto número aleatorio ambos cifrados por una clave pública del primer nodo en base al esquema de HE probabilístico, una o más pruebas de intervalo, una ZKP y una firma digital generada en base a una clave privada correspondiente a la clave pública del primer nodo.
En algunas implementaciones, cada uno de la pluralidad de activos está asociado a uno o más de un tipo de activo, un valor de activo oculto en un compromiso y un número aleatorio utilizado para generar el compromiso. En algunas implementaciones, el nodo de consenso determina que cada uno de la pluralidad de activos está asociado a un mismo tipo de activo. En algunas implementaciones, el primer compromiso, el segundo compromiso y el compromiso que oculta el valor de activo se generan en base a un esquema de compromiso que es homomórfico.
En algunas implementaciones, el tercer número aleatorio está cifrado en base al esquema de HE probabilístico al tratar el importe de transacción como un número aleatorio, y el cuarto número aleatorio está cifrado en base al esquema de HE probabilístico al tratar el cambio como un número aleatorio. En algunas implementaciones, el primer compromiso y el segundo compromiso se generan en base a un esquema de compromiso de Pedersen, y el esquema de HE probabilístico es un esquema de cifrado de OU.
En algunas implementaciones, la ZKP comprende un compromiso de Pedersen que oculta un quinto número aleatorio y un sexto número aleatorio, un texto cifrado del quinto número aleatorio y el sexto número aleatorio cifrados por la clave pública de la segunda cuenta en base al esquema de cifrado de OU, y un texto cifrado del quinto número aleatorio y el sexto número aleatorio cifrados por la clave pública de la primera cuenta en base al esquema de cifrado de OU.
En 604, el nodo de consenso verifica la firma digital en base a la clave pública del primer nodo.
i i
En 606, el nodo de consenso determina que la una o más pruebas de intervalo demuestran que el importe de transacción y el cambio son cada uno mayores que, o iguales a, cero.
En 608, el nodo de consenso determina que el valor total de la pluralidad de billetes es igual a la suma del importe de transacción y del cambio. En algunas implementaciones, determinar que el valor total de la pluralidad de activos es igual a la suma del importe de transacción y del cambio se realiza en base al homomorfismo del esquema de compromiso.
En 610, el nodo de consenso determina, en base a la ZKP, que la transacción es válida al determinar que el primer número aleatorio es igual al tercer número aleatorio, que el segundo número aleatorio es igual al cuarto número aleatorio y que el importe de transacción oculto en el primer compromiso es igual al importe de transacción cifrado por la clave pública del segundo nodo.
En algunas implementaciones, la transacción se realiza entre una cuenta asociada al primer nodo y una cuenta asociada al segundo nodo, y el procedimiento comprende además actualizar, después de determinar que la transacción es válida, la cuenta asociada al primer nodo y la cuenta asociada al segundo nodo en base al importe de transacción y el cambio. En algunas implementaciones, la ZKP se genera y se utiliza para determinar que la transacción es válida en base a propiedades del HE probabilístico. En algunas implementaciones, determinar que la transacción es válida se realiza en base a la ZKP sin interacciones entre el primer nodo y el segundo nodo a través del exterior de la red de cadena de bloques.
La FIG. 7 representa un proceso 700 de ejemplo que puede ser ejecutado de acuerdo con implementaciones de la memoria descriptiva. Para mayor claridad de presentación, la siguiente descripción describe generalmente el procedimiento 700 en el contexto de las otras figuras de esta descripción. Sin embargo, se entenderá que el proceso 700 de ejemplo puede realizarse, por ejemplo, mediante cualquier sistema, entorno, software y hardware, o una combinación de sistemas, entornos, software y hardware, según sea apropiado. En algunas implementaciones, las etapas del proceso 700 de ejemplo pueden ejecutarse en paralelo, en combinación, en bucles o en cualquier orden.
En 702, un nodo de consenso recibe datos de transacción asociados a la transacción. En algunos ejemplos, los datos de transacción comprenden datos representativos de una pluralidad de activos, un primer compromiso que oculta un primer número aleatorio y un importe de transacción de la transacción, un segundo compromiso que oculta un segundo número aleatorio y un cambio calculado en base a deducir el importe de transacción de un valor total de la pluralidad de activos, el importe de transacción y un tercer número aleatorio ambos cifrados por una clave pública del segundo nodo en base a un esquema de HE determinista lineal, el cambio y un cuarto número aleatorio ambos cifrados por una clave pública del primer nodo en base al esquema de HE determinista lineal, una o más pruebas de intervalo, una ZKP y una firma digital generada en base a una clave privada correspondiente a la clave pública del primer nodo.
En algunas implementaciones, cada uno de la pluralidad de activos está asociado a uno o más de un tipo de activo, un valor de activo oculto en un compromiso y un número aleatorio utilizado para generar el compromiso. En algunas implementaciones, el nodo de consenso determina que cada uno de la pluralidad de activos está asociado a un mismo tipo de activo. En algunas implementaciones, el primer compromiso, el segundo compromiso y el compromiso que oculta el valor de activo se generan en base a un esquema de compromiso que es homomórfico.
En algunas implementaciones, el esquema de HE determinista lineal deriva de un esquema de HE probabilístico basado en cambiar un número aleatorio asociado al esquema de HE probabilístico en un número fijo.
En algunas implementaciones, la ZKP comprende un compromiso que oculta un quinto número aleatorio y un sexto número aleatorio, un texto cifrado del quinto número aleatorio y el sexto número aleatorio cifrados por la clave pública de la segunda cuenta en base al esquema de HE determinista lineal, y un texto cifrado del quinto número aleatorio y el sexto número aleatorio cifrados por la clave pública de la primera cuenta en base al esquema de HE determinista lineal.
En 704, el nodo de consenso verifica la firma digital en base a la clave pública del primer nodo.
En 706, el nodo de consenso determina que la una o más pruebas de intervalo demuestran que el importe de transacción y el cambio son cada uno mayores que, o iguales a, cero.
En 708, el nodo de consenso determina que el valor total de la pluralidad de billetes es igual a la suma del importe de transacción y del cambio. En algunas implementaciones, determinar que el valor total de la pluralidad de activos es igual a la suma del importe de transacción y del cambio se realiza en base al homomorfismo del esquema de compromiso.
En 710, el nodo de consenso determina, en base a la ZKP, que la transacción es válida al determinar que el primer número aleatorio es igual al tercer número aleatorio, que el segundo número aleatorio es igual al cuarto número aleatorio y que el importe de transacción oculto en el primer compromiso es igual al importe de transacción cifrado por la clave pública del segundo nodo.
En algunas implementaciones, la transacción se realiza entre una cuenta asociada al primer nodo y una cuenta asociada al segundo nodo, y el procedimiento comprende además actualizar, después de determinar que la transacción es válida, la cuenta asociada al primer nodo y la cuenta asociada al segundo nodo en base al importe de transacción y el cambio. En algunas implementaciones, la ZKP se genera y se utiliza para determinar que la transacción es válida en base a propiedades del HE determinista lineal. En algunas implementaciones, determinar que la transacción es válida se realiza en base a la ZKP sin interacciones entre el primer nodo y el segundo nodo a través del exterior de la red de cadena de bloques.
La FIG. 8 representa un ejemplo de un nodo de cadena de bloques 800 que puede llevar a cabo un proceso de acuerdo con implementaciones de la memoria descriptiva. En un nivel alto, el nodo de cadena de bloques 800 incluye una unidad de recepción 802, una unidad de verificación 804, una primera unidad de determinación 806, una segunda unidad de determinación 808 y una tercera unidad de determinación 810.
En algunas implementaciones, la unidad de recepción 802 puede funcionar para recibir datos de transacción asociados a la transacción. En algunos ejemplos, los datos de transacción comprenden datos representativos de una pluralidad de activos, un primer compromiso que oculta un primer número aleatorio y un importe de transacción de la transacción, un segundo compromiso que oculta un segundo número aleatorio y un cambio calculado en base a deducir el importe de transacción de un valor total de la pluralidad de activos, el importe de transacción y un tercer número aleatorio ambos cifrados por una clave pública del segundo nodo en base a un esquema de HE probabilístico, el cambio y un cuarto número aleatorio ambos cifrados por una clave pública del primer nodo en base al esquema de HE probabilístico, una o más pruebas de intervalo, una ZKP y una firma digital generada en base a una clave privada correspondiente a la clave pública del primer nodo.
En algunas implementaciones, la unidad de recepción 802 se puede hacer funcionar para recibir datos de transacción asociados a la transacción, donde los datos de transacción comprenden: datos representativos de una pluralidad de activos, un primer compromiso que oculta un primer número aleatorio y un importe de transacción de la transacción, un segundo compromiso que oculta un segundo número aleatorio y un cambio calculado en base a deducir el importe de transacción de un valor total de la pluralidad de activos, el importe de transacción y un tercer número aleatorio ambos cifrados por una clave pública del segundo nodo en base a un esquema de HE determinista lineal, el cambio y un cuarto número aleatorio ambos cifrados por una clave pública del primer nodo en base al esquema de HE determinista lineal, una o más pruebas de intervalo, una ZKP y una firma digital generada en base a una clave privada correspondiente a la clave pública del primer nodo.
En algunas implementaciones, cada uno de la pluralidad de activos está asociado a uno o más de un tipo de activo, un valor de activo oculto en un compromiso y un número aleatorio utilizado para generar el compromiso. En algunas implementaciones, el nodo de cadena de bloques 800 determina que cada uno de la pluralidad de activos está asociado a un mismo tipo de activo. En algunas implementaciones, el primer compromiso, el segundo compromiso y el compromiso que oculta el valor de activo se generan en base a un esquema de compromiso que es homomórfico. En algunas implementaciones, el esquema de HE determinista lineal deriva de un esquema de HE probabilístico basado en cambiar un número aleatorio asociado al esquema de HE probabilístico en un número fijo.
En algunas implementaciones, el tercer número aleatorio está cifrado en base al esquema de HE probabilístico al tratar el importe de transacción como un número aleatorio, y el cuarto número aleatorio está cifrado en base al esquema de HE probabilístico al tratar el cambio como un número aleatorio. En algunas implementaciones, el primer compromiso y el segundo compromiso se generan en base a un esquema de compromiso de Pedersen, y el esquema de HE probabilístico es un esquema de cifrado de OU.
En algunas implementaciones, la ZKP comprende un compromiso de Pedersen que oculta un quinto número aleatorio y un sexto número aleatorio, un texto cifrado del quinto número aleatorio y el sexto número aleatorio cifrados por la clave pública de la segunda cuenta en base al esquema de cifrado de OU, y un texto cifrado del quinto número aleatorio y el sexto número aleatorio cifrados por la clave pública de la primera cuenta en base al esquema de cifrado de OU. En algunas implementaciones, la ZKP comprende un compromiso que oculta un quinto número aleatorio y un sexto número aleatorio, un texto cifrado del quinto número aleatorio y el sexto número aleatorio cifrados por la clave pública de la segunda cuenta en base al esquema de HE determinista lineal, y un texto cifrado del quinto número aleatorio y el sexto número aleatorio cifrados por la clave pública de la primera cuenta en base al esquema de HE determinista lineal.
La unidad de verificación 804 puede hacerse funcionar para verificar la firma digital en base a la clave pública del primer nodo.
La primera unidad de determinación 806 puede hacerse funcionar para determinar que la una o más pruebas de intervalo demuestran que el importe de transacción y el cambio son cada uno mayores que, o iguales a, cero.
La segunda unidad de determinación 808 puede hacerse funcionar para determinar que el valor total de la pluralidad de billetes es igual a la suma del importe de transacción y del cambio. En algunas implementaciones, determinar que el valor total de la pluralidad de activos es igual a la suma del importe de transacción y del cambio se realiza en base al homomorfismo del esquema de compromiso.
La tercera unidad de determinación 810 puede hacerse funcionar para determinar, en base a la ZKP, que la transacción es válida al determinar que el primer número aleatorio es igual al tercer número aleatorio, que el segundo número aleatorio es igual al cuarto número aleatorio y que el importe de transacción oculto en el primer compromiso es igual al importe de transacción cifrado por la clave pública del segundo nodo.
En algunas implementaciones, la transacción se realiza entre una cuenta asociada al primer nodo y una cuenta asociada al segundo nodo, y el nodo de cadena de bloques 800 puede incluir una unidad de actualización que puede hacerse funcionar para actualizar, después de que la tercera unidad de determinación 810 determine que la transacción es válida, la cuenta asociada al primer nodo y la cuenta asociada al segundo nodo en base al importe de transacción y el cambio. En algunas implementaciones, la ZKP se genera y se utiliza para determinar que la transacción es válida en base a propiedades del HE probabilístico. En algunas implementaciones, la ZKP se genera y se utiliza para determinar que la transacción es válida en base a propiedades de1HE determinista lineal. En algunas implementaciones, determinar que la transacción es válida se realiza en base a la ZKP sin interacciones entre el primer nodo y el segundo nodo a través del exterior de la red de cadena de bloques.
Las implementaciones de la materia objeto descrita en esta memoria descriptiva pueden implementarse para lograr ventajas o efectos técnicos particulares. Por ejemplo, las implementaciones de la memoria descriptiva permiten que el saldo de cuenta y el importe de transacción de nodos de cadena de bloques sean privados durante las transacciones. El destinatario de una transferencia de fondos no necesita confirmar la transacción o utilizar un número aleatorio para verificar un compromiso; la validación de transacción puede ser no interactiva. Un nodo de cadena de bloques puede validar la transacción en base a HE y esquemas de compromiso para permitir una prueba de conocimiento nulo.
La metodología descrita permite mejorar la seguridad de cuenta/datos de diversos dispositivos informáticos móviles. El saldo de las cuentas y los importes de transacción pueden cifrarse en base a HE y ocultarse mediante esquemas de compromiso. Por lo tanto, un nodo de consenso puede actualizar los saldos de cuenta en el libro mayor después de la transacción en base a las propiedades de HE sin revelar el saldo de cuenta real de la cuenta. Debido a que no es necesario enviar el número aleatorio a un destinatario para confirmar la transacción, se puede reducir el riesgo de fuga de datos y se necesitan menos recursos de cálculo y de memoria para gestionar el número aleatorio.
Las implementaciones y las operaciones descritas en esta memoria descriptiva se pueden implementar en circuitos de electrónica digital, o en software, firmware o hardware de ordenador, incluidas las estructuras divulgadas en esta memoria descriptiva o en combinaciones de una o más de las mismas. Las operaciones pueden implementarse como operaciones realizadas por un aparato de procesamiento de datos sobre datos almacenados en uno o más dispositivos de almacenamiento legibles por ordenador o recibidos desde otras fuentes. Un aparato de procesamiento de datos, ordenador o dispositivo informático puede abarcar aparatos, dispositivos y máquinas para el procesamiento de datos, incluidos, a modo de ejemplo, un procesador programable, un ordenador, un sistema en un chip, o múltiples chips, o combinaciones de lo anterior. El aparato puede incluir circuitos de lógica de propósito especial, por ejemplo, una unidad central de procesamiento (CPU), una matriz de puertas programables in situ (FPGA) o un circuito integrado específico de la aplicación (ASIC). El aparato también puede incluir código que crea un entorno de ejecución para el programa informático en cuestión, por ejemplo, código que constituye el firmware de procesador, una pila de protocolo, un sistema de gestión de bases de datos, un sistema operativo (por ejemplo, un sistema operativo o una combinación de sistemas operativos), un entorno de ejecución multiplataforma, una máquina virtual o una combinación de uno o más de los mismos. El aparato y el entorno de ejecución pueden realizar varias infraestructuras de modelos de computación diferentes, tales como servicios web, computación distribuida e infraestructuras de computación en red.
Un programa informático (también conocido, por ejemplo, como programa, software, aplicación de software, módulo de software, unidad de software, secuencia de comandos o código) se puede escribir en cualquier forma de lenguaje de programación, incluidos los lenguajes compilados o interpretados, los lenguajes declarativos o procedimentales, y se puede implementar en cualquier forma, incluso como un programa autónomo o como un módulo, componente, subrutina, objeto u otra unidad adecuada para su uso en un entorno informático. Un programa se puede almacenar en una porción de un archivo que contiene otros programas o datos (por ejemplo, una o más secuencias de comandos almacenadas en un documento de lenguaje de marcado), en un solo archivo dedicado al programa en cuestión, o en múltiples archivos coordinados (por ejemplo, archivos que almacenan uno o más módulos, subprogramas o porciones de código). Un programa informático se puede ejecutar en un ordenador o en múltiples ordenadores que están ubicados en un emplazamiento o distribuidos en múltiples emplazamientos e interconectados por una red de comunicaciones.
Los procesadores para la ejecución de un programa informático incluyen, a modo de ejemplo, microprocesadores tanto de propósito general como especial, y uno o más procesadores de cualquier tipo de ordenador digital. Por lo general, un procesador recibirá instrucciones y datos de una memoria de sólo lectura o de una memoria de acceso aleatorio, o de ambas. Los elementos esenciales de un ordenador son un procesador para realizar acciones de acuerdo con instrucciones y uno o más dispositivos de memoria para almacenar instrucciones y datos. Por lo general, un ordenador también incluirá, o se acoplará de forma operativa para recibir datos desde o transferir datos a, o ambas cosas, uno o más dispositivos de almacenamiento masivo para almacenar datos. Un ordenador se puede integrar en otro dispositivo, por ejemplo, un dispositivo móvil, un asistente digital personal (PDA), una consola de juegos, un receptor del sistema de posicionamiento global (GPS) o un dispositivo de almacenamiento portátil. Dispositivos adecuados para almacenar instrucciones y datos de programa informático incluyen memorias no volátiles, medios y dispositivos de memoria, incluidos, a modo de ejemplo, dispositivos de memoria de semiconductores, discos magnéticos y discos magneto-ópticos. El procesador y la memoria se pueden complementar mediante, o incorporar en, circuitos lógicos de propósito especial.
Los dispositivos móviles pueden incluir microteléfonos, equipos de usuario (UE), teléfonos móviles (por ejemplo, teléfonos inteligentes), tabletas, dispositivos para llevar puestos (por ejemplo, relojes inteligentes y gafas inteligentes), dispositivos implantados dentro del cuerpo humano (por ejemplo, biosensores, implantes cocleares), u otros tipos de dispositivos móviles. Los dispositivos móviles se pueden comunicar de forma inalámbrica (por ejemplo, utilizando señales de radiofrecuencia (RF)) con diversas redes de comunicación (descritas a continuación). Los dispositivos móviles pueden incluir sensores para determinar características del entorno actual del dispositivo móvil. Los sensores pueden incluir cámaras, micrófonos, sensores de proximidad, sensores GPS, sensores de movimiento, acelerómetros, sensores de luz ambiental, sensores de humedad, giroscopios, brújulas, barómetros, sensores de huellas dactilares, sistemas de reconocimiento facial, sensores de RF (por ejemplo, radios Wi-Fi y celulares), sensores térmicos u otros tipos de sensores. Por ejemplo, las cámaras pueden incluir una cámara orientada hacia delante o hacia atrás con lentes móviles o fijas, un flash, un sensor de imagen y un procesador de imágenes. La cámara puede ser una cámara de megapíxeles que puede capturar detalles para el reconocimiento facial y/o del iris. La cámara, junto con un procesador de datos y la información de autenticación almacenada en memoria o a la que se accede de forma remota, puede formar un sistema de reconocimiento facial. El sistema de reconocimiento facial o uno o más sensores, por ejemplo, micrófonos, sensores de movimiento, acelerómetros, sensores GPS o sensores RF, se pueden utilizar para la autenticación del usuario.
Para proporcionar interacción con un usuario, las implementaciones se pueden implementar en un ordenador que tenga un dispositivo de visualización y un dispositivo de entrada, por ejemplo, una pantalla de cristal líquido (LCD) o una pantalla de diodos orgánicos emisores de luz (OLED)/realidad virtual (VR)/realidad aumentada (AR) para mostrar información al usuario y una pantalla táctil, un teclado y un dispositivo señalador mediante el cual el usuario puede proporcionar datos de entrada al ordenador. También se pueden utilizar otros tipos de dispositivos para permitir la interacción con un usuario; por ejemplo, la retroalimentación proporcionada al usuario puede ser cualquier forma de retroalimentación sensorial, por ejemplo, retroalimentación visual, retroalimentación auditiva o retroalimentación táctil; y la entrada del usuario se puede recibir de cualquier forma, incluida la entrada acústica, de voz o táctil. Además, un ordenador puede interactuar con un usuario enviando documentos a y recibiendo documentos desde un dispositivo utilizado por el usuario; por ejemplo, enviando páginas web a un navegador web en el dispositivo cliente de un usuario en respuesta a las solicitudes recibidas desde el navegador web.
Las implementaciones se pueden implementar utilizando dispositivos informáticos interconectados mediante cualquier forma o medio de comunicación cableada o inalámbrica de datos digitales (o una combinación de los mismos), por ejemplo, una red de comunicaciones. Ejemplos de dispositivos interconectados son un cliente y un servidor generalmente remotos entre sí que normalmente interactúan a través de una red de comunicaciones. Un cliente, por ejemplo, un dispositivo móvil, puede realizar transacciones por sí mismo, con un servidor, o a través de un servidor, por ejemplo, realizando transacciones de compra, venta, pago, entrega, envío o préstamo, o autorizando las mismas. Dichas transacciones pueden ser en tiempo real de modo que una acción y una respuesta sean temporalmente próximas; por ejemplo, una persona percibe que la acción y la respuesta se producen casi simultáneamente, la diferencia de tiempo para una respuesta después de la acción de la persona es inferior a 1 milisegundo (ms) o inferior a 1 segundo (s), o la respuesta no tiene un retardo intencionado teniendo en cuenta las limitaciones de procesamiento del sistema.
Ejemplos de redes de comunicaciones incluyen una red de área local (LAN), una red de acceso por radio (RAN), una red de área metropolitana (MAN) y una red de área amplia (WAN). La red de comunicación puede incluir toda o una parte de Internet, otra red de comunicaciones o una combinación de redes de comunicaciones. La información se puede transmitir en la red de comunicaciones de acuerdo con diversos protocolos y normas, incluidos Evolución a Largo Plazo (LTE), 5G, IEEE 802, Protocolo de Internet (IP) u otros protocolos o combinaciones de protocolos. La red de comunicaciones puede transmitir datos de voz, vídeo, biométricos o de autenticación u otra información entre los dispositivos informáticos conectados.
Las características descritas como implementaciones separadas pueden implementarse, en combinación, en una sola implementación, mientras que las características descritas como una sola implementación pueden implementarse en múltiples implementaciones, por separado, o en cualquier subcombinación adecuada. No debe entenderse que las operaciones descritas y reivindicadas en un orden particular requieren ese orden particular, ni que todas las operaciones ilustradas deben realizarse (algunas operaciones pueden ser opcionales). Según corresponda, se puede realizar multitarea o procesamiento en paralelo (o una combinación de multitarea y procesamiento en paralelo).

Claims (11)

REIVINDICACIONES
1. Un procedimiento implementado por ordenador realizado por un nodo de consenso para validar una transacción (400) entre un primer nodo y un segundo nodo dentro de una red de cadena de bloques (102), estando caracterizando el procedimiento por:
recibir datos de transacción (408) asociados a la transacción (400), donde los datos de transacción comprenden: datos representativos de una pluralidad de activos, un primer compromiso que oculta un primer número aleatorio y un importe de transacción de la transacción, un segundo compromiso que oculta un segundo número aleatorio y un cambio calculado en base a deducir el importe de transacción de un valor total de la pluralidad de activos, el importe de transacción y un tercer número aleatorio ambos cifrados por una clave pública del segundo nodo en base a un esquema de cifrado homomórfico - HE - determinista lineal, el cambio y un cuarto número aleatorio ambos cifrados por una clave pública del primer nodo en base al esquema de HE determinista lineal, una o más pruebas de intervalo, una prueba de conocimiento nulo - ZKP - y una firma digital generada en base a una clave privada correspondiente a la clave pública del primer nodo;
verificar (322) la firma digital en base a la clave pública del primer nodo;
determinar (328) que la una o más pruebas de intervalo demuestran que el importe de transacción y el cambio son cada uno mayores que, o iguales a, cero;
determinar (326) que el valor total de la pluralidad de activos es igual a una suma del importe de transacción y del cambio; y
determinar (330), en base a la ZKP, que la transacción (400) es válida al determinar que el primer número aleatorio es igual al tercer número aleatorio, que el segundo número aleatorio es igual al cuarto número aleatorio y que el importe de transacción oculto en el primer compromiso es igual al importe de transacción cifrado por la clave pública del segundo nodo.
2. El procedimiento implementado por ordenador de la reivindicación 1, en el que la transacción (400) se realiza entre una cuenta asociada al primer nodo y una cuenta asociada al segundo nodo, y el procedimiento comprende además actualizar, después de determinar que la transacción (400) es válida, la cuenta asociada al primer nodo y la cuenta asociada al segundo nodo en base al importe de transacción y el cambio.
3. El procedimiento implementado por ordenador de la reivindicación 1, en el que cada uno de la pluralidad de activos está asociado a uno o más de un tipo de activo, un valor de activo oculto en un compromiso y un número aleatorio utilizado para generar el compromiso.
4. El procedimiento implementado por ordenador de la reivindicación 3, que comprende además determinar que cada uno de la pluralidad de activos está asociado a un mismo tipo de activo.
5. El procedimiento implementado por ordenador de la reivindicación 3, en el que el primer compromiso, el segundo compromiso y el compromiso que oculta el valor de activo se generan en base a un esquema de compromiso que es homomórfico, y en el que la determinación de que el valor total de la pluralidad de activos es igual a la suma del importe de transacción y del cambio se realiza en base al homomorfismo del esquema de compromiso.
6. El procedimiento implementado por ordenador de la reivindicación 1, en el que el esquema de HE determinista lineal deriva de un esquema de HE probabilístico basado en cambiar un número aleatorio asociado al esquema de HE probabilístico en un número fijo.
7. El procedimiento implementado por ordenador de la reivindicación 1, en el que la ZKP comprende un compromiso que oculta un quinto número aleatorio y un sexto número aleatorio, un texto cifrado del quinto número aleatorio y el sexto número aleatorio cifrados por la clave pública de la segunda cuenta en base al esquema de HE determinista lineal, y un texto cifrado del quinto número aleatorio y el sexto número aleatorio cifrados por la clave pública de la primera cuenta en base al esquema de HE determinista lineal.
8. El procedimiento implementado por ordenador de la reivindicación 1, en el que la ZKP se genera y se utiliza para determinar que la transacción (400) es válida en base a propiedades del HE determinista lineal.
9. El procedimiento implementado por ordenador de la reivindicación 1, en el que determinar que la transacción (400) es válida se realiza en base a la ZKP sin interacciones entre el primer nodo y el segundo nodo a través del exterior de la red de cadena de bloques (102).
10. Un medio de almacenamiento no transitorio legible por ordenador acoplado a uno o más ordenadores y configurado con instrucciones ejecutables por el uno o más ordenadores para realizar operaciones de acuerdo con el procedimiento de una o más de las reivindicaciones 1-9.
11. Un sistema, que comprende:
uno o más ordenadores; y
una o más memorias legibles por ordenador acopladas al uno o más ordenadores y configuradas con instrucciones ejecutables por el uno o más ordenadores para realizar operaciones de acuerdo con el procedimiento de una o más de las reivindicaciones 1-9.
ES18867276T 2018-12-21 2018-12-21 Protección de datos de cadena de bloques basada en un modelo de cuenta genérico y un cifrado homomórfico Active ES2880458T3 (es)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/122573 WO2019072302A2 (en) 2018-12-21 2018-12-21 BLOCK CHAIN DATA PROTECTION BASED ON A GENERIC ACCOUNT MODEL AND A HOMOMORPHIC ENCRYPTION

Publications (1)

Publication Number Publication Date
ES2880458T3 true ES2880458T3 (es) 2021-11-24

Family

ID=66100042

Family Applications (1)

Application Number Title Priority Date Filing Date
ES18867276T Active ES2880458T3 (es) 2018-12-21 2018-12-21 Protección de datos de cadena de bloques basada en un modelo de cuenta genérico y un cifrado homomórfico

Country Status (16)

Country Link
US (2) US10790987B2 (es)
EP (1) EP3560144B1 (es)
JP (1) JP6808057B2 (es)
KR (1) KR102193551B1 (es)
CN (1) CN110402561B (es)
AU (1) AU2018347202B2 (es)
BR (1) BR112019014629A2 (es)
CA (1) CA3050600C (es)
ES (1) ES2880458T3 (es)
MX (1) MX2019008738A (es)
PH (1) PH12019501716A1 (es)
PL (1) PL3560144T3 (es)
RU (1) RU2733223C1 (es)
SG (1) SG11201906751YA (es)
WO (1) WO2019072302A2 (es)
ZA (1) ZA201904936B (es)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11777729B2 (en) 2017-01-20 2023-10-03 Enveil, Inc. Secure analytics using term generation and homomorphic encryption
US11196541B2 (en) 2017-01-20 2021-12-07 Enveil, Inc. Secure machine learning analytics using homomorphic encryption
US20180212753A1 (en) 2017-01-20 2018-07-26 Enveil, Inc. End-To-End Secure Operations Using a Query Vector
US10903976B2 (en) 2017-01-20 2021-01-26 Enveil, Inc. End-to-end secure operations using a query matrix
US11507683B2 (en) 2017-01-20 2022-11-22 Enveil, Inc. Query processing with adaptive risk decisioning
US10693627B2 (en) 2017-01-20 2020-06-23 Enveil, Inc. Systems and methods for efficient fixed-base multi-precision exponentiation
WO2019216949A1 (en) * 2018-05-08 2019-11-14 Visa International Service Association Sybil-resistant identity generation
US11184437B2 (en) 2018-05-24 2021-11-23 Dapper Labs Inc. Decentralized computation system architecture based on node specialization
US11139956B2 (en) 2018-05-24 2021-10-05 Dapper Labs Inc. Decentralized computation system architecture based on node specialization
CN109359971B (zh) * 2018-08-06 2020-05-05 阿里巴巴集团控股有限公司 区块链交易方法及装置、电子设备
CN112651740A (zh) * 2018-08-30 2021-04-13 创新先进技术有限公司 区块链交易方法及装置、电子设备
US10902133B2 (en) 2018-10-25 2021-01-26 Enveil, Inc. Computational operations in enclave computing environments
US10817262B2 (en) 2018-11-08 2020-10-27 Enveil, Inc. Reduced and pipelined hardware architecture for Montgomery Modular Multiplication
CN109614820A (zh) * 2018-12-06 2019-04-12 山东大学 基于零知识证明的智能合约认证数据隐私保护方法
KR102213414B1 (ko) 2018-12-21 2021-02-09 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. 일반 계정 모델 및 동형 암호화 기반의 블록 체인 데이터 보호
EP3568826B1 (en) 2018-12-29 2021-09-29 Advanced New Technologies Co., Ltd. System and method for information protection
US10795644B2 (en) * 2019-01-08 2020-10-06 Moac Blockchain Tech Inc Decentralized random number generator
CN110223063B (zh) * 2019-05-07 2023-06-20 平安科技(深圳)有限公司 基于零知识证明的供应链数据管理方法及装置
CN110335042B (zh) * 2019-06-26 2020-10-20 创新先进技术有限公司 基于环签名的匿名交易方法及装置
US10790990B2 (en) 2019-06-26 2020-09-29 Alibaba Group Holding Limited Ring signature-based anonymous transaction
FR3099017B1 (fr) * 2019-07-16 2021-08-06 Idemia Identity & Security France Procédé de vérification d’une transaction dans une base de données de type chaîne de blocs
CN110505084B (zh) * 2019-08-01 2022-06-10 江苏万链区块链技术研究院有限公司 一种区块链打包节点共识推举方法
CN110827028B (zh) * 2019-11-07 2023-08-29 湖北邮电规划设计有限公司 一种基于区块链的数据采集交易系统和方法
CN110839028B (zh) * 2019-11-14 2022-04-05 南京邮电大学 一种雾协助工业物联网的隐私保护方法
CN110958110B (zh) * 2019-12-09 2023-04-07 趣派(海南)信息科技有限公司 一种基于零知识证明的区块链隐私数据管理方法和系统
CN110991655B (zh) * 2019-12-17 2021-04-02 支付宝(杭州)信息技术有限公司 多方联合进行模型数据处理的方法及装置
CN111444541B (zh) * 2020-03-27 2022-09-09 苏州链原信息科技有限公司 用于生成数据均值零知识证明的方法、设备及存储介质
CN111401875B (zh) * 2020-05-29 2020-09-01 支付宝(杭州)信息技术有限公司 基于账户模型的区块链转账方法及装置
EP4226573A1 (en) 2020-10-05 2023-08-16 Redcom Laboratories, Inc. Zkmfa: zero-knowledge based multi-factor authentication system
US11601258B2 (en) 2020-10-08 2023-03-07 Enveil, Inc. Selector derived encryption systems and methods
EP4280535A4 (en) * 2021-01-13 2024-03-13 Fujitsu Ltd CONTROL METHOD, INFORMATION PROCESSING SYSTEM, INFORMATION PROCESSING APPARATUS AND CONTROL PROGRAM
CN112910933B (zh) * 2021-05-07 2021-07-13 鹏城实验室 认证方法、认证设备以及验证设备
WO2022236406A1 (en) * 2021-05-14 2022-11-17 Dapper Labs, Inc. Decentralized computation system based on node specialization
CN113268777B (zh) * 2021-05-21 2023-05-12 中国联合网络通信集团有限公司 基于区块链的投标信息的处理方法及模块、电子设备
CN113592650B (zh) * 2021-07-29 2023-10-24 成都质数斯达克科技有限公司 基于区块链智能合约的交易方法、装置和设备
KR102401485B1 (ko) * 2021-12-30 2022-05-24 주식회사 디사일로 동형 암호화된 데이터 처리 방법 및 시스템
US20230245112A1 (en) * 2022-02-02 2023-08-03 International Business Machines Corporation Non-interactive token certification and verification
JP2024044220A (ja) 2022-09-20 2024-04-02 富士通株式会社 電力取引プログラム、電力取引方法および電力取引装置

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5394116A (en) 1993-12-29 1995-02-28 At&T Corp. Fractional phase shift ring oscillator arrangement
IT1284718B1 (it) 1996-07-31 1998-05-21 Cselt Centro Studi Lab Telecom Dispositivo e procedimento per allineare temporalmente segnali numerici, ad esempio un segnale di orologio ed un flusso di dati.
FR2800220B1 (fr) 1999-10-26 2002-02-15 France Telecom Procede de transaction electronique securisee
US20090327141A1 (en) * 2007-04-18 2009-12-31 Rabin Michael O Highly efficient secrecy-preserving proofs of correctness of computation
US20090177591A1 (en) * 2007-10-30 2009-07-09 Christopher Thorpe Zero-knowledge proofs in large trades
US8667292B2 (en) * 2011-05-19 2014-03-04 Microsoft Corporation Privacy-preserving metering with low overhead
EP2590126A1 (en) 2011-11-01 2013-05-08 Nederlandse Organisatie voor toegepast -natuurwetenschappelijk onderzoek TNO Recommender system for providing recommendations to groups of users
US8731199B2 (en) * 2012-09-28 2014-05-20 Sap Ag Zero knowledge proofs for arbitrary predicates over data
CA2918066A1 (en) * 2013-07-15 2015-01-22 Visa International Service Association Secure remote payment transaction processing
US20150242825A1 (en) 2014-02-24 2015-08-27 Peter Burton Mills Generation, storage, and validation of encrypted electronic currency
EP3189414A4 (en) 2014-08-22 2018-04-18 Priv8Pay, Inc. Verification system for secure transmission in a distributed processing network
WO2016049406A1 (en) 2014-09-26 2016-03-31 Technicolor Usa, Inc. Method and apparatus for secure non-interactive threshold signatures
US10257173B2 (en) 2014-10-22 2019-04-09 Openeye Scientific Software, Inc. Secure comparison of information
WO2016200885A1 (en) * 2015-06-08 2016-12-15 Blockstream Corporation Cryptographically concealing amounts transacted on a ledger while preserving a network's ability to verify the transaction
RU2015145232A (ru) 2015-10-21 2017-05-03 Дмитрий Сергеевич Ермолаев Способ учёта и хранения временных учётных единиц в одноуровневых средах на блокчейн
EP3405862B1 (en) 2016-01-19 2020-11-18 Priv8Pay, Inc. Network node authentication
US10846984B2 (en) 2016-02-24 2020-11-24 Uplay1 Casino crypto currency systems and methods
US10046228B2 (en) * 2016-05-02 2018-08-14 Bao Tran Smart device
US9635000B1 (en) 2016-05-25 2017-04-25 Sead Muftic Blockchain identity management system based on public identities ledger
CN107438002B (zh) * 2016-05-27 2022-02-11 索尼公司 基于区块链的系统以及系统中的电子设备和方法
JP6663809B2 (ja) * 2016-07-07 2020-03-13 株式会社日立製作所 監査装置、監査機能付匿名送金方法及びプログラム
WO2018087836A1 (ja) * 2016-11-09 2018-05-17 株式会社日立製作所 ブロックチェーン取引システムおよびブロックチェーン取引方法
CN106549749B (zh) * 2016-12-06 2019-12-24 杭州趣链科技有限公司 一种基于加法同态加密的区块链隐私保护方法
US10243731B2 (en) 2017-01-27 2019-03-26 Accenture Global Solutions Limited Hardware blockchain acceleration
KR101879353B1 (ko) 2017-01-31 2018-07-17 권양호 가상화폐 중개 서비스 시스템 및 방법
US10832230B2 (en) * 2017-04-04 2020-11-10 International Business Machines Corporation Scalable and distributed shared ledger transaction management
US10277395B2 (en) * 2017-05-19 2019-04-30 International Business Machines Corporation Cryptographic key-generation with application to data deduplication
CN107274159A (zh) * 2017-06-09 2017-10-20 北京泛融科技有限公司 一种基于区块并发执行算法的记账系统及方法
US10761877B2 (en) * 2017-07-21 2020-09-01 Intel Corporation Apparatuses, methods, and systems for blockchain transaction acceleration
CN108418783B (zh) 2017-09-01 2021-03-19 矩阵元技术(深圳)有限公司 一种保护区块链智能合约隐私的方法、介质
CN107656812A (zh) * 2017-09-27 2018-02-02 咪咕文化科技有限公司 区块链处理方法、系统、节点设备、终端和存储介质
US10833861B2 (en) * 2017-11-28 2020-11-10 International Business Machines Corporation Protection of confidentiality, privacy and ownership assurance in a blockchain based decentralized identity management system
CN108021821A (zh) 2017-11-28 2018-05-11 北京航空航天大学 多中心区块链交易隐私保护系统及方法
CN108418689B (zh) 2017-11-30 2020-07-10 矩阵元技术(深圳)有限公司 一种适合区块链隐私保护的零知识证明方法和介质
WO2019109003A1 (en) * 2017-11-30 2019-06-06 Visa International Service Association Blockchain system for confidential and anonymous smart contracts
CN111989893B (zh) 2018-01-19 2022-04-26 Qed-It系统有限公司 用于生成和链接零知识证明的方法、系统和计算机可读装置
US20190229921A1 (en) * 2018-01-22 2019-07-25 Allen Pulsifer Private Multi-Secret Cryptographic Transaction System
EP3522064B1 (en) 2018-02-02 2021-12-22 Università Degli Studi Di Trento A method and apparatus for distributed, privacy-preserving and integrity-preserving exchange, inventory and order book
US20190251527A1 (en) 2018-02-14 2019-08-15 Christopher Walter Surdak System, Method, and Computer Program Product for a Distributed, Cryptographically Secured Proof-of-Intent Transaction Network
CN108764874B (zh) * 2018-05-17 2021-09-07 深圳前海微众银行股份有限公司 基于区块链的匿名转账方法、系统及存储介质
CN108985933A (zh) * 2018-06-29 2018-12-11 联动优势科技有限公司 一种记账方法及装置
CN109035029A (zh) * 2018-07-27 2018-12-18 阿里巴巴集团控股有限公司 基于区块链的资产转移方法及装置、电子设备
CN109039648B (zh) * 2018-08-03 2021-09-03 克洛斯比尔有限公司 一种区块链的创建方法、设备及可读存储介质
ES2876926T3 (es) * 2018-11-07 2021-11-15 Advanced New Technologies Co Ltd Protección de datos de cadena de bloques utilizando cifrado homomórfico
KR102213414B1 (ko) 2018-12-21 2021-02-09 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. 일반 계정 모델 및 동형 암호화 기반의 블록 체인 데이터 보호

Also Published As

Publication number Publication date
MX2019008738A (es) 2019-09-09
CA3050600A1 (en) 2019-04-18
AU2018347202A1 (en) 2020-07-09
EP3560144A4 (en) 2020-03-04
EP3560144A2 (en) 2019-10-30
WO2019072302A3 (en) 2019-10-03
ZA201904936B (en) 2022-01-26
CA3050600C (en) 2020-11-17
KR20200079217A (ko) 2020-07-02
SG11201906751YA (en) 2019-08-27
CN110402561A (zh) 2019-11-01
BR112019014629A2 (pt) 2021-07-20
US20190280880A1 (en) 2019-09-12
JP2020512572A (ja) 2020-04-23
US10790987B2 (en) 2020-09-29
PL3560144T3 (pl) 2021-10-25
WO2019072302A2 (en) 2019-04-18
US20200366503A1 (en) 2020-11-19
JP6808057B2 (ja) 2021-01-06
KR102193551B1 (ko) 2020-12-23
AU2018347202B2 (en) 2021-01-07
US11063769B2 (en) 2021-07-13
PH12019501716A1 (en) 2020-03-02
CN110402561B (zh) 2021-11-23
EP3560144B1 (en) 2021-05-05
RU2733223C1 (ru) 2020-09-30

Similar Documents

Publication Publication Date Title
ES2880458T3 (es) Protección de datos de cadena de bloques basada en un modelo de cuenta genérico y un cifrado homomórfico
ES2881319T3 (es) Protección de datos de cadena de bloques mediante cifrado homomórfico
ES2876926T3 (es) Protección de datos de cadena de bloques utilizando cifrado homomórfico
ES2863559T3 (es) Protección de datos de cadena de bloques en base al modelo de billete de cuenta con prueba de conocimiento cero
EP3566197B1 (en) Blockchain data protection based on generic account model and homomorphic encryption