Blockchain Fintech – Elli Androulaki, Angelo De Caro, Thorsten Kramp, David W. Kravitz, Alessandro Sorniotti, Marko Vukolic, International Business Machines Corp

Abstract for “Resist replay attacks efficiently in a permissioned, privacy-preserving blockchain network

The invention’s embedded techniques may allow for replay attacks to be resisted in a blockchain network while maintaining valid user permissions. In one embodiment of the invention, communication can be achieved by a user computer system generating a security code that is only to be used once, and then generating a message with the security certificate and the security value and sending it over the network.

Background for “Resist replay attacks efficiently in a permissioned, privacy-preserving blockchain network

“The current disclosure pertains to network security and attack protection through validation transactions.”

A blockchain is a distributed database that can be used to keep a transaction record. A blockchain can contain a number blocks that each hold one or more transactions or data records. Each block can contain a timestamp as well as a link to the previous block. Users may be allowed to connect with a blockchain network to send new transactions, verify transactions and create new blocks. Replay attacks can compromise the security of a blockchain network, but that is not the problem. The attacker simply “replays” the replay attack. A message that was ‘eavesdropped? on the network or that an attacker?saw’ on the Blockchain. This replay would allow the blockchain validators include the new transaction in Blockchain and repeat the result without the original transaction creator. This could be problematic, especially for actual payment system. This is why there are techniques that can be used to thwart replay attacks while maintaining user privacy and valid permissions in the blockchain network.

“Embodiments according to the present invention could provide methods for preventing replay attacks in a Blockchain network while maintaining valid user permissions, privacy, and security.”

“For example, the embodiment of the invention may include generating a single security value at a user’s computer system, creating a message signed with the security certificate, including the security value, then transmitting it over a network of computers.

“For example, in one embodiment, the security certificate could include information identifying user computer systems and the security value might be generated as an operation of a previously sent message. A number of functions can be used to generate the security code. These include a counter function and a hash function. Further instructions may be included in the message to execute computer programs to perform at most one function related to a digital payment. The method may also include at a validator computer, executing computer program instructions for the at least one function related to the digital transfer and storing information regarding the executed digital transactions in the order they were executed. Information relating to an executed digital transaction could include a security value that is included in a digital transactions for each of the plurality of user system. The security certificate does not have to identify the user computer system. It may also have a validity period and the security value can be generated randomly. The message could also contain instructions for computer programs to be executed to perform at most one function related to a digital transactions. A validator computer system may execute the instructions to execute the at least one function and store information regarding the executed digital transactions, including a hash. This method could also include resetting security value hash after expiration of security certificate’s validity.

“Example: In an embodiment of the invention, a network consisting of a plurality computer systems. Each computer system comprises a processor, memory and computer program instruction stored in the memory. A first computer system includes computer program instructions executable in the processor to generate a security value that can be used only once. The message is signed with a security certificate, including the security value. It then transmits the message over the network.

“Example: In an embodiment, the security certificates may contain information identifying the user computer system. The security value can be generated by a function of security values included in previous messages. A number of functions can be used to generate the security code. These include a counter function and a hash function. A message may also contain computer program instructions that are to be executed to perform at most one function relating a digital transact. A second computer system may include computer program instruction executable by the processor to execute the instructions and store information relating a executed digital transact in the order they were executed. Information relating to an executed digital transaction includes a security value that is included in a digital transactions for each of the plurality of user systems. The security certificate does not have to identify the user computer system. It may also include information about the validity period of the security certificate. Additionally, the random function that generates the security value can be used. A message could also contain computer program instructions that are to be executed in order to perform at most one function relating a digital transactions. A second computer system might include computer program instruction executable by the processor to execute the instructions and store information related to the executed digital transactions, including a hash. A network of computer systems could also include the ability to reset the hash of security value after expiration of security certificate’s validity.

“For example, in one embodiment of the invention, a computer product for communicating in network of computers systems. The computer program product comprises a computer-readable medium and computer instructions that can be executed by a processor to generate a security value that is only to be used once, generate a message signed with security certificates and include the security value, and then transmit the message over the network.

“For example, in one embodiment, the security certificate could include information identifying user computer systems and the security value might be generated as an operation of a previously sent message. A number of functions can be used to generate the security code, including a counter function and a hash function. Computer program instructions may be included in the message to execute at least one function related to a digital transfer. The computer program product may also include instructions to execute the computer programs to execute the at least one function related to the digital transact and to store information regarding the executed digital transactions in the order they were executed. Information relating to an executed digital transaction could include a security value that is included in a digital transactions for each of the plurality of user system. The security certificate does not have to identify the user computer system. It may also have a validity period and the security value can be generated randomly. Computer program instructions may be included in the message to be executed to perform at most one function related to a digital transactions. The computer program product may also include computer program instruction to execute at a validator system, executing computer program instructions for the at least one function related to the digital transaction, and storing information regarding the executed digital transactions including a hash. Computer program instructions may be included in the computer program product to reset the hash of security value after expiration of security certificate’s validity period.

“Now let’s look at the figures. FIG. 1. illustrates a system 100 where embodiments of this invention can be implemented. System 100 could include one or several users 102, one, or more validators, 104, and one or more certificate authorities 106. As illustrated, the users 102, validators104, and certificate authority106 may each include one or more processing elements such as servers, processors, etc. The systems 100 and any of the elements mentioned may be modified to perform the steps as shown in the figures.

