Method and system for tamper-resistant event sourcing using a distributed ledger

Tamper-resistant event sourcing using cryptographic hash functions and blockchain ensures the integrity and verifiability of state data in computing objects by converting state data into immutable hash values.

JP7757531B2Active Publication Date: 2025-10-21MASTERCARD INT INC
View PDF 8 Cites 0 Cited by

Patent Information

Application Number
JP2024526665
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-11-04
Filing Date
2022-10-03
Publication Date
2025-10-21
Estimated Expiration
2042-10-03

AI Technical Summary

Technical Problem

Existing event sourcing systems lack tamper-resistance, making it difficult to detect and prevent corruption of event records, which can lead to vulnerabilities in computing objects.

Method used

Implementing tamper-resistant event sourcing using cryptographic hash functions to convert state data into hash values stored on a blockchain, ensuring immutability and allowing verification of the state data.

Benefits of technology

Ensures the state data is tamper-resistant and verifiable, enabling quick identification of corruption and maintaining data integrity.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007757531000001
    Figure 0007757531000001
  • Figure 0007757531000002
    Figure 0007757531000002
  • Figure 0007757531000003
    Figure 0007757531000003
Patent Text Reader

Abstract

A method for verifying the state of an object via tamper-resistant event sourcing includes: receiving, by a receiver of a processing server, state data for a computing object and an identification value associated with the computing object; applying, by a processor of the processing server, a one-way cryptographic function to the received state data to generate a comparison hash value; identifying, by the processor of the processing server, a published hash value that is stored in the blockchain along with the identification value; and verifying, by the processor of the processing server, the state of the computing object using the state data based on a match between the generated comparison hash value and the identified published hash value.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure relates to event sourcing, and in particular to tamper-resistant event sourcing for computing objects such as applications or systems through the use of cryptographic functions and distributed ledgers such as blockchains.

[0002] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of U.S. Patent Application No. 17 / 518,755, filed November 4, 2021, the entire contents of which are incorporated by reference for all purposes. [Background technology]

[0003] Event sourcing systems process incoming events, with each event resulting in a change to the resulting state of a system (e.g., an application program, an operating system, or an entire computing system). Records of events are often kept so that they can be traced back, in case a system needs to be rebuilt or a previous configuration restored. However, recording events is only useful if the records can be recovered.

[0004] Furthermore, if an event in the event history is corrupted or tampered with, such as through corruption or malicious intent, the resulting state of the system will be corrupted. In some cases, particularly malicious, detecting such corruption may be difficult or impossible, leaving the object with vulnerabilities or other issues that are not easily noticeable. As a result, information about the state of a computing object needs to be stored in a tamper-resistant location and in a manner such that any tampering with the data can be easily identified. However, to date, no system has been developed that accomplishes such a task.

[0005] Therefore, there is a need to provide technical improvements regarding the storage and validation of state data for computing objects. Summary of the Invention

[0006] The present disclosure provides systems and methods for tamper-resistant event sourcing for objects and for verifying the state of the objects via tamper-resistant event sourcing. State information for a computing object is obtained after each event affecting the object or at other regular intervals. The state information is converted and transformed into an appropriate format as needed, and a cryptographic hash function is applied to the transformed state data. This results in a hash value stored in a distributed ledger such as a blockchain, as well as an identifier associated with the computing object and / or its current state, such as a timestamp or event identifier. At any interval, the state of the object can then be verified by applying the hash function to the object's state and comparing the resulting value to the value stored in the blockchain. Because the blockchain is immutable, the state data cannot be tampered with or altered in any way. Hashing the data also protects the data even when the blockchain is public, and allows any entity to verify the state when the state data is provided, providing greater security and reliability. Furthermore, by having the history of state data for a single object recorded on the blockchain, if an entity has a version of the object that has become corrupted, the point of corruption can be quickly identified by verifying the state data for each interval until the point at which verification fails. Thus, the state data for an object is tamper-resistant, enabling verification and error detection with complete immutability.

[0007] A method for tamper-resistant event sourcing for an object includes: receiving, by a receiver of a processing server, state data for a computing object and an identification value associated with the computing object; applying, by a processor of the processing server, a one-way cryptographic function to the received state data to generate a hash value; and publishing, by a transmitter of the processing server, the generated hash value and the identification value on a blockchain.

[0008] A method for verifying the state of an object via tamper-resistant event sourcing includes: receiving, by a receiver of a processing server, state data about a computing object and an identification value associated with the computing object; applying, by a processor of the processing server, a one-way cryptographic function to the received state data to generate a comparison hash value; identifying, by the processor of the processing server, a public hash value stored in a blockchain together with the identification value; and verifying, by the processor of the processing server, the state of the computing object according to the state data based on a match between the generated comparison hash value and the identified public hash value.

[0009] A system for tamper-resistant event sourcing for an object includes: a processing server that includes a receiver that receives state data for a computing object and an identification value associated with the computing object; a processor that applies a one-way cryptographic function to the received state data to generate a hash value; and a transmitter that publishes the generated hash value and the identification value on a blockchain.

[0010] A system for verifying the state of an object via tamper-resistant event sourcing includes: a processing server that includes a receiver that receives state data about a computing object and an identification value associated with the computing object; and a processor that performs the following operations: applying a one-way cryptographic function to the received state data to generate a comparison hash value; identifying a public hash value that is stored in a blockchain along with the identification value; and verifying the state of the computing object according to the state data based on a match between the generated comparison hash value and the identified public hash value. [Brief explanation of the drawings]

[0011] The scope of the present disclosure is best understood from the following detailed description of exemplary embodiments when taken in conjunction with the accompanying drawings, in which:

[0012] [Figure 1] FIG. 1 is a block diagram illustrating a high-level system architecture for tamper-resistant event sourcing, according to an example embodiment. [Figure 2] 2 is a block diagram illustrating a processing server of the system of FIG. 1 for enabling tamper-resistant event sourcing for computing objects, according to an exemplary embodiment. [Figure 3] 2 is a flow diagram illustrating a process by a processing server in the system of FIG. 1 for storing state data about computing objects in a tamper-resistant manner, according to an exemplary embodiment. [Figure 4] 2 is a flow diagram illustrating a process for verifying the state of an object using tamper-resistant event sourcing in the system of FIG. 1 according to an example embodiment. [Figure 5] 1 is a flow diagram illustrating an example method for tamper-resistant event sourcing for an object, according to an example embodiment. [Figure 6]1 is a flow diagram illustrating an example method for verifying the state of an object via tamper-resistant event sourcing, according to an example embodiment. [Figure 7] FIG. 1 is a block diagram illustrating a computer system architecture, according to an exemplary embodiment.

