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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 119
- 238000009434 installation Methods 0.000 claims abstract description 16
- 238000012545 processing Methods 0.000 claims description 38
- 238000004891 communication Methods 0.000 claims description 17
- 230000004913 activation Effects 0.000 claims description 4
- 238000013515 script Methods 0.000 description 100
- 239000003795 chemical substances by application Substances 0.000 description 23
- 238000012546 transfer Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 13
- 238000012795 verification Methods 0.000 description 13
- 238000004422 calculation algorithm Methods 0.000 description 12
- 230000008901 benefit Effects 0.000 description 6
- 238000013475 authorization Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 238000005065 mining Methods 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012011 method of payment Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000000230 xanthan gum Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
- G06F16/152—File search processing using file content signatures, e.g. hash values
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1834—Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/105—Arrangements for software license management or administration, e.g. for managing licenses at corporate level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/107—License processing; Key processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/51—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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/6281—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/22—Payment schemes or models
- G06Q20/223—Payment schemes or models based on the use of peer-to-peer networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network 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/0435—Network 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
- H04L63/061—Network 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0823—Network architectures or network communication protocols for network security for authentication of entities using certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0838—Key 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/0841—Key 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3263—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3263—Cryptographic 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/3265—Cryptographic 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2107—File encryption
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Business processing using cryptography
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1061—Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
- H04L67/1065—Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic 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)
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).
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)
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)
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. |
-
2017
- 2017-05-12 MX MX2018013618A patent/MX2018013618A/es unknown
- 2017-05-12 BR BR112018072969-8A patent/BR112018072969A2/pt not_active Application Discontinuation
- 2017-05-12 KR KR1020187034991A patent/KR101974075B1/ko active IP Right Grant
- 2017-05-12 US US16/300,929 patent/US10579779B2/en active Active
- 2017-05-12 GB GB1806705.8A patent/GB2564208A/en not_active Withdrawn
- 2017-05-12 KR KR1020187035450A patent/KR102051288B1/ko active IP Right Grant
- 2017-05-12 ES ES17724453.0T patent/ES2691254T3/es active Active
- 2017-05-12 US US16/300,528 patent/US11294991B2/en active Active
- 2017-05-12 AU AU2017261921A patent/AU2017261921B2/en active Active
- 2017-05-12 CN CN201780024156.5A patent/CN109074434B/zh active Active
- 2017-05-12 CA CA3022899A patent/CA3022899A1/en active Pending
- 2017-05-12 JP JP2018536404A patent/JP6514831B1/ja active Active
- 2017-05-12 SG SG11201809582PA patent/SG11201809582PA/en unknown
- 2017-05-12 JP JP2018536487A patent/JP6556370B2/ja active Active
- 2017-05-12 CA CA3022809A patent/CA3022809A1/en active Pending
- 2017-05-12 WO PCT/IB2017/052800 patent/WO2017195160A1/en active Application Filing
- 2017-05-12 SI SI201730006T patent/SI3295362T1/sl unknown
- 2017-05-12 AU AU2017263291A patent/AU2017263291B2/en active Active
- 2017-05-12 EP EP17724645.1A patent/EP3295350B1/en active Active
- 2017-05-12 WO PCT/IB2017/052804 patent/WO2017195164A1/en active Application Filing
- 2017-05-12 EP EP17724453.0A patent/EP3295349B1/en active Active
- 2017-05-12 MX MX2018013617A patent/MX2018013617A/es unknown
- 2017-05-12 IL IL262807A patent/IL262807B/en unknown
- 2017-05-12 JP JP2018536399A patent/JP6514830B2/ja active Active
- 2017-05-12 KR KR1020187035210A patent/KR101974060B1/ko active IP Right Grant
- 2017-05-12 CN CN201780024133.4A patent/CN109074462B/zh active Active
- 2017-05-12 SI SI201730005T patent/SI3295350T1/sl unknown
- 2017-05-12 BR BR112018072929-9A patent/BR112018072929A2/pt not_active Application Discontinuation
- 2017-05-12 CA CA3022803A patent/CA3022803A1/en active Pending
- 2017-05-12 SI SI201730007T patent/SI3295349T1/sl unknown
- 2017-05-12 ES ES17724645T patent/ES2701981T3/es active Active
- 2017-05-12 GB GB1806704.1A patent/GB2559908A/en not_active Withdrawn
- 2017-05-12 BR BR112018072965-5A patent/BR112018072965A2/pt not_active Application Discontinuation
- 2017-05-12 SG SG11201809584XA patent/SG11201809584XA/en unknown
- 2017-05-12 GB GB1806707.4A patent/GB2558485A/en not_active Withdrawn
- 2017-05-12 SG SG11201809585WA patent/SG11201809585WA/en unknown
- 2017-05-12 WO PCT/IB2017/052801 patent/WO2017195161A1/en active Application Filing
- 2017-05-12 ES ES17724454T patent/ES2701980T3/es active Active
- 2017-05-12 CN CN202310733070.7A patent/CN116776318A/zh active Pending
- 2017-05-12 MX MX2018013620A patent/MX2018013620A/es unknown
- 2017-05-12 EP EP17724454.8A patent/EP3295362B1/en active Active
- 2017-05-12 CN CN202310819908.4A patent/CN116842483A/zh active Pending
- 2017-05-12 AU AU2017263290A patent/AU2017263290B2/en active Active
- 2017-05-12 US US16/300,514 patent/US11210372B2/en active Active
- 2017-05-12 CN CN201780024137.2A patent/CN109074433B/zh active Active
-
2018
- 2018-03-28 HK HK18104244.6A patent/HK1245428B/zh unknown
- 2018-03-28 HK HK18104246.4A patent/HK1245430B/zh unknown
- 2018-03-28 HK HK18104245.5A patent/HK1245429B/zh unknown
- 2018-10-31 ZA ZA2018/07299A patent/ZA201807299B/en unknown
- 2018-11-06 IL IL262809A patent/IL262809B/en active IP Right Grant
- 2018-11-06 IL IL262806A patent/IL262806B/en unknown
- 2018-11-12 PH PH12018502386A patent/PH12018502386A1/en unknown
- 2018-11-12 PH PH12018502384A patent/PH12018502384A1/en unknown
- 2018-11-12 PH PH12018502385A patent/PH12018502385A1/en unknown
-
2020
- 2020-03-02 US US16/806,835 patent/US11366882B2/en active Active
-
2021
- 2021-12-22 US US17/560,107 patent/US20220366019A1/en active Pending
-
2022
- 2022-03-31 US US17/710,866 patent/US20220366020A1/en active Pending
- 2022-06-17 US US17/843,184 patent/US11934494B2/en active Active
Also Published As
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) | 使用分布式散列表和区块链保护计算机软件的方法及*** |