“In one embodiment, the system 100 could be a Blockchain network 100. It can include user computer systems (users), 102 for submitting transactions and validator computer networks (validators), 104 for executing and validating transactions. A client certificate 112, which can be anonymous or include the client’s identity, may sign transactions 108 submitted 110 users 104. An identity management infrastructure, including certificate authority computer system (certificate authorities) 106 may manage these certificates. They may issue 114 long-term certificates to users that include user identities 118 such as enrollment certificates116 and privacy-preserving certificates such as transaction certificates 120 that are not linked with their owners’ identity. Certificate 112 could be used to sign a transaction. It may also include user identity 118 or transaction certificate 120. To protect user transactional privacy, transactions can be signed using a secret key that corresponds to either type certificate. The certificate 112 may contain a verification key that can be used to verify the signature. A consensus protocol is usually in place to ensure that transactions are ordered or placed in blocks before they are executed/validated. A transaction may also include a nonce number 124 if it is signed by user 102. Nonce can be an arbitrary number that is only valid once. Nonce are typically random numbers or pseudo-random numbers that are issued as part of an authentication protocol. This is to make sure that no replay attacks can be used on old communications. The nonce 124 could be a function or counter function to the nonce they used in their previous transaction. For example, the nonce 124 could be a counter function, hash, or other functions. Random numbers may also be registered as nonce numbers for users. The nonce 124 could be random if the user signs the transaction using a transaction certificate 120.

“FIG. 2. is a flowchart that illustrates a process 200 in accordance to some exemplary embodiments. The flowchart in FIG. illustrates the process. Those who are skilled in the art will be able to appreciate it. 2. is only an example and other variations can be used, all in accordance to the present technique. FIG. FIG. 1. An exemplary embodiment may use a hybrid approach, in which users 102 can add to the transaction a nonce. This nonce is generated differently depending on whether the transaction was anonymous (signed with a transaction certificate 120), or private (signed using a long-term enrollment certificate 118).

“Process 200 starts with 202. In which a user initiates a transaction 1108, a user 102 initiates it. A user may sign with their enrollment certificate at 204. This nonce is a function the previous nonce. When the transaction is executed at 206, validators104 store 126 their nonce for the current transaction 108 which they parse. The transaction is executed and added the Blockchain. This makes it easy to verify. At the user 102, only the most recent nonce is required, while at the validator104, the storage requirement for the storage 126 is a function O (n), where N is the number of users.

“At 208, users 102 and 120 sign with transaction certificates 120. They should also include in their transaction a random nuce 124. This may help to ensure that no two transactions result in the same hash. Validators 104 keep 130 the hash for this transaction during the validity of the current transaction certificates at 210. The validity period may end at any time as set by the underlying identity infrastructure. This may be done through signed system messages that may be advertised through the Blockchain by the Certificate Authority 106. Validators 104 at 212 may be notified to update the current validity period ID. They may then reset the log 130 of transaction havehes they have collected for replay protection. Replays of older messages (anonymous), would use expired transaction certificates, and thus would not be included in the Blockchain. The storage 130 required by the validator 110 is O(m) of hash value functions, where m is how many transactions are stored at any given time.

“FIG. “FIG. The flowchart in FIG. illustrates the process. Those who are skilled in the art will be able to appreciate it. FIG. 3 is only an example and other variations can be used, all in accordance to the present technique. FIG. FIG. 1. An example embodiment may stipulate that some transactions submitted to the network by a user have to be confidential in order to limit the number of validators who can execute them. In order to reach consensus over the (encrypted) result of the confidentiality-constraint transactions, validators 104 that are included in the list of validators authorized to execute the transaction may submit through the blockchain their ?signed vote? The result.”

“Process 300 starts with 302, where a user 102 can initiate a transaction (108), which may contain confidentiality restrictions with respect to which validators may be able to execute that transaction. Validators 104 can vote for a transaction at 304 and may add to the signed transactions a sequence number 128 from the transaction they voted for in the total order. If the validator votes for a confidential transaction that has sequence number X and the total order of transactions shows 104, then the header of the transaction could include X or a function such as a hash.

At 306, validators104 may store an up-to-date version of the transaction’s confirmed result 132. Validators 104 can store the state of the transaction and may also monitor any subsequent blocks of transactions that might be confirmed, such as T blocks. The advertised validator votes can be retained for up to 134 days. At 308, validators will receive a confidential transaction vote. Other validators can consider the transaction only if X exceeds the validator 104 responses. They may reject it otherwise. Validators will be able distinguish between 1) an outdated vote or replay of an older vote or 2) a vote on future transactions that have not been processed yet or are being processed, which is indicative of the order in which they should be added to Blockchain.

“In an exemplary embodiment, the chain-code can be created and submitted via a deployment transaction to a blockchain. FIG. 4 shows an example of a 400 deployment transaction. 4. This example shows that deployment transaction 400 could include general information 402, code info 404, validator data 406, and user information 408. General information 402 can include the type of deployment transaction, confidentiality type and nonce. Code information 404 can include information about the code to execute, as well as a variety of code-functions. Information for validators 406 could include information that can be used by validators (e.g. validators 104). FIG. 1. Information about users 408 could include information that users use, such as user 102 in FIG. 1.”

“In this case, uC could be the user who submitted a deployment transaction. A chain-code can include a set functions (function) as well as their headers (function?hdr). An invocation transaction may invoke a chain-code function. A user may specify a list of validators (v1) by uC. . . , vm may be used by contract validators to execute chain-code (invocations). A set of users, u1, may invoke each function. . . Un, also known as contract users, can be accessed by. Public keys for user enrollment validation and user enrollment may be available to anyone. The key Kadt is shared by validators and auditors. Certui could denote an enrollment or transaction cert of user ui with the associated keys indicated by (pkui.skui), TCertui might denote a transaction cert of user ui with the associated keys indicated by (tpkui.tskui), while Certvj could denote the transaction or enrollment certificate of validator vj with the associated keys identified by (pkvj.skvj). The enrollment or transaction encryption/signing keys can be denoted using the same symbol for simplicity.