[0013] Further areas of applicability of the present disclosure will become apparent from the following detailed description. The detailed description of exemplary embodiments is intended for purposes of illustration only and is not intended to necessarily limit the scope of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0014] Glossary Blockchain: A public ledger of all transactions of a blockchain-based currency. One or more computing devices may include a blockchain network, which may be configured to process and record transactions as part of blocks in the blockchain. Once a block is complete, it is added to the blockchain, thereby updating the transaction record. In many embodiments, the blockchain may be a chronological ledger of transactions or may be presented in any other order suitable for use by the blockchain network. In some embodiments, a transaction recorded in the blockchain may include a destination address and a currency amount. The blockchain thereby records how much currency belongs to a particular address. In some embodiments, transactions may or may not be financial-related and may include additional or different information (e.g., source address, timestamp, etc.). In some embodiments, a blockchain may additionally or alternatively include nearly any type of data in the form of transactions, which would or would need to be placed in a distributed database that maintains a continuously growing list of data records hardened against tampering or revision. Alternatively, a blockchain can be verified and validated by the blockchain network by proof-of-work (PoW) and / or any other suitable verification technique associated therewith. In some cases, the data about a given transaction may further include additional data that is not directly part of the transaction that is appended to the transaction data. In some examples, the inclusion of such data in the blockchain may constitute a transaction. In some such examples, the blockchain may not be directly associated with a particular digital, virtual, fiat, or other type of currency.

[0015] A system for tamper-resistant event sourcing FIG. 1 illustrates a system 100 for event sourcing for computing objects in a tamper-resistant manner through the use of cryptographic hashing and blockchain.

[0016] The system 100 may include a processing server 102. The processing server 102, described in more detail below, may obtain state data for objects and may publish the state data in a tamper-resistant and protected manner to enable validation of the object's state data and identification of errors or corruption in events associated with the objects. In the system 100, the processing server 102 may receive state data for computing objects, such as a state machine 104. The state machine 104 may be an overall computing system that sources the state data, or may include an application program, operating system, or other object that sources the state data. In some embodiments, the computing object may be part of or interface with the processing server 102. The state data may be obtained by the processing server 102 from the state machine 104 via electronic communication or using any other suitable method. The state data may include any and all data regarding the state of the computing object that may be useful for the operation or later validation of the computing object, and the state data may depend on the type of computing object, the needs of the associated entity, etc. For example, the state data of an application program for email communication may differ from the state data of an operating system.

[0017] In some cases, the state data for a computing object may be the state of an event sourcing system used for the computing object. For example, an operating system (OS) may include an event sourcing system that can track all actions and events that may affect the operating system, such as an event log. In such a case, the processing server 102 may use data from the event log or other event sourcing system as the state data. The state data for a computing object may be stored in any suitable format, such as in a memory or database that is part of the state machine 104, or in cloud storage accessible thereby.

[0018] As discussed above, the term "computing object" may refer to hardware, software components, application programs, data objects, or any combination thereof. For example, in one example, a computing object may be a state machine 104. In a second example, a computing object may be an operating system. In a third example, a computing object may be data associated with a bank account, and the state data may include, for example, events related to the account, such as account openings, transfers to the account, payments from the account, other charges, etc. In a fourth example, a computing object may be a supply chain database, and the state data may include, for example, product manufacturing dates, product validation or inspection information, packaging dates, shipping dates, sale dates, expiration dates, etc.

[0019] The processing server 102 may also receive an identification value associated with the computing object. The identification value may be numeric, alphanumeric, etc. In some cases, the identification value may be unique for the computing object. In other cases, the identification value may be unique for the computing object and may be associated with a particular state of the computing object. In such cases, each state of the computing object may be associated with a different unique identification value. If the identification value is unique to the computing object regardless of state, the processing server 102 may receive a second identifier associated with the state of the computing object. Thus, in such cases, the processing server 102 may receive an identification value for the computing object that is unique across all computing objects, as well as a state identifier that is unique across all states for that particular computing object. By way of example, each action or event associated with the computing object performed on or by it may have a value associated with it (e.g., a numerical order for the event), which may be used as a state identifier. By way of another example, the state identifier may be a timestamp of when the state data was changed to the current state.

[0020] The processing server 102 may receive the state data and apply a cryptographic function, such as a one-way hash function, to the state data. The application of the cryptographic function may generate a hash value. In an exemplary embodiment, a collision-resistant cryptographic hash function may be used, such that the resulting hash value is of sufficient size and complexity to be highly resistant to any collisions (e.g., the same hash value being generated when the function is applied to two different sets of data). By way of example, the cryptographic function may be the Secure Hash Algorithm 256 (SHA-256). The cryptographic function may be a one-way function, meaning that the resulting hash value cannot be used to retrieve the original state data via any algorithm, function, or other mechanism.

[0021] In some embodiments, the processing server 102 may format the state data before applying the cryptographic function. To format the state data, the processing server 102 may first convert the state data of the computing object into an object notation representation, such as a JavaScript Object Notation (JSON) representation. In some cases, the conversion may be performed only depending on the location of the state data as obtained by the processing server 102 or other current representation of the state data as obtained by the processing server 102. After converting the state data to its object notation representation, the processing server 102 may transform the state data into a canonical representation. If the object notation representation is a JSON representation, the transformation of the state data may follow the rules of the JSON Canonicalization Scheme (JCS). In other cases, any applicable rules or conventions may be utilized in converting the state data into a canonical representation. In such embodiments, the canonical representation of the state data may be used when the cryptographic function is applied to the state data.

[0022] Once the processing server 102 generates a hash value for the computing object and its associated state, the hash value can be published on the blockchain. The blockchain can be managed and maintained by a blockchain network 108. Each blockchain network 108 can include multiple different blockchain nodes 110. Each blockchain node 110 can be a computing system, such as those shown in FIGS. 2 and 7 and described in more detail below, configured to perform functions related to blockchain processing and management, which can include, for example, generating blockchain data values, verifying proposed blockchain transactions, verifying digital signatures, generating new blocks, validating new blocks, and maintaining copies of the blockchain. In some embodiments, the processing server 102 can be a blockchain node 110 in the blockchain network 108.

