ES2701981T3 - Método y sistema para verificar la propiedad de un activo digital mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares - Google Patents

Método y sistema para verificar la propiedad de un activo digital mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares Download PDF

Info

Publication number
ES2701981T3
ES2701981T3 ES17724645T ES17724645T ES2701981T3 ES 2701981 T3 ES2701981 T3 ES 2701981T3 ES 17724645 T ES17724645 T ES 17724645T ES 17724645 T ES17724645 T ES 17724645T ES 2701981 T3 ES2701981 T3 ES 2701981T3
Authority
ES
Spain
Prior art keywords
user
computer software
public key
key
executable
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
ES17724645T
Other languages
English (en)
Inventor
Stephane Savanah
Craig Steven Wright
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.)
Nchain Holdings Ltd
Original Assignee
Nchain Holdings 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
Priority claimed from GBGB1608463.4A external-priority patent/GB201608463D0/en
Priority claimed from GBGB1608456.8A external-priority patent/GB201608456D0/en
Priority claimed from GBGB1608454.3A external-priority patent/GB201608454D0/en
Application filed by Nchain Holdings Ltd filed Critical Nchain Holdings Ltd
Application granted granted Critical
Publication of ES2701981T3 publication Critical patent/ES2701981T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • G06F16/152File search processing using file content signatures, e.g. hash values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6281Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database at program execution time, where the protection is within the operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/22Payment schemes or models
    • G06Q20/223Payment schemes or models based on the use of peer-to-peer networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/061Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • H04L9/0841Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • 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/3263Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • H04L9/3265Cryptographic 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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate chains, trees or paths; Hierarchical trust model
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1065Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT] 
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Business, Economics & Management (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Accounting & Taxation (AREA)
  • Data Mining & Analysis (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Library & Information Science (AREA)
  • Power Engineering (AREA)
  • Finance (AREA)
  • Storage Device Security (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

Un método implementado por ordenador para verificar la propiedad de un software informático después de la instalación y antes de la ejecución del software informático mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares, el método comprendiendo: determinar una clave pública de segundo usuario (PU2) asociada a un segundo usuario (U2) a partir de un registro de transacciones almacenado en el libro mayor distribuido entre pares; determinar una segunda clave pública (P2) asociada al segundo usuario (U2) a partir de una entrada almacenada en la tabla de hash distribuidas; comparar la clave pública de segundo usuario (PU2) y la segunda clave pública (P2); y verificar la propiedad del software informático según la comparación de la clave pública de segundo usuario (PU2) y la segunda clave pública (P2).

Description

DESCRIPCIÓN
Método y sistema para verificar la propiedad de un activo digital mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares
Campo técnico
La presente descripción se refiere a métodos de seguridad, control y verificación para asegurar el control autorizado de un activo digital. La invención es particularmente apropiada para verificar propiedad o el uso/control autorizado de un artículo de software informático. Ello puede comprender el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares (cadena de bloques).
Antecedentes
En el presente documento, usamos el término "cadena de bloques" para incluir todas las formas de libros mayores electrónicos, distribuidos, basados en ordenador. Estos incluyen tecnologías de cadena de bloques basada en consenso y cadena de transacciones, libros mayores autorizados y no autorizados, libros mayores compartidos y sus variaciones. La aplicación más ampliamente conocida de la tecnología de cadena de bloques es la contabilidad Bitcoin, aunque se han propuesto y desarrollado otras implementaciones de cadena de bloques. Mientras, en la presente memoria, puede hacerse referencia a Bitcoin a los fines de conveniencia e ilustración, debe notarse que la invención no se encuentra limitada al uso con la cadena de bloques Bitcoin y las implementaciones y protocolos alternativos de cadena de bloques caen dentro del alcance de la presente invención. El término "usuario" puede hacer referencia, en la presente memoria, a un recurso humano o basado en procesador.
Una cadena de bloques es un libro mayor electrónico entre pares que se implementa como un sistema distribuido descentralizado basado en ordenador compuesto de bloques que, a su vez, se componen de transacciones. Cada transacción es una estructura de datos que codifica la transferencia de control de un activo digital entre participantes en el sistema de cadena de bloques, e incluye al menos una entrada y al menos una salida. Cada bloque contiene un hash del bloque previo de modo que los bloques se encadenan juntos para crear un registro permanente e inalterable de todas las transacciones que se han escrito en la cadena de bloques desde su comienzo. Las transacciones contienen pequeños programas conocidos como scripts incorporados en sus entradas y salidas, los cuales especifican cómo y quién puede acceder a las salidas de las transacciones. En la plataforma Bitcoin, dichos scripts se escriben mediante el uso de un lenguaje de scripts basado en una pila.
Para que una transacción se escriba en la cadena de bloques, debe "validarse". Los nodos de red (mineros) llevan a cabo trabajo para asegurar que cada transacción sea válida, con transacciones inválidas rechazadas desde la red. Los clientes de software instalados en los nodos llevan a cabo dicho trabajo de validación en una transacción no utilizada (UTXO) mediante la ejecución de sus scripts de bloqueo y desbloqueo. Si la ejecución de los scripts de bloqueo y desbloqueo es VERDADERA, la transacción es válida y la transacción se escribe en la cadena de bloques. Por consiguiente, para que una transacción se escriba en la cadena de bloques, debe i) validarse por el primer nodo que recibe la transacción -si la transacción se valida, el nodo la retransmite a los otros nodos en la red; y ii) añadirse a un bloque nuevo construido por un minero; y iii) minarse, a saber, añadirse al libro mayor público de transacciones pasadas.
Aunque la tecnología de cadena de bloques es más ampliamente conocida para el uso de la implementación de la criptomoneda, los emprendedores digitales han comenzado a explorar el uso tanto del sistema de seguridad criptográfico en el que se basa Bitcoin como los datos que pueden almacenarse en la Cadena de Bloques para implementar nuevos sistemas. Sería altamente ventajoso si la cadena de bloques pudiera usarse para tareas y procesos automatizados que no se encuentran limitados al ámbito de la criptomoneda. Dichas soluciones pueden emplear los beneficios de la cadena de bloques (p.ej., registros permanentes de prueba alterada de eventos, procesamiento distribuido, etc.) mientras son más versátiles en sus aplicaciones.
Un área de investigación actual es el uso de la cadena de bloques para la implementación de "contratos inteligentes". Estos son programas de ordenador diseñados para automatizar la ejecución de los términos de un contrato o acuerdo legible por máquina. A diferencia de un contrato tradicional que se escribe en lenguaje natural, un contrato inteligente es un programa ejecutable por máquina que comprende reglas que pueden procesar entradas con el fin de reducir resultados, lo cual puede entonces hacer que se lleven a cabo acciones según dichos resultados.
Otra área de interés relacionada con la cadena de bloques es el uso de "tokens" (o "monedas coloreadas") para representar y transferir entidades del mundo real mediante la cadena de bloques. Un artículo potencialmente sensible o secreto puede representarse por el token que no tiene un significado o valor discernible. El token, por consiguiente, sirve como un identificador que permite que se haga referencia al artículo del mundo real desde la cadena de bloques.
Debido al registro de prueba alterada que pueden proveer, las cadenas de bloques son apropiadas para aplicaciones en las cuales el control, la visibilidad de episodios y las transacciones/intercambios seguros son importantes. Una de dichas áreas de aplicación apropiadas es el intercambio o transferencia de activos digitales como, por ejemplo, software. Los enfoques tradicionales para asegurar la integridad y compartición de software informático implican la firma digital de los ejecutables del software informático. Por ejemplo, la firma del ejecutable u otro código asociado con un par criptográfico de claves como, por ejemplo, una clave pública y una clave privada. La clave pública se obtiene, con frecuencia, de una autoridad central fiable como, por ejemplo, una autoridad de certificación.
El software informático se acompaña, con frecuencia, de una licencia que contiene obligaciones contractuales. La licencia puede contener los términos que regulan el uso o la redistribución del software. Sin embargo, una cuestión puede surgir donde el software informático o la licencia asociada se transfieren a otro usuario de manera no autorizada o indeseada.
Sin embargo, puede surgir una cuestión donde el software informático o la licencia asociada se transfieren a otro usuario en una manera no autorizada o no deseada. Es fundamental verificar la propiedad, autorización y control legítimo del software. Ello es para asegurar que, por ejemplo, el software no se ha transferido al propietario incorrecto o que ha sido contrario a la autorización. Por lo tanto, es deseable proveer una solución que facilite o permita la verificación de la propiedad y/o transferencia de un activo digital controlado o recurso como, por ejemplo, software. Ello, a su vez, ayudará a asegurar la integridad del software y del proceso de transferencia electrónica. Cualquier descripción de documentos, actos, materiales, dispositivos, artículos o similares que se haya incluido en la presente memoria descriptiva no se tomará como una admisión de que cualquiera o todas de dichas cuestiones forman parte de la base de la técnica anterior o eran de conocimiento general común en el campo relevante a la presente descripción dado que existía antes de la fecha de prioridad de cada reivindicación de la presente solicitud. A lo largo de la presente memoria descriptiva, se comprenderá que la palabra "comprender" o variaciones como, por ejemplo, "comprende" o "comprenden", implican la inclusión de un elemento establecido, entero o etapa, o grupo de elementos, enteros o etapas, pero no la exclusión de cualquier otro elemento, entero o etapa, o grupo de elementos, enteros o etapas.
El documento de Jeff Herbert, Alan Litchfield: A novel Method of decentralised peer-to-peer Software License Validation using Cryptocurrency Blockchain Technology, 27-30 enero 2015, XP055358639 y el documento Anonymous: Contract- Bitcoin Wiki, 22 octubre 2015, recuperado de https://en.bitcoin.it/w/index.php?title=Contract&oldid=59172, XP055361462 sugieren implementar esquemas de concesión de licencias en la cadena de bloques.
Compendio
La invención provee método(s) y sistema(s) correspondiente(s) según se define en las reivindicaciones anexas. La invención puede proveer un método/sistema de control y verificación implementado por ordenador. Este puede permitir o facilitar la transferencia de un activo controlado entre usuarios en una red basada en ordenador. El activo puede ser un activo digital. En la presente memoria, el término "usuario" puede usarse para hacer referencia a un recurso basado en ordenador. El activo controlado puede ser una porción o artículo de software. La invención puede proveer un método implementado por ordenador para verificar un activo controlado, p.ej., una porción de software informático. Puede ser un método de verificación de propiedad o autorización del software. El software puede verificarse para la instalación en un recurso basado en ordenador. El software puede verificarse para la instalación en un recurso basado en ordenador.
El método puede comprender un método implementado por ordenador para verificar la propiedad o uso/control autorizado de un artículo de software informático después de la instalación y antes de la ejecución mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares (cadena de bloques). El método puede comprender determinar una clave pública de segundo usuario (PU2) asociada a un segundo usuario (U2) a partir de un registro de transacciones almacenado en el libro mayor distribuido entre pares; determinar una segunda clave pública (P2) asociada al segundo usuario (U2) a partir de una entrada almacenada en la tabla de hash distribuidas; comparar la clave pública de segundo usuario (PU2) y la segunda clave pública (P2); y verificar la propiedad del software informático según la comparación de la clave pública de segundo usuario (PU2) y la segunda clave pública (P2).
Debe notarse que la clave pública de segundo usuario (PU2) y la segunda clave pública (P2) pueden almacenarse en, y recuperarse de, fuentes técnicas separadas, a saber, una cadena de bloques y una DHT, respectivamente. Por consiguiente, la invención puede comprender el uso de recursos de almacenamiento diferentes y distintos, con intercomunicación y transferencia de datos entre ellos. Mediante la búsqueda, el procesamiento y la recuperación de datos de la DHT y la cadena de bloques, la invención puede lograr los efectos de control, seguridad y verificación mejorados que resultan en un enfoque más seguro hacia la instalación, transferencia y autorización de activo digital (p.ej., software).
En el método, la comparación de la clave pública de segundo usuario (PU2) y la segunda clave pública (P2) puede comprender determinar si la clave pública de segundo usuario (PU2) y la segunda clave pública (P2) concuerdan. El término "concordar" puede comprender una correspondencia, igualdad o asociación entre la clave pública de segundo usuario (PU2) y la segunda clave pública (P2).
En el método, el software informático puede comprender un encabezamiento y un cuerpo. El encabezamiento puede comprender un valor hash del cuerpo del software informático. El encabezamiento puede además comprender un valor hash (H2) de un dato asociado al software informático o a una licencia. El cuerpo del software informático puede comprender un ejecutable del software informático.
En el método, antes de determinar la clave pública de segundo usuario (PU2), el método puede comprender instalar el ejecutable del software informático en un dispositivo de procesamiento asociado al segundo usuario (U2). En el método, antes de instalar el ejecutable del software informático, el método puede comprender encriptar el ejecutable del software informático.
La encriptación del ejecutable del software informático puede comprender determinar un valor de generador (VG); determinar una segunda clave pública de segundo usuario (P2U2) según la clave pública de segundo usuario (PU2) y el valor de generador (VG), en donde la segunda clave pública de segundo usuario (P2U2) forma un par criptográfico con una segunda clave privada de segundo usuario (V2U2); determinar una segunda clave pública de primer usuario (P2U1) según una clave pública de primer usuario (PU1) y el valor de generador (VG), en donde la segunda clave pública de primer usuario (P2U1) forma un par criptográfico con una segunda clave privada de primer usuario (V2U1); determinar un secreto común (SC) según la segunda clave pública de segundo usuario (P2U2) y la segunda clave privada de primer usuario (V2U1); y encriptar el software informático con el secreto común (SC) para generar un ejecutable encriptado del software informático.
En el método, el ejecutable encriptado del software informático puede desencriptarse mediante la determinación del secreto común (SC) según la segunda clave pública de primer usuario (P2U1) y la segunda clave privada de segundo usuario (V2U2); y mediante la desencriptación del ejecutable del software informático con el secreto común (SC) para generar un ejecutable desencriptado del software informático.
El método puede además comprender la ejecución de instrucciones del ejecutable desencriptado del software informático en el dispositivo de procesamiento asociado al segundo usuario (U2). El método puede además comprender la determinación de una clave de activación (AK, por sus siglas en inglés) del segundo usuario (U2); y la ejecución de instrucciones del ejecutable desencriptado del software informático según la clave de activación (Ak ) en el dispositivo de procesamiento asociado al segundo usario (U2).
En el método, antes de encriptar el ejecutable del software informático, el método puede comprender determinar un dato (D1) asociado al software informático; determinar un primer valor hash (H1) del software informático; determinar un segundo valor hash (H2) según el dato (D1) y el software informático; enviar, en una red de comunicaciones, el dato (D1), el primer valor hash y el segundo valor hash (H2) a una entrada para el almacenamiento en la tabla de hash distribuidas, en donde el segundo valor hash (H2) es una clave de un par de valores de claves y el dato (D1) y el primer valor hash (H1) son un valor en el par de valores de claves; y determinar el metadato (M) que comprende el segundo valor hash (H2) para el almacenamiento en el libro mayor distribuido entre pares.
Un programa de software informático que comprende instrucciones legibles por máquina para hacer que un dispositivo de procesamiento implemente el método descrito más arriba.
Un sistema informático para verificar la propiedad de un software informático después de la instalación y antes de la ejecución mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares, el sistema comprendiendo un dispositivo de procesamiento asociado a un nodo en una red de nodos entre pares, configurado para determinar una clave pública de segundo usuario (PU2) asociada a un segundo usuario (U2) a partir de un registro de transacciones almacenado en el libro mayor distribuido entre pares; determinar una segunda clave pública (P2) asociada al segundo usuario (U2) a partir de una entrada almacenada en la tabla de hash distribuidas; comparar la clave pública de segundo usuario (PU2) y la segunda clave pública (P2); y verificar la propiedad del software informático según la comparación de la clave pública de segundo usuario (PU2) y la segunda clave pública (P2).
Breve descripción de los dibujos
La Figura 1 ilustra un ejemplo de una tabla de hash.
Ejemplos de la presente descripción se describirán con referencia a:
La Figura 2 ilustra un diagrama esquemático de un sistema a modo de ejemplo para determinar un metadato (M) para asegurar el software informático de un software informático después de la instalación y antes de la ejecución mediante el uso de una tabla de hash distribuidas;
la Figura 3 ilustra un diagrama de flujo de un método implementado por ordenador para determinar un metadato (M) para asegurar un software informático mediante el uso de una tabla de hash distribuidas;
la Figura 4 ilustra un ejemplo de un árbol de Merkle;
la Figura 5 ilustra un ejemplo de un árbol de Merkle con referencia a un software informático y a una licencia asociada a un software informático;
la Figura 6 ilustra un diagrama de flujo de un método implementado por ordenador para determinar un identificador indicativo de la ubicación de un software informático mediante el uso de una tabla de hash distribuidas;
la Figura 7 ilustra un diagrama de flujo de un método implementado por ordenador para verificar la propiedad de un software informáti
entre pares;
la Figura 8 ilustra un diagrama de flujo de métodos implementados por ordenador para determinar un secreto común;
la Figura 9 ilustra un diagrama de flujo de métodos implementados por ordenador para encriptar un ejecutable de un software informático;
la Figura 10 ilustra un esquema de un dispositivo de procesamiento a modo de ejemplo.
Descripción de las realizaciones
La presente descripción se refiere, en general, a métodos y sistemas para utilizar una tabla de hash distribuidas y un libro mayor distribuido entre pares (P2P, por sus siglas en inglés) como, por ejemplo, la cadena de bloques Bitcoin, para permitir la verificación de un software informático después de la instalación y antes de la ejecución.
Mientras las realizaciones descritas más abajo pueden referirse específicamente a transacciones que ocurren en la cadena de bloques Bitcoin (a la que, en la presente memoria, se hace referencia como la cadena de bloques), se apreciará que la presente invención puede implementarse mediante el uso de otros libros mayores distribuidos P2P. La cadena de bloques se usa más abajo para describir aspectos de la invención en aras de la simplicidad solamente debido a su alto nivel de normalización y gran cantidad de documentación pública asociada.
Tabla de hash distribuidas
En un modelo de cliente/servidor típico, un servidor central puede estar a cargo de la mayoría de recursos. Ello significa que, en el caso de un ataque o fallo en el servidor central, la mayoría de los recursos almacenados en el servidor central pueden verse comprometidos. Por el contrario, en un modelo distribuido, los recursos se comparten ("distribuyen") entre nodos participantes. De esta manera, la capacidad de todos los nodos participantes se utiliza y el fallo de un servidor no comprometerá a la mayoría de los recursos.
La Figura 1 ilustra un ejemplo de una tabla de hash. La tabla de hash consta de pares de valores de claves. La clave de cada par de valores de claves se mapea, a modo de una función hash, a un índice. El índice define la ubicación de valores almacenados de los pares de valores de claves.
Una DHT es un ejemplo de aplicación del modelo distribuido a una tabla de hash. De manera similar a una tabla de hash, una DHT comprende pares de valores de claves y provee un método eficaz para ubicar ("consultar") un valor de un par de valores de claves dada simplemente la clave. Sin embargo, a diferencia de la tabla de hash, los pares de valores de claves se distribuyen y almacenan por un número de nodos participantes. De esta manera, la responsabilidad de almacenar y mantener los pares de valores de claves se comparte por los nodos participantes. En la misma manera que una tabla de hash, cada par de valores de claves en la DHT se mapea a un índice. El índice se determina para cada par de valores de claves llevando a cabo una función hash en la clave. Por ejemplo, el Algoritmo de Hash Seguro s HA-1 criptográfico puede usarse para determinar el índice.
A cada nodo participante se le asigna al menos un índice mediante la partición de espacio de claves. Para cada índice al que el nodo participante se asigna, el nodo participante almacena el valor de dicho par de valores de claves.
Es una ventaja que valores de los pares de valores de claves pueden recuperarse de manera eficaz. Con el fin de recuperar un valor asociado a una clave, un nodo puede ejecutar una "consulta" para determinar el nodo responsable (mediante el índice). Puede entonces accederse al nodo responsable para determinar el valor.
Bitcoin y la cadena de bloques
Como se conoce en la técnica, la cadena de bloques es un libro mayor de tipo de transacción de base de datos donde la capacidad de almacenamiento se distribuye a lo largo de nodos interconectados que participan en un sistema basado en el protocolo Bitcoin. Cada transacción Bitcoin se radiodifunde a la red, las transacciones se confirman y luego se agregan a bloques. Los bloques se incluyen entonces en la cadena de bloques mediante el almacenamiento de los bloques en múltiples nodos participantes.
Una copia total de un libro mayor distribuido P2P de criptomoneda contiene cada transacción ejecutada en la criptomoneda. Por consiguiente, se provee una lista continuamente creciente de registros de datos transaccionales. Dado que cada transacción ingresada en la cadena de bloques se ejecuta de manera criptográfica, la cadena de bloques se endurece contra la alteración y revisión, incluso por operadores de los nodos participantes.
Debido a la transparencia de la cadena de bloques, hay historias públicamente disponibles para cada transacción. Es una ventaja adicional de la cadena de bloques que la transacción y el registro de la transacción sean iguales. De esta manera, la información relacionada con la transacción se captura en la transacción real. Dicho registro es permanente e inmutable y, por lo tanto, elimina el requisito de que un tercero mantenga el registro de la transacción en una base de datos separada.
Pago a hash de script y multifirma
Mientras las realizaciones de más abajo pueden referirse específicamente a transacciones que usan el método de pago a un hash de script (P2SH, por sus siglas en inglés) del protocolo Bitcoin, se apreciará que la presente invención puede implementarse mediante el uso de otro método del protocolo Bitcoin como, por ejemplo, el método de pago a hash de clave pública.
Cada registro de transacción en la cadena de bloques comprende un script que incluye información indicativa de la transacción y un número de claves públicas. Dichas claves públicas pueden asociarse al emisor y receptor de la criptomoneda. Un script puede considerarse una lista de instrucciones registradas en cada registro de transacción en la cadena de bloques que describe cómo un usuario puede obtener acceso a la criptomoneda especificada en el registro de transacción.
Como antecedente, en un método P2SH estándar del protocolo Bitcoin, el script de salida, o script de rescate, pueden tomar la forma:
<NumSigs PubK1 PubK2 ... PubK15 NumKeys OP_CHECKMULTISIG>
donde NumSigs es el número "m" de firmas válidas requeridas para satisfacer el script de rescate para desbloquear la transacción; PubK1, PubK2 ... PubK15 son las claves públicas que corresponden a firmas que desbloquean la transacción (hasta un máximo de 15 claves públicas) y NumKeys es el número "n" de claves públicas.
En el protocolo Bitcoin, las firmas basadas en la clave privada de un usuario pueden generarse mediante el uso del Algoritmo de Firma Digital con Curva Elíptica. Las firmas se usan entonces para el rescate de la criptomoneda asociada al script de salida o script de rescate. Cuando un usuario rescata un script de salida o script de rescate, el usuario provee su firma y clave pública. El script de salida o script de rescate luego verifica la firma contra la clave pública.
Con el fin de rescatar el script de rescate de más arriba, se requiere al menos un número "m" de firmas correspondientes a las claves públicas. En algunos ejemplos, el orden de las claves públicas es importante y el número "m" de "n" firmas para la firma debe llevarse a cabo en secuencia. Por ejemplo, es preciso considerar donde "m" es 2 y "n" es 15. Si hay dos firmas disponibles para su uso, Sig1 (correspondiente a PubK1) y Sig15 (correspondiente a PubK15), el script de rescate debe firmarse por Sig1 primero seguida de Sig15.
Resumen del sistema
Ahora se describirán un método, dispositivo y sistema para determinar un metadato (M) para asegurar un software informático y verificar la propiedad de un software informático después de la instalación y antes de la ejecución. La Figura 2 ilustra un sistema 1 que incluye un primer nodo 3 que está en comunicación con, en una red de comunicaciones 5, un segundo nodo 7. El primer nodo 3 tiene un primer dispositivo de procesamiento 21 asociado y el segundo nodo 5 tiene un segundo dispositivo de procesamiento 27 asociado. Ejemplos del primer y segundo nodos 3, 7 incluyen un dispositivo electrónico como, por ejemplo, un ordenador, tableta, dispositivo de comunicaciones móviles, servidor de ordenador, etc.
Una DHT 13 para registrar y almacenar pares de valores de claves también se ilustra en la Figura 2. La DHT 13 puede asociarse a uno o más dispositivos de procesamiento 19 para recibir, registrar y almacenar los valores de los pares de valores de claves. Los dispositivos de procesamiento 19 pueden usarse por nodos participantes de la DHT 13. Según se describe más arriba, la DHT 13 provee un método eficaz para ubicar valores de pares de valores de claves.
La Figura 2 también ilustra un libro mayor distribuido P2P 14 para registrar transacciones. El libro mayor distribuido P2P 14 puede asociarse a uno o más dispositivos de procesamiento 20 para recibir y registrar transacciones. Según se describe más arriba, un ejemplo de un libro mayor distribuido P2P 14 es la cadena de bloques Bitcoin. Por lo tanto, en el contexto de la cadena de bloques, los dispositivos de procesamiento 20 asociados al libro mayor distribuido P2P 14 pueden ser dispositivos de procesamiento a los que se hace referencia como "mineros".
El primer nodo 3 se asocia a un primer usuario 23 y el segundo nodo 7 se asocia a un segundo usuario 24. En un ejemplo, el primer nodo 3 puede representar un fabricante del software informático. En otro ejemplo, el primer nodo 3 puede representar un agente o proveedor de servicios. En incluso otro ejemplo, el primer nodo 3 puede representar un usuario del software informático.
El segundo nodo 7 puede representar un usuario del sistema informático. En otro ejemplo, el segundo nodo 7 puede representar un agente, proveedor de servicios o fabricante del software informático.
En un ejemplo, el primer nodo 3 lleva a cabo el método 100, 300, 400, 500, 600, 700, 800 según se ilustra por la Figura 3, Figura 6, Figura 7, Figura 8 y Figura 9. En otro ejemplo, el segundo nodo 7 lleva a cabo el método 100, 300, 400, 500, 600, 700, 800.
Mientras las realizaciones a modo de ejemplo de más abajo pueden referirse al primer nodo 3 como uno que lleva a cabo los métodos o al segundo nodo 7 como uno que lleva a cabo los métodos, se comprenderá que la descripción también puede adaptarse o modificarse para llevarse a cabo por otros nodos.
El método 100 según se ilustra por la Figura 3 asegura el software informático e incluye determinar 110 un dato (D1) asociado al software informático. El dato (D1) puede además comprender una licencia asociada al software informático. El método 100 también incluye determinar 120 un primer valor hash (H1) según el software informático. En un ejemplo, el primer valor hash (H1) puede relacionarse con un ejecutable del software informático.
El método 100 también incluye determinar 130 un segundo valor hash (H2) según el dato (D1) y el software informático. En un ejemplo, el segundo valor hash (H2) puede ser representativo de los detalles del software informático y de la licencia asociada al software informático. En un ejemplo adicional, el segundo valor hash (H2) puede comprender información adicional.
El método 100 además incluye enviar 140, en una red de comunicaciones 5, el dato (D1), el primer valor hash (H1) y el segundo valor hash (H2) a una entrada en una tabla de hash distribuidas 13, en donde el segundo valor hash (H2) se asigna a una clave de un par de valores de claves y el dato (D1) y el primer valor hash (H1) se asignan al valor en el par de valores de claves. El valor en el par de valores de claves puede además comprender un identificador indicativo de la ubicación del software informático o licencia.
El método 100 también incluye determinar 150 un metadato (M) que se basa en el segundo valor hash (H2) para su inclusión en el libro mayor distribuido entre pares 14. En un ejemplo, el metadato (M) puede incluirse en un primer script de rescate (RS1) para su inclusión en el libro mayor distribuido entre pares 14.
El método 600 según se ilustra por la Figura 7 verifica la propiedad del software informático después de la instalación del software informático y se lleva a cabo después del método descrito más arriba. Ello se muestra como la etapa 100 opcional en la Figura 7. El método 600 incluye determinar 610 una clave pública de segundo usuario (PU2) asociada a un segundo usuario (U2) de un registro de transacciones almacenado en el libro mayor distribuido entre pares 14. La clave pública de segundo usuario (PU2) puede incluirse en un script de salida del registro de transacciones. En otro ejemplo, la clave pública de segundo usuario (PU2) puede incluirse en el metadato (M) que se encuentra en el libro mayor distribuido entre pares 14 según se describe más arriba.
El método 600 también incluye determinar 620 una segunda clave pública (P2) asociada al segundo usuario (U2) de una entrada almacenada en la tabla de hash distribuidas 13. La segunda clave pública (P2) puede ser igual a la clave pública de segundo usuario (PU2). La entrada en la tabla de hash distribuidas 13 puede comprender un par de valores de claves.
El método 600 además incluye comparar 630 la clave pública de segundo usuario (PU2) y la segunda clave pública (P2). El método 600 también incluye verificar 640 la propiedad del software informático según la comparación de la clave pública de segundo usuario (PU2) y la segunda clave pública (P2). En un ejemplo, la verificación de la propiedad puede indicar que la clave pública de segundo usuario (PU2) y la segunda clave pública (P2) concuerdan. Ahora se describirá un ejemplo detallado del método 100, 600.
Determinación de un dato asociado al software informático 110
Según se describe más arriba, el método 100 incluye determinar 110 un dato (D1) asociado al software informático. La determinación 110 de un dato (D1) puede comprender recibir el dato (D1) de un usuario, nodo o almacén de datos. La determinación 110 de un dato (D1) puede además comprender generar el dato (D1) en el primer nodo 3. En un ejemplo, el primer nodo 3 puede recibir el dato (D1) del primer usuario 23 mediante la interfaz de usuario 15. En otro ejemplo, el primer nodo 3 puede recibir el dato (D1) del segundo usuario 24. En incluso otro ejemplo, el primer nodo 3 puede recibir el dato (D1) de un almacén de datos 17.
El dato (D1) se asocia al software informático donde el dato (D1) puede identificar el software informático, información adicional, una licencia del software informático o ser indicativo de la ubicación del software informático. Por ejemplo, el dato (D1) puede comprender una cadena o estructura de datos que identifica el software informático.
La cadena o estructura de datos puede comprender una recopilación de palabras clave de identificación y/o información adicional sobre el software informático. Un ejemplo de información adicional puede ser un identificador de la versión del software informático, por ejemplo, un numeral. Por ejemplo, si el software informático se titula BobSoftware y la versión es 3.0, la cadena o estructura de datos (D1) puede comprender "BobSoftware/3.0".
En un ejemplo adicional, el dato (D1) puede comprender un identificador de una licencia asociada al software informático. Este puede ser un número de identificación (ID) de licencia de software o una clave de licencia de software. En otro ejemplo, el identificador de la licencia puede comprender un hash criptográfico de los contenidos de la licencia.
El dato (D1) puede además comprender un identificador indicativo de la ubicación de almacenamiento del software informático. En un ejemplo, el identificador puede comprender un URL para un objeto en Internet. En un ejemplo adicional, puede proveerse un enlace a la ubicación de almacenamiento del software informático en un depósito como, por ejemplo, una tabla de hash o tabla de hash distribuidas.
En incluso un ejemplo adicional, el dato (D1) puede comprender información que identifica al fabricante del software informático. Ello puede incluir detalles personales como, por ejemplo, nombre, dirección, detalles de contacto o una clave pública asociada al fabricante.
Determinación de un primer valor hash (H1) según el software informático 120
Según se describe también más arriba, el método 100 además incluye determinar 120 un primer valor hash (H1) del software informático. La determinación 120 de un primer valor hash (H1) puede comprender recibir el primer valor hash (H1) de un usuario o acceder al primer valor hash (H1) desde un almacén de datos. La determinación 120 de un primer valor hash (H1) puede además comprender calcular el valor hash en el primer nodo 3.
En un ejemplo, el primer nodo 3 puede recibir el primer valor hash (H1) del primer usuario 23 mediante la interfaz de usuario 15. En otro ejemplo, el primer nodo 3 puede recibir el primer valor hash (H1) del segundo usuario 24. En incluso otro ejemplo, el primer nodo 3 puede acceder al primer valor hash (H1) desde un almacén de datos local 17 o almacén de datos remoto.
En un ejemplo, el primer valor hash (H1) es de un ejecutable del software informático. El ejecutable del software informático puede recuperarse de la red de comunicaciones 5 como, por ejemplo, Internet. En otro ejemplo, el ejecutable puede proveerse por el primer usuario 23 o segundo usuario 24. En incluso otro ejemplo, el ejecutable puede recuperarse del almacén de datos 17. En incluso un ejemplo adicional, el ejecutable puede recuperarse de un depósito como, por ejemplo, una tabla de hash o una DHT.
El hash del ejecutable del software puede determinarse mediante el uso del algoritmo SHA-256 para crear una representación de 256 bits de la información. Se apreciará que otros algoritmos de hash pueden usarse, incluidos otros algoritmos en la familia Algoritmo de Hash Seguro (SHA). Algunos ejemplos particulares incluyen instancias en el subconjunto SHA-3, incluidos SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE128, SHAKE256. Otros algoritmos de hash pueden incluir aquellos en la familia Condensado de Mensaje de Evaluación de Primitivos de Integridad RACE (RIPEMD, por sus siglas en inglés). Un ejemplo particular puede incluir RIPEMD-160. Otras funciones hash pueden incluir familias basadas en la función hash Zémor-Tillich y funciones hash basadas en mochila.
Determinación de un segundo valor hash (H2) según el dato (D1) y el software informático 130
El método 100 también incluye determinar 130 un segundo valor hash (H2) según el dato (D1) y el software informático.
En un ejemplo, el segundo valor hash (H2) puede determinarse según el hash de la concatenación del dato (D1) y el ejecutable (o hash del ejecutable, es decir, el primer valor hash (H1)) del software informático. En un ejemplo adicional, el segundo valor hash (H2) puede determinarse según el hash de la concatenación del dato (D1), el ejecutable (o hash del ejecutable) del software informático e información adicional.
La información adicional puede comprender una clave pública del primer usuario 23 (PU1) o segundo usuario 24 (PU2). En un ejemplo adicional, la información adicional puede comprender un identificador de una entidad asociada al primer usuario 23 o segundo usuario 24. Por ejemplo, la entidad puede ser un empleador del primer usuario 23 o segundo usuario 24. En otro ejemplo, la entidad puede ser un proveedor de servicios del primer usuario 23 o segundo usuario 24.
La información adicional puede además comprender un identificador de dispositivo de un dispositivo asociado al primer nodo 3, segundo nodo 7, primer usuario 23 o segundo usuario 24. Un ejemplo de un dispositivo es el primer dispositivo de procesamiento 21 según se ilustra en la Figura 2. El identificador de dispositivo puede comprender al menos uno de los siguientes: una dirección MAC, número de serie de placa madre o un número de identificación de dispositivo. El identificador de dispositivo puede además ser una concatenación de al menos dos de la dirección MAC, número de serie de placa madre o número de identificación de dispositivo. En un ejemplo adicional, el identificador de dispositivo puede comprender un valor hash asociado a la dirección MAC, número de serie de placa madre o número de identificación de dispositivo, o la concatenación descrita más arriba.
En incluso un ejemplo adicional, la información adicional puede comprender una fecha de expiración de la licencia asociada al software informático.
Licencia asociada al software informático
En un ejemplo adicional, el segundo valor hash (H2) puede determinarse según la concatenación del dato (D1), el ejecutable (o hash del ejecutable) del software informático, información adicional o la licencia que se relaciona con el software informático.
La representación de la licencia puede ser un archivo o documento que especifica el contenido de la licencia. Por ejemplo, un texto claro ASCII, documento PDF o documento Word. El segundo valor hash (H2) puede incluir la licencia en su forma original o, por ejemplo, puede proveer un enlace a la ubicación de la licencia en una red de comunicaciones públicamente accesible como, por ejemplo, Internet. En un ejemplo adicional, puede proveerse un enlace a la ubicación de la licencia en un depósito como, por ejemplo, una tabla hash o DHT. En incluso un ejemplo adicional, puede proveerse un enlace a la ubicación de la licencia en un recurso basado en ordenador como, por ejemplo, el almacén de datos 17.
En un ejemplo, la licencia puede comprender el primer valor hash (H1) asociado al software informático.
La licencia asociada al software informático puede además comprender información adicional según se describe más arriba. En un ejemplo, la licencia puede asociarse a un primer usuario 23 o segundo usuario 24. La licencia puede comprender la clave pública del primer usuario 23 (PU1) o segundo usuario 24 (PU2). En un ejemplo adicional, la licencia puede comprender un identificador de una entidad asociada al primer usuario 23 o segundo usuario 24.
La licencia asociada al software informático puede además comprender un identificador de dispositivo de un dispositivo asociado al primer nodo 3, segundo nodo 7, primer usuario 23 o segundo usuario 24. Un ejemplo de un dispositivo es el primer dispositivo de procesamiento 21 según se ilustra en la Figura 2. El identificador de dispositivo puede comprender al menos uno de los siguientes: una dirección MAC, número de serie de placa madre o un número de identificación de dispositivo. El identificador de dispositivo puede además ser una concatenación de al menos dos de la dirección MAC, número de serie de placa madre o número de identificación de dispositivo. En un ejemplo adicional, el identificador de dispositivo puede comprender un valor hash asociado a la dirección MAC, número de serie de placa madre o número de identificación de dispositivo, o la concatenación descrita más arriba. El primer usuario 23 puede ser el fabricante del software informático y el segundo usuario 24 puede ser el receptor ("usuario final") del software informático. En otro ejemplo, el segundo usuario 24 puede ser el fabricante del software informático y el primer usuario 23 puede ser el usuario final del software informático.
En un ejemplo, la licencia asociada al software informático puede autorizar solamente a un usuario final (una "licencia de un solo usuario"). En un ejemplo adicional, la licencia asociada al software informático puede autorizar un dispositivo del usuario final (una "licencia de un solo dispositivo"). En otro ejemplo, la licencia asociada al software informático puede autorizar más de un dispositivo del usuario final (una "licencia multidispositivo").
En otro ejemplo, puede haber más de un usuario final (una "licencia multiusuario"). En un ejemplo adicional, la licencia asociada al software informático puede autorizar un dispositivo por usuario final. En otro ejemplo, la licencia asociada al software informático puede autorizar más de un dispositivo por usuario final.
En el caso en el que la licencia se asocia a un primer usuario 23 o segundo usuario 24, la licencia puede comprender la clave pública de primer usuario (PU1) asociada al primer usuario 23 y la clave pública de segundo usuario (PU2) asociada al segundo usuario 24.
Árbol de Merkle
En otro ejemplo, la licencia puede ser el valor hash superior de un árbol de Merkle. Un ejemplo de un árbol de Merkle se ilustra en la Figura 4. En un árbol de Merkle, el valor hash en cada nodo son hashes de sus respectivos nodos "hijos". Por ejemplo, el valor hash Hash-A 305 es el hash de los valores hash en los dos nodos "hijos" 309 y 311. Puede verse que el valor hash superior del árbol de Merkle, Hash-AB 303, comprende todos los valores hash en el árbol de Merkle. Es decir, captura los valores hash de las cuatro "hojas" en la parte inferior del árbol, A1 317, A2319, B1321 y B2323.
En un ejemplo de la presente descripción, cada "hoja" del árbol de Merkle puede representar un aspecto de la información de la licencia. Una licencia a modo de ejemplo se ilustra en la Figura 5. El dato (D1) 417 se captura en el valor hash Hash-D 409, el ejecutable del software 419 se captura en el valor hash Hash-S 411 (H1), las claves públicas 421 de usuarios 23 y/o 24 se capturan en el valor hash Hash-P 413 y la fecha de expiración 423 se captura en el valor hash Hash-E 415. Puede verse que los nodos 405 y 407 capturan los valores hash asociados a las hojas para el dato (D1) 417 y software 419, y claves públicas 421 y fecha de expiración 423 respectivamente.
Se apreciará que otra información no descrita de otra manera más arriba puede comprender la información adicional en la que se basa el valor hash (H2).
Envío del dato (D1), primer valor hash (H1) y segundo valor hash (H2) a una tabla de hash distribuidas 140
El método 100 también incluye enviar 140, en una red de comunicaciones 5, el dato (D1), primer valor hash (H1) y el segundo valor hash (H2) a una entrada en una tabla de hash distribuidas 13.
En un ejemplo, el segundo valor hash (H2) puede ser una clave de un par de valores de claves, y el dato (D1) y el primer valor hash (H1) pueden ser un valor en el par de valores de claves.
En un ejemplo adicional, información adicional según se describe más arriba puede también ser parte del valor en el par de valores de claves. Ello incluye, pero sin limitación: claves públicas del primer usuario 23 o segundo usuario 24, un identificador de dispositivo de un dispositivo asociado al primer nodo 3, segundo nodo 7, primer usuario 23 o segundo usuario 24, un identificador indicativo de la ubicación del software informático o licencia, o información adicional asociada a la licencia.
Según se describe más arriba, una DHT 13 consta de pares de valores de claves, donde cada par de valores de claves se asigna a un índice. En un ejemplo, el segundo valor hash (H2) puede usarse para generar el índice. Una función hash o función hash criptográfica puede llevarse a cabo en el segundo valor hash (H2). Por ejemplo, la función criptográfica SHA-1 puede usarse:
Indice = SHA-1(H2)
Para que el segundo valor hash (H2) sea la clave de un par de valores de claves en la DHT 13, y el dato (D1) y el primer valor hash (H1) sean el valor en el par de valores de claves, la clave y valor se envían a cualquier nodo participante de la DHT 13.
En un ejemplo, un mensaje como, por ejemplo, put(key, value) puede enviarse a un nodo participante de la DHT 13, donde key es el segundo valor hash (H2) y value es el dato (D1) y el primer valor hash (H1). El mensaje puede enviarse a todos los nodos participantes hasta que se recibe por el nodo participante que se asigna al índice según se indica por la participación del espacio de claves. El nodo participante asignado al índice indicado en el mensaje puede entonces almacenar el par de valores de claves en la DHT 13 y asumir la responsabilidad de mantener la entrada asociada al par de valores de claves.
Es una ventaja que el valor de cualquier clave dada puede recuperarse de la DHT 13. En un ejemplo, el primer usuario 23 o segundo usuario 24 pueden desear recuperar el valor. El primer usuario 23 o segundo usuario 24, mediante el primer nodo 3, segundo nodo 7 u otro nodo no ilustrado de otra forma, pueden proveer a cualquier nodo participante de la DHT 13 un mensaje de solicitud como, por ejemplo, get(key). El mensaje de solicitud puede entonces enviarse a todos los nodos participantes hasta que se recibe por el nodo participante que se asigna al índice según se indica por la participación del espacio de claves.
Determinación de un metadato (M) 150
El método 100 además incluye determinar 150 un metadato (M) que comprende el segundo valor hash (H2). La determinación 150 de un metadato (M) puede comprender recibir el metadato (M) de un usuario, nodo o almacén de datos. El metadato (M) puede incluirse, por ejemplo, en uno o más de los 15 lugares disponibles para las claves públicas en un primer script de rescate (RS1) multifirma P2SH de una transacción en el libro mayor distribuido P2P 14.
El primer script de rescate (RS1) de la transacción en el libro mayor distribuido P2P 14 puede representar una emisión, o creación, de una transacción tokenizada ("token de emisión") que representa el contenido incluido en el metadato (M). En un ejemplo, el token puede emitirse por un agente (A).
En el método P2SH del protocolo Bitcoin, el metadato puede incluirse en un script de rescate por medio del método provisto más abajo.
Metadatos
El metadato (M) puede incorporarse en uno o más de los 15 lugares disponibles para las claves públicas en un script de rescate (RS1) multifirma P2SH. Por ejemplo, el script de rescate (RS1) puede tomar la forma de:
<NumSigs Metadata1 Metadata2... PubK1 PubK2... NumKeys OP_CHECKMULTISIG>
donde Metadata1 y Metadata2 incluyen, cada uno, un metadato que toma el lugar de una clave pública en el script de rescate y PubK1 y PubK2 son claves públicas.
El metadato (M) puede comprender el segundo valor hash (H2). El metadato (M) puede además comprender una descripción o palabra clave que describe condiciones asociadas al software informático o licencia. Por ejemplo, la fecha de la licencia, nombre, fecha de nacimiento, dirección, detalles de contacto, u otros detalles del usuario asociado a la licencia. En un ejemplo adicional, la información asociada a la cantidad de criptomoneda puede incluirse.
El metadato (M) puede incluir la información en una cantidad de maneras. En un ejemplo, los contenidos de la información pueden incluirse. En un ejemplo adicional, un hash criptográfico de la información puede incluirse. El hash de la información puede determinarse mediante el uso del algoritmo SHA-256 para crear una representación de 256 bits de la información. Se apreciará que otros algoritmos de hash pueden usarse, incluidos otros algoritmos en la familia Algoritmo de Hash Seguro (SHA). Algunos ejemplos particulares incluyen instancias en el subconjunto SHA-3, incluidos SHA3-224, SHA3-256, SHA3-384, SHA3-512, SHAKE128, SHAKE256. Otros algoritmos de hash pueden incluir aquellos en la familia Condensado de Mensaje de Evaluación de Primitivos de Integridad RACE (RIPEMD). Un ejemplo particular puede incluir RIPEMD-160. Otras funciones hash pueden incluir familias basadas en la función hash Zémor-Tillich y funciones hash basadas en mochila.
En realizaciones adicionales de la presente descripción, combinaciones que incluyen uno o más de lo descrito más arriba pueden incluirse en el metadato (M). Dado que el metadato (M) puede hacerse público por medio del libro mayor distribuido P2P 14 como, por ejemplo, la cadena de bloques, o transmitirse en una red no segura, puede ser deseable que detalles específicos del metadato (M) se escondan u oculten por motivos de privacidad.
Por lo tanto, el uso de transacciones Bitcoin P2SH multifirma en realizaciones de la presente descripción ofrece una ventaja dado que permite la transferencia y el registro permanente de información asociada al software informático y a la licencia. Dicho registro se logra mediante la inclusión del metadato en el script de salida de una transacción, por ejemplo, un script de rescate.
Primer script de rescate
Según se describe más arriba, un script de rescate es un ejemplo de un script de salida en el método P2SH estándar del protocolo Bitcoin y describe cómo un usuario puede obtener acceso a la criptomoneda especificada en el registro de transacción.
En la presente descripción, el primer script de rescate (RS1) para el token de emisión puede basarse en el metadato (M). El primer script de rescate (RS1) puede además comprender una clave pública de agente (PA) que forma un par criptográfico con una clave privada de agente (VA). De esta manera, se requiere que la clave privada de agente (VA) "desbloquee" o utilice criptomoneda que se asocia a la transacción.
En un ejemplo, el primer script de rescate (RS1) para el token de emisión puede incluir el metadato (M). El primer script de rescate (RS1) puede además comprender una clave pública de agente (PA). En el presente ejemplo, el primer script de rescate (RS1) puede ser de la forma:
<OP_1 PA Metadata1 Metadata2 OP_3 OP_CHECKMULTISIG>
donde OP_1 denota el número de firmas requeridas para satisfacer el primer script de rescate (RS1) para desbloquear la transacción ("NumSigs"), y OP_3 denota el número de claves públicas en el script de rescate ("NumKeys").
En el presente ejemplo, el primer script de rescate (RS1) puede comprender dos campos designados para los metadatos, Metadata1 y Metadata2. Un ejemplo específico de los Metadata1 y Metadata2 se ilustra en la Tabla 1 más abajo.
Tabla 1
Campo Subcampo Bytes Comentarios
Metadata1 LicenceType 4 El valor codificado indica el tipo de licencia.
LicencePointer 16 Dirección IPv6 que identifica la DHT.
LicenceTypeData1 12 El formato depende del valor de LicenceType. Rellenado con ceros.
Metadata2 LicenceHash 20 RIPEMD-160(SHA256(archivo de licencia real direccionado por LicencePointer))
LicenceTypeData2 12 El formato depende del valor de LicenceType. Rellenado con ceros.
El presente ejemplo incluye proveer un puntero a la licencia en Metadatal que puede ser útil donde el tamaño de la licencia impide incluir dichos detalles en el metadato (M). Además, dado que el metadato (M) puede hacerse público, o transmitirse en una red no segura, puede ser deseable que detalles específicos del token se escondan u oculten por motivos de privacidad.
Los primeros 4 bytes de Metadata1 indican el tipo de licencia. Por ejemplo, el tipo de licencia puede denotar el nombre del software informático como, por ejemplo, BobSoftware. En un ejemplo adicional, el tipo de licencia puede denotar el tipo de autorización de la licencia como, por ejemplo, "un solo usuario" o "multidispositivo", según se describe más arriba. Los siguientes 16 bytes mantienen la dirección IP de la ubicación del archivo de licencia electrónico real, y dejan un margen para las direcciones IPv6. Es preciso notar que, en algunas realizaciones, dicho valor puede apuntar a la semilla de un archivo torrent de modo que el archivo de licencia puede distribuirse en la nube antes que centralizarse. Los siguientes 12 bytes contienen datos específicos al tipo de licencia.
Los primeros 20 bytes de Metadata2 son un hash del archivo de licencia real mediante el uso de RIPEMD-160 en SHA256 aplicado a los contenidos reales del archivo de licencia. Dado que el archivo de licencia real puede ser recuperable, ello permite la validación de la transacción contra el contrato. Es preciso notar que el propio archivo de licencia puede ser completamente público (no encriptado y legible para el ser humano) o puede encriptarse en aras de la privacidad, según los requisitos de la realización específica. El contenido de los 12 bytes restantes de Metadata2 puede usarse según el tipo de licencia.
Puede verse a partir del ejemplo del primer script de rescate (RS1) provisto más arriba que el token de emisión debe firmarse por el agente (A) para poder enviarse. Un ejemplo de la transacción para el token de emisión se provee en la Tabla 2, donde, en aras de la brevedad, las tasas del minero no se muestran.
Tabla 2
ID-600 Transacción- ID
Version number Número de versión
1 Número de entradas
ID-110 Salida de Trans Prev
IDX-00 Índice de Salida de Trans Prev
Script length Longitud de script
OP_0 Sig-VA < redeem script ID-110 > ScriptSig
0000000000000001 Número de secuencia
1 Número de salidas
C1 Valor de salida
Output script length Longitud de script de salida
OP_HASH160 < hash of redeem script (RS1) > OP_EQUAL Script de salida
LockTime Tiempo de Bloqueo
Las líneas 4 a 8 de la Tabla 2 representan la entrada en la transacción que es la primera cantidad de criptomoneda (C1) que se incluirá en el token de emisión (a saber, "tokenizado"). En el presente ejemplo, la primera cantidad de criptomoneda (C1) es el resultado de una transacción previa (ID-110) que transfiere la primera cantidad de criptomoneda en beneficio del agente (A) y, por lo tanto, el script de salida (script de rescate ID-110) de la transacción previa (ID-110) incluye la clave pública del agente (PA). Por consiguiente, para desbloquear dicha salida previa, el script (script de rescate ID-110) debe firmarse con la clave privada (VA) del primer usuario. Finalmente, la línea 8 de la Tabla 2 indica que la primera cantidad de criptomoneda (C1) será la primera salida en la presente transacción (ID-600).
Las líneas 9 a 13 de la Tabla 2 representan la primera (y única) salida de la transacción (ID-600) que, en el presente caso, es representativa del token de emisión creado y transferido otra vez al agente. La línea 10 muestra el valor de salida, que es la primera cantidad de criptomoneda (C1). La línea 11 muestra el script de salida, que incluye "< hash of redeem script >" según su uso en el método P2SH del protocolo Bitcoin. En el presente ejemplo, el script de rescate es el primer script de rescate (RS1) en la forma que se describe más arriba.
La salida de la transacción (ID-600) que se muestra en la Tabla 2 se registra entonces, con la primera salida de datos (O1), en el libro mayor distribuido P2P 14. En particular, la primera salida de datos (O1) puede comprender una indicación de la primera cantidad de criptomoneda (C1) que se transfiere en la transacción. La primera salida de datos (O1) puede además comprender un hash del primer script de rescate (RS1).
En transacciones futuras de la primera cantidad de criptomoneda (C1), por ejemplo, la transferencia del token a un primer usuario 23 o segundo usuario 24, el script para desbloquear la primera cantidad de criptomoneda (C1) (p.ej., la entrada ScriptSig de la transacción futura) puede ser en la forma:
OP_0 Sig-VA Sig-VU1 <OP_1 PA PU1 Metadata1 Metadata2 OP_4 OP_CHECKMULTISIG>
donde Sig-VU1 indica la firma del primer usuario 23. Es preciso notar que el script de más arriba supone que solo una firma del agente (A) o del primer usuario 23 se requiere para desbloquear la primera cantidad de criptomoneda (C1).
El token de emisión puede transferirse a otro usuario por medio de un segundo script de rescate (RS2).
Variaciones
Segundo script de rescate
El token que se asocia al software informático y a la licencia puede transferirse del agente (A) a otro usuario, por ejemplo, al primer usuario 23 o segundo usuario 24. En un ejemplo, la transferencia del token puede ser representativa de la autorización de acceso al usuario para el software informático o licencia. La transferencia puede implementarse por un segundo script de rescate (RS2).
En un ejemplo, el agente (A) desea transferir el token de emisión a un primer usuario 23. El primer usuario 23 puede representar, por ejemplo, a un fabricante del software informático.
En el presente ejemplo, el segundo script de rescate (RS2) puede basarse en el metadato (M), la clave pública de agente (PA) asociada al agente (A) y la clave pública de primer usuario (PU1) asociada al primer usuario 23.
El segundo script de rescate (RS2) puede ser de la forma:
<OP_1 PA PU1 Metadata1 Metadata2 OP_4 OP_CHECKMULTISIG> En el presente ejemplo, el segundo script de rescate (RS2) comprende los mismos dos campos de metadato que el primer script de rescate (RS1). El segundo script de rescate (RS2) además comprende la clave pública de agente (PA) asociada al agente y la clave pública de primer usuario (PU1) asociada al primer usuario.
Puede verse a partir del ejemplo del segundo script de rescate (RS2) provisto más arriba que el token que se transfiere debe firmarse por el agente (A) o primer usuario 23 para poder enviarse. Un ejemplo de la transacción para dicha transferencia del token de emisión se provee en la Tabla 3, donde, nuevamente, en aras de la brevedad, las tasas del minero no se muestran.
Tabla 3
ID-610 Transacción-ID
Version number Número de versión
1 Número de entradas
ID-600 Salida de Trans Prev
IDX-00 Índice de Salida de Trans Prev Script length Longitud de script
Sig-VA < OP_1 PA Metadata1 Metadata2 OP_3 OP_CHECKMULTISIG > ScriptSig
0000000000000001 Número de secuencia
1 Número de salidas
C1 Valor de salida
Output script length Longitud de script de salida OP_HASH160 < hash of redeem script (RS2) > OP_EQUAL Script de salida
LockTime Tiempo de Bloqueo
De manera similar a la Tabla 2, las líneas 4 a 8 de la Tabla 3 representan la entrada en la transacción (ID-610). En el presente ejemplo, la entrada es el token de emisión, a saber, la salida de la transacción (ID-600) que se ilustra en la Tabla 2. Puede verse que el script de rescate en la línea 7 corresponde al script de rescate del token de emisión, a saber, el primer script de rescate (RS1). Por consiguiente, para desbloquear la salida de la transacción (ID-600), el primer script de rescate (RS1) debe firmarse con la clave pública del agente (PA).
Las líneas 9 a 13 de la Tabla 3 representan la salida de la transacción (ID-610) que, en el presente caso, es representativa del token de emisión que se transfiere al agente (A) o al primer usuario 23 (U1). La línea 10 muestra el valor de salida, que es la primera cantidad de criptomoneda (C1). La línea 12 muestra el script de salida, que incluye "< hash of redeem script >" según su uso en el método P2SH del protocolo Bitcoin. En el presente ejemplo, el script de rescate es el segundo script de rescate (RS2) en la forma que se describe más arriba.
La salida de la transacción (ID-610) se registra entonces, con una segunda salida de datos (O2), en el libro mayor distribuido P2P 14. La segunda salida de datos (O2) puede comprender una indicación de que la primera cantidad de criptomoneda (C1) de la primera salida de datos (O1) se transferirá en la transacción. La segunda salida de datos (O2) puede además comprender un hash del segundo script de rescate (RS2).
Identificador indicativo de la ubicación del software informático o licencia
Según se describe más arriba, el dato (D1) o licencia pueden comprender un identificador indicativo de la ubicación del software informático o licencia, respectivamente.
En un ejemplo, el identificador puede determinarse de forma independiente del dato (D1) o la licencia y permanecer separado del dato (D1) o licencia. El identificador puede además asignarse al valor del par de valores de claves junto con el dato (D1) y el primer valor hash (H1) según se describe en el método 100 de más arriba. De esta manera, el identificador puede incluirse en el campo value del mensaje put(key, value) y enviarse a un nodo participante en la DHT 13, según se describe más arriba.
En un ejemplo, el identificador indicativo de la ubicación puede comprender un URL para un objeto en Internet. En otro ejemplo, el identificador indicativo de la ubicación puede comprender una dirección para un depósito como, por ejemplo, una tabla de hash o una DHT 13. En incluso otro ejemplo, el identificador indicativo de la ubicación puede comprender una dirección para un depósito basado en ordenador como, por ejemplo, un servidor, base de datos o instalación de almacenamiento provistos en un recurso basado en ordenador como, por ejemplo, el almacén de datos 17 asociado al primer dispositivo de procesamiento 21 del primer nodo 3.
La Figura 6 ilustra un método 500 para determinar la ubicación del software informático o licencia. El método 500 incluye determinar 510 el metadato (M) a partir del primer script de rescate (RS1). Según se describe más arriba, el metadato (M) puede incorporarse en uno o más de los 15 lugares disponibles para las claves públicas en el primer script de rescate (RS1).
En el método P2SH del protocolo Bitcoin, cuando la salida de una transacción se utiliza en una transacción subsiguiente, el script de rescate se convierte en visible en la transacción subsiguiente. Según se describe más arriba y con referencia a la Tabla 2, la transacción (ID-600) para el token de emisión se devuelve al agente (A). De esta manera, el agente (A) puede utilizar dicho token de emisión para exponer el primer script de rescate (RS1). El metadato (M) que se basa en el segundo valor hash (H2) es, por lo tanto, visible en el libro mayor distribuido P2P 14. De esta manera, el segundo valor hash (H2) puede recuperarse 520 del metadato (M) en el primer script de rescate (RS1). En un ejemplo, el valor asociado a la clave del par de valores de claves puede recuperarse de la DHT 13 mediante el uso del mensaje de solicitud get(key).
El método 500 además incluye enviar 530, en una red de comunicaciones 5, el segundo valor hash (H2) a un procesador asociado a un nodo participante de la DHT 13. Según se describe más arriba, el segundo valor hash (H2) puede ser la clave del par de valores de claves. Según se describe también más arriba, el valor para una clave dada puede recuperarse mediante la provisión de un mensaje que contiene la clave a cualquier nodo participante de la DHT 13. Por lo tanto, en el ejemplo donde el identificador se incluye en el campo valor del par de valores de claves, el método 500 puede determinar 540, a partir del procesador del nodo participante, el identificador indicativo de la ubicación del software informático o licencia.
Verificación de la propiedad de un software informático después de la instalación 600
Según se describe más arriba, el método 600 verifica la propiedad del software informático después de la instalación del software informático. En un ejemplo, un usuario del software informático como, por ejemplo, el segundo usuario 24, puede rescatar el token que se asocia al software informático y a la licencia. En un ejemplo adicional, el token puede recibirse por el segundo usuario 24 mediante el uso del segundo script de rescate según se describe más arriba.
El segundo usuario 24 puede determinar el identificador indicativo de la ubicación del software informático a partir de la entrada en la DHT 13 mediante el uso del método 500 según se describe más arriba. De esta manera, el segundo usuario 24 puede determinar la ubicación del software informático y recuperarlo. En un ejemplo, el software informático puede almacenarse en un URL en Internet. En otro ejemplo, el software informático puede almacenarse en un depósito basado en ordenador como, por ejemplo, un servidor, base de datos o instalación de almacenamiento provistos en un recurso basado en ordenador.
Después de que el segundo usuario 24 haya recuperado el software informático, el software informático puede instalarse en un dispositivo de procesamiento 27 asociado al segundo usuario 24. En un ejemplo, el ejecutable del software informático también es el instalador del software informático. En otro ejemplo, el instalador del software informático puede ser un gestor de arranque.
Después de que el software informático se haya instalado en el dispositivo de procesamiento 17, la propiedad del software informático puede verificarse. La verificación de la propiedad puede usar un registro de transacciones, donde la transacción puede determinarse según se describe en la Tabla 2 o Tabla 3 de más arriba, y la información puede almacenarse en el campo valor de la entrada en la DHT 13.
Determinación de una clave pública de segundo usuario (PU2) asociada a un segundo usuario (U2) 610 Según se describe más arriba, el método 600 incluye determinar 610 una clave pública de segundo usuario (PU2) asociada a un segundo usuario (U2) a partir de un registro de transacciones almacenado en el libro mayor distribuido P2P 14. La determinación de una clave pública de segundo usuario (PU2) a partir de un registro de transacciones puede comprender recibir el registro de transacciones de un usuario, nodo o almacén de datos y consultar el registro de transacciones para la clave pública de segundo usuario (PU2). La determinación de una clave pública de segundo usuario (PU2) a partir de un registro de transacciones puede además comprender acceder al registro de transacciones en un usuario, nodo o almacén de datos y consultar el registro de transacciones para la clave pública de segundo usuario (PU2).
En un ejemplo, el segundo nodo 7 asociado al segundo usuario 24 puede recibir el registro de transacciones del primer nodo 3 o de un almacén de datos 17 asociado al primer nodo 3. En otro ejemplo, el segundo nodo 7 puede recibir el registro de transacciones del primer usuario 23 o segundo usuario 24. En un ejemplo, el segundo nodo 7 asociado al segundo usuario 24 puede recibir el registro de transacciones del primer nodo 3 o un almacén de datos 17 asociado al primer nodo 3. En otro ejemplo, el segundo nodo 7 puede recibir el registro de transacciones del primer usuario 23 o segundo usuario 24. El registro de transacciones puede referirse a las transacciones según se describe en las Tablas 2 y 3 de más arriba.
En incluso otro ejemplo, el segundo nodo 7 puede acceder al registro de transacciones en el segundo nodo 7 o en un almacén de datos asociado al segundo nodo 7. En un ejemplo adicional, puede accederse al registro de transacciones por el segundo nodo 7 mediante el uso de una instalación públicamente disponible como, por ejemplo, www.blockchain.info.
El registro de transacciones almacenado en el libro mayor distribuido P2P 14 puede comprender información que identifica la transacción o usuarios asociados a la transacción. Un ejemplo de la información comprendida en un registro de transacciones se muestra en la Tabla 4.
Tabla 4
Campo Descripción
Version number Indica qué reglas del protocolo Bitcoin seguirá la transacción
Number of inputs Número de entradas
Inputs Al menos una entrada
Number of outputs Número de salidas
Outputs Al menos una salida
LockTime Un sello temporal
Cada salida de transacción incluye información sobre la cantidad de criptomoneda transferida y un script de salida que define las condiciones que se requiere que se satisfagan para utilizar la criptomoneda. El script de salida normalmente incluye una clave pública asociada a un receptor de la criptomoneda.
En un ejemplo, la clave pública asociada al receptor de la criptomoneda en el script de salida puede ser la clave pública de segundo usuario (PU2). De esta manera, la clave pública de segundo usuario (PU2) asociada al segundo usuario (U2) se determina a partir del script de salida en el registro de transacciones almacenado en el libro mayor distribuido P2P 14.
Según se describe más arriba, en el método P2SH del protocolo Bitcoin, el script de salida es el script de rescate. El script de rescate puede incluir un número de claves públicas asociadas al emisor y receptor de la criptomoneda. En un ejemplo, la clave pública de segundo usuario (PU2) asociada al segundo usuario (U2) puede determinarse a partir del script de rescate del registro de transacciones.
En otro ejemplo, la clave pública de segundo usuario (PU2) puede almacenarse en el metadato (M) del script de rescate. Según se describe más arriba, en el método P2SH, cuando la salida de la transacción se utiliza en una transacción subsiguiente, el script de rescate se convierte en visible en el libro mayor distribuido P2P 14. De esta manera, la clave pública de segundo usuario (PU2) puede recuperarse del metadato (M) en el script de rescate. Determinación de una segunda clave pública (P2) asociada al segundo usuario (U2) 620
El método 600 además incluye determinar 620 una segunda clave pública (P2) asociada al segundo usuario (U2) a partir de una entrada almacenada en la DHT 13. La determinación de una segunda clave pública (P2) puede comprender recuperar un valor del par de valores de claves asociado a la entrada almacenada en la DHT 13. La determinación de una segunda clave pública (P2) puede también comprender recibir el valor del par de valores de claves de otro nodo.
En un ejemplo, el valor del par de valores de claves asociado a la entrada en la DHT 13 puede recuperarse mediante el envío de un mensaje de solicitud a un nodo participante de la DHT 13. Según se describe más arriba, el mensaje de solicitud puede comprender get(key), donde key es la clave para el par de valores de claves asociado a la entrada en la DHT 13.
En un ejemplo adicional, la clave del par de valores de claves es el segundo valor hash (H2).
En otro ejemplo, el segundo nodo 7 puede recibir el valor almacenado en la DHT 13 del primer nodo 3 u otro nodo no ilustrado de otra manera. El primer nodo 3 u otro nodo pueden proveer a un nodo participante de la DHT 13 el mensaje de solicitud get(key). El primer nodo 3 u otro nodo pueden entonces recibir el valor del par de valores de claves asociado a la entrada en la DHT 13. El valor del par de valores de claves puede entonces enviarse al segundo nodo 7 desde el primer nodo 3 u otro nodo en la red de comunicaciones 5.
Comparación de la clave pública de segundo usuario (PU2) y la segunda clave pública (P2) 630
El método además incluye comparar 630 la clave pública de segundo usuario (PU2) y la segunda clave pública (P2). La comparación puede comprender determinar si la clave pública de segundo usuario (PU2) y la segunda clave pública (P2) concuerdan.
En un ejemplo, una concordancia puede indicar que la clave pública de segundo usuario (PU2) y la segunda clave pública (P2) son equivalentes.
En otro ejemplo, una concordancia puede indicar que la clave pública de segundo usuario (PU2) y la segunda clave pública (P2) pertenecen a la misma cartera de criptomoneda.
En un ejemplo adicional, la cartera de criptomoneda puede ser una cartera determinista y una concordancia puede indicar que la clave pública de segundo usuario (PU2) y la segunda clave pública (P2) derivan de una semilla común. La semilla común puede ser una secuencia de caracteres.
Verificación de la propiedad del software informático según la comparación 640
El método 600 además incluye verificar 640 la propiedad del software informático según la comparación de la clave pública de segundo usuario (PU2) y la segunda clave pública (P2).
En un ejemplo, la verificación de la propiedad del software informático ocurre si la comparación determina que la clave pública de segundo usuario (PU2) y la segunda clave pública (P2) concuerdan. En un ejemplo, la verificación de la propiedad del software informático ocurre si la comparación determina que la clave pública de segundo usuario (PU2) y la segunda clave pública (P2) concuerdan. La verificación puede implicar permitir que un usuario use o interactúe con el software o que de otra manera lleve a cabo algún acto en relación con el software si se ha establecido una concordancia.
Variaciones
Software informático
El software informático puede comprender un encabezamiento y un cuerpo. En un ejemplo, el encabezamiento puede comprender información asociada al software informático. En un ejemplo adicional, el encabezamiento puede comprender un valor hash del cuerpo del software informático. En incluso un ejemplo adicional, el encabezamiento puede comprender el segundo valor hash (H2) según se describe más arriba.
El cuerpo del software informático puede comprender un ejecutable del software informático.
Instalación del software informático
El ejecutable del software informático puede comprender instrucciones que hacen que un segundo dispositivo de procesamiento 27 asociado al segundo usuario 24 instale el software informático.
El ejecutable del software informático puede comprender instrucciones que hacen que un segundo dispositivo de procesamiento 27 asociado al segundo usuario 24 instale el software informático. En un ejemplo, el software informático se instala en el segundo dispositivo de procesamiento 27 antes de determinar 610 la clave pública de segundo usuario (PU2).
Encriptación del ejecutable del software informático
En el método 600 descrito más arriba, antes de instalar el ejecutable del software informático, el método 600 puede comprender encriptar el ejecutable del software informático. El ejecutable del software informático puede encriptarse después del método 100 descrito más arriba.
En un ejemplo, el ejecutable del software informático se encripta con una clave pública asociada al primer usuario 23 o segundo usuario 24. En otro ejemplo, el ejecutable del software informático se encripta con una clave pública asociada al primer nodo 3 o segundo nodo 7. En incluso otro ejemplo, el ejecutable del software informático se encripta con una clave pública asociada a un tercero o a un nodo no ilustrado de otra manera.
En otro ejemplo, el ejecutable del software informático puede encriptarse mediante el uso de un enfoque de compartición de secreto común similar a la técnica descrita provista más abajo.
Determinación del secreto común (SC)
Un secreto común para la encriptación puede determinarse en los nodos 3, 7 por los usuarios 23, 24 asociados a los nodos llevando a cabo las etapas de los métodos 300, 400 respectivamente, según se ilustra en la Figura 8. De esta manera, el secreto común puede determinarse de forma independiente sin comunicar claves privadas asociadas a los usuarios 23, 24 en la red de comunicaciones 5.
Según se ilustra en la Figura 8, el método 300 llevado a cabo por el primer usuario 23 incluye determinar 300 una segunda clave privada de primer usuario (V2U1) según al menos una clave privada de primer usuario (VU1) y un valor de generador (VG). La clave privada de primer usuario (VU1) forma un par criptográfico con la clave pública de primer usuario (PU1).
El valor de generador puede basarse en un mensaje que se comparte entre el primer usuario 23 y el segundo usuario 24, que puede incluir compartir el mensaje en la red de comunicaciones 5. El método 300 también incluye determinar 370 una segunda clave pública de segundo usuario (P2U2) según al menos la clave pública de segundo usuario (PU2) y el valor de generador (VG). El método 300 además incluye determinar 380, en el primer usuario 23, el secreto común (SC) según la segunda clave pública de segundo usuario (P2U2) y la segunda clave privada de primer usuario (V2U1).
De manera significativa, el mismo secreto común (SC) puede determinarse por el segundo usuario 24 asociado al segundo nodo 7 por el método 400. El método 400 incluye determinar 430 una segunda clave pública de primer usuario (P2U1) según la clave pública de primer usuario (PU1) y el valor de generador (VG). El método 400 además incluye determinar 470 una segunda clave privada de segundo usuario (V2U2) según la clave privada de segundo usuario (VU2) y el valor de generador (VG). La clave privada de segundo usuario (VU2) forma un par criptográfico con la clave pública de segundo usuario (PU2).
El método 400 además incluye determinar 480, en el segundo usuario 24, el secreto común (SC) según la segunda clave pública de primer usuario (P2U1) y la segunda clave privada de segundo usuario (V2U2). Los métodos 300, 400 pueden repetirse para producir claves públicas adicionales de primer usuario o claves públicas adicionales de segundo usuario.
Encriptación del ejecutable del software informático
El secreto común (SC) puede usarse como la base para generar una clave simétrica para la encriptación. En un ejemplo, el secreto común (SC) puede ser en la forma de un punto de curva elíptica (xs, ys). Este puede convertirse en un formato de clave estándar mediante el uso de funciones estándares acordadas por los nodos 3, 7. Por ejemplo, el valor xs puede ser un entero de 256 bits que puede usarse como una clave para la encriptación AES256 (Estándar de Encriptación Avanzado). También puede convertirse en un entero de 160 bits mediante el uso de RIPEMD160. Los métodos 700, 800 de comunicación segura con encriptación por el primer usuario 23 se describirán ahora con referencia a la Figura 9.
En la realización provista más abajo a modo de ejemplo, el primer usuario 23 asociado al primer nodo 3 lleva a cabo el método 700 de encriptación del ejecutable del software informático. Se comprenderá que el método 700 puede igualmente aplicarse al segundo usuario 24 en el segundo nodo 7.
El primer usuario 23 determina 710 una clave simétrica según el secreto común (SC) determinado en el método 300, 400 de más arriba. Ello puede incluir convertir el secreto común (SC) en un formato de clave estándar según se describe más arriba. De manera similar, el segundo usuario 24 puede también determinar 810 la clave simétrica según el secreto común (SC).
La clave simétrica puede usarse por el primer usuario 23 para encriptar 720 el ejecutable del software informático para formar un ejecutable encriptado del software informático. El ejecutable encriptado del software informático se incluye 730 entonces en el cuerpo del software informático.
El software informático que comprende el ejecutable encriptado del software informático puede enviarse 740, en la red de comunicaciones 5, a una ubicación de almacenamiento. En un ejemplo, la ubicación de almacenamiento puede ser un depósito como, por ejemplo, una tabla de hash o la DHT 13. En otra ubicación, la ubicación de almacenamiento puede ser en Internet. En incluso otro ejemplo, la ubicación de almacenamiento puede ser un depósito basado en ordenador como, por ejemplo, un servidor, base de datos o instalación de almacenamiento provistos en un recurso basado en ordenador como, por ejemplo, el almacén de datos 17 asociado al primer dispositivo de procesamiento 21 del primer nodo 3.
El segundo usuario 24, a su vez, determina el ejecutable encriptado del software informático. La determinación del ejecutable encriptado del software informático puede comprender descargar el software informático de la ubicación de almacenamiento según se describe más arriba. En un ejemplo, el segundo usuario 24 descarga el ejecutable encriptado del software informático de una entrada en la DHT 13.
El segundo usuario 24 puede desencriptar 830 el ejecutable encriptado del software informático, con la clave simétrica, en el ejecutable del software informático.
Dispositivo de procesamiento
Según se describe más arriba, el primer nodo 3 y segundo nodo 7 pueden ser un dispositivo electrónico como, por ejemplo, un ordenador, tableta, dispositivo de comunicaciones móviles, servidor de ordenador, etc. El dispositivo electrónico puede incluir un dispositivo de procesamiento 21, 27, un almacén de datos 17 y una interfaz de usuario 15.
La Figura 10 ilustra un ejemplo de un dispositivo de procesamiento 21, 27. El dispositivo de procesamiento 21, 27 puede usarse en el primer nodo 3, segundo nodo 7 u otros nodos no ilustrados de otra manera. El dispositivo de procesamiento 21, 27 incluye un procesador 1510, una memoria 1520 y un dispositivo de interfaz 1540 que se comunican entre sí mediante un bus 1530. La memoria 1520 almacena un programa de software informático que comprende instrucciones legibles por máquina y datos para implementar el método 100, 300, 400, 600, 700 y 800 descrito más arriba, y el procesador 1510 lleva a cabo las instrucciones de la memoria 1520 para implementar el método 100, 300, 400, 600, 700 y 800. El dispositivo de interfaz 1540 puede incluir un módulo de comunicaciones que facilita la comunicación con la red de comunicaciones 5 y, en algunos ejemplos, con la interfaz de usuario 15 y periféricos como, por ejemplo, el almacén de datos 17. Debe notarse que aunque el dispositivo de procesamiento 1510 puede ser un elemento de red independiente, el dispositivo de procesamiento 1510 puede también ser parte de otro elemento de red. Además, algunas funciones llevadas a cabo por el dispositivo de procesamiento 1510 pueden distribuirse entre múltiples elementos de red. Por ejemplo, el primer nodo 3 puede tener múltiples dispositivos de procesamiento 21 para llevar a cabo el método 100, 300, 400, 600, 700 y 800 en una red de área local segura asociada al primer nodo 3.
Donde la presente descripción describe que un usuario, empleador, empleado, emisor, comerciante, proveedor u otra entidad lleva a cabo una acción particular (incluida la firma, emisión, determinación, cálculo, envío, recepción, creación, etc.), dicha redacción se usa en aras de la claridad de presentación. Debe comprenderse que dichas acciones se llevan a cabo por los dispositivos informáticos operados por dichas entidades.
Las personas con experiencia en la técnica apreciarán que se pueden realizar numerosas modificaciones y/o variaciones en las realizaciones descritas más arriba, sin apartarse del alcance amplio general de la presente descripción. Las presentes realizaciones se considerarán, por lo tanto, en todos los aspectos, ilustrativas y no restrictivas.