“In this exemplary transaction, there may be a common validation threshold that applies to all confidential chain-codes. The code information 404 may also include an ACL per function. This may include a list and/or hashes TCerts for authorized users. The user information 402 or the validator information 406 could include a key KH. This key can be used to encrypt headers, codes, and one, or both, of a key pair (PKc, SKc), that may be used for passing messages to contract validateators 104. A signature SigTcertx 410 from the TCert key may sign the transaction, TCertuc. A nonce may be included in the general information 402, which could be a random number or non-random number that is added to prevent replay-attacks. An user transaction ID (UTID 410) may be used. This may be a deterministic function such as a hash.

FIG. 5 shows an example of a 500-level process that can be executed after a deployment transaction has been issued. 5. At 502, the user, uC, can submit the deployment transaction (other users 102) to validators 104. The validators and peers can review the transaction and assign an order to the total order of transactions (oTID) at 504. Validators 104 may decrypt the message contained in the transaction at 506 and execute the code if necessary. In response to transaction reference number oTID in encrypted form, validators 104 can add the encrypted result to the response at 508 and a message for their auditor.

FIG. shows an exemplary format for a validator response 600 to a deployment transaction 6. This response 600 could include general information 602, code 604, signature information 604 and a message for the auditor 608. General information 602 could include information like oTID, order ID for the corresponding deployment transaction. This information may also be instantiated as a hash or confidential information. Information on code 604 can include information about the code to execute, as well as information about a variety of code-functions such a response code. Certificate and signature information 606 could include SigCertvi which is the signature that corresponds to certificate Certvi. Message to auditor 608 could include msgadt. This may include a message to auditors with key material to enable auditing to occur.

FIG. 7. Invocation transaction 700 could include code information 702, general information 702, code information 704, contract validityator information 706, signature and certificate information 708, and uTID. 710. General information 702 could include the type of invocation transaction, nonce, confidentiality type, and identification of the reference transaction such as oTID/TID/name. Code information 704 can include information about the code to execute. It may also include information on the type of invocation transaction. Some examples of proofsigs include tsku tsku? which could be a non-transferrable evidence and SigTcertu (*),, which might be a transferrable one. Tcertu may be included in certificate and signature information 706. SigTCertu (*).”

FIG. illustrates an example of a process 800 which can be executed after an invocation transaction has been issued. 8. At 802, the user, called u, can submit an invocation transaction to transaction (other users 102) to validators 104. The validators and peers can verify that the transaction has been properly created and may give the order of the transactions (oTID?) at 804. The validators 104 who are included in the list may retrieve the transaction’s keys and decrypt the message 508 from FIG. 5. In the invocation transaction decrypt the code 504 in FIG. 5. Execute the code and create the encrypted result. Validators 104 at 808 may include the encrypted result, message to auditor and response to the invocation transaction. It will be announced to the network.”

FIG. 9 shows an exemplary response to an invocation transaction. 9. Invocation transaction 900 could include general information 902, code info 904, signature and certificate information 906, and message for auditors 908. General information 902 could include the type of invocation transaction, nonce, confidentiality type, and identification of the reference transaction such as oTID/TID/name. Code information 904 can include information about the code to execute. It may also include information on the type of invocation transaction. Some examples of proofsigs include tsku tsku? which can be a non-transferrable evidence and SigTcertu (*),, which could be a transferable proof. Tcertu may be included in certificate and signature information 906 SigTCertu (*).”

“Input/output logic 1004 allows you to input data into, or output data from, computer system 1,000. Input/output circuitry can include input devices such as keyboards and mice, trackballs or touchpads as well as scanners, analog-to-digit converters, etc. Output devices such as monitors, printers etc., as well as input/output devices such as modems. With a network 1010, network adapter 1006 interfaces device 1,000 Any public or proprietary network or LAN, including the Internet, may be called Network 1010.

Memory 1008 contains program instructions and data that are processed by CPU 1002 to execute the functions of computer 1000. Memory 1008 can include electronic memory devices such as read-only memories (ROM), programmable memory read-only (PROM), programmable erasable programmable memory (EEPROM), flash memories, etc. It may also contain electro-mechanical memory such as magnetic disks, tape drives and optical disk drives.

“The contents in memory 1008 will vary depending on the function that computer 1000 is programmed for. FIG. Computer systems can play a variety roles in the described system, method, or computer program product. Computer systems can play a variety of roles, including users, validators and auditors, as well as identity providers. FIG. FIG. 10 shows exemplary memory contents that represent routines for each of these roles. These routines and the associated memory contents can be placed on one system or distributed across multiple systems based on well-known engineering considerations. All such arrangements are contemplated in the present invention.

FIG. 10. Memory 1008 can contain user routines 1011, validator routines 1012 and certificate authority routines 1014. It also contains transaction data 1016. The user routines 1010 could include routines that implement functions used by end-user computers systems. These routines may include the following: initiating and processing transactions; generating and/or saving transaction data 1016; etc. The validator routines 1012 could include routines that implement functions used by validator computer system, such as processing transactions and verifying them, generating and/or saving transaction data 1016, and generating result information. Routines for certificate authority routines 1016 could include routines that enable computer systems to perform functions such as creating certificates or generating them. Operating system 1024 is responsible for overall system functionality.

The present invention could be described as a system, method, or computer program product. A computer readable storage medium or media may be included in the computer program product. It may contain computer-readable program instructions that allow a processor to execute aspects of this invention.