[0023] A blockchain may be a distributed ledger comprising at least a plurality of blocks. Each block may include at least a block header and one or more data values. Each block header may include at least a timestamp, a block reference value, and a data reference value. The timestamp may be the time when the block header was created and may be represented using any suitable method (e.g., a UNIX timestamp, DateTime notation, etc.). The block reference value may be a value that references a preceding block in the blockchain (e.g., based on the timestamp). In some embodiments, the block reference value in the block header may be a reference to the block header of the most recently added block preceding the respective block. In an exemplary embodiment, the block reference value may be a hash value generated by hashing the block header of the most recently added block. Similarly, the data reference value may be a reference to one or more data values ​​stored in the block containing the block header. In an exemplary embodiment, the data reference value may be a hash value generated by hashing one or more data values. For example, the block reference value may be the root of a Merkle tree generated using one or more data values.

[0024] The use of a block reference value and a data reference value in each block header results in immutability for the blockchain. Any attempted change to the data value requires the generation of a new data reference value for that block, which in turn requires the generation of a new block reference value for the subsequent block, which in turn requires the generation of a new block reference value for each subsequent block. For the change to be permanent, this must be performed and updated for every single blockchain node 110 in the blockchain network 108 before a new block is created and added to the blockchain. Computing and communication limitations can make such changes extremely difficult or even impossible, hence the blockchain's immutability.

[0025] In the system 100, a blockchain node 110 (e.g., the processing server 102) can receive a hash value for a computing object and its associated state, as well as any identifying information (e.g., an identification value and a state identifier for the computing object). The hash value and associated identifying information can be stored in a new blockchain data value that is generated and included in a new block that is generated and added to the blockchain using an appropriate method. The new block can be distributed to all blockchain nodes 110 in the blockchain network 108. If the blockchain can be a public blockchain, the new block can be accessible by any interested entity, such as the state machine 104, to ensure that the state data has been properly stored in the tamper-resistant blockchain.

[0026] The processing server 102 may continue to generate hash values ​​at regular intervals. In some cases, a new hash value may be generated for a computing object using its updated state data whenever an action or event occurs that affects the state of the computing object. In other cases, a new hash value may be generated periodically (e.g., after a predetermined period of time (e.g., hourly, daily, weekly, etc., which may depend on the computing object and state changes), after a predetermined number of actions or events, after a predetermined number of actions or events that change the state, etc.).

[0027] In system 100, processing server 102, state machine 104, or another interested entity or system (e.g., verification system 106) may be interested in verifying state data for a computing object. For example, if the computing object is an operating system, verification system 106 may utilize the operating system to apply updates to the operating system. Verification system 106 may be intended to ensure that the updated operating system is valid and has not been tampered with (e.g., in the event that a malicious entity provides malicious update data to verification system 106). Verification system 106 may verify the updated state of the operating system by using an appropriate hash value stored in the blockchain, either directly or via processing server 102.

[0028] In an exemplary embodiment, the verification system 106 can electronically transmit current state data for the computing object to the processing server 102, along with a unique identification value for the operating system and any identifying information, such as a version number, as a state identifier for the operating system. The processing server 102 can receive the state data and identifying information from the verification system 106. The processing server 102 can appropriately transform the state data and apply a cryptographic function to the state data to generate a new hash value. The processing server 102 can use the provided identification value and state identifier to identify a published hash value for the computing object in the blockchain. The processing server 102 can then verify the state of the computing object held by the verification system 106 and check the generated new hash value against the published hash value. If the values ​​match, the computing object (e.g., an updated operating system) is considered verified. The processing server 102 can provide information to the verification system 106 as appropriate, and the verification system 106 can trust and utilize the operating system. If the hash values ​​do not match, the processing server 102 may provide the instance to the verification system 106, which may attempt to revert the computing object to a previous state that was successfully verified. As a result, any entity can verify the state of the computing object using the immutable hash values ​​stored in the blockchain, making the state data completely tamper-resistant.

[0029] If new hash values ​​are periodically published for a computing object, the published hashed state data can be used to identify when the computing object's local state data (e.g., the verification system's operating system version) has become corrupted when a validation fails. For example, if the verification system 106 has successfully verified operating system version 12 and has been using the operating system for a period of time across several updates, and then attempts verification using operating system version 18 and experiences a validation failure, this may be due to receiving tampered update data for any of versions 12-18. After version 18 fails the validation data, the verification system 106 can provide state data for version 17 of the operating system to the processing server 102 and attempt another validation. If that validation fails, the verification system 106 can continue testing operating system versions until a verification is successful. For example, if version 15 fails its validation but version 14 does, the verification system 106 can determine that the update data for version 15 was tampered with. The verification system 106 can then revert to version 14, obtain valid update data, for example, from the state machine 104 or directly from another entity, and perform a new verification once the operating system is updated. In some cases, the verification system 106 can provide the processing server 102 with version 12 of the operating system and also with update data (e.g., other event or action data, in other examples) for each version up to version 18. The processing server 102 updates the state data with the update data for version 13, verifies the updated state data with the associated hash value in the blockchain, and continues updating the state data and verifying the updated operating system until verification fails.In other words, the management server 102 or any other entity may follow in either direction to identify when tampering occurred that caused a validation failure on the state data.

[0030] In another example, the state machine 104 can be a database of a financial institution such as a bank, and the computing objects can be bank accounts, with the bank account data stored in the database. In such an example, state data about a bank account can be hashed and published on the blockchain when the account is opened, deposited, withdrawn, etc. The published state data can be used to verify the state of the account (e.g., balance) at a given time. By publishing the state data as the account state changes, deposits into or payments from the account can be verified. For example, a dispute may arise between the account holder and the business, and the business may allege that the holder has defaulted on a payment. The account holder can provide data about the account before a payment, which can be hashed into published state data on the blockchain and used to verify the alleged state before the payment. The account holder can present the account after a payment, which can be hashed again and independently verified by the business or the verification system 106, thereby establishing that the payment was made and the account has been credited accordingly.

[0031] The described methods and systems enable event sourcing data or state data for computing objects to be stored in a completely tamper-resistant manner while remaining completely verifiable. The use of blockchain makes the state data tamper-resistant while still remaining available for verification. The use of cryptographic hash functions also enables the state data to be stored in a publicly accessible distributed ledger, allowing verification without compromising the inclusion of any sensitive or confidential data. Thus, entities that make application programs available can continuously update their state data and publish it on the blockchain, allowing all customers to easily and securely verify the version of the application program and easily and quickly identify any tampering with their local copies of the application program. Thus, the described methods and systems provide technical improvements for event sourcing and state data storage and verification through the use of cryptographic functions and blockchain.