Claims (15)

REIVINDICACIONES
1. Un método implementado por ordenador para verificar la propiedad de un software informático después de la instalación y antes de la ejecución del software informático mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares, el método comprendiendo:
determinar una clave pública de segundo usuario (PU2) asociada a un segundo usuario (U2) a partir de un registro de transacciones almacenado en el libro mayor distribuido entre pares;
determinar una segunda clave pública (P2) asociada al segundo usuario (U2) a partir de una entrada almacenada en la tabla de hash distribuidas;
comparar la clave pública de segundo usuario (PU2) y la segunda clave pública (P2); y
verificar la propiedad del software informático según la comparación de la clave pública de segundo usuario (PU2) y la segunda clave pública (P2).
2. El método de la reivindicación 1, en donde la comparación de la clave pública de segundo usuario (PU2) y la segunda clave pública (P2) comprende determinar si la clave pública de segundo usuario (PU2) y la segunda clave pública (P2) concuerdan.
3. El método de la reivindicación 1 o 2, en donde el software informático comprende un encabezamiento y un cuerpo.
4. El método de la reivindicación 3, en donde el encabezamiento comprende un valor hash del cuerpo del software informático.
5. El método de las reivindicaciones 3 o 4, en donde el encabezamiento además comprende el valor hash (H2) de un dato asociado al software informático o a una licencia.
6. El método de las reivindicaciones 3, 4 u 5, en donde el cuerpo del software informático comprende un ejecutable del software informático.
7. El método de la reivindicación 5, en donde antes de determinar la clave pública de segundo usuario (PU2), el método comprende instalar el ejecutable del software informático en un dispositivo de procesamiento asociado al segundo usuario (U2).
8. El método de la reivindicación 7, en donde antes de instalar el ejecutable del software informático, el método comprende encriptar el ejecutable del software informático.
9. El método de la reivindicación 8, en donde encriptar el ejecutable del software informático comprende: determinar un valor de generador (VG);
determinar una segunda clave pública de segundo usuario (P2U2) según la clave pública de segundo usuario (PU2) y el valor de generador (VG), en donde la segunda clave pública de segundo usuario (P2U2) forma un par criptográfico con una segunda clave privada de segundo usuario (V2U2);
determinar una segunda clave pública de primer usuario (P2U1) según la clave pública de primer usuario (PU1) y el valor de generador (VG), en donde la segunda clave pública de primer usuario (P2U1) forma un par criptográfico con una segunda clave privada de primer usuario (V2U1);
determinar un secreto común (SC) según la segunda clave pública de segundo usuario (P2U2) y la segunda clave privada de primer usuario (V2U1); y
encriptar el ejecutable del software informático con el secreto común (SC) para generar un ejecutable encriptado del software informático.
10. El método de la reivindicación 9, en donde el ejecutable encriptado del software informático se desencripta antes de instalar el ejecutable del software informático mediante:
la determinación del secreto común (SC) según la segunda clave pública de primer usuario (P2U1) y la segunda clave privada de segundo usuario (V2U2); y
la desencriptación del ejecutable del software informático con el secreto común (SC) para generar un ejecutable desencriptado del software informático.
11. El método de la reivindicación 10, que además comprende ejecutar instrucciones del ejecutable desencriptado del software informático en el dispositivo de procesamiento asociado al segundo usuario (U2) después de verificar la propiedad del software informático.
12. El método de la reivindicación 11, en donde antes de ejecutar instrucciones, el método además comprende: determinar una clave de activación (AK) a partir del segundo usuario (U2); y
ejecutar instrucciones del ejecutable desencriptado del software informático según la clave de activación (AK) en el dispositivo de procesamiento asociado al segundo usuario (U2).
13. El método de cualquiera de las reivindicaciones 8 a 12, en donde antes de encriptar el ejecutable del software informático, el método además comprende:
determinar un dato (D1) asociado al software informático;
determinar un primer valor hash (H1) del software informático;
determinar un segundo valor hash (H2) según el dato (D1) y el software informático;
enviar, en una red de comunicaciones, el dato (D1), el primer valor hash (H1) y el segundo valor hash (H2) a una entrada para el almacenamiento en la tabla de hash distribuidas, en donde el segundo valor hash (H2) es una clave de un par de valores de claves y el dato (D1) y el primer valor hash (H1) son un valor en el par de valores de claves; y
determinar el metadato (M) que comprende el segundo valor hash (H2) para el almacenamiento en el libro mayor distribuido entre pares.
14. Un programa de software informático que comprende instrucciones legibles por máquina para hacer que un dispositivo de procesamiento implemente el método de cualquiera de las reivindicaciones precedentes.
15. Un sistema informático para verificar la propiedad de un software informático después de la instalación y antes de la ejecución mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares, el sistema comprendiendo un dispositivo de procesamiento asociado a un nodo en una red de nodos entre pares, configurado para:
determinar una clave pública de segundo usuario (PU2) asociada a un segundo usuario (U2) a partir de un registro de transacciones almacenado en el libro mayor distribuido entre pares;
determinar una segunda clave pública (P2) asociada al segundo usuario (U2) a partir de una entrada almacenada en la tabla de hash distribuidas;
comparar la clave pública de segundo usuario (PU2) y la segunda clave pública (P2); y
verificar la propiedad del software informático según la comparación de la clave pública de segundo usuario (PU2) y la segunda clave pública (P2).
ES17724645T 2016-05-13 2017-05-12 Método y sistema para verificar la propiedad de un activo digital mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares Active ES2701981T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
GBGB1608463.4A GB201608463D0 (en) 2016-05-13 2016-05-13 A method and system for veryfying integrity of a computer software using a distributed hash table and a peer-to-peer distributed ledger
GBGB1608456.8A GB201608456D0 (en) 2016-05-13 2016-05-13 A method and system for verifying ownership of a computer software using a distributed hash table and a peer-to-peer distributed ledger
GBGB1608454.3A GB201608454D0 (en) 2016-05-13 2016-05-13 A method and system for verifying ownership of a computer software using a distributed hash table and a peer-to-peer distributed ledger
PCT/IB2017/052804 WO2017195164A1 (en) 2016-05-13 2017-05-12 A method and system for verifying ownership of a digital asset using a distributed hash table and a peer-to-peer distributed ledger