A computer-readable storage medium is a tangible device that stores instructions and can be used by an instruction execution machine. A computer readable storage medium could include, but not be limited to, an electronic storage media, a magnetic storage media, an optical storage material, an electromagnetic storage apparatus, a semiconductor storage system, or any combination thereof. The following are some examples of computer-readable storage media. As used herein, a computer readable storage medium is not intended to contain transitory signals such as radio waves or other freely propagating electromagnetic wave, electromagnetic waves propagating though a waveguide, or any other transmission media (e.g. light pulses passing through fiber-optic cables), or electrical signals transmitted via a wire.

The computer-readable program instructions described in this document can be downloaded to the respective computing/processing device from a computer-readable storage medium, to an external computer, or via an external storage device over a network, such as the Internet, a local network, a large area network, and/or wireless network. The network can include copper transmission cables, optical transmission fibres, wireless transmission and routers, firewalls switches, gateway computers, edge servers, and/or switches. Each computing/processing device has a network adapter card, or network interface. This receives computer-readable program instructions from the network. It then stores the instructions in a computer-readable storage medium.

“Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the ?C? programming language or similar programming languages. Computer-readable program instructions can be executed entirely on the user?s computer, partially on their computer as a standalone software package, partly or completely on the remote computer. The remote computer can be connected to the user’s machine through any network, such as a local network (LAN), a wide-area network (WAN), or to an external computer via the Internet (Internet Service Provider). Some embodiments allow electronic circuitry to execute computer-readable program instructions using state information from the computer-readable program instructions. This allows the user to personalize electronic circuitry to accomplish aspects of the invention.

“Aspects” of the invention are described in detail with reference to block diagrams and/or flowcharts of methods, apparatuses and computer program products as per embodiments. Each block in the flowchart illustration and/or block schematics can be executed by computer-readable program instructions.

These computer-readable program instructions can be given to a processor of general purpose computers, special purpose computers, or any other programmable device processing apparatus to create a machine. The instructions, which execute via a processor of the computer and other programmable apparatus, create means to implement the functions/acts described in the flowchart block/blocks. These computer-readable program instructions can also be stored on a computer-readable storage medium that allows a computer, a programmeable data processing device, or other devices to perform a specific function. The instructions contained in the computer readable medium include instructions that implement certain aspects of the function/act described in the flowchart block/blocks.

“The computer-readable program instructions can also be loaded onto a computer or another programmable data processing device or device to cause a series or operational steps to be performed by the computer or other programmable apparatus to produce a computer implemented procedure. The instructions that execute on the device, computer, or other programmable device implement the functions/acts described in the block diagram and/or flowchart block.

“The Figures show the architecture, functionality, operation, and design of various implementations of methods, systems, and computer programs according to different embodiments of the invention. Each block in the block diagrams or flowcharts could be a block, segment, or section of instructions that contains one or more executable instructions to implement the specified logical function. Alternate implementations may allow the functions to be executed in a different order than the one shown in the figures. Depending on the functionality, blocks can sometimes be executed in reverse order. For example, two blocks could be executed simultaneously. You will also notice that every block in the flowchart illustration and/or block diagrams can be executed by special purpose hardware-based system that performs the specified functions, acts, or executes combinations of special purpose computer instructions.

“The terminology used in this document is intended to describe particular embodiments and not limit the invention. The singular forms?a,?an, and?the? are used herein. The singular forms?a?,?an???? and?the?? are intended to include the plural forms. Unless the context indicates otherwise, the plural forms of?the? and?the? are to be used together. Further, the terms “comprises” and/or “comprising” will be understood. and/or ?comprising,? When used in this specification, they indicate the presence of the stated features, integers and steps, operations and elements and/or their components. However, it does not preclude the addition or presence of other features, integers and steps, operations and elements and/or groups thereof.”

“The claims below include all structures, materials and acts that can be used to perform the function when combined with other elements. Although the description of the invention is intended for illustration and description purposes, it does not limit the invention to its current form. Without departing from its scope and spirit, many modifications and variations are possible for those with ordinary skill in art. This embodiment was chosen to explain the principles and practical application of the invention, and to allow others with ordinary skill in art to comprehend the invention for different embodiments with varied modifications that are appropriate to the intended use.

Summary for “Resist replay attacks efficiently in a permissioned, privacy-preserving blockchain network

“The current disclosure pertains to network security and attack protection through validation transactions.”

A blockchain is a distributed database that can be used to keep a transaction record. A blockchain can contain a number blocks that each hold one or more transactions or data records. Each block can contain a timestamp as well as a link to the previous block. Users may be allowed to connect with a blockchain network to send new transactions, verify transactions and create new blocks. Replay attacks can compromise the security of a blockchain network, but that is not the problem. The attacker simply “replays” the replay attack. A message that was ‘eavesdropped? on the network or that an attacker?saw’ on the Blockchain. This replay would allow the blockchain validators include the new transaction in Blockchain and repeat the result without the original transaction creator. This could be problematic, especially for actual payment system. This is why there are techniques that can be used to thwart replay attacks while maintaining user privacy and valid permissions in the blockchain network.

“Embodiments according to the present invention could provide methods for preventing replay attacks in a Blockchain network while maintaining valid user permissions, privacy, and security.”

“For example, the embodiment of the invention may include generating a single security value at a user’s computer system, creating a message signed with the security certificate, including the security value, then transmitting it over a network of computers.