[0032] Processing Server 2 illustrates an embodiment of a processing server 102 (e.g., a processing server 102 in system 100). Those skilled in the art will appreciate that the embodiment of processing server 102 illustrated in FIG. 2 is provided for illustrative purposes only and is not intended to be an exhaustive list of all possible configurations of processing server 102 suitable for performing the functions of the present disclosure. For example, computer system 700 illustrated in FIG. 7 and described in more detail below may be a suitable configuration of processing server 102.

[0033] The processing server 102 may include a receiving device 202. The receiving device 202 may be configured to receive data over one or more networks via one or more network protocols. In some examples, the receiving device 202 may be configured to receive data from the state machine 104, the verification system 106, the blockchain node 110, and other systems and entities via one or more communication methods, such as radio frequency, a local area network, a wireless area network, a cellular communication network, Bluetooth, the Internet, etc. In some embodiments, the receiving device 202 may include multiple devices (e.g., different receiving devices receiving data over different networks (e.g., a first receiving device receiving data over a local area network and a second receiving device receiving data over the Internet)). The receiving device 202 may receive a transmitted electronic data signal. Upon receipt of the data signal by the receiving device 202, data may be superimposed on the data signal and may be decoded, parsed, read, or otherwise obtained. In some embodiments, the receiving device 202 may include an analysis module for analyzing the received data signal to obtain the data superimposed thereon. For example, the receiving device 202 may include an analysis program configured to receive and convert received data signals into usable input for functions performed by the processing device to implement the methods and systems of the present disclosure.

[0034] The receiving device 202 can be configured to receive data signals electronically transmitted by a blockchain node 110, which may be superimposed or encoded with blockchain data values, blocks, blockchain transaction data, etc. The receiving device 202 can also be configured to receive data signals electronically transmitted by a state machine 104, which may be superimposed or encoded with state data, event sourcing data, update data, event or action data, identification values, state identifiers, etc. The receiving device 202 can also be configured to receive data signals electronically transmitted by a state machine 104, which may be superimposed or encoded with state data, identification values, state identifiers, update data, event or action data, etc.

[0035] The processing server 102 may also include a communications module 204. The communications module 204 may be configured to transfer data between modules, engines, databases, memory, and other components of the processing server 102 for use in performing the functions of the present disclosure. The communications module 204 may include one or more communication types and may use various communication methods for communication within a computing device. For example, the communications module 204 may include a bus, a contact pin connector, wires, etc. In some embodiments, the communications module 204 may also be configured to communicate between internal components of the processing server 102 and external components of the processing server 102 (e.g., an externally connected database, display device, input device, etc.). The processing server 102 may also include a processing unit. The processing unit may be configured to perform the functions of the processing server 102 of the present disclosure, as will be apparent to those skilled in the art. In some embodiments, the processing unit may include multiple engines and / or modules (e.g., query module 214, generation module 216, validation module 218, etc.) specifically configured to perform one or more functions of the processing unit. As used herein, the term "module" may refer to software or hardware that is specifically programmed to receive input, perform one or more operations using the input, and provide an output. The inputs, outputs, and operations performed by the various modules will be apparent to one of ordinary skill in the art based on this disclosure.

[0036] The processing server 102 may include blockchain data 206, which may be stored in the memory 212 of the processing server 102 or stored in or accessible by a separate area within the processing server 102. The blockchain data 206 may include a blockchain, which may comprise multiple blocks, and which may be associated with the blockchain network 108. The blockchain data 206 may additionally or alternatively include any data associated with the blockchain, which may include: cryptographic key pairs, network identifiers for the blockchain network 108, cryptographic algorithms, formatting rules, signature algorithms, etc.

[0037] The processing server 102 may also include memory 212. The memory 212 may be configured to store data (e.g., public keys, private keys, symmetric keys, etc.) for use by the processing server 102 in performing the functions of the present disclosure. The memory 212 may be configured to store data using any suitable data formatting methodology and schema and may be any suitable type of memory (e.g., read-only memory, random-access memory, etc.). The memory 212 may include, for example, cryptographic keys and algorithms, communication protocols and standards, data formatting standards and protocols, program code for modules and processing unit application programs, and other suitable data used by the processing server 102 in performing the functions of the present disclosure. This will be apparent to those skilled in the art upon reading this disclosure. In some embodiments, the memory 212 may include a relational database using Structured Query Language (SQL) to store, identify, modify, update, access, etc., stored structured data sets. Memory 212 may be configured to store, for example, cryptographic keys, salts, nonces, communication information for other computing systems, cryptographic functions, formatting rules, representation data, cryptographic key pairs, canonicalization schemes, and the like.

[0038] The processing server 102 may also include a query module 214. The query module 214 may be configured to execute queries on a database to identify information. The query module 214 may receive one or more data values ​​or query strings and, based thereon, execute the query string on an indicated database (e.g., the blockchain data 206 of the processing server 102) to identify information stored therein. The query module 214 may then output the identified information to an appropriate engine or module of the processing server 102, as needed. The query module 214 may, for example, execute a query against the blockchain data 206 to identify a published hash value using the provided identification value and state identifier and compare it to the generated hash value to verify the provided state data.

[0039] The processing server 102 may also include a generation module 216. The generation module 216 may be configured to generate data used by the processing server 102 when performing the functions of the present disclosure. The generation module 216 may receive instructions as input, generate data based on the instructions, and output the generated data to one or more modules of the processing server 102. For example, the generation module 216 may be configured to apply a cryptographic function to state data to generate a hash value, such as applying a one-way cryptographic hash function to event-sourced or state data to generate a unique and / or collision-resistant hash value. If the processing server may be a blockchain node 110, the generation module 216 may also be configured to generate cryptographic key pairs, generate digital signatures, generate blockchain data values, generate new blocks, generate block and data reference values, aggregate state changes, generate genesis block records, etc.

[0040] The processing server 102 may also include a validation module 218. The validation module 218 may be configured to perform validations for the processing server 102 as part of the functionality described in this disclosure. The validation module may receive instructions as input, which may include data used in performing the validations, perform the validations on demand, and output the results of the validations to another module or engine of the processing server 102. The validation module 218 may be configured to validate received state data, for example, by hashing the state data and comparing the resulting hash value with a hash value published on the blockchain. In some cases, the validation module 218 may perform a series of validations to determine actions or events that result in failed validations and identify actions or events that may have been tampered with.