Publications (1)

Publication Number Publication Date
ES2701981T3 true ES2701981T3 (es) 2019-02-26

Family

ID=58737700

Family Applications (3)

Application Number Title Priority Date Filing Date
ES17724453.0T Active ES2691254T3 (es) 2016-05-13 2017-05-12 Método y sistema para verificar la integridad de un activo digital mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares
ES17724645T Active ES2701981T3 (es) 2016-05-13 2017-05-12 Método y sistema para verificar la propiedad de un activo digital mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares
ES17724454T Active ES2701980T3 (es) 2016-05-13 2017-05-12 Método y sistema para verificar la propiedad de un activo digital mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares

Family Applications Before (1)

Application Number Title Priority Date Filing Date
ES17724453.0T Active ES2691254T3 (es) 2016-05-13 2017-05-12 Método y sistema para verificar la integridad de un activo digital mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares

Family Applications After (1)

Application Number Title Priority Date Filing Date
ES17724454T Active ES2701980T3 (es) 2016-05-13 2017-05-12 Método y sistema para verificar la propiedad de un activo digital mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares

Country Status (18)

Country Link
US (7) US10579779B2 (es)
EP (3) EP3295350B1 (es)
JP (3) JP6514831B1 (es)
KR (3) KR101974075B1 (es)
CN (5) CN109074434B (es)
AU (3) AU2017261921B2 (es)
BR (3) BR112018072969A2 (es)
CA (3) CA3022899A1 (es)
ES (3) ES2691254T3 (es)
GB (3) GB2564208A (es)
HK (3) HK1245428B (es)
IL (3) IL262807B (es)
MX (3) MX2018013618A (es)
PH (3) PH12018502386A1 (es)
SG (3) SG11201809582PA (es)
SI (3) SI3295362T1 (es)
WO (3) WO2017195160A1 (es)
ZA (1) ZA201807299B (es)

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11636471B2 (en) * 2017-12-15 2023-04-25 Fmr Llc Social data tracking datastructures, apparatuses, methods and systems
MX2018013618A (es) 2016-05-13 2019-04-25 Nchain Holdings Ltd Un metodo y sistema para verificar la propiedad de un activo digital mediante el uso de una tabla hash distribuida y un libro mayor distribuido punto a punto.
US10169614B2 (en) * 2016-11-17 2019-01-01 International Business Machines Corporation Container update system
JP6340120B1 (ja) * 2017-06-16 2018-06-06 アイビーシー株式会社 デバイスプロビジョニングシステム
EP3428577A1 (en) 2017-07-12 2019-01-16 Veoneer Sweden AB A driver assistance system and method
US11362834B2 (en) * 2017-07-24 2022-06-14 Comcast Cable Communications, Llc Systems and methods for managing digital rights
EP3445017B1 (en) * 2017-08-16 2019-10-09 Veoneer Sweden AB A method relating to a motor vehicle driver assistance system
GB2568453A (en) * 2017-09-14 2019-05-22 Blockpass Idn Ltd Systems and methods for user identity
EP3710974B1 (en) * 2017-11-17 2023-07-26 Telefonaktiebolaget LM Ericsson (publ) Method and arrangement for detecting digital content tampering
CN108573741A (zh) * 2017-12-25 2018-09-25 北京金山云网络技术有限公司 业务数据记录方法、装置、设备和存储介质
US10715323B2 (en) 2017-12-29 2020-07-14 Ebay Inc. Traceable key block-chain ledger
US10896418B2 (en) 2017-12-29 2021-01-19 Ebay Inc. Secure management of data files using a blockchain
US10841372B1 (en) * 2018-01-11 2020-11-17 Hoot Live, Inc. Systems and methods for performing useful commissioned work using distributed networks
WO2019143936A1 (en) 2018-01-19 2019-07-25 Nasdaq, Inc. Systems and methods of digital content certification and verification using cryptography and blockchain
CA2993064A1 (en) * 2018-01-26 2019-07-26 Erik Dean Lindquist Methods and systems for enabling interoperability of independent hash-based authentication technologies
US11438139B2 (en) * 2018-02-07 2022-09-06 Raouf Boutaba Blockchain based secure naming and update verification
US20210097610A1 (en) * 2018-02-08 2021-04-01 2Bc Innovations, Llc Utilizing blockchain-encoded records for rived longevity-contingent instruments
US20210004906A1 (en) * 2018-02-08 2021-01-07 2Bc Innovations, Llc Modifying a portfolio of blockchain-encoded rived longevity-contingent instruments
US20210099284A1 (en) * 2018-02-08 2021-04-01 2Bc Innovations, Llc Modifying blockchain-encoded records of rived longevity-contingent instruments
US20210035217A1 (en) * 2018-02-08 2021-02-04 2Bc Innovations, Llc Updating blockchain-encoded records of rived longevity-contingent instruments
US20190251627A1 (en) * 2018-02-11 2019-08-15 Loopring Project Ltd Methods and systems for digital asset transaction
US11582042B2 (en) 2018-03-16 2023-02-14 General Electric Company Industrial data verification using secure, distributed ledger
US10846375B2 (en) 2018-04-11 2020-11-24 Microsoft Technology Licensing, Llc Software license distribution and validation using a distributed immutable data store
CN110730960A (zh) * 2018-04-20 2020-01-24 因特比有限公司 用于存储二进制大对象的方法和***
EP3565211B1 (en) * 2018-05-03 2021-04-07 Nokia Technologies Oy Method network element, system and computer readable medium, for onboarding a device
WO2019213752A1 (en) * 2018-05-11 2019-11-14 Echoai Corp. A method and system for managing digital assets in a blockchain
EP3794766A1 (en) * 2018-05-14 2021-03-24 Nchain Holdings Limited Computer-implemented systems and methods for using a blockchain to perform an atomic swap
US11615070B2 (en) 2018-05-25 2023-03-28 Intertrust Technologies Corporation Digital content integrity verification systems and methods
DE102018208591A1 (de) 2018-05-30 2019-12-05 Robert Bosch Gmbh Verfahren und Vorrichtung zum Prüfen eines Sachverhaltes in einem dezentralen Transaktionssystem
US11777744B2 (en) 2018-06-25 2023-10-03 Auth9, Inc. Method, computer program product and apparatus for creating, registering, and verifying digitally sealed assets
EP3821353A4 (en) * 2018-07-09 2022-03-16 Prescient Innovations Inc. MULTIMEDIA CONTENT ALLOCATION SYSTEMS AND METHODS
GB201811263D0 (en) * 2018-07-10 2018-08-29 Netmaster Solutions Ltd A method and system for managing digital using a blockchain
WO2020033558A1 (en) * 2018-08-07 2020-02-13 Walmart Apollo, Llc System and method for a distributed ledger for information technology asset management
US20200051039A1 (en) * 2018-08-07 2020-02-13 Walmart Apollo, Llc System and method for a distributed ledger for industrial asset management
DE102018213304A1 (de) 2018-08-08 2020-02-13 Robert Bosch Gmbh Verfahren und Vorrichtung zum Prüfen eines Sachverhaltes in einem dezentralen Transaktionssystem
US11335109B2 (en) 2018-08-28 2022-05-17 Marlabs Incorporated Computing device for document authentication and a method to operate the same
US10250395B1 (en) * 2018-08-29 2019-04-02 Accenture Global Solutions Limited Cryptologic blockchain interoperation
US11128472B2 (en) * 2018-09-04 2021-09-21 Red Hat, Inc. Signature verification using blockchain
US20220046027A1 (en) * 2018-10-09 2022-02-10 Northwestern University Distributed digital currency mining to perform network tasks
US11301452B2 (en) 2018-10-09 2022-04-12 Ebay, Inc. Storing and verification of derivative work data on blockchain with original work data
TW202016743A (zh) * 2018-10-25 2020-05-01 財團法人資訊工業策進會 用於物聯網系統之資料處理裝置及資料處理方法
GB201817507D0 (en) * 2018-10-27 2018-12-12 Nchain Holdings Ltd Computer implemented system and method
DE102018129354A1 (de) * 2018-11-21 2020-05-28 Phoenix Contact Gmbh & Co. Kg Verfahren zum Bearbeiten von Anwendungsprogrammen auf einem verteilten Automatisierungssystem
EP3660770A1 (en) 2018-11-30 2020-06-03 Mastercard International Incorporated Methods and systems for secure product tracking data storage and verification
US11178151B2 (en) * 2018-12-19 2021-11-16 International Business Machines Corporation Decentralized database identity management system
JP6640320B1 (ja) * 2018-12-28 2020-02-05 玲於奈 日置 トークン管理システムおよびトークン管理方法
WO2019072311A2 (en) * 2018-12-29 2019-04-18 Alibaba Group Holding Limited PARTICIPATORY PRODUCTION BASED ON A CHAIN OF BLOCKS OF MAPPING APPLICATIONS
US20220256340A1 (en) * 2019-01-08 2022-08-11 Her, Inc Method for providing roaming service by using blockchain and apparatus therefor
US20200242711A1 (en) * 2019-01-27 2020-07-30 Auth9, Inc. Method, computer program product and apparatus for transferring ownership of digital assets
CN109995523B (zh) * 2019-03-13 2021-07-09 网易(杭州)网络有限公司 激活码管理方法及装置、激活码生成方法及装置
CN110945550B (zh) 2019-04-03 2023-10-27 创新先进技术有限公司 在可信执行环境下处理和存储区块链数据
US11228446B2 (en) 2019-05-10 2022-01-18 Advanced New Technologies Co., Ltd. Blockchain-based reconciliation method and apparatus and electronic device
CN110213263B (zh) * 2019-05-30 2021-10-22 全链通有限公司 基于联盟区块链的身份验证方法、设备及存储介质
US11501295B2 (en) 2019-07-24 2022-11-15 Advanced New Technologies Co., Ltd. Object distribution processing
KR102273160B1 (ko) 2019-08-01 2021-07-05 주식회사 블룸테크놀로지 Bft 확정 합의 방식의 dag-awtc 원장 시스템
US20210042830A1 (en) * 2019-08-09 2021-02-11 Ruon Global Ltd User media platform server system
GB2587190B (en) * 2019-09-12 2021-12-01 Nchain Holdings Ltd Storing a program on a blockchain
KR102101726B1 (ko) * 2019-10-11 2020-05-29 (주)소프트제국 블록체인 기반의 브라우저의 웹스토리지를 이용한 간편인증 방법 및 시스템
CN114424190A (zh) * 2019-10-22 2022-04-29 彩滋公司 基于制造约束的定制产品的基于角色和属性跟踪协作设计的***和方法
KR102274656B1 (ko) * 2019-11-22 2021-07-09 주식회사 티맥스엔터프라이즈 블록체인 네트워크에서 데이터를 관리하기 위한 기법
JP7162634B2 (ja) 2019-12-12 2022-10-28 株式会社bitFlyer Blockchain 証明書データをデジタルに利用可能にするための装置、方法及びそのためのプログラム
US11526585B2 (en) 2020-02-06 2022-12-13 Dell Products L.P. Vendor software activation using distributed ledger
US11556618B2 (en) * 2020-02-18 2023-01-17 At&T Intellectual Property I, L.P. Split ledger software license platform
US11922278B1 (en) * 2020-02-26 2024-03-05 American Express Travel Related Services Company, Inc. Distributed ledger based feature set tracking
US11558173B2 (en) 2020-03-20 2023-01-17 Mastercard International Incorporated Method and system for auditing smart contracts
CN111526197B (zh) * 2020-04-24 2023-05-09 远光软件股份有限公司 一种云端数据安全共享方法
CN113626040B (zh) * 2020-05-06 2023-12-22 伊姆西Ip控股有限责任公司 用于安装应用的方法、电子设备和计算机程序产品
WO2021232295A1 (zh) 2020-05-20 2021-11-25 新华三技术有限公司 软件许可信息的监控方法、装置、服务器及存储介质
US11431492B2 (en) * 2020-06-25 2022-08-30 At&T Intellectual Property I, L.P. Mutable encrypted system
US11368310B2 (en) 2020-07-11 2022-06-21 Bank Of America Corporation Data transfer between computing nodes of a distributed computing system
US10965461B1 (en) * 2020-08-31 2021-03-30 Syniverse Technologies, Llc Method of verifying telecommunications messaging traffic based on decentralized identifiers
CN112347456B (zh) * 2020-10-28 2023-09-01 达闼机器人股份有限公司 程序验证方法和装置、平台和用户终端及在线服务***
EP4240245A1 (en) 2020-11-09 2023-09-13 Riddle & Code GmbH Method for suspending protection of an object achieved by a protection device
CN115280717B (zh) * 2021-01-11 2024-06-07 微福斯有限责任公司 区块链审计***和方法
WO2023034127A1 (en) * 2021-08-31 2023-03-09 Disney Enterprises, Inc. Acquisition and use of multi-platform portable non-fungible token credits
FR3136565A1 (fr) * 2022-06-08 2023-12-15 La Preuve Numerique Procédé d’enregistrement renforcé d’un fichier numérique

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5715403A (en) 1994-11-23 1998-02-03 Xerox Corporation System for controlling the distribution and use of digital works having attached usage rights where the usage rights are defined by a usage rights grammar
US5944821A (en) 1996-07-11 1999-08-31 Compaq Computer Corporation Secure software registration and integrity assessment in a computer system
JPH1031587A (ja) * 1996-07-15 1998-02-03 Hitachi Ltd データ端末装置およびコンピュータプログラム
GB2345775A (en) 1998-10-21 2000-07-19 Ordertrust Llc Analyzing transaction information
US7673137B2 (en) 2002-01-04 2010-03-02 International Business Machines Corporation System and method for the managed security control of processes on a computer system
JP4176533B2 (ja) * 2003-03-31 2008-11-05 株式会社エヌ・ティ・ティ・ドコモ 端末装置及びプログラム
CN101364415B (zh) * 2003-07-07 2013-03-20 罗威所罗生股份有限公司 用于控制盗版和启用交互式内容的可重编程的安全性
US7577848B2 (en) * 2005-01-18 2009-08-18 Microsoft Corporation Systems and methods for validating executable file integrity using partial image hashes
EP1785901B1 (en) * 2005-10-31 2012-03-07 Research In Motion Limited Secure License Key Method and System
US8775562B2 (en) * 2006-12-05 2014-07-08 International Business Machines Corporation Mapping file fragments to file information and tagging in a segmented file sharing system
US20090280906A1 (en) * 2008-04-30 2009-11-12 Bally Gaming, Inc. Server client network throttling method for download content
US8775797B2 (en) * 2010-11-19 2014-07-08 Microsoft Corporation Reliable software product validation and activation with redundant security
US20150242958A1 (en) * 2010-12-08 2015-08-27 David Andrew D'Zmura Counter-party license transaction (C.P.L.T.)
ES2902644T3 (es) * 2011-02-11 2022-03-29 Siemens Healthcare Diagnostics Inc Sistema y método para actualización segura de software
US8671458B2 (en) * 2011-04-22 2014-03-11 Google Inc. Transcoding content based on verification of ownership of the content
US9754130B2 (en) 2011-05-02 2017-09-05 Architecture Technology Corporation Peer integrity checking system
US8806192B2 (en) * 2011-05-04 2014-08-12 Microsoft Corporation Protected authorization for untrusted clients
JP5708365B2 (ja) * 2011-08-22 2015-04-30 大日本印刷株式会社 コンテンツデータ閲覧制御方法、コンテンツデータ管理閲覧プログラム
CN102404347A (zh) * 2011-12-28 2012-04-04 南京邮电大学 一种基于公钥基础设施的移动互联网接入认证方法
US9223939B2 (en) 2012-10-11 2015-12-29 Activision Publishing, Inc. Key generation method
US10231126B2 (en) * 2012-12-06 2019-03-12 Gpvtl Canada Inc. System and method for enterprise security through P2P connection
WO2014201059A1 (en) 2013-06-10 2014-12-18 Certimix, Llc Secure storing and offline transfering of digitally transferable assets
WO2014201638A1 (zh) 2013-06-19 2014-12-24 华为技术有限公司 一种通信质量测量的方法和装置
US20160203572A1 (en) * 2013-08-21 2016-07-14 Ascribe Gmbh Method to securely establish, affirm, and transfer ownership of artworks
US20150120569A1 (en) * 2013-10-31 2015-04-30 Bitgo, Inc. Virtual currency address security
US10121215B2 (en) 2014-07-29 2018-11-06 GeoFrenzy, Inc. Systems and methods for managing real estate titles and permissions
KR101754308B1 (ko) * 2013-10-04 2017-07-07 한국전자통신연구원 모바일 민감 데이터 관리 방법 및 이를 수행하는 위탁 서버
US9595034B2 (en) 2013-10-25 2017-03-14 Stellenbosch University System and method for monitoring third party access to a restricted item
US9832217B2 (en) * 2014-03-13 2017-11-28 International Business Machines Corporation Computer implemented techniques for detecting, investigating and remediating security violations to IT infrastructure
WO2015142765A1 (en) 2014-03-17 2015-09-24 Coinbase, Inc Bitcoin host computer system
KR102089513B1 (ko) 2014-03-19 2020-03-16 한국전자통신연구원 모바일 저장장치에 기반한 소프트웨어 검증 시스템 및 그 방법
US9858569B2 (en) 2014-03-21 2018-01-02 Ramanan Navaratnam Systems and methods in support of authentication of an item
US9912690B2 (en) 2014-04-08 2018-03-06 Capital One Financial Corporation System and method for malware detection using hashing techniques
US9940444B1 (en) * 2014-04-21 2018-04-10 Virtual Marketing Incorporated Software wrapper and installer using timestamp validation and system identification validation
US10356094B2 (en) 2014-06-30 2019-07-16 Vescel, Llc Uniqueness and auditing of a data resource through an immutable record of transactions in a hash history
US20160048688A1 (en) * 2014-08-14 2016-02-18 Google Inc. Restricting System Calls using Protected Storage
CN104123488A (zh) * 2014-08-14 2014-10-29 北京网秦天下科技有限公司 应用程序的验证方法和装置
US20160092988A1 (en) * 2014-09-30 2016-03-31 Raistone, Inc. Systems and methods for transferring digital assests using a de-centralized exchange
US20160098723A1 (en) 2014-10-01 2016-04-07 The Filing Cabinet, LLC System and method for block-chain verification of goods
CN104392354B (zh) * 2014-11-05 2017-10-03 中国科学院合肥物质科学研究院 一种公钥地址与用户账号的关联和检索方法及其***
US9667628B2 (en) * 2014-11-06 2017-05-30 Intel Corporation System for establishing ownership of a secure workspace
US20160162897A1 (en) 2014-12-03 2016-06-09 The Filing Cabinet, LLC System and method for user authentication using crypto-currency transactions as access tokens
EP3032783A1 (en) * 2014-12-11 2016-06-15 Hewlett-Packard Development Company, L.P. Fragmented packet processing resource determination
WO2016105265A1 (en) 2014-12-22 2016-06-30 Cryex Group Ab Methods, apparatus and systems for enabling settlement of transactions of cryptographic assets
US20160218882A1 (en) 2015-01-23 2016-07-28 Canon Kabushiki Kaisha Methods and systems for installing software
CN104580253B (zh) * 2015-01-30 2017-08-08 网易(杭州)网络有限公司 一种处理用户数据的方法及装置
US9374373B1 (en) * 2015-02-03 2016-06-21 Hong Kong Applied Science And Technology Research Institute Co., Ltd. Encryption techniques for improved sharing and distribution of encrypted content
US9942034B2 (en) * 2015-02-13 2018-04-10 Visa International Service Association Confidential communication management
US20160283920A1 (en) 2015-03-28 2016-09-29 Justin Fisher Authentication and verification of digital data utilizing blockchain technology
US20160292396A1 (en) 2015-03-30 2016-10-06 Iperial, Inc. System and method for authenticating digital content
EP3281171A4 (en) * 2015-04-06 2018-11-07 Bitmark Inc. System and method for decentralized title recordation and authentication
CN104735164B (zh) * 2015-04-10 2018-05-18 网易(杭州)网络有限公司 一种保存文件信息的方法和装置
US10380702B2 (en) 2015-05-01 2019-08-13 Monegraph, Inc. Rights transfers using block chain transactions
US11074224B2 (en) * 2015-05-11 2021-07-27 Apple Inc. Partitioned data replication
US9735958B2 (en) 2015-05-19 2017-08-15 Coinbase, Inc. Key ceremony of a security system forming part of a host computer for cryptographic transactions
US20160342977A1 (en) * 2015-05-20 2016-11-24 Vennd.io Pty Ltd Device, method and system for virtual asset transactions
US10402792B2 (en) 2015-08-13 2019-09-03 The Toronto-Dominion Bank Systems and method for tracking enterprise events using hybrid public-private blockchain ledgers
US9832024B2 (en) * 2015-11-13 2017-11-28 Visa International Service Association Methods and systems for PKI-based authentication
US9992028B2 (en) 2015-11-26 2018-06-05 International Business Machines Corporation System, method, and computer program product for privacy-preserving transaction validation mechanisms for smart contracts that are included in a ledger
KR101772553B1 (ko) * 2015-12-29 2017-08-30 주식회사 코인플러그 파일에 대한 공증 및 검증을 수행하는 방법 및 서버
US9679276B1 (en) 2016-01-26 2017-06-13 Stampery, Inc. Systems and methods for using a block chain to certify the existence, integrity, and/or ownership of a file or communication
US20170236123A1 (en) * 2016-02-16 2017-08-17 Blockstack Inc. Decentralized processing of global naming systems
CN115391749A (zh) * 2016-02-23 2022-11-25 区块链控股有限公司 使用分布式散列表和区块链保护计算机软件的方法及***
CN107145768B (zh) * 2016-03-01 2021-02-12 华为技术有限公司 版权管理方法和***
US10063529B2 (en) 2016-03-28 2018-08-28 Accenture Global Solutions Limited Secure 3D model sharing using distributed ledger
GB2549085B (en) * 2016-03-30 2020-11-18 British Telecomm Blockchain state reliability determination
US10937069B2 (en) * 2016-04-13 2021-03-02 Paypal, Inc. Public ledger authentication system
US10333705B2 (en) * 2016-04-30 2019-06-25 Civic Technologies, Inc. Methods and apparatus for providing attestation of information using a centralized or distributed ledger
US10022613B2 (en) 2016-05-02 2018-07-17 Bao Tran Smart device
US20170324711A1 (en) * 2016-05-03 2017-11-09 The Real Mccoy, Llc Inc. Method for establishing, securing and transferring computer readable information using peer-to-peer public and private key cryptography
MX2018013618A (es) 2016-05-13 2019-04-25 Nchain Holdings Ltd Un metodo y sistema para verificar la propiedad de un activo digital mediante el uso de una tabla hash distribuida y un libro mayor distribuido punto a punto.