“For example, in one embodiment, the security certificate could include information identifying user computer systems and the security value might be generated as an operation of a previously sent message. A number of functions can be used to generate the security code. These include a counter function and a hash function. Further instructions may be included in the message to execute computer programs to perform at most one function related to a digital payment. The method may also include at a validator computer, executing computer program instructions for the at least one function related to the digital transfer and storing information regarding the executed digital transactions in the order they were executed. Information relating to an executed digital transaction could include a security value that is included in a digital transactions for each of the plurality of user system. The security certificate does not have to identify the user computer system. It may also have a validity period and the security value can be generated randomly. The message could also contain instructions for computer programs to be executed to perform at most one function related to a digital transactions. A validator computer system may execute the instructions to execute the at least one function and store information regarding the executed digital transactions, including a hash. This method could also include resetting security value hash after expiration of security certificate’s validity.

“Example: In an embodiment of the invention, a network consisting of a plurality computer systems. Each computer system comprises a processor, memory and computer program instruction stored in the memory. A first computer system includes computer program instructions executable in the processor to generate a security value that can be used only once. The message is signed with a security certificate, including the security value. It then transmits the message over the network.

“Example: In an embodiment, the security certificates may contain information identifying the user computer system. The security value can be generated by a function of security values included in previous messages. A number of functions can be used to generate the security code. These include a counter function and a hash function. A message may also contain computer program instructions that are to be executed to perform at most one function relating a digital transact. A second computer system may include computer program instruction executable by the processor to execute the instructions and store information relating a executed digital transact in the order they were executed. Information relating to an executed digital transaction includes a security value that is included in a digital transactions for each of the plurality of user systems. The security certificate does not have to identify the user computer system. It may also include information about the validity period of the security certificate. Additionally, the random function that generates the security value can be used. A message could also contain computer program instructions that are to be executed in order to perform at most one function relating a digital transactions. A second computer system might include computer program instruction executable by the processor to execute the instructions and store information related to the executed digital transactions, including a hash. A network of computer systems could also include the ability to reset the hash of security value after expiration of security certificate’s validity.

“For example, in one embodiment of the invention, a computer product for communicating in network of computers systems. The computer program product comprises a computer-readable medium and computer instructions that can be executed by a processor to generate a security value that is only to be used once, generate a message signed with security certificates and include the security value, and then transmit the message over the network.

“For example, in one embodiment, the security certificate could include information identifying user computer systems and the security value might be generated as an operation of a previously sent message. A number of functions can be used to generate the security code, including a counter function and a hash function. Computer program instructions may be included in the message to execute at least one function related to a digital transfer. The computer program product may also include instructions to execute the computer programs to execute the at least one function related to the digital transact and to store information regarding the executed digital transactions in the order they were executed. Information relating to an executed digital transaction could include a security value that is included in a digital transactions for each of the plurality of user system. The security certificate does not have to identify the user computer system. It may also have a validity period and the security value can be generated randomly. Computer program instructions may be included in the message to be executed to perform at most one function related to a digital transactions. The computer program product may also include computer program instruction to execute at a validator system, executing computer program instructions for the at least one function related to the digital transaction, and storing information regarding the executed digital transactions including a hash. Computer program instructions may be included in the computer program product to reset the hash of security value after expiration of security certificate’s validity period.

“Now let’s look at the figures. FIG. 1. illustrates a system 100 where embodiments of this invention can be implemented. System 100 could include one or several users 102, one, or more validators, 104, and one or more certificate authorities 106. As illustrated, the users 102, validators104, and certificate authority106 may each include one or more processing elements such as servers, processors, etc. The systems 100 and any of the elements mentioned may be modified to perform the steps as shown in the figures.

“In one embodiment, the system 100 could be a Blockchain network 100. It can include user computer systems (users), 102 for submitting transactions and validator computer networks (validators), 104 for executing and validating transactions. A client certificate 112, which can be anonymous or include the client’s identity, may sign transactions 108 submitted 110 users 104. An identity management infrastructure, including certificate authority computer system (certificate authorities) 106 may manage these certificates. They may issue 114 long-term certificates to users that include user identities 118 such as enrollment certificates116 and privacy-preserving certificates such as transaction certificates 120 that are not linked with their owners’ identity. Certificate 112 could be used to sign a transaction. It may also include user identity 118 or transaction certificate 120. To protect user transactional privacy, transactions can be signed using a secret key that corresponds to either type certificate. The certificate 112 may contain a verification key that can be used to verify the signature. A consensus protocol is usually in place to ensure that transactions are ordered or placed in blocks before they are executed/validated. A transaction may also include a nonce number 124 if it is signed by user 102. Nonce can be an arbitrary number that is only valid once. Nonce are typically random numbers or pseudo-random numbers that are issued as part of an authentication protocol. This is to make sure that no replay attacks can be used on old communications. The nonce 124 could be a function or counter function to the nonce they used in their previous transaction. For example, the nonce 124 could be a counter function, hash, or other functions. Random numbers may also be registered as nonce numbers for users. The nonce 124 could be random if the user signs the transaction using a transaction certificate 120.

“FIG. 2. is a flowchart that illustrates a process 200 in accordance to some exemplary embodiments. The flowchart in FIG. illustrates the process. Those who are skilled in the art will be able to appreciate it. 2. is only an example and other variations can be used, all in accordance to the present technique. FIG. FIG. 1. An exemplary embodiment may use a hybrid approach, in which users 102 can add to the transaction a nonce. This nonce is generated differently depending on whether the transaction was anonymous (signed with a transaction certificate 120), or private (signed using a long-term enrollment certificate 118).

“Process 200 starts with 202. In which a user initiates a transaction 1108, a user 102 initiates it. A user may sign with their enrollment certificate at 204. This nonce is a function the previous nonce. When the transaction is executed at 206, validators104 store 126 their nonce for the current transaction 108 which they parse. The transaction is executed and added the Blockchain. This makes it easy to verify. At the user 102, only the most recent nonce is required, while at the validator104, the storage requirement for the storage 126 is a function O (n), where N is the number of users.