[0041] The processing server 102 may also include a transmitting device 220. The transmitting device 220 may be configured to transmit data over one or more networks via one or more network protocols. In some examples, the transmitting device 220 may be configured to transmit data to the state machine 104, the verification system 106, the blockchain node 110, and other entities via one or more communication methods, such as a local area network, a wireless area network, cellular communication, Bluetooth, radio frequency, the Internet, etc. In some embodiments, the transmitting device 220 may include multiple devices (e.g., different transmitting devices for transmitting data over different networks (e.g., a first transmitting device transmitting data over a local area network and a second transmitting device transmitting data over the Internet)). The transmitting device 220 may electronically transmit a data signal having superimposed data, the data being analyzed by a receiving computing device. In some embodiments, the transmitting device 220 may include one or more modules for superimposing, encoding, or formatting data into a data signal suitable for transmission.

[0042] The sending device 220 can be configured to electronically send data signals to the blockchain node 110, which can be superimposed or encoded with blockchain data values, blocks, blockchain transaction data, proposed genesis block records, state database data, smart contract state data, confirmation messages, etc. The sending device 220 can be configured to electronically send data signals to the state machine 104, which can be superimposed or encoded with generated hash values, blockchain data values, notifications regarding the publication of state data, requests for state data or event sourcing data, etc. The sending device 220 can also be configured to electronically send data signals to the verification system 106, which can be superimposed or encoded with notifications regarding performed verifications, requests for state data or identification data, etc.

[0043] Processing for publishing tamper-resistant event sourcing data FIG. 3 illustrates a process 300 performed by the processing server 102 to publish tamper-resistant state or event-sourced data on a blockchain in the system 100.

[0044] At S302, the receiver 202 of the processing server 102 may receive state data or event sourcing data for computing objects, as well as identification data, such as an identification value associated with the computing object and a state identifier associated with the given state data, from the state machine 104 or other suitable system using a suitable communications network and method. At S304, the processing server 102 may determine whether the received state data is properly formatted for hashing. The determination may be performed by any suitable component of the processing server 102 and may involve comparing the received state data to one or more standards, guidelines, etc. stored or accessible within the processing server 102. If the state data is unformatted, at S306, the generation module 216 of the processing server 102 may convert the state data into an Object Notation representation, such as a JSON representation, although other options are available. Then, at S308, the generation module 216 of the processing server 102 may convert the state data from its JSON representation to a canonical representation, for example, using JCS or another normalization scheme.

[0045] After the state data is converted to a canonical representation, or if the processing server 102 determines at S304 that the state data is already properly formatted, the generation module 216 of the processing server 102 can apply a cryptographic hash function to the formatted state data. The cryptographic hash function can be a one-way hash function that provides sufficient complexity to be collision-resistant. Applying the cryptographic function to the formatted state data can result in a hash value for the state of the computing object. At S312, the sending device 220 of the processing server 102 can electronically send the generated hash value, the identification value, and the state identifier to a blockchain node 110 in the blockchain network 108 to publish the data in the new blockchain data value included in the new block, which is then confirmed and added to the blockchain. In some embodiments, the processing server 102 can send a notification message to the state machine 104 via the sending device 220 indicating that the hash value was successfully published, the notification message can include the hash value and / or any confirmation data received from the blockchain node 110. The hash value can then be stored in a tamper-resistant blockchain for use in verifying the state of the computing object.

[0046] Processing to verify the state of a computing object 4 illustrates a process 400 performed by a processing server 102 in system 100 for verifying the state of a computing object using event sourcing or tamper-resistant storage of state data via blockchain. Process 400 may illustrate an example where processing server 102 may receive multiple events and perform verification on the computing object through the execution of each event. Those skilled in the art will appreciate that process 400 may differ depending on whether a single set of state data is executed or whether several sets of state data are provided to processing server 102 without any accompanying event data.

[0047] At S402, the receiver 202 of the processing server 102 can receive state data and event data for a computing object. The event data can include multiple different actions or events, which, when applied or executed by the computing object, can modify the state data. In some cases, the event data can include a specific application order for the actions or event data. In some cases, each action or event in the event data can have a state identifier associated with it that is provided to the processing server 102. The data can be received from the verification system 106 using an appropriate communication network and method.

[0048] At S404, the processing server 102 may determine whether any actions or events remain in the received event data for which verification is to be performed. If one or more actions or events remain, the processing server 102 may execute the next event or action at S406. The processing server 102 may identify the next event or action using the provided order, timestamp data, etc. Execution of the event or action may update the state data, either by directly modifying the state data or by executing an action using an application program or an application program that modifies associated data and identifying the state data therefrom. At S408, the generation module 216 of the processing server 102 may apply a cryptographic hash function to the state data. The cryptographic hash function may be a one-way hash function that provides sufficient complexity to be collision-resistant. Applying the cryptographic function to the state data may result in a hash value for the state of the computing object. In some embodiments, the processing server 102 may first format the state data as described above for S306 and S308 shown in FIG. 3 .

[0049] Once the hash value is generated, at S410 the processing server 102 may identify the published hash value for the computing object and the state resulting from performance of the event or action of S406 in a blockchain associated with the blockchain network 108. The published hash value may be identified using an identification value associated with the computing object and a state identifier associated with the event or action performed at S406. At S412, the processing server 102 may determine whether the state for the computing object can be successfully verified, for example, by having the verification module 218 of the processing server 102 perform the verification. The verification is performed by checking whether the generated hash value matches the identified and published hash value.

[0050] If the verification is unsuccessful, such as if the two hash values ​​do not match, the sending device 220 of the processing server 102 can electronically send a notification message to the verification system 106 indicating that the verification failed. In some cases, the notification message can include a state identifier or other information indicating the events or actions performed before the failed verification. In such cases, the notification can enable the verification system 106 or other entity to identify when an action or event has been tampered with, when event sourcing data has been tampered with, etc.

[0051] If the verification at S412 is successful, process 400 returns to S404, where the processing server 102 can determine whether there are any additional actions or events in the received event data to perform. If there are, the processing server 102 returns to S406 and continues process 400, processing each action or event as long as the verification is successful. If, as determined back at S404, all actions or events have been performed and all verifications were successful, and the processing server 102 determines that no actions remain to be taken, process 400 can proceed to S416, where the sending device 220 of the processing server 102 can electronically send a notification message to the verification system 106 indicating that all verifications were successful. The verification system 106 can then utilize the computing object, trusting that no tampering has occurred with the computing object or its event sourcing data.

[0052] Exemplary Methods for Tamper-Resistant Event Sourcing FIG. 5 illustrates a method 500 for tamper-resistant event sourcing for computing objects through the use of cryptographic functions and blockchain.

