ES2691254T3 - 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 - Google Patents
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 Download PDFInfo
- Publication number
- ES2691254T3 ES2691254T3 ES17724453.0T ES17724453T ES2691254T3 ES 2691254 T3 ES2691254 T3 ES 2691254T3 ES 17724453 T ES17724453 T ES 17724453T ES 2691254 T3 ES2691254 T3 ES 2691254T3
- Authority
- ES
- Spain
- Prior art keywords
- user
- computer software
- hash value
- key
- public key
- 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 131
- 238000009434 installation Methods 0.000 claims abstract description 18
- 238000012545 processing Methods 0.000 claims description 34
- 238000004891 communication Methods 0.000 claims description 17
- 230000004913 activation Effects 0.000 claims description 12
- 238000013515 script Methods 0.000 description 101
- 239000003795 chemical substances by application Substances 0.000 description 23
- 238000004422 calculation algorithm Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 13
- 238000012546 transfer Methods 0.000 description 13
- 238000012795 verification Methods 0.000 description 11
- 230000008901 benefit Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 238000013475 authorization Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 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
- 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/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
-
- 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
-
- 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
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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Business, Economics & Management (AREA)
- Computing Systems (AREA)
- Databases & Information Systems (AREA)
- Accounting & Taxation (AREA)
- Data Mining & Analysis (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Power Engineering (AREA)
- Library & Information Science (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 integridad de un software informático para la instalación mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares, el método comprendiendo: determinar un metadato (M) asociado a un registro de transacciones almacenado en el libro mayor distribuido entre pares; determinar una indicación de una entrada almacenada en la tabla de hash distribuidas del metadato (M); determinar un tercer valor hash (H3) según el software informático; determinar un cuarto valor hash (H4) de la entrada en la tabla de hash distribuidas; comparar el tercer valor hash (H3) y el cuarto valor hash (H4); y verificar la integridad del software informático según la comparación del tercer valor hash (H3) y el cuarto valor hash (H4).
Description
5
10
15
20
25
30
35
40
45
50
DESCRIPCION
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.
Campo técnico
La presente descripción se refiere a métodos de seguridad, control y verificación para asegurar y mantener la integridad de un activo digital. La invención es particularmente apropiada para verificar la propiedad y/o integridad 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.
5
10
15
20
25
30
35
40
45
50
55
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. Una cuestión puede surgir donde el software informático o la licencia asociada se transfieren, de manera ilícita, a otro usuario.
El software informático o programas de ordenador requieren, en general, una instalación antes de que la ejecución de las instrucciones allí contenidas pueda ocurrir. La instalación prepara el software informático o programa para la ejecución. El software informático o programas vienen, con frecuencia, con un instalador que lleva a cabo la instalación. Después de haber llevado a cabo la instalación una vez, esta no necesita llevarse a cabo nuevamente, y el software informático o programa pueden ejecutarse una y otra vez.
Es fundamental verificar la propiedad e integridad del software informático tras la instalación. Ello es para asegurar que, por ejemplo, el software informático no se haya transferido al propietario incorrecto y que el software informático no se haya corrompido o alterado durante el tránsito.
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 Michael Crosby y otros: "Blockchain Technology Beyond Bitcoin", 16 oct 2015, XP055363520 resume todos los proyectos de cadena de bloques entonces en curso.
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 la propiedad y/o integridad de un activo controlado, p.ej., una porción de software informático. El software puede verificarse para la instalación en un recurso basado en ordenador. La verificación puede implicar permitir o habilitar a un usuario para usar o interactuar con el software o de otra manera llevar a cabo cierto acto en relación con el software si se ha establecido una concordancia.
El método puede comprender un método implementado por ordenador para verificar la integridad de un activo digital como, por ejemplo, una porción o artículo de software informático para la instalación, mediante el uso de una tabla de hash distribuidas (DHT, por sus siglas en inglés) y un libro mayor distribuido entre pares (cadena de bloques). Puede comprender determinar un metadato (M) asociado a un registro de transacciones (Tx) almacenado en el libro mayor distribuido entre pares; determinar una indicación de una entrada almacenada en la tabla de hash distribuidas del metadato (M); determinar un tercer valor hash (H3) basado en el software informático; determinar un cuarto valor hash (H4) de la entrada en la tabla de hash distribuidas; comparar el tercer valor hash (H3) y el cuarto valor hash (H4); y verificar la integridad del software informático según la comparación del tercer valor hash (H3) y el cuarto valor hash (H4).
Por consiguiente, la invención incorpora el uso 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 técnicamente diferentes y distintos, con intercomunicación y transferencia de datos entre ellos. Mediante la búsqueda, procesamiento y recuperación de datos de una DHT y una 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 con respecto a la instalación de un activo digital (p.ej., software), verificación, transferencia y autorización. También provee un sistema informático mejorado dado que provee un mecanismo para asegurar la integridad de software (a saber, que el
5
10
15
20
25
30
35
40
45
50
55
software no se ha alterado en modo alguno con respecto a su estado original o previsto) y, por consiguiente, se ejecutará según lo esperado.
En el método, la comparación del tercer valor hash (H3) y cuarto valor hash (H4) puede comprender determinar si el tercer valor hash (H3) y el cuarto valor hash (H4) concuerdan. El significado del término "concordar" puede comprender una correspondencia, igualdad o asociación entre los artículos comparados.
En el método, antes de determinar el metadato (M), 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 (Tx) almacenado en el libro mayor distribuido entre pares; determinar una segunda clave pública (P2) asociada al segundo usuario (U2) de una entrada almacenada en la tabla de hash distribuidas; comparar la clave pública del 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). 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.
En el método, antes de determinar la clave pública de segundo usuario (PU2), 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 (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.
En el método, el software informático puede comprender un encabezamiento y un cuerpo. El tercer valor hash (H3) puede determinarse a partir del cuerpo de software informático. El encabezamiento puede comprender un valor hash del cuerpo del software informático. El encabezamiento puede además comprender el segundo valor hash (H2). 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 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 privada de primer usuario V2U1 según una clave privada de primer usuario VU1 y el valor de generador VG, en donde la clave privada de primer usuario VU1 forma un par criptográfico con una clave pública de primer usuario PU1; 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. También puede comprender: determinar una segunda clave privada de segundo usuario V2U2 según una clave privada de segundo usuario VU2 y el valor de generador VG, en donde la clave privada de segundo usuario VU2 forma un par criptográfico con una clave pública de segundo usuario PU2; y/o determinar una segunda clave privada de primer usuario V2U1 según una clave privada de primer usuario VU1 y el valor de generador VG, en donde la clave privada de primer usuario VU1 forma un par criptográfico con una clave pública de primer usuario PU1.
El método puede además comprender la instalación del ejecutable desencriptado del software informático en un 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).
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 integridad de un software informático para la instalació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 un metadato (M) asociado a un registro de transacciones almacenado en el libro mayor distribuido entre pares; determinar una indicación de la ubicación de una entrada en la tabla de hash distribuidas del metadato (M); determinar un tercer
5
10
15
20
25
30
35
40
45
valor hash (H3) según el software informático; determinar un cuarto valor hash (H4) de la entrada en la tabla de hash distribuidas; comparar el tercer valor hash (H3) y el cuarto valor hash (H4); y verificar la integridad del software informático según la comparación del tercer valor hash (H3) y el cuarto valor hash (H4).
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 para la instalació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ático para la instalación mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido 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 diagrama de flujo de un método implementado por ordenador para verificar la integridad de un software informático para la instalación mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares; y
la Figura 11 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 para la instalació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
5
5
10
15
20
25
30
35
40
45
50
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 sHA-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
5
10
15
20
25
30
35
40
45
50
"m" es 2 y "n" es 15. Si hay dos firmas disponibles para su uso, Sig1 (correspondiente a PubKI) 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 para la instalació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 DHT 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 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
7
5
10
15
20
25
30
35
40
45
50
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 DHT 13. La segunda clave pública (P2) puede ser igual a la clave pública de segundo usuario (PU2). La entrada en la DHT 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. Es decir, una concordancia entre la clave pública de segundo usuario (PU2) y la segunda clave pública (P2) puede indicar que la propiedad se ha verificado.
El método 900 según se ilustra por la Figura 10 verifica la integridad del software informático y se lleva a cabo después del método descrito más arriba. Ello se muestra como la etapa 600 opcional en la Figura 10. El método 900 incluye determinar 910 un metadato (M) asociado a un registro de transacciones almacenado en el libro mayor distribuido entre pares 14. El metadato (M) puede incluirse en un script de salida del registro de transacciones. El método 900 también incluye determinar 920 una indicación de una entrada almacenada en la DHT 13 del metadato (M). En un ejemplo, una indicación de una entrada puede comprender una dirección que identifica una entrada en la tabla de hash distribuidas 13.
El método 900 también incluye determinar 930 un tercer valor hash (H3) según el software informático. En un ejemplo, el tercer valor hash (H3) se calcula según los contenidos del software informático. El método también incluye determinar 640 un cuarto valor hash (H4) de la entrada en la DHT 13.
El método 900 además incluye comparar 950 el tercer valor hash (H3) y el cuarto valor hash (H4). El método 900 también incluye verificar 960 la integridad del software informático según la comparación del tercer valor hash (H3) y el cuarto valor hash (H4). En un ejemplo, la verificación de la integridad puede indicar que el tercer valor hash (H3) y el cuarto valor hash (H4) concuerdan. Es decir, una concordancia entre el tercer valor hash (H3) y el cuarto valor hash (H4) puede indicar que la integridad se ha verificado.
Ahora se describirá un ejemplo detallado del método 100, 600, 900.
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
8
5
10
15
20
25
30
35
40
45
50
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.
5
10
15
20
25
30
35
40
45
50
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, A2 319, B1 321 y B2 323.
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.
5
10
15
20
25
30
35
40
45
50
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:
índice = 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 proceso 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.
5
10
15
20
25
30
35
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.
- 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.
Tabla 1
El presente ejemplo incluye proveer un puntero a la licencia en Metadata1 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.
5
10
15
20
25
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.
- 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
- 0000 0000 0000 0001
- 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
Tabla 2
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).
5
10
15
20
25
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 ya 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.
- 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
- 0000 0000 0000 0001
- Número de secuencia
- 1
- Número de salidas
- C1
- Valor de salida
- Output script length
- Longitud de script de salida
5
10
15
20
25
30
35
40
45
- OP _HASH160 < hash of redeem script (RS2) > OP_EQUAL
- Script de salida
- LockTime
- Tiempo de Bloqueo
Tabla 3
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 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 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.
Determinación de una clave pública de segundo usuario (PU2) asociada a un segundo usuario (U2) 610
5
10
15
20
25
30
35
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 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.
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.
- 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
Tabla 4
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
5
10
15
20
25
30
35
40
45
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.
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.
Encriptación del ejecutable del software informático
En el método 600 descrito más arriba, antes de determinar la clave pública de segundo usuario (PU2), el método 600 puede comprender encriptar el ejecutable del software informático.
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 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
5
10
15
20
25
30
35
40
45
50
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.
Instalación del software informático
5
10
15
20
25
30
35
40
45
50
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 después de que el segundo usuario 24 desencripta 830 el ejecutable encriptado del software informático.
En un ejemplo adicional, una clave de activación (AK) se determina a partir del segundo usuario 24 después de que el segundo usuario 24 desencripta 830 el ejecutable encriptado del software informático. En un ejemplo, una interfaz de usuario asociada al segundo dispositivo de procesamiento 27 puede motivar al segundo usuario 24 para la clave de activación (AK). El segundo usuario 24 puede proveer la clave de activación (AK) por un dispositivo de entrada asociado al segundo dispositivo de procesamiento 27 como, por ejemplo, un dispositivo de teclado, pantalla táctil o dispositivo de panel táctil, dispositivo de ratón o dispositivo de micrófono.
La clave de activación (AK) puede derivarse, de manera determinista, de una clave de activación de semilla. En un ejemplo, el primer usuario 23 puede determinar una clave de activación de semilla en el primer nodo 3. El primer usuario 23 puede entonces determinar un valor de generador (VG) según un mensaje. La clave de activación (AK) puede entonces determinarse según la clave de activación de semilla y el valor de generador (VG).
Determinación de un metadato (M) 910
Según se describe más arriba, el método 900 incluye determinar 910 un metadato (M) asociado a un registro de transacciones almacenado en el libro mayor distribuido P2P 14. La determinación del metadato (M) puede comprender consultar el libro mayor distribuido P2P 14 para el registro de transacciones y recuperar el metadato (M) del registro de transacciones. La determinación del metadato (M) puede además comprender recibir el metadato (M) asociado a un registro de transacciones de un usuario, nodo o almacén de datos.
En un ejemplo, el segundo nodo 7 determina el metadato (M) mediante la consulta del libro mayor distribuido P2P 14 para acceder al registro de transacciones que se asocia al metadato (M). En un ejemplo adicional, puede accederse al registro de transacciones mediante el uso de una instalación públicamente disponible como, por ejemplo,
www.blockchain.info.
www.blockchain.info.
En otro ejemplo, el primer nodo 3 u otro nodo no ilustrado de otra manera pueden consultar el libro mayor distribuido P2P 14 para el registro de transacciones. De esta manera, el metadato (M) puede recibirse en el segundo nodo 7 desde el primer nodo 3 u otro nodo no ilustrado de otra manera.
Según se describe más arriba, el metadato (M) puede incluirse en el registro de transacciones en, por ejemplo, uno o más de los lugares disponibles para las claves públicas en un script de rescate multifirma P2SH.
En otro ejemplo, el segundo nodo 7 puede recibir el metadato (M) de 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. En un ejemplo adicional, se accede al metadato (M) desde el almacén de datos 17 asociado al primer dispositivo de procesamiento 21 del primer nodo 3.
Determinación de una indicación de una entrada almacenada en la DHT 920
El método 900 además incluye determinar 920 una indicación de una entrada almacenada en la DHT 13 del metadato (M). La determinación de una indicación de una entrada almacenada en la DHT 13 puede comprender recuperar la indicación de un campo en el metadato (M) del registro de transacciones asociado.
Según se describe más arriba, la Tabla 1 provee ejemplos de la información que puede estar comprendida en el metadato (M). La línea 2 de la Tabla 1 muestra un ejemplo de una indicación de una entrada almacenada en la DHT 13, donde la indicación es una dirección IP que identifica la ubicación de la entrada almacenada en la DHT 13. En un ejemplo, el segundo nodo 7 puede determinar la indicación de una entrada mediante la recuperación del valor asociado al campo LicencePointer del metadato (M).
En un ejemplo adicional, la indicación de una entrada puede almacenarse en un campo en el metadato (M) no ilustrado de otra manera.
Determinación de un tercer valor hash (H3) según el software informático 930
Según se describe más arriba, el método 900 además incluye determinar 930 un tercer valor hash (H3) según el software informático. La determinación de un tercer valor hash (H3) puede comprender calcular el tercer valor hash en el segundo nodo 7.
En un ejemplo, el segundo nodo 7 puede calcular el tercer valor hash (H3) según los contenidos del software informático. En un ejemplo adicional, el tercer valor hash (H3) puede basarse en el cuerpo del software informático. En incluso un ejemplo adicional, el tercer valor hash (H3) puede basarse en el ejecutable del software informático.
El tercer valor hash (H3) puede calcularse mediante el uso del algoritmo SHA-256 para crear una representación de 256 bits del software informático. Se apreciará que otros algoritmos pueden usarse, incluidos otros algoritmos en la familia SHA. Otros algoritmos de hash pueden incluir aquellos en la familia RIPEMD.
Determinación de un cuarto valor hash (H4) de la entrada en la tabla de hash distribuidas 940
5 El método 900 además incluye determinar 940 un cuarto valor hash (H4) de la entrada en la DHT 13. La determinación de un cuarto valor hash (H4) puede comprender acceder a la entrada en la DHT 13 donde se almacena el cuarto valor hash (H4).
El cuarto valor hash (H4) puede basarse en el software informático. En un ejemplo, el cuarto valor hash (H4) se basa en los contenidos de no encabezamiento del software informático. En otro ejemplo, el cuarto valor hash (H4) se basa 10 en el ejecutable del software informático.
En un ejemplo, el cuarto valor hash (H4) se almacena en la entrada donde el metadato (M) asociado al registro de transacciones se almacena según se describe más arriba con referencia a 930. De esta manera, la determinación del cuarto valor hash (H4) puede comprender recuperar el cuarto valor hash (H4) de la entrada en la DHT 13 según se hace referencia por la indicación de una entrada. Es decir, por el campo LicencePointer del metadato (M).
15 En otro ejemplo, el cuarto valor hash (H4) es el primer valor hash (H1). Según se describe más arriba en el método 100, el primer valor hash (H1) se almacena en la DHT 13. De esta manera, el cuarto valor hash (H4) puede recuperarse por el segundo nodo 7 mediante la provisión a cualquier nodo participante de la DHT 13 de un mensaje de solicitud como, por ejemplo, get(key), donde key es la clave del par de valores de claves. En el presente ejemplo, key es el segundo valor hash (H2). El mensaje de solicitud puede enviarse a los nodos participantes hasta que se 20 recibe por el nodo participante que se asigna al índice según se indica por la partición del espacio de claves.
Comparación del tercer valor hash (H3) y el cuarto valor hash (H4) 950
Según se describe más arriba, el método 900 además incluye comparar 950 el tercer valor hash (H3) y el cuarto valor hash (H4). La comparación puede comprender determinar si el tercer valor hash (H3) y el cuarto valor hash (H4) concuerdan.
25 En un ejemplo, una concordancia puede indicar que el tercer valor hash (H3) y el cuarto valor hash (H4) son equivalentes.
Verificación de la integridad del software informático según la comparación 960
El método 900 además incluye verificar 960 la integridad del software informático según la comparación del tercer valor hash (H3) y el cuarto valor hash (H4).
30 En un ejemplo, la verificación de la integridad del software informático ocurre si la comparación determina que el tercer valor hash (H3) y el cuarto valor hash (H4) concuerdan.
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 35 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 40 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 45 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 50 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 5 descripción. Las presentes realizaciones se considerarán, por lo tanto, en todos los aspectos, ilustrativas y no restrictivas.
Claims (17)
- 510152025303540REIVINDICACIONES1. Un método implementado por ordenador para verificar la integridad de un software informático para la instalación mediante el uso de una tabla de hash distribuidas y un libro mayor distribuido entre pares, el método comprendiendo:determinar un metadato (M) asociado a un registro de transacciones almacenado en el libro mayor distribuido entre pares;determinar una indicación de una entrada almacenada en la tabla de hash distribuidas del metadato (M);determinar un tercer valor hash (H3) según el software informático;determinar un cuarto valor hash (H4) de la entrada en la tabla de hash distribuidas;comparar el tercer valor hash (H3) y el cuarto valor hash (H4); yverificar la integridad del software informático según la comparación del tercer valor hash (H3) y el cuarto valor hash (H4).
- 2. El método de la reivindicación 1, en donde la comparación del tercer valor hash (H3) y el cuarto valor hash (H4) comprende determinar si el tercer valor hash (H3) y el cuarto valor hash (H4) concuerdan.
- 3. El método de la reivindicación 1 o 2, en donde antes de determinar el metadato (M), el método comprende:determinar 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;determinar una segunda clave pública (P2) asociada al segundo usuario (U2) 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); yverificar 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).
- 4. El método de la reivindicación 3, 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.
- 5. El método de la reivindicación 3 o 4, en donde antes de determinar la clave pública de segundo usuario (PU2), el método comprende:determinar un dato (D1) asociado al software informático;determinar un primer valor hash (H1) según el 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; ydeterminar el metadato (M) que comprende el segundo valor hash (H2) para el almacenamiento en el libro mayor distribuido entre pares.
- 6. El método de cualquiera de las reivindicaciones precedentes, en donde el software informático comprende un encabezamiento y un cuerpo.
- 7. El método de la reivindicación 6, en donde el tercer valor hash (H3) se determina a partir del cuerpo del software informático.
- 8. El método de las reivindicaciones 6 o 7, en donde el encabezamiento comprende un valor hash del cuerpo del software informático.
- 9. El método de las reivindicaciones 6, 7 u 8, en donde el encabezamiento además comprende el segundo valor hash (H2).510152025303540
- 10. El método de cualquiera de las reivindicaciones 6 a 9, en donde el cuerpo del software informático comprende un ejecutable del software informático.
- 11. El método de la reivindicación 10, en donde antes de determinar la clave pública de segundo usuario (PU2), el método comprende encriptar el ejecutable del software informático.
- 12. El método de la reivindicación 11, 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); yencriptar el ejecutable del software informático con el secreto común (SC) para generar un ejecutable encriptado del software informático.
- 13. El método de la reivindicación 12, en donde el ejecutable encriptado del software informático se desencripta 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); yla desencriptación del ejecutable del software informático con el secreto común (SC) para generar un ejecutable desencriptado del software informático.
- 14. El método de la reivindicación 13, que además comprende:instalar el ejecutable desencriptado del software informático en un dispositivo de procesamiento asociado al segundo usuario (U2).
- 15. El método de la reivindicación 14, que además comprende: determinar una clave de activación (AK) a partir del segundo usuario (U2); yejecutar instrucciones del ejecutable desencriptado del software informático según la clave de activación (AK).
- 16. 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.
- 17. Un sistema informático para verificar la integridad de un software informático para la instalació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 un metadato (M) asociado a un registro de transacciones almacenado en el libro mayor distribuido entre pares;determinar una indicación de la ubicación de una entrada en la tabla de hash distribuidas del metadato (M);determinar un tercer valor hash (H3) según el software informático;determinar un cuarto valor hash (H4) de la entrada en la tabla de hash distribuidas;comparar el tercer valor hash (H3) y el cuarto valor hash (H4); yverificar la integridad del software informático según la comparación del tercer valor hash (H3) y el cuarto valor hash (H4).
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB201608454 | 2016-05-13 | ||
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 |
GB201608456 | 2016-05-13 | ||
GB201608463 | 2016-05-13 | ||
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 |
PCT/IB2017/052800 WO2017195160A1 (en) | 2016-05-13 | 2017-05-12 | A method and system for verifying integrity of a digital asset using a distributed hash table and a peer-to-peer distributed ledger |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2691254T3 true ES2691254T3 (es) | 2018-11-26 |
Family
ID=58737700
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
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 |
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 |
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 |
---|---|---|---|
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 |
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 (8) | US10579779B2 (es) |
EP (3) | EP3295349B1 (es) |
JP (3) | JP6514831B1 (es) |
KR (3) | KR101974075B1 (es) |
CN (5) | CN116842483A (es) |
AU (3) | AU2017263290B2 (es) |
BR (3) | BR112018072969A2 (es) |
CA (3) | CA3022899A1 (es) |
ES (3) | ES2701981T3 (es) |
GB (3) | GB2558485A (es) |
HK (3) | HK1245430B (es) |
IL (3) | IL262807B (es) |
MX (3) | MX2018013617A (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 (84)
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 |
CN116842483A (zh) | 2016-05-13 | 2023-10-03 | 区块链控股有限公司 | 验证数字资产完整性的方法和系统 |
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 |
WO2019098895A1 (en) * | 2017-11-17 | 2019-05-23 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and arrangement for detecting digital content tampering |
CN108573741A (zh) * | 2017-12-25 | 2018-09-25 | 北京金山云网络技术有限公司 | 业务数据记录方法、装置、设备和存储介质 |
US10896418B2 (en) | 2017-12-29 | 2021-01-19 | Ebay Inc. | Secure management of data files using a blockchain |
US10715323B2 (en) | 2017-12-29 | 2020-07-14 | Ebay Inc. | Traceable key block-chain ledger |
US10841372B1 (en) * | 2018-01-11 | 2020-11-17 | Hoot Live, Inc. | Systems and methods for performing useful commissioned work using distributed networks |
US11210369B2 (en) * | 2018-01-19 | 2021-12-28 | 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 |
US20210099284A1 (en) * | 2018-02-08 | 2021-04-01 | 2Bc Innovations, Llc | Modifying blockchain-encoded records of rived longevity-contingent instruments |
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 |
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 |
WO2019200460A1 (en) * | 2018-04-20 | 2019-10-24 | Interbit Ltd. | Method and system for storing a binary large object |
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 |
US11431477B2 (en) | 2018-05-14 | 2022-08-30 | 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 |
CA3104911A1 (en) * | 2018-07-09 | 2020-01-16 | Prescient Innovations Inc. | Media attribution systems and methods |
GB201811263D0 (en) * | 2018-07-10 | 2018-08-29 | Netmaster Solutions Ltd | A method and system for managing digital using a blockchain |
WO2020033556A1 (en) * | 2018-08-07 | 2020-02-13 | Walmart Apollo, Llc | System and method for a distributed ledger for industrial asset management |
WO2020033558A1 (en) * | 2018-08-07 | 2020-02-13 | Walmart Apollo, Llc | System and method for a distributed ledger for information technology 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 |
WO2020076679A1 (en) * | 2018-10-09 | 2020-04-16 | 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 | 玲於奈 日置 | トークン管理システムおよびトークン管理方法 |
EP3566418B1 (en) * | 2018-12-29 | 2021-04-21 | Advanced New Technologies Co., Ltd. | Blockchain-based crowdsourcing of map applications |
WO2020145507A1 (ko) * | 2019-01-08 | 2020-07-16 | 주식회사 에치에프알 | 블록체인을 이용한 로밍 서비스 제공방법 및 그를 위한 장치 |
US11405180B2 (en) | 2019-01-15 | 2022-08-02 | Fisher-Rosemount Systems, Inc. | Blockchain-based automation architecture cybersecurity |
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 | 网易(杭州)网络有限公司 | 激活码管理方法及装置、激活码生成方法及装置 |
JP6779389B2 (ja) | 2019-04-03 | 2020-11-04 | アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited | 信頼できる実行環境下でのブロックチェーンデータの処理および保存 |
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 원장 시스템 |
TW202143136A (zh) * | 2019-08-09 | 2021-11-16 | 英商路昂有限公司 | 使用者媒體平台伺服器系統 |
WO2021039453A1 (ja) * | 2019-08-29 | 2021-03-04 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 制御方法、サーバ、および、プログラム |
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 | (주)소프트제국 | 블록체인 기반의 브라우저의 웹스토리지를 이용한 간편인증 방법 및 시스템 |
CA3150117A1 (en) * | 2019-10-22 | 2021-04-29 | Robert I. Beaver Iii | SYSTEM AND METHOD FOR COLLABORATIVE DESIGN OF ALLOCATION TRACKING BASED ON CUSTOMIZED PRODUCT ROLES BASED ON MANUFACTURING CONSTRAINTS |
US12073148B2 (en) | 2019-10-22 | 2024-08-27 | Zazzle, Inc. | Method and media for generating and using digital product tokens to represent digital and physical products |
US11288052B2 (en) * | 2019-11-21 | 2022-03-29 | General Electric Company | Devices, systems, and methods for providing on-demand engine software using a distributed ledger |
KR102274656B1 (ko) * | 2019-11-22 | 2021-07-09 | 주식회사 티맥스엔터프라이즈 | 블록체인 네트워크에서 데이터를 관리하기 위한 기법 |
JP7162634B2 (ja) | 2019-12-12 | 2022-10-28 | 株式会社bitFlyer Blockchain | 証明書データをデジタルに利用可能にするための装置、方法及びそのためのプログラム |
US12099997B1 (en) | 2020-01-31 | 2024-09-24 | Steven Mark Hoffberg | Tokenized fungible liabilities |
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 |
WO2021188765A1 (en) | 2020-03-20 | 2021-09-23 | 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 |
US12039309B2 (en) * | 2020-07-29 | 2024-07-16 | Canon Kabushiki Kaisha | Information processing apparatus, method of activating an application and storage medium |
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 | 达闼机器人股份有限公司 | 程序验证方法和装置、平台和用户终端及在线服务系统 |
JP2023548415A (ja) | 2020-11-09 | 2023-11-16 | リドル アンド コード ゲーエムベーハー | 保護装置によって達成される対象物の保護を停止する方法 |
CN115280717B (zh) * | 2021-01-11 | 2024-06-07 | 微福斯有限责任公司 | 区块链审计系统和方法 |
WO2023015312A1 (en) | 2021-08-05 | 2023-02-09 | Artema Labs, Inc | Methods for securely adding data to a blockchain using dynamic time quanta and version authentication |
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 |
US20240113889A1 (en) * | 2022-09-29 | 2024-04-04 | ForgeRock, Inc. | Verifying ownership using decentralized verification |
Family Cites Families (76)
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 | 株式会社エヌ・ティ・ティ・ドコモ | 端末装置及びプログラム |
CN100504818C (zh) * | 2003-07-07 | 2009-06-24 | 巨视股份有限公司 | 调控对非易失性存储区访问的方法和判定访问的自动方法 |
US8875309B1 (en) * | 2004-12-15 | 2014-10-28 | Nvidia Corporation | Content server and method of providing content therefrom |
US7577848B2 (en) * | 2005-01-18 | 2009-08-18 | Microsoft Corporation | Systems and methods for validating executable file integrity using partial image hashes |
WO2007010427A1 (en) * | 2005-07-22 | 2007-01-25 | Koninklijke Philips Electronics N.V. | Digital inheritance |
KR101185595B1 (ko) * | 2005-09-30 | 2012-09-24 | 삼성전자주식회사 | 스마트 카드를 이용하여 보안 기능을 수행하는 장치 및 그방법 |
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.) |
US9276752B2 (en) * | 2011-02-11 | 2016-03-01 | Siemens Healthcare Diagnostics Inc. | System and method for secure software update |
WO2012145650A1 (en) * | 2011-04-22 | 2012-10-26 | 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 |
CN103380589B (zh) * | 2011-06-13 | 2016-04-27 | 松下电器产业株式会社 | 终端装置、服务器装置、内容记录控制系统及记录方法 |
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 |
US20160085955A1 (en) | 2013-06-10 | 2016-03-24 | Doosra, Inc. | Secure Storing and Offline Transferring of Digitally Transferable Assets |
EP2996378B1 (en) | 2013-06-19 | 2019-01-30 | Huawei Technologies Co., Ltd. | Communication quality measurement method |
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 |
CN104123488A (zh) * | 2014-08-14 | 2014-10-29 | 北京网秦天下科技有限公司 | 应用程序的验证方法和装置 |
US20160048688A1 (en) * | 2014-08-14 | 2016-02-18 | Google Inc. | Restricting System Calls using Protected Storage |
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 |
WO2016131056A1 (en) | 2015-02-13 | 2016-08-18 | 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 |
WO2016160850A1 (en) * | 2015-03-30 | 2016-10-06 | Iperial, Inc. | System and method for authenticating digital content |
SG11201708295XA (en) * | 2015-04-06 | 2017-11-29 | Bitmark Inc | System and method for decentralized title recordation and authentication |
CN104735164B (zh) * | 2015-04-10 | 2018-05-18 | 网易(杭州)网络有限公司 | 一种保存文件信息的方法和装置 |
US20160321675A1 (en) | 2015-05-01 | 2016-11-03 | Monegraph, Inc. | Authenticating content at an online content management system |
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 |
KR20180110670A (ko) * | 2016-02-08 | 2018-10-10 | 린제이 몰로니 | 문서 정보의 진본성을 검증하기 위한 시스템 및 방법 |
US20170236123A1 (en) | 2016-02-16 | 2017-08-17 | Blockstack Inc. | Decentralized processing of global naming systems |
SG10202007904SA (en) * | 2016-02-23 | 2020-10-29 | Nchain Holdings Ltd | A method and system for securing computer software using a distributed hash table and a blockchain |
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 |
CN116842483A (zh) | 2016-05-13 | 2023-10-03 | 区块链控股有限公司 | 验证数字资产完整性的方法和系统 |
-
2017
- 2017-05-12 CN CN202310819908.4A patent/CN116842483A/zh active Pending
- 2017-05-12 SG SG11201809582PA patent/SG11201809582PA/en unknown
- 2017-05-12 CA CA3022899A patent/CA3022899A1/en active Pending
- 2017-05-12 SI SI201730006T patent/SI3295362T1/sl unknown
- 2017-05-12 WO PCT/IB2017/052800 patent/WO2017195160A1/en active Application Filing
- 2017-05-12 GB GB1806707.4A patent/GB2558485A/en not_active Withdrawn
- 2017-05-12 SI SI201730005T patent/SI3295350T1/sl unknown
- 2017-05-12 EP EP17724453.0A patent/EP3295349B1/en active Active
- 2017-05-12 US US16/300,929 patent/US10579779B2/en active Active
- 2017-05-12 SI SI201730007T patent/SI3295349T1/sl unknown
- 2017-05-12 BR BR112018072969-8A patent/BR112018072969A2/pt not_active Application Discontinuation
- 2017-05-12 CN CN201780024156.5A patent/CN109074434B/zh active Active
- 2017-05-12 BR BR112018072965-5A patent/BR112018072965A2/pt not_active Application Discontinuation
- 2017-05-12 AU AU2017263290A patent/AU2017263290B2/en active Active
- 2017-05-12 AU AU2017261921A patent/AU2017261921B2/en active Active
- 2017-05-12 KR KR1020187034991A patent/KR101974075B1/ko active IP Right Grant
- 2017-05-12 JP JP2018536404A patent/JP6514831B1/ja active Active
- 2017-05-12 WO PCT/IB2017/052804 patent/WO2017195164A1/en active Application Filing
- 2017-05-12 EP EP17724454.8A patent/EP3295362B1/en active Active
- 2017-05-12 ES ES17724645T patent/ES2701981T3/es active Active
- 2017-05-12 MX MX2018013617A patent/MX2018013617A/es unknown
- 2017-05-12 ES ES17724453.0T patent/ES2691254T3/es active Active
- 2017-05-12 WO PCT/IB2017/052801 patent/WO2017195161A1/en active Application Filing
- 2017-05-12 IL IL262807A patent/IL262807B/en unknown
- 2017-05-12 US US16/300,528 patent/US11294991B2/en active Active
- 2017-05-12 CN CN201780024137.2A patent/CN109074433B/zh active Active
- 2017-05-12 SG SG11201809585WA patent/SG11201809585WA/en unknown
- 2017-05-12 SG SG11201809584XA patent/SG11201809584XA/en unknown
- 2017-05-12 CN CN202310733070.7A patent/CN116776318A/zh active Pending
- 2017-05-12 JP JP2018536487A patent/JP6556370B2/ja active Active
- 2017-05-12 GB GB1806704.1A patent/GB2559908A/en not_active Withdrawn
- 2017-05-12 KR KR1020187035450A patent/KR102051288B1/ko active IP Right Grant
- 2017-05-12 BR BR112018072929-9A patent/BR112018072929A2/pt not_active Application Discontinuation
- 2017-05-12 CA CA3022809A patent/CA3022809A1/en active Pending
- 2017-05-12 GB GB1806705.8A patent/GB2564208A/en not_active Withdrawn
- 2017-05-12 ES ES17724454T patent/ES2701980T3/es active Active
- 2017-05-12 CA CA3022803A patent/CA3022803A1/en active Pending
- 2017-05-12 MX MX2018013618A patent/MX2018013618A/es unknown
- 2017-05-12 US US16/300,514 patent/US11210372B2/en active Active
- 2017-05-12 JP JP2018536399A patent/JP6514830B2/ja active Active
- 2017-05-12 EP EP17724645.1A patent/EP3295350B1/en active Active
- 2017-05-12 KR KR1020187035210A patent/KR101974060B1/ko active IP Right Grant
- 2017-05-12 MX MX2018013620A patent/MX2018013620A/es unknown
- 2017-05-12 CN CN201780024133.4A patent/CN109074462B/zh active Active
- 2017-05-12 AU AU2017263291A patent/AU2017263291B2/en active Active
-
2018
- 2018-03-28 HK HK18104246.4A patent/HK1245430B/zh unknown
- 2018-03-28 HK HK18104245.5A patent/HK1245429B/zh unknown
- 2018-03-28 HK HK18104244.6A patent/HK1245428B/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 PH12018502385A patent/PH12018502385A1/en unknown
- 2018-11-12 PH PH12018502384A patent/PH12018502384A1/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
-
2024
- 2024-01-31 US US18/428,697 patent/US20240248966A1/en active Pending
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2691254T3 (es) | 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 | |
CN109074579B (zh) | 使用分布式散列表和区块链保护计算机软件的方法及系统 |