“At 208, users 102 and 120 sign with transaction certificates 120. They should also include in their transaction a random nuce 124. This may help to ensure that no two transactions result in the same hash. Validators 104 keep 130 the hash for this transaction during the validity of the current transaction certificates at 210. The validity period may end at any time as set by the underlying identity infrastructure. This may be done through signed system messages that may be advertised through the Blockchain by the Certificate Authority 106. Validators 104 at 212 may be notified to update the current validity period ID. They may then reset the log 130 of transaction havehes they have collected for replay protection. Replays of older messages (anonymous), would use expired transaction certificates, and thus would not be included in the Blockchain. The storage 130 required by the validator 110 is O(m) of hash value functions, where m is how many transactions are stored at any given time.

“FIG. “FIG. The flowchart in FIG. illustrates the process. Those who are skilled in the art will be able to appreciate it. FIG. 3 is only an example and other variations can be used, all in accordance to the present technique. FIG. FIG. 1. An example embodiment may stipulate that some transactions submitted to the network by a user have to be confidential in order to limit the number of validators who can execute them. In order to reach consensus over the (encrypted) result of the confidentiality-constraint transactions, validators 104 that are included in the list of validators authorized to execute the transaction may submit through the blockchain their ?signed vote? The result.”

“Process 300 starts with 302, where a user 102 can initiate a transaction (108), which may contain confidentiality restrictions with respect to which validators may be able to execute that transaction. Validators 104 can vote for a transaction at 304 and may add to the signed transactions a sequence number 128 from the transaction they voted for in the total order. If the validator votes for a confidential transaction that has sequence number X and the total order of transactions shows 104, then the header of the transaction could include X or a function such as a hash.

At 306, validators104 may store an up-to-date version of the transaction’s confirmed result 132. Validators 104 can store the state of the transaction and may also monitor any subsequent blocks of transactions that might be confirmed, such as T blocks. The advertised validator votes can be retained for up to 134 days. At 308, validators will receive a confidential transaction vote. Other validators can consider the transaction only if X exceeds the validator 104 responses. They may reject it otherwise. Validators will be able distinguish between 1) an outdated vote or replay of an older vote or 2) a vote on future transactions that have not been processed yet or are being processed, which is indicative of the order in which they should be added to Blockchain.

“In an exemplary embodiment, the chain-code can be created and submitted via a deployment transaction to a blockchain. FIG. 4 shows an example of a 400 deployment transaction. 4. This example shows that deployment transaction 400 could include general information 402, code info 404, validator data 406, and user information 408. General information 402 can include the type of deployment transaction, confidentiality type and nonce. Code information 404 can include information about the code to execute, as well as a variety of code-functions. Information for validators 406 could include information that can be used by validators (e.g. validators 104). FIG. 1. Information about users 408 could include information that users use, such as user 102 in FIG. 1.”

“In this case, uC could be the user who submitted a deployment transaction. A chain-code can include a set functions (function) as well as their headers (function?hdr). An invocation transaction may invoke a chain-code function. A user may specify a list of validators (v1) by uC. . . , vm may be used by contract validators to execute chain-code (invocations). A set of users, u1, may invoke each function. . . Un, also known as contract users, can be accessed by. Public keys for user enrollment validation and user enrollment may be available to anyone. The key Kadt is shared by validators and auditors. Certui could denote an enrollment or transaction cert of user ui with the associated keys indicated by (pkui.skui), TCertui might denote a transaction cert of user ui with the associated keys indicated by (tpkui.tskui), while Certvj could denote the transaction or enrollment certificate of validator vj with the associated keys identified by (pkvj.skvj). The enrollment or transaction encryption/signing keys can be denoted using the same symbol for simplicity.

“In this exemplary transaction, there may be a common validation threshold that applies to all confidential chain-codes. The code information 404 may also include an ACL per function. This may include a list and/or hashes TCerts for authorized users. The user information 402 or the validator information 406 could include a key KH. This key can be used to encrypt headers, codes, and one, or both, of a key pair (PKc, SKc), that may be used for passing messages to contract validateators 104. A signature SigTcertx 410 from the TCert key may sign the transaction, TCertuc. A nonce may be included in the general information 402, which could be a random number or non-random number that is added to prevent replay-attacks. An user transaction ID (UTID 410) may be used. This may be a deterministic function such as a hash.

FIG. 5 shows an example of a 500-level process that can be executed after a deployment transaction has been issued. 5. At 502, the user, uC, can submit the deployment transaction (other users 102) to validators 104. The validators and peers can review the transaction and assign an order to the total order of transactions (oTID) at 504. Validators 104 may decrypt the message contained in the transaction at 506 and execute the code if necessary. In response to transaction reference number oTID in encrypted form, validators 104 can add the encrypted result to the response at 508 and a message for their auditor.

FIG. shows an exemplary format for a validator response 600 to a deployment transaction 6. This response 600 could include general information 602, code 604, signature information 604 and a message for the auditor 608. General information 602 could include information like oTID, order ID for the corresponding deployment transaction. This information may also be instantiated as a hash or confidential information. Information on code 604 can include information about the code to execute, as well as information about a variety of code-functions such a response code. Certificate and signature information 606 could include SigCertvi which is the signature that corresponds to certificate Certvi. Message to auditor 608 could include msgadt. This may include a message to auditors with key material to enable auditing to occur.