[0053] At S502, state data for a computing object and an identification value associated with the computing object may be received by a receiver (e.g., receiving device 202) of a processing server (e.g., processing server 102). At S504, a one-way cryptographic function may be applied to the received state data by a processor (e.g., generation module 216) of the processing server to generate a hash value. At S506, the generated hash value and identification value may be published on the blockchain by a transmitter (e.g., sending device 220) of the processing server.

[0054] In one embodiment, method 500 may further include transforming the state data into an object notation representation by a processor of the processing server (e.g., generation module 216) before application of the one-way encryption function. In a further embodiment, the object notation representation may be a JavaScript Object Notation (JSON) representation. In another further embodiment, method 500 may further include converting the transformed state data by a processor of the processing server (e.g., generation module 216) into a canonical representation before application of the one-way encryption function. In a further embodiment, the transformed state data may be transformed in compliance with the JavaScript Object Notation (JSON) Canonicalization Scheme (JCS).

[0055] Exemplary Method for Validating Object State FIG. 6 illustrates a method 600 for verifying the state of a computing object with tamper-resistant event sourcing via blockchain.

[0056] At S602, state data for a computing object and an identification value associated with the computing object may be received by a receiver (e.g., receiving device 202) of a processing server (e.g., processing server 102). At S604, a one-way cryptographic function may be applied to the received state data by a processor (e.g., generation module 216) of the processing server to generate a hash value.

[0057] At S606, the published hash value stored in the blockchain along with the identification value can be identified by a processor of the processing server (e.g., query module 214). At S608, the state for the computing object according to the state data can be verified by a processor of the processing server (e.g., verification module 218) based on a match between the generated comparison hash value and the identified published hash value.

[0058] In one embodiment, method 600 includes repeating, by a processing server, the receiving, applying, identifying, and verifying steps for multiple states of the computing object. Each state of the multiple states includes a different set of state data. In a further embodiment, validation for the state of the computing object may fail for one of the multiple states. Method 600 may further include transmitting, by a transmitter (e.g., sending device 220) of the processing server, a notification message identifying one of the multiple states that caused the failed validation.

[0059] Computer System Architecture 7 illustrates a computer system 700 in which embodiments of the present disclosure, or portions thereof, may be implemented as computer-readable code. For example, the processing server 102 of FIGS. 1 and 2 may be implemented in the computer system 700 using hardware, a non-transitory computer-readable medium having instructions stored thereon, or a combination thereof, and may be implemented in one or more computer systems or other processing systems. The hardware may embody modules and components used to implement the methods of FIGS. 3-6.

[0060] Where programmable logic is used, such logic may be executed on commercially available processing platforms configured with executable software code, and may be a special-purpose or dedicated device (e.g., a programmable logic array (PGA), an application-specific integrated circuit (ASIC), etc.). Those skilled in the art will appreciate that embodiments of the disclosed subject matter may be implemented in a variety of computer system configurations, including multi-core, multi-processor systems, minicomputers, mainframe computers, distributed functionality linked or clustered computers, and general-purpose or miniature computers that may be implemented in virtually any device. For example, at least one processor unit and memory may be used to implement the embodiments.

[0061] A processor unit or device of the present disclosure may be a single processor, multiple processors, or a combination thereof. A processor device may have one or more processor “cores.” The terms “computer program medium,” “non-transitory computer-readable medium,” and “computer-usable medium” of the present disclosure are used generally to refer to tangible media (e.g., removable storage unit 718, removable storage unit 722, and a hard disk installed in hard disk drive 712, etc.).

[0062] Various embodiments of the present disclosure are described with respect to this exemplary computer system 700. After reading this disclosure, it will be apparent to one skilled in the art how to implement the present disclosure using other computer systems and / or computer architectures. While operations are disclosed as sequential processes, some operations may in fact be performed in parallel, concurrently, and / or in distributed environments, where program code is stored locally or remotely for access by uniprocessor or multiprocessor machines. Furthermore, in some embodiments, the order of operations may be rearranged without departing from the spirit of the disclosed subject matter.

[0063] The processor unit 704 may be a special-purpose or general-purpose processor unit specially configured to perform the functions of the present disclosure. The processor unit 704 may be connected to a communications infrastructure 706 (e.g., a bus, a message queue, a network, a multi-core message passing scheme, etc.). The network may be any network suitable for performing the functions of the present disclosure, and may include a local area network (LAN), a wide area network (WAN), a wireless network (e.g., Wi-Fi), a mobile communications network, a satellite network, the Internet, fiber optics, coaxial cable, infrared, radio frequency (RF), or any combination thereof. Other suitable network types and configurations will be apparent to those skilled in the art. The computer system 700 may also include a main memory 708 (e.g., random access memory, read-only memory, etc.) and may also include a secondary storage device 710. The secondary storage device 710 may include a hard disk drive 712 and a removable storage drive 714 (e.g., a floppy disk drive, a magnetic tape drive, an optical disk drive, a flash memory, etc.).

[0064] Removable storage drive 714 may read from and / or write to removable storage unit 718 in a well-known manner. Removable storage unit 718 may include a removable storage medium that can be read from and written to by removable storage drive 714. For example, if removable storage drive 714 is a floppy disk drive or a USB port, removable storage unit 718 may be a floppy disk or a portable flash drive, respectively. In one embodiment, removable storage unit 718 may be a non-transitory readable recording medium.

[0065] In some embodiments, secondary storage 710 may include alternative means for allowing computer programs or other instructions to be loaded into computer system 700 (e.g., removable storage 622 and interface 720). Examples of such means may include program cartridges and cartridge interfaces (e.g., found in video game systems), removable memory chips (e.g., EEPROM, PROM, etc.) and associated sockets, other removable storage units 722 and interfaces 720, as will be apparent to those skilled in the art.

[0066] Data stored in computer system 700 (e.g., in main memory 708 and / or secondary storage 710) may be stored on any type of suitable computer-readable medium, such as optical storage (compact disc, digital versatile disc, Blu-ray disc, etc.) or magnetic tape storage (e.g., hard disk drive). The data may be organized in any type of suitable database structure (e.g., a relational database, a Structured Query Language (SQL) database, a distributed database, an object database, etc.). Suitable structures and storage types will be apparent to those skilled in the art.