Also Published As

Publication number Publication date
US11210372B2 (en) 2021-12-28
IL262809A (en) 2018-12-31
JP6556370B2 (ja) 2019-08-07
US20190163883A1 (en) 2019-05-30
US20220366019A1 (en) 2022-11-17
EP3295349B1 (en) 2018-07-11
AU2017263290A1 (en) 2018-11-22
GB201806707D0 (en) 2018-06-06
SI3295349T1 (sl) 2018-11-30
MX2018013617A (es) 2019-04-25
EP3295362B1 (en) 2018-07-11
GB2564208A (en) 2019-01-09
ES2701980T3 (es) 2019-02-26
SI3295350T1 (sl) 2018-11-30
BR112018072929A2 (pt) 2019-02-19
US10579779B2 (en) 2020-03-03
KR101974060B1 (ko) 2019-04-30
PH12018502384A1 (en) 2019-04-08
PH12018502385A1 (en) 2019-04-08
PH12018502386A1 (en) 2019-03-25
JP2019511761A (ja) 2019-04-25
US20200257775A1 (en) 2020-08-13
JP2019511759A (ja) 2019-04-25
AU2017263290B2 (en) 2021-10-21
CN109074433A (zh) 2018-12-21
BR112018072969A2 (pt) 2019-02-19
CN116776318A (zh) 2023-09-19
KR101974075B1 (ko) 2019-04-30
JP2019514087A (ja) 2019-05-30
CN109074462A (zh) 2018-12-21
IL262807B (en) 2022-08-01
ZA201807299B (en) 2022-08-31
AU2017263291B2 (en) 2022-02-10
CA3022899A1 (en) 2017-11-16
EP3295362A1 (en) 2018-03-21
KR102051288B1 (ko) 2019-12-03
SG11201809585WA (en) 2018-11-29
HK1245430B (zh) 2019-06-14
CN116842483A (zh) 2023-10-03
US20230014794A1 (en) 2023-01-19
CN109074433B (zh) 2023-07-21
US11294991B2 (en) 2022-04-05
US11934494B2 (en) 2024-03-19
HK1245429B (zh) 2019-06-14
AU2017261921A1 (en) 2018-11-22
AU2017263291A1 (en) 2018-11-22
KR20180137022A (ko) 2018-12-26
AU2017261921B2 (en) 2022-03-10
US20190303543A1 (en) 2019-10-03
CN109074434B (zh) 2023-07-07
EP3295350B1 (en) 2018-07-11
JP6514831B1 (ja) 2019-05-15
US20190340362A1 (en) 2019-11-07
IL262807A (en) 2018-12-31
KR20190002688A (ko) 2019-01-08
GB201806705D0 (en) 2018-06-06
BR112018072965A2 (pt) 2019-02-19
IL262809B (en) 2021-06-30
CN109074462B (zh) 2023-07-07
GB201806704D0 (en) 2018-06-06
GB2558485A (en) 2018-07-11
HK1245428B (zh) 2019-06-14
SG11201809582PA (en) 2018-11-29
CA3022803A1 (en) 2017-11-16
EP3295349A1 (en) 2018-03-21
SG11201809584XA (en) 2018-11-29
JP6514830B2 (ja) 2019-05-15
ES2691254T3 (es) 2018-11-26
US11366882B2 (en) 2022-06-21
MX2018013620A (es) 2019-04-25
CA3022809A1 (en) 2017-11-16
WO2017195160A1 (en) 2017-11-16
EP3295350A1 (en) 2018-03-21
GB2559908A (en) 2018-08-22
IL262806A (en) 2018-12-31
WO2017195164A1 (en) 2017-11-16
MX2018013618A (es) 2019-04-25
WO2017195161A1 (en) 2017-11-16
US20220366020A1 (en) 2022-11-17
SI3295362T1 (sl) 2018-11-30
IL262806B (en) 2022-02-01
CN109074434A (zh) 2018-12-21
KR20180137024A (ko) 2018-12-26

Similar Documents

Publication Publication Date Title
ES2701981T3 (es) Método y sistema para verificar la propiedad de un activo digital mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares
CN109074579B (zh) 使用分布式散列表和区块链保护计算机软件的方法及***