FIG. 7. Invocation transaction 700 could include code information 702, general information 702, code information 704, contract validityator information 706, signature and certificate information 708, and uTID. 710. General information 702 could include the type of invocation transaction, nonce, confidentiality type, and identification of the reference transaction such as oTID/TID/name. Code information 704 can include information about the code to execute. It may also include information on the type of invocation transaction. Some examples of proofsigs include tsku tsku? which could be a non-transferrable evidence and SigTcertu (*),, which might be a transferrable one. Tcertu may be included in certificate and signature information 706. SigTCertu (*).”

FIG. illustrates an example of a process 800 which can be executed after an invocation transaction has been issued. 8. At 802, the user, called u, can submit an invocation transaction to transaction (other users 102) to validators 104. The validators and peers can verify that the transaction has been properly created and may give the order of the transactions (oTID?) at 804. The validators 104 who are included in the list may retrieve the transaction’s keys and decrypt the message 508 from FIG. 5. In the invocation transaction decrypt the code 504 in FIG. 5. Execute the code and create the encrypted result. Validators 104 at 808 may include the encrypted result, message to auditor and response to the invocation transaction. It will be announced to the network.”

FIG. 9 shows an exemplary response to an invocation transaction. 9. Invocation transaction 900 could include general information 902, code info 904, signature and certificate information 906, and message for auditors 908. General information 902 could include the type of invocation transaction, nonce, confidentiality type, and identification of the reference transaction such as oTID/TID/name. Code information 904 can include information about the code to execute. It may also include information on the type of invocation transaction. Some examples of proofsigs include tsku tsku? which can be a non-transferrable evidence and SigTcertu (*),, which could be a transferable proof. Tcertu may be included in certificate and signature information 906 SigTCertu (*).”

“Input/output logic 1004 allows you to input data into, or output data from, computer system 1,000. Input/output circuitry can include input devices such as keyboards and mice, trackballs or touchpads as well as scanners, analog-to-digit converters, etc. Output devices such as monitors, printers etc., as well as input/output devices such as modems. With a network 1010, network adapter 1006 interfaces device 1,000 Any public or proprietary network or LAN, including the Internet, may be called Network 1010.

Memory 1008 contains program instructions and data that are processed by CPU 1002 to execute the functions of computer 1000. Memory 1008 can include electronic memory devices such as read-only memories (ROM), programmable memory read-only (PROM), programmable erasable programmable memory (EEPROM), flash memories, etc. It may also contain electro-mechanical memory such as magnetic disks, tape drives and optical disk drives.

“The contents in memory 1008 will vary depending on the function that computer 1000 is programmed for. FIG. Computer systems can play a variety roles in the described system, method, or computer program product. Computer systems can play a variety of roles, including users, validators and auditors, as well as identity providers. FIG. FIG. 10 shows exemplary memory contents that represent routines for each of these roles. These routines and the associated memory contents can be placed on one system or distributed across multiple systems based on well-known engineering considerations. All such arrangements are contemplated in the present invention.

FIG. 10. Memory 1008 can contain user routines 1011, validator routines 1012 and certificate authority routines 1014. It also contains transaction data 1016. The user routines 1010 could include routines that implement functions used by end-user computers systems. These routines may include the following: initiating and processing transactions; generating and/or saving transaction data 1016; etc. The validator routines 1012 could include routines that implement functions used by validator computer system, such as processing transactions and verifying them, generating and/or saving transaction data 1016, and generating result information. Routines for certificate authority routines 1016 could include routines that enable computer systems to perform functions such as creating certificates or generating them. Operating system 1024 is responsible for overall system functionality.

The present invention could be described as a system, method, or computer program product. A computer readable storage medium or media may be included in the computer program product. It may contain computer-readable program instructions that allow a processor to execute aspects of this invention.

A computer-readable storage medium is a tangible device that stores instructions and can be used by an instruction execution machine. A computer readable storage medium could include, but not be limited to, an electronic storage media, a magnetic storage media, an optical storage material, an electromagnetic storage apparatus, a semiconductor storage system, or any combination thereof. The following are some examples of computer-readable storage media. As used herein, a computer readable storage medium is not intended to contain transitory signals such as radio waves or other freely propagating electromagnetic wave, electromagnetic waves propagating though a waveguide, or any other transmission media (e.g. light pulses passing through fiber-optic cables), or electrical signals transmitted via a wire.

The computer-readable program instructions described in this document can be downloaded to the respective computing/processing device from a computer-readable storage medium, to an external computer, or via an external storage device over a network, such as the Internet, a local network, a large area network, and/or wireless network. The network can include copper transmission cables, optical transmission fibres, wireless transmission and routers, firewalls switches, gateway computers, edge servers, and/or switches. Each computing/processing device has a network adapter card, or network interface. This receives computer-readable program instructions from the network. It then stores the instructions in a computer-readable storage medium.

“Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the ?C? programming language or similar programming languages. Computer-readable program instructions can be executed entirely on the user?s computer, partially on their computer as a standalone software package, partly or completely on the remote computer. The remote computer can be connected to the user’s machine through any network, such as a local network (LAN), a wide-area network (WAN), or to an external computer via the Internet (Internet Service Provider). Some embodiments allow electronic circuitry to execute computer-readable program instructions using state information from the computer-readable program instructions. This allows the user to personalize electronic circuitry to accomplish aspects of the invention.

“Aspects” of the invention are described in detail with reference to block diagrams and/or flowcharts of methods, apparatuses and computer program products as per embodiments. Each block in the flowchart illustration and/or block schematics can be executed by computer-readable program instructions.

These computer-readable program instructions can be given to a processor of general purpose computers, special purpose computers, or any other programmable device processing apparatus to create a machine. The instructions, which execute via a processor of the computer and other programmable apparatus, create means to implement the functions/acts described in the flowchart block/blocks. These computer-readable program instructions can also be stored on a computer-readable storage medium that allows a computer, a programmeable data processing device, or other devices to perform a specific function. The instructions contained in the computer readable medium include instructions that implement certain aspects of the function/act described in the flowchart block/blocks.

“The computer-readable program instructions can also be loaded onto a computer or another programmable data processing device or device to cause a series or operational steps to be performed by the computer or other programmable apparatus to produce a computer implemented procedure. The instructions that execute on the device, computer, or other programmable device implement the functions/acts described in the block diagram and/or flowchart block.

“The Figures show the architecture, functionality, operation, and design of various implementations of methods, systems, and computer programs according to different embodiments of the invention. Each block in the block diagrams or flowcharts could be a block, segment, or section of instructions that contains one or more executable instructions to implement the specified logical function. Alternate implementations may allow the functions to be executed in a different order than the one shown in the figures. Depending on the functionality, blocks can sometimes be executed in reverse order. For example, two blocks could be executed simultaneously. You will also notice that every block in the flowchart illustration and/or block diagrams can be executed by special purpose hardware-based system that performs the specified functions, acts, or executes combinations of special purpose computer instructions.

“The terminology used in this document is intended to describe particular embodiments and not limit the invention. The singular forms?a,?an, and?the? are used herein. The singular forms?a?,?an???? and?the?? are intended to include the plural forms. Unless the context indicates otherwise, the plural forms of?the? and?the? are to be used together. Further, the terms “comprises” and/or “comprising” will be understood. and/or ?comprising,? When used in this specification, they indicate the presence of the stated features, integers and steps, operations and elements and/or their components. However, it does not preclude the addition or presence of other features, integers and steps, operations and elements and/or groups thereof.”

“The claims below include all structures, materials and acts that can be used to perform the function when combined with other elements. Although the description of the invention is intended for illustration and description purposes, it does not limit the invention to its current form. Without departing from its scope and spirit, many modifications and variations are possible for those with ordinary skill in art. This embodiment was chosen to explain the principles and practical application of the invention, and to allow others with ordinary skill in art to comprehend the invention for different embodiments with varied modifications that are appropriate to the intended use.

Click here to view the patent on Google Patents.

How to Search for Patents

A patent search is the first step to getting your patent. You can do a google patent search or do a USPTO search. Patent-pending is the term for the product that has been covered by the patent application. You can search the public pair to find the patent application. After the patent office approves your application, you will be able to do a patent number look to locate the patent issued. Your product is now patentable. You can also use the USPTO search engine. See below for details. You can get help from a patent lawyer. Patents in the United States are granted by the US trademark and patent office or the United States Patent and Trademark office. This office also reviews trademark applications.

Are you interested in similar patents? These are the steps to follow:

1. Brainstorm terms to describe your invention, based on its purpose, composition, or use.

Write down a brief, but precise description of the invention. Don’t use generic terms such as “device”, “process,” or “system”. Consider synonyms for the terms you chose initially. Next, take note of important technical terms as well as keywords.

Use the questions below to help you identify keywords or concepts.

  • What is the purpose of the invention Is it a utilitarian device or an ornamental design?
  • Is invention a way to create something or perform a function? Is it a product?
  • What is the composition and function of the invention? What is the physical composition of the invention?
  • What’s the purpose of the invention
  • What are the technical terms and keywords used to describe an invention’s nature? A technical dictionary can help you locate the right terms.

2. These terms will allow you to search for relevant Cooperative Patent Classifications at Classification Search Tool. If you are unable to find the right classification for your invention, scan through the classification’s class Schemas (class schedules) and try again. If you don’t get any results from the Classification Text Search, you might consider substituting your words to describe your invention with synonyms.

3. Check the CPC Classification Definition for confirmation of the CPC classification you found. If the selected classification title has a blue box with a “D” at its left, the hyperlink will take you to a CPC classification description. CPC classification definitions will help you determine the applicable classification’s scope so that you can choose the most relevant. These definitions may also include search tips or other suggestions that could be helpful for further research.

4. The Patents Full-Text Database and the Image Database allow you to retrieve patent documents that include the CPC classification. By focusing on the abstracts and representative drawings, you can narrow down your search for the most relevant patent publications.

5. This selection of patent publications is the best to look at for any similarities to your invention. Pay attention to the claims and specification. Refer to the applicant and patent examiner for additional patents.

6. You can retrieve published patent applications that match the CPC classification you chose in Step 3. You can also use the same search strategy that you used in Step 4 to narrow your search results to only the most relevant patent applications by reviewing the abstracts and representative drawings for each page. Next, examine all published patent applications carefully, paying special attention to the claims, and other drawings.

7. You can search for additional US patent publications by keyword searching in AppFT or PatFT databases, as well as classification searching of patents not from the United States per below. Also, you can use web search engines to search non-patent literature disclosures about inventions. Here are some examples:

  • Add keywords to your search. Keyword searches may turn up documents that are not well-categorized or have missed classifications during Step 2. For example, US patent examiners often supplement their classification searches with keyword searches. Think about the use of technical engineering terminology rather than everyday words.
  • Search for foreign patents using the CPC classification. Then, re-run the search using international patent office search engines such as Espacenet, the European Patent Office’s worldwide patent publication database of over 130 million patent publications. Other national databases include:
  • Search non-patent literature. Inventions can be made public in many non-patent publications. It is recommended that you search journals, books, websites, technical catalogs, conference proceedings, and other print and electronic publications.

To review your search, you can hire a registered patent attorney to assist. A preliminary search will help one better prepare to talk about their invention and other related inventions with a professional patent attorney. In addition, the attorney will not spend too much time or money on patenting basics.

Download patent guide file – Click here