[0067] Computer system 700 may also include a communications interface 724. Communications interface 724 may allow software and data to be sent and received between computer system 700 and external devices. Exemplary communications interface 724 may include a modem, a network interface (e.g., an Ethernet card), a communications port, a PCMCIA slot and card, etc. The software and data transferred via communications interface 724 may be in the form of signals. The signals may be electronic, electromagnetic, optical, or other signals apparent to those skilled in the art. The signals propagate over communications path 726. The paths are configured to carry the signals and may be implemented using wire, cable, fiber optics, a telephone line, a cellular phone link, a radio frequency link, etc.

[0068] Computer system 700 may further include a display interface 702. Display interface 702 may be configured to allow data to be transferred between computer system 700 and an external display 730. Exemplary display interfaces 702 may include a high-definition multimedia interface (HDMI), a digital visual interface (DVI), a video graphics array (VGA), etc. Display 730 may be any suitable type of display that displays data transferred via display interface 702 of computer system 700, including a cathode ray tube (CRT) display, a liquid crystal display (LCD), a light-emitting diode (LED) display, a capacitive touch display, a thin-film transistor (TFT) display, etc.

[0069] Computer program medium and computer usable medium may refer to memory (e.g., main memory 708 and secondary storage 710), which may be semiconductor memory (such as DRAM). These computer program products may be means for providing software to computer system 700. Computer programs (e.g., computer control logic) may be stored in main memory 708 and / or secondary storage 710. Computer programs may also be received via communications interface 724. Such computer programs, when executed, may enable computer system 700 to perform methods of the present disclosure. In particular, computer programs, when executed, may enable processor unit 704 to implement the methods illustrated in FIGS. 3-6 as described herein. Thus, such computer programs represent the controller of computer system 700. The present disclosure is implemented using software. The software may be stored in a computer program product and loaded into computer system 700 using removable storage drive 714, interface 720, and hard disk drive 712 or communications interface 724.

[0070] Processor unit 704 may include one or more modules or engines configured to perform the functions of computer system 700. Each module or engine may be implemented using hardware, or in some embodiments, software (e.g., corresponding to program code or programs stored in main memory 708 or secondary storage 710). In such embodiments, the program code may be compiled by processor unit 704 (e.g., by a compilation module or engine) before execution by the hardware of computer system 700. For example, the program code may be source code written in a programming language (e.g., assembly language or machine code) that is translated into a lower-level language for execution by processor unit 704 and / or any additional hardware components of computer system 700. The compilation process may include the use of lexical analysis, preprocessing, syntactic analysis, semantic analysis, syntax-driven translation, code generation, code optimization, or any other techniques suitable for translating program code into a lower-level language for control of computer system 700 to perform the functions of the present disclosure. Those skilled in the art will appreciate that such processing results in computer system 700 being a specially configured computer system 700 that is uniquely programmed to perform the functions described above.

[0071] Techniques consistent with the present disclosure provide, among other features, tamper-resistant event sourcing, and systems and methods for verifying the state of objects via tamper-resistant event sourcing. While various exemplary embodiments of the systems and methods of the present disclosure have been described above, it should be understood that they are presented by way of example only, and not by way of limitation. They are not exhaustive and do not limit the disclosure to the precise form disclosed. Modifications and variations are possible in light of the above teachings. Modifications and variations may be made to implementations of the present disclosure without departing from the scope or spirit of the disclosure.

Claims

1. 1. A method for tamper-resistant event sourcing for an object, comprising: receiving, by a receiver of a processing server, state data including any data relating to a state of a computing object, an identification value associated with said computing object, and a state identifier that is unique across all states for said computing object; applying, by a processor of the processing server, a one-way cryptographic function to the received state data to generate a hash value; publishing the generated hash value, the identification value, and the state identifier on a blockchain by a transmitter of the processing server; A method comprising:

2. The method of claim 1 further comprising: Transforming, by the processor of the processing server, the state data into an object notation representation before applying the one-way encryption function.

3. The method of claim 2 , wherein the object notation representation is a JavaScript Object Notation (JSON) representation.

4. The method of claim 2 further comprising: converting, by the processor of the processing server, the transformed state data into a canonical representation before applying the one-way encryption function.

5. 5. The method of claim 4, wherein the transformed state data is converted to conform to the JavaScript Object Notation Canonicalization Scheme (JCS).

6. 1. A method for verifying an object's state via tamper-resistant event sourcing, comprising: transmitting, by the verification system, to a processing server, state data including any data relating to the state of a computing object used over a number of event occurrences, the state data being updated each time an event occurs that affects the state of the computing object, an identification value associated with the computing object, and a state identifier including the event number of the event that occurred; (A) receiving, by a receiver of a processing server, the transmitted status data, the identification value, and the transmitted status identifier; (B) applying, by the processing server's processor, a one-way cryptographic function to the received state data to generate a comparison hash value; (C) using the identification value and the received state identifier, the processor of the processing server identifies a public hash value stored in a blockchain in which a hash value of the updated state data is stored in association with the identification value and a state identifier including an event number of the event corresponding to the updated state data each time the state data is updated; (D) verifying, by the processor of the processing server, the state of the computing object according to the received state data based on a match between the generated comparison hash value and the identified published hash value; (E) if the verification of the state of the computing object fails, transmitting, by a transmitter of the processing server, an event number included in the received state identifier to the verification system; (F) receiving, by the verification system, the transmitted event number; (G) transmitting, by the verification system, status data corresponding to the event having the event number immediately preceding the received event number, the identification value, and a status identifier including the event number immediately preceding the received event number to the processing server; After step (G), repeating steps (A) to (G) by the processing server and the verification system until the verification is successful in step (D); After step (G), if the verification is successful in step (D), returning the state of the computing object to the state where the verification was successful, by the verification system; A method comprising:

7. 1. A method for verifying an object's state via tamper-resistant event sourcing, comprising: transmitting, by the verification system, to a processing server, state data including any data relating to the state of a computing object used over a number of event occurrences, the state data being updated each time an event occurs that affects the state of the computing object, an identification value associated with the computing object, and a state identifier including the event number of the event that occurred; (A) receiving, by a receiver of a processing server, the transmitted status data, the identification value, and the transmitted status identifier; (B) applying, by the processing server's processor, a one-way cryptographic function to the received state data to generate a comparison hash value; (C) using the identification value and the received state identifier, the processor of the processing server identifies a public hash value stored in a blockchain in which a hash value of the updated state data is stored in association with the identification value and a state identifier including an event number of the event corresponding to the updated state data each time the state data is updated; (D) verifying, by the processor of the processing server, the state of the computing object according to the received state data based on a match between the generated comparison hash value and the identified published hash value; (E) after the verification system transmits state data corresponding to a first event to the processing server and performs steps (A) to (D) to successfully verify the state of the computing object according to the state data corresponding to the first event, if the verification system transmits state data corresponding to a second event that occurs after the first event to the processing server and performs steps (A) to (D) to fail to verify the state of the computing object according to the state data corresponding to the second event, transmitting a success event number, which is the event number of the first event, and a failure event number, which is the event number of the second event, to the verification system by a transmitter of the processing server; (F) receiving, by the verification system, the transmitted successful event number and the transmitted unsuccessful event number; (G) transmitting, by the verification system, to the processing server, success status data that is status data corresponding to the event of the received success event number, the identification value, a status identifier including each event number from the received success event number to the received failure event number, and data of each event from the event of the received success event number to the event of the received failure event number; (H) receiving, by the receiver of the processing server, the transmitted success status data, the identification value, the transmitted status identifier including each event number, and data for each transmitted event; (I) updating, by the processor of the processing server, the received success status data with data for each received event; After step (I), repeating steps (B) through (D) and (I) by the processor of the processing server on the updated successful state data until step (D) fails verification of the state of the computing object according to the updated successful state data; After step (I), if the verification of the state of the computing object according to the updated successful state data in step (D) fails, restoring the state of the computing object by the verification system to a state immediately preceding the state of the computing object according to the updated successful state data; A method comprising:

8. In the method according to claim 6 or claim 7, the computing object is an operating system; The method of claim 1, wherein the state of the computing object is the version of the operating system.

9. A system for tamper-resistant event sourcing of objects, comprising: a processing server, the processing server comprising: a receiver for receiving state data including any data relating to a state of a computing object, an identification value associated with the computing object, and a state identifier that is unique across all states for the computing object; a processor that applies a one-way cryptographic function to the received state data to generate a hash value; a transmitter that publishes the generated hash value, the identification value, and the state identifier on a blockchain.

10. 10. The system of claim 9, wherein the processor of the processing server converts the state data into an object notation representation before applying the one-way encryption function.

11. 11. The system of claim 10, wherein the object notation representation is a JavaScript Object Notation (JSON) representation.

12. 11. The system of claim 10, wherein the processor of the processing server converts the transformed state data into a canonical representation before applying the one-way encryption function.

13. 13. The system of claim 12, wherein the transformed state data is converted to conform to the JavaScript Object Notation Canonicalization Scheme (JCS).

14. 1. A system for verifying the state of an object via tamper-resistant event sourcing, comprising: The system includes a processing server and a verification system; the processing server includes a receiver, a processor, and a transmitter; the verification system transmits to a processing server state data, including any data relating to the state of a computing object over a number of event occurrences, the state data being updated each time an event occurs that affects the state of the computing object, an identification value associated with the computing object, and a state identifier including an event number of the event that occurred; (A) the receiver receives the transmitted status data, the identification value, and the transmitted status identifier; (B) the processor applies a one-way cryptographic function to the received state data to generate a comparison hash value; (C) using the identification value and the received state identifier, the processor identifies a public hash value stored in a blockchain in which a hash value of the updated state data is stored in association with a state identifier including the identification value and an event number of the event corresponding to the updated state data each time the state data is updated; (D) the processor verifies the state of the computing object according to the received state data based on a match between the generated comparison hash value and the identified published hash value; (E) if the verification of the state of the computing object fails, the transmitter sends an event number included in the received state identifier to the verification system; (F) the verification system receives the transmitted event number; (G) the verification system transmits to the processing server status data corresponding to the event having the event number immediately preceding the received event number, the identification value, and a status identifier including the event number immediately preceding the received event number; After the process (G), the system repeats the processes (A) to (G) until the verification is successful in the process (D); After the process of (G), if the verification is successful in the process of (D), the verification system returns the state of the computing object to the state in which the verification was successful.

15. 1. A system for verifying the state of an object via tamper-resistant event sourcing, comprising: The system includes a processing server and a verification system; the processing server includes a receiver, a processor, and a transmitter; the verification system transmits to a processing server state data, including any data relating to the state of a computing object over a number of event occurrences, the state data being updated each time an event occurs that affects the state of the computing object, an identification value associated with the computing object, and a state identifier including an event number of the event that occurred; (A) the receiver receives the transmitted status data, the identification value, and the transmitted status identifier; (B) the processor applies a one-way cryptographic function to the received state data to generate a comparison hash value; (C) using the identification value and the received state identifier, the processor identifies a public hash value stored in a blockchain in which a hash value of the updated state data is stored in association with a state identifier including the identification value and an event number of the event corresponding to the updated state data each time the state data is updated; (D) the processor verifies the state of the computing object according to the received state data based on a match between the generated comparison hash value and the identified published hash value; (E) after the verification system transmits state data corresponding to a first event to the processing server, and the processing server performs the processes (A) to (D) and successfully verifies the state of the computing object according to the state data corresponding to the first event, if the verification system transmits state data corresponding to a second event that occurs after the first event to the processing server, and the processing server performs the processes (A) to (D) and fails to verify the state of the computing object according to the state data corresponding to the second event, the transmitter transmits to the verification system a success event number that is the event number of the first event and a failure event number that is the event number of the second event; (F) the verification system receives the transmitted successful event number and the transmitted failed event number; (G) the verification system transmits to the processing server success status data, which is status data corresponding to the event of the received success event number, the identification value, a status identifier including each event number from the received success event number to the received failure event number, and data of each event from the event of the received success event number to the event of the received failure event number; (H) the receiver receives the transmitted success status data, the identification value, the transmitted status identifier including each event number, and data of each transmitted event; (I) the processor updates the received success status data with data for each received event; After the process (I), the processor repeats the processes (B) through (D) and (I) on the updated successful state data until the process (D) fails to verify the state of the computing object according to the updated successful state data; After processing (I), if processing (D) fails to verify the state of the computing object according to the updated successful state data, the verification system returns the state of the computing object to a state one state before the state of the computing object according to the updated successful state data.

16. In the system described in claim 14 or claim 15, the computing object is an operating system; The state of the computing object is the version of the operating system.

Citation Information

Patent Citations

  • Knowledge-intensive data processing system

    JP2018509709A

  • Blockchain-based automation architecture cybersecurity

    JP2020113281A

  • Blockchain service acceptance and consensus method and device

    JP2020512610A

  • Communication device, communication method, communication system, and program

    JP2021048546A

  • Server device and traceability method

    JP2021051572A