The disclosed technology relates generally to the design of integrated electronic circuits, and more particularly, some embodiments relate to the design of cryptographic integrated circuits.
Application-specific integrated circuits (ASICs) are integrated circuits designed and built to serve a particular purpose or application. ASICs provide fast computational speed compared with slower, more generalized solutions, such as software solutions running on general-purpose processors or field programmable gate arrays (FPGAs). As the name implies, ASICs are generally designed to perform only one specific application, resulting in a trade-off between flexibility and computational speed. ASICs are increasing in importance in cryptography-related fields, such as proof-of-work systems, digital rights management systems, and other applications generally having stringent speed and efficiency requirements.
According to various embodiments of the disclosed technology, an integrated circuit is provided for use in proof-of-work based cryptographic verification processes, including but not limited to the cryptographic network transaction verification systems often used in the emerging field of blockchain technology. The integrated circuit includes one or more blocks of circuitry implementing a cryptographic function, generally a cryptographic one-way function (OWF) that is hard to reverse, such as a secure hashing algorithm. One or more transformation functions selected by one or more users and embodied as blocks of datapath circuitry are placed on the integrated circuits datapath at a point prior to at least one of the blocks of circuitry implementing a cryptographic function described above. Each block of circuitry implementing the transformation function may be programmed by the user by supplying a configuration key, for example, a key composed of a string of binary digits. Such a key is then embodied as datapath circuitry within the transformation block.
Following such programming, the circuitry within the transformation block will effect a specific programmatic transformation reflecting the key programmed by the user on the data it receives from circuitry prior to it along the integrated circuits datapath, and pass transformed data onto further circuitry along the datapath. Thus, and regardless of the content of the data received by the transformation block, the transformation it applies will directly and consistently, affect the final value calculated by circuitry further along the datapath, including the blocks or blocks of circuitry implementing a cryptographic function described above.
Due to interaction of the transformation with the mathematical properties of the cryptographic algorithms involved, particularly their nature as OWFs that are hard to revert (here, and at other points in this document, terms such as “hard” and “easy” may be understood in the sense of computational complexity theory, particularly polynomial time theory), the combined effect is to produce a systemic transformation of the bits contained in the final value calculated by the circuit that is not easily deciphered, not easily distinguishable from noise, and not easily replicable by a party lacking prior knowledge of the user's key or keys, but yet is fully consistent and easily replicable and thus verifiable by a party with prior knowledge of the keys or access to the means to utilize them in calculation even while lacking knowledge of them (such as, a party in possession of an ASIC programmed to embody the keys within its datapath circuitry).
The application of the above within the proof-of-work calculations often used field of blockchain technology enables a great expansion in the flexibility of its deployment. Specifically, it enables users to, in effect, create a near unlimited number of orthogonal blockchains. Any such blockchain may be fully distinct and separate from any other, as it is characterized by a unique set of valid solutions to the proof-of-work problem, yet all such blockchains are fully internally coherent as regards the cryptographic references of each block to the preceding, and fully demonstrable to any party with access to an ASIC configured to operate within the cryptographic framework of the given blockchain.
Thus, various embodiments of the technology described herein enable the creation of a new generation of ASICs dedicated to the network transaction verification of blockchain operations that are capable of verifying transactions across a near unlimited number of distinct and fully orthogonal blockchains, public or private. Such blockchains may be safely operated in the immediate proximity of each other and across multiple or the same networks.
Additionally, various implementations of the technology described herein are provided describing various methods to embody the transformation function key or keys as datapath circuitry within the integrated circuit in such a manner as to result in a very limited performance overhead, thus retaining core advantages ASICs have over other types of solutions in terms of speed and efficiency.
Further, various methods are provided to further protect the key or keys embodied as datapath circuitry within the integrated circuit. Such methods include, without limitation: various methods to prevent the discovery of the key or keys via an analysis of the inputs and outputs of the integrated circuit; the use of one or several lock fuses in the connecting circuitry between the configuration interface over which the user may program the transform function and the block or blocks of circuitry embodying the transformation as circuitry; the use of multi-part keys; the use of multiple transform functions; the use of transform functions that may only be accessed during the manufacturing process of the integrated circuit; and others.
Other features and aspects of the disclosed technology will become apparent from the following detailed description, taken in conjunction with the accompanying drawings, which illustrate, by way of example, the features in accordance with embodiments of the disclosed technology.
The technology disclosed herein, in accordance with one or more various embodiments, is described in detail with reference to the following figures. The drawings are provided for purposes of illustration only and merely depict typical or example embodiments of the disclosed technology. These drawings are provided to facilitate the reader's understanding of the disclosed technology and shall not be considered limiting of the breadth, scope, or applicability thereof. It should be noted that for clarity and ease of illustration these drawings are not necessarily made to scale.
The figures are not intended to be exhaustive or to limit the invention to the precise form disclosed. It should be understood that the invention can be practiced with modification and alteration, and that the disclosed technology be limited only by the claims and the equivalents thereof.
Proof-of-work verification systems are a class of verification systems predicated on solving complex computational problems, not for any intrinsic value of the answer arrived at, but for the probative value such an answer provides that a significant amount of computational work has been expended in producing such a result. Hence the name. Proof-of-work verification systems have applications across a broad range of modern computational systems, including, without limitation: systems used for the deterrence of denial-of-service (DoS) network attacks; systems used for the prevention of unwanted commercial email (spam); and systems used for other applications.
One such other use of proof-of-work verification in its operations is the cryptographic network transaction verification process underlying the emerging field of blockchain technology. Blockchain technology includes the various underlying technologies enabling decentralized trustless transaction systems, such as those supporting cryptographic currencies, the most widely known of which is bitcoin.
As a means to provide a context within which some implementations of the technology described herein may operate, it is useful to briefly discuss how blockchain systems operate prior to entering into a description of each illustration.
A blockchain is a listing of time-sequenced, non-editable records, identifying all past transactions within a system starting from the time of an initial block of transactions (which may be referred to as the genesis block) to the present. Blocks of transactions, containing detailed information pertaining to one or several valid transactions that have occurred within the network but were not included in any block of transactions previously appended to the blockchain are continually appended to the end of the blockchain.
Each block of transactions is identified by one or several unique block headers which contain a reference to all transactions included within the block of transactions as well as other pertinent information. As an example, reference to the various transactions incorporated into a block of transactions may be incorporated into a transaction block header by means of a Merkle-Damgård construct, or by other means.
Transaction block headers and the information contained within them are the primary organizing principle of a blockchain. For instance, and among other items, transaction block headers may contain a cryptographically verifiable reference to the transaction block header of the immediately preceding valid block of transactions in the blockchain. Thus such references cryptographically link all neighboring blocks together, each to each. This results in the organization of all blocks into a single uninterrupted chain of blocks, or blockchain, in much the same manner that a set of physical chain links joined each to the preceding form a physical chain.
Which blocks of transactions are to be appended to the end of the blockchain may be identified through a proof-of-work system, as described previously. Such a proof of work system may be based on cryptographic OWFs, as also described previously. OWFs are sometimes referred to as cryptographic hashing operations. Within the field of blockchain technology, they may sometimes be referred to as hashing operations.
Within the field of blockchain technology, the proof-of-work verification process is generally carried out on transaction block headers, rather than on the transactions themselves. For this reason, while the proof-of-work process is being carried out, one block of transactions may be referenced by many transaction block headers even though ultimately the overwhelming majority of them will be discarded. Thus it is entirely normal for any group of transactions to be referenced by a large number of transaction block headers, all of which are correctly constructed in accordance to the protocol and all of which contain true and accurate information, yet all of which are subtly different from each other.
Such transaction block headers are sometimes referred to as candidate transaction block headers. It is entirely normal for the number of candidate transaction block headers to be large, particularly if high-performance ASICs are involved. For example, a single high-performance ASIC may assemble, hash, evaluate and discard several hundred billion candidate transaction block headers per second.
Generally, candidate transaction block headers will be subjected to one or several hashing operations, and the resulting hash value will be compared to certain preexisting criteria for validity. In the case of bitcoin, the particular hashing operations used happen to be two subsequent applications of the 256-bit version of the 2nd version of the Secure Hashing Algorithm (SHA), as defined by the National Institute for Standards in Technology (NIST). This is sometimes referred to as SHA-256, and two sequential applications of it are sometimes referred to as double SHA-256. For simplicity, it may sometimes also referred to as double SHA. However, it is worth nothing that this is merely the specific algorithm that happens to be used in the case of bitcoin; other blockchains can and do use other algorithms. Similarly, various embodiments of the technology described herein can use various different algorithms within the field of blockchain technology, while other embodiments are applicable to fields other than blockchain technology.
As is common in other uses of proof-of-work verification systems, the comparison of candidate results with the validity criteria determines further processing. If the candidate transaction block header fails to pass the validity criteria, it is discarded and the system moves on to processing the next candidate transaction block header. If the candidate transaction block header passes the validity criteria then it is considered a valid transaction block header.
When a valid transaction block header is found, a series of other operations are performed. Within the field of blockchain technology, such operations generally culminate in the appending of the valid transaction block header to the end of the blockchain, along with the block of transactions it references. Other operations, such as the dispensing of a reward to the party that first reported the discovery of the valid transaction block header may also occur. Subsequently, the search for a new valid transaction block header begins anew and the process repeats.
The above generally describes certain aspects of the field of blockchain technology, particularly some aspects relating to the nature of the blockchain, the process for appending new blocks of transactions to it, the role and composition of transaction block headers, the operation of the proof-of-work process, and others. However, there many other aspects of blockchain technology have not been described. As an example, and without limitation, the above does not describe what may be characterized as the other half of this process, that is, the process of generating transactions as opposed to the process of grouping and processing transactions. Generally, the aspects of blockchain technology described in greater detail are those most germane to the technology described herein and some of its applications within cryptographic integrated circuits used in this field, while aspects that are generally carried out by software running on general-purpose microprocessors or are otherwise less germane to the technology described herein it are described in lesser detail, or not at all.
The governing principles behind the operation of all aspects of a blockchain are defined by a protocol, which is often referred to as a blockchain protocol. This includes those aspect described in more detail above. Conversely, blockchain protocols are designed to meet the particular needs of the specific application the blockchain is designed to serve, as interpreted by the protocol designer or designers. Such requirements may well vary from case to case, and thus not all blockchain protocols need be the same. Indeed, some may vary significantly.
The blockchain protocol that governs the operations of the blockchain underlying bitcoin is sometimes simply referred to as the bitcoin protocol. The bitcoin protocol is a seminal work in the narrow sense of the term; most if not all of what we now refer to as blockchain technology is derivate work based on the bitcoin protocol to one degree or another.
Each blockchain is maintained by a blockchain network, which in the field of blockchain technology is sometimes referred to simply as the network. In essence the definition of a blockchain network is straightforward; it is the collection of hardware and software that maintains a blockchain by implementing the policies defined by the protocol. In practice, blockchain networks can be complex. They are distributed heterogeneous combinations of a wide variety of devices, permanently or intermittently connected to the network, running different software written at various times by various people, performing different operations, and working together within a trustless system. Some blockchain networks may be extensive, and employ significantly advanced technology, including sophisticated cryptographic ASICs.
Generally, technology for solving the computationally intensive proof-of-work calculations involved in blockchain systems has evolved rapidly in recent years. For example, in the case of bitcoin transactions, the proof-of-work process involved in discovering valid transaction block headers was originally was conducted utilizing software applications running on general-purpose processors. However, speed and efficiency are paramount in proof-of-work systems, including those used within the context of blockchain systems. Accordingly, bitcoin mining operations have moved toward specialized hardware solutions, including ASICs. ASICs provide profound increase in speed and efficiency arising from the line-level speed with which calculations may be conducted. As the name implies ASICs are designed and fabricated to perform one specific application, in this case the mathematical operations involved in implementing a specific cryptographic protocol.
The success of the bitcoin network has evidenced the secure nature of blockchain technology. Accordingly, the use of blockchains in other related fields has gained interest over time. However, ASICs are designed to narrowly, match specific elements of the protocol within which they are to be implemented, specifically the elements of the protocol describing the particulars of the proof-of-work system defined by the protocol. For the bitcoin network, each ASIC is designed assemble at great speed block headers as described by the bitcoin protocol, subject them to two consecutive instances of the 256-bit version of the Secure Hashing Algorithm (SHA-256) protocol, and finally check the validity of the resulting 256 bit binary hash value by comparing it to a pre-determined validity test, which in the case of the bitcoin protocol is embodied as the difficulty level, as was discussed previously.
This limits the flexibility and opportunity to proliferate blockchain technology outside of the bitcoin network itself, or of networks based or “chained” on it to one degree or another, since high-performance proof-of-work implementations generally require the use of ASICs, and current-generation ASICs are only able to implement one highly specific proof-of-work system. Moreover, due to the nature of the proof-of-work process any private blockchain that relies on the same proof-of-work system used by Bitcoin for its own proof-of-work process can easily be interfered with by third parties using commercially-available equipment designed to solve the proof-of-work system defined by the bitcoin protocol.
Embodiments of the technology disclosed herein are directed toward the design, fabrication and utilization of application specific integrated circuits for cryptography-related applications. More particularly, various embodiments of the technology disclosed herein relate to ASICs having one or several programmable transformation functions embodied as circuitry incorporated into the integrated circuit's high speed datapath. By encoding transformation functions as datapath circuitry, embodiments of the technology disclosed herein enable ASICs to implement any one of a very broad range of proof-of-work systems as selected by the user.
This, in turn, enables blockchain systems to be safely operated even in the presence of large numbers of other ASICs specifically designed to solve the proof-of work calculations involved in the cryptographic network transaction verification of blockchain transactions including, but not limited to, Bitcoin mining ASICs that may otherwise threaten the security or integrity of blockchain-based systems not incorporating the technology disclosed herein.
Thus embodiments of the technology described herein enables the creation of a whole new generation of ASICs for specifically designed for blockchain applications that provide a presently unimaginable level of flexibility and security. Further, implementations of the technology described herein further allow for such flexibility to be achieved in return for a near-negligible cost in processing performance.
Before discussing the embodiments of the technology of the present disclosure in detail, it is helpful to discuss the overall workflow surrounding the processing of the proof-of-work operations involved in the network transaction verification of blockchain transactions by systems utilizing ASICs designed for this application.
For ease of discussion, the elements and overall operation of the example cryptographic processing system 100 will be described with respect to the bitcoin protocol, and the network supporting the bitcoin blockchain. Although described in this manner, one of ordinary skill reading the present disclosure would appreciate that the example cryptographic network transaction verification system 100 is applicable to uses other than the bitcoin network.
Examples of other applications can include both private and public blockchains used for applications other than those generally associated with bitcoin. Some examples of applications other than those associated with bitcoin that blockchain technology may be used for include, without exclusion: inter-bank settlement systems; stock exchange systems; commodity exchange systems; digital rights management systems; physical property rights registry systems; intellectual property registry systems; inventory control systems; fulfillment systems; package tracking systems; payroll systems; secure identification systems; use-of-funds tracking and transparency systems; accounting systems generally; payment systems generally; registry systems generally; financial systems generally; and others.
The example cryptographic network transaction verification system 100 includes an integrated circuit 103. In various embodiments, the integrated circuit 103 may include one or more processing components, including a configuration interface 104, a transaction block header framer 105, a buffer 106, a cryptographic hashing core 107, an evaluator 111, and a decision engine 112. In some embodiments one or more components may be combined into a single integrated circuit, as is illustrated in
A user 101 may configure one or more integrated circuit parameters through the configuration interface 104. Non-limiting examples of integrated circuit parameters that may be configured by the user 101 include: initialization; internal clock speed; or mode of communication with other networked systems; among others. In some embodiments, the user 101 may be a human communicating with the integrated circuit 103 via a terminal. In other embodiments, the user 101 may be an automated process running on a system or network. In various embodiments, the configuration interface 104 may also be used by the user 101 to monitor operation characteristics of the integrated circuit 103. Non-limiting examples of operational characteristics that may be monitored and provided to the user 101 may include: current activities; operating temperature; operating voltage; or fault status; among others.
Each candidate transaction block header that is subsequently processed by integrated circuit 103 is assembled by the transaction block header framer 105 using a combination of data generated by the framer itself and data obtained from the transaction and system data 102b. In various embodiments the transaction and system data 102.b is compiled by a prior process, the mining software 102a. In many cases mining software 102a is a piece of software running on a general purpose processor and communicating with the rest of the blockchain network via a connection to the public internet, which it utilizes to compile the transaction and system data 102b.
Certain qualities of the overall architecture of blockchain systems, particularly the well-designed compartmentalization between different aspects of the system, provides effective isolation between the operations of the integrated circuit 103 and the particulars regarding the operations of the mining software 102a. As a result, most particulars regarding the operations of the mining software including where it physically resides, what procedures it uses to communicate with the rest of the network, what procedures it uses to compile network data into the transaction and system data 102b, and others are transparent to the operations of the integrated circuit 103. Similarly, whether the network that the mining software 102a connects to happens to be the bitcoin network or a different network responsible for the maintenance of a different blockchain is also transparent to the integrated circuit 103, and to various embodiments of technology described herein.
The transaction and system data 102b may include, for example: system date and time; protocol version; a Merkle-Damgård construct representing the group of individual transactions that included in the transaction block; a unique identifier of the most recent block to be appended to the blockchain; among others. Upon receiving the transaction and system data 102b, the transaction block header framer 105 further elaborates it in order to generate one or more candidate transaction block headers.
In various embodiments, the transaction block header framer 105 may parse the transaction and system data 102b and add to it certain other elements, such as a sequential counter in order to generate a series of transaction block headers that are all validly formed and all appropriately represent the same set of transactions, but are all slightly different from each other.
In various embodiments, the rate at which the transaction block header framer 105 may produce transaction block headers that all accurately represent a block of transactions as received from the transaction and system data 102b but are all slightly different from each other may be fast, in the range of several billion or several hundred billion individual candidate transaction block headers per second. Depending on the implementation, a buffer 106 may store created candidate transaction block headers awaiting processing by the hashing core 107.
Each integrated circuit 103 may contain one or more hashing cores or other cryptographic processing cores. For simplicity, the example cryptographic processing system 100 is shown including a single hashing core 107. In various embodiments, multiple parallel hashing or other cryptographic processing cores may be implemented, as illustrated in
In the illustrated embodiment of
The output of the hashing core 107 is compared with the pre-existing criteria for identifying a valid block. In various embodiments, the output of the hashing core 107 may be the output from the second hashing block 110. An evaluator 111 of the integrated circuit 103 takes the final hash value output by the hashing core 107 for each candidate transaction block header and checks to see whether the processed output meets the pre-determined validity criteria. In the particular case of the bitcoin network, the validity criteria is expressed by a certain numeric value (often referred to as the difficulty level) that the numeric value of the 256 bit number produced by the final hash output may not exceed if it is to be considered valid. Thus if the numeric value or the final hash exceeds the difficulty level by any amount, the candidate transaction block header fails the validity test, and if it does not exceed the difficulty level it passes the validity test. In blockchain systems other than the one associated with the bitcoin network, some embodiments may employ the same criteria for determining validity, while other embodiments may employ different criteria for determining validity.
If the evaluator 111 determines that the final hash value does not meet the validity criteria, the decision engine 112 may discard the candidate transaction block header associated with the processed output evaluated by the evaluator 111. If the evaluator 111 determines that the final hash value does meet the validity criteria then the decision engine 112 will report that fact externally via a success report 113b transmitted to a success report recipient 113a. A success report 113b along with other information associated with it, such as the transaction block headers associated with it and other items, is the cryptographic proof-of-work that the system as a whole is designed to produce.
In various embodiments the success report recipient 113b may be the same as the mining software 102a. In other embodiments the success report recipient 113b may be a different process than the mining software 102a. Upon receipt of the success report 113b, the success report recipient 113a may take a number of subsequent actions. In various embodiments, such actions generally relate to the communication of the discovery of a valid transaction block header to the rest of the network, and generally culminate with the appending of a new transaction block to the end of the blockchain and the start of the search for the next valid block of transactions. In the specific case of the bitcoin network, such actions may additionally include other aspects such as the dispensing of a reward to the first party to report the discovery of a new valid transaction block header, and others.
However, and as was the case with the prior description regarding the operations mining software 102a, it is worth noting that exact nature of the success report recipient 113b and the specifics regarding what actions it may or may not take following the receipt of the success report 113a are transparent to various embodiments of the technology described herein. Similarly, whether the success report recipient 113b communicates with the network associated with the maintenance of the blockchain underlying bitcoin or the network associated with the maintenance of a different blockchain is transparent to some embodiments of the technology described herein.
With the basic workflow of blockchain technology described with respect to an example implementation, embodiments of the technology disclosed herein will be discussed with reference to the example cryptographic processing system 100 of
As discussed previously, embodiments of the technology disclosed herein places a transformation function embodied as circuitry within the cryptographic datapath of an integrated circuit 203. In the example illustrated in
In the illustrated example, the programmable transformation block 215 is a block of electronic circuitry specifically designed to be suitable for being integrated directly into the line-speed datapath of a high-performance cryptographic integrated circuit, but yet remain capable of being programmed to perform any one of a vast range of possible mathematical transform operations on input data it receives from circuitry prior to it on the integrated circuits datapath and output the resulting transformed data to circuitry subsequent to it on the integrated circuits datapath at full line speed.
In some embodiments such as that illustrated in
The integration of the programmable transformation block 215 into the high-speed datapath within cryptographic processing core 207 allows the cryptographic processing core 207 to operate at line speed, and thus the circuit as a whole suffers from very little degradation in performance when compared to a cryptographic processing core not including the programmable transformation block 215. This is achieved by embodying a transformation function as datapath circuitry (i.e., the programmable transformation block 215), in a manner that will be disclosed in greater detail below.
Similarly, the arrangement of circuitry within cryptographic processing core 207 into a unified datapath protects the configuration key 214 (discussed in more detail with respect to
In the specific case of the example embodiment illustrated in
In other embodiments as will be discussed in greater detail below with reference to
In various embodiments, the programmable transformation block 215 may be programmed at a time subsequent to the manufacturing of the transform-enabled integrated circuit 203 to consistently perform any one of a wide range of possible mathematical transformations on the data flowing through it at line speed due to its location on the datapath of the integrated circuit 203.
In some embodiments, the mechanism by which the programmable transformation block 215 is able to accept and retain such programming may be via a type of non-volatile read-only memory (NVRAM), including but not limited to Flash memory or other types of non-volatile memory. In various embodiments, the means of configuring the programmable transformation block 215 may be via one time programmable (OTP) circuitry components, including but not limited to micro-fuses or other types of OTP circuitry components. Micro-fuses are generally utilized in simple aspects of integrated circuit fabrication, such as writing manufacturing information onto integrated circuits during manufacture, or remedying faulty memory banks identified during testing. For ease of discussion, the technology of the present disclosure will be discussed with reference to a programmable transformation block 215 comprising micro-fuses, which will be discussed in greater detail with respect to
Various embodiments of the transform-enabled integrated circuit 203 may enable configuring the programmable transformation block 215 by means of a configuration key 214. In various embodiments, the configuration key 214 may be coded into the programmable transformation block 215 by the user 201 acting through the configuration interface 204. In such embodiments, the technology disclosed herein contemplates several different parties potentially taking the role of the user 201 for the purpose of encoding the configuration key 214 into the programmable transformation block 215. Such parties may include, for example: at the factory by the IC manufacturer; by one or several end users; or by some combination of the above.
In some embodiments where the user 201 is a single party, the user 201 may provide a configuration key 104 defining what transformation is to be applied to each bit comprising the data received by the programmable transformation block 215. For example, where the programmable transformation block 215 is designed for a 256-bit system, the user 201 may input a configuration key 214 defining what transformation, if any, the programmable transformation block 215 applies to all 256 bits of data received. Therefore that party will have the freedom to program any one of the 2{circumflex over ( )}256 mathematical operations that the programmable transformation block 215 is capable of being configured to perform using a 256-bit key.
Similarly, and continuing with the 256 bit example above, in embodiments where the user 201 comprises one or more parties, the configuration of the programmable transformation block 215 may be carried out by each of the one or more users 201 each of whom contributes a part of the configuration key 214. Such a scheme may sometimes be referred to as a multi-key scheme, and the resulting key may sometimes be referred to as a multi-part key. In some embodiments, each of the one or more users 201 may configure what transformation, if any, the programmable transformation block 215 applies to a subset of the bits of data it receives, while in other embodiments each of the one or more users may contribute a partial key that is subsequently processed into a key in a manner that does not allow any one user to determine what transformation, if any, the programmable transformation block 215 is to apply to any one specific bit or bits of data it receives.
In various embodiments of the technology described herein where the programmable transformation block 215 is placed in front of at least one block of circuitry implementing a cryptographic OWE such as the second hashing block 210 implementing a standard cryptographic algorithm in the illustration, the combined effect of the interaction of the programmable transformation function 215 and certain mathematical properties of the cryptographic algorithms involved, particularly their nature as OWFs that are hard to revert (here the terms “hard” and “easily” may be understood in the sense of computational complexity theory, particularly polynomial time theory) produce certain specific results. Specifically, the combined effect is that even a slight change introduced by the programmable transformation block 215, such as single bit change, will result in a wholesale transformation of the bits contained in the final value calculated by the hashing core 207 that is not easily deciphered, not easily distinguishable from noise, and not easily replicable by a party lacking full prior knowledge of the configuration key 214 and specific aspects of the design of the programmable transformation function 215, but yet is fully consistent and easily replicable and thus verifiable by a party with such knowledge or access to the means to utilize them in calculation even while lacking knowledge of them (such as, a party in possession of the same ASIC, or another ASIC incorporating the technology described herein and programmed to same configuration key 214 within its datapath circuitry).
The effects of the application of the technology described herein outlined in the prior paragraph have uses within the field of blockchain technology that enable a variety of innovative and valuable applications across multiple different fields. Such applications have been briefly alluded to previously and will be further discussed below.
In some embodiments, the programmable transformation block 215 may be configured to enable an end user to program a variety of transformation schemes, such as transposition schemes that transpose the position within the input and output of certain specific bits, while leaving others unchanged. In various embodiments, the programmable transformation block 215 may be configured to perform a direct bit inversion transformation scheme where some bits are inverted while others remain unchanged.
For ease of discussion, the technology of the present disclosure will be discussed with reference to a direct bit inversion transformation scheme where a 256-bit configuration key 204 determines what transformation is to be applied to each one of the 256 bits received by the programmable transformation block 215 by means of the following code: bits received at positions where the 256 bit configuration key contained a value of “0” are to be treated in one manner (for instance, be left unchanged), while those received at positions where the 256-bit configuration key contains a value of “1” are to be treated in a different manner (for instance, be inverted). Such a transformation is discussed in greater detail in the descriptions relating to
Following the production of the final hash value by the second hashing block 210, the evaluation process carried out by the evaluator 211 and the decision engine 212 in
If the final hash value does not meet the validity criteria (as will generally be the case in the vast majority of cases), the final hash value and the transaction block header that produced it will both be discarded. If the final hash value does meet the validity criteria, the final hash value and the transaction block header that produced the final hash value will be passed to the decision engine 212. After receiving the success indication, the decision engine 212 may then issue a success report 213b to the success report recipient 213a. Additionally, and also discussed with respect to
What is different is that the inclusion of the programmable transformation block 215, its subsequent programming by the user with a certain configuration key 214, and the interaction of the resulting transformed data with the second hashing core 210 may have caused a change in the final hash value calculated by the hashing core 203 for one or more than one transaction block headers generated by the transaction block header framer 205 and passed on the evaluator 211. Further, and as was discussed previously, such changes have certain unique and useful mathematical properties. Given that the task of the evaluator 211 is to compare the hash values received from the hashing core 203 with certain pre-determined validity criteria and on that basis evaluate whether the hash values pass or fail the validity test, it follows that a change in the hash value received by the evaluator 211 may result in a change that the evaluator makes as to the validity or non-validity of the hash value received.
Further given that the operation of the proof-of-work system is predicated upon the discovery of a valid proof of work in the form of a hash value that meets the validity criteria, additionally given that the operation of the cryptographic network transaction verification system is predicated upon the proof-of-work system, additionally given that the construction of the blockchain by means of appending new blocks to the end of the blockchain is predicated upon the cryptographic network transaction verification system, and additionally given that the changes introduced by the transformation function are fully coherent and easily replicable even if they may appear indistinguishable from noise to an external observer, then it follows that, if applied consistently throughout a blockchain network, a change, however slight, in the configuration key 214 would result in a systemic change of the operations of the blockchain system.
Therefore, certain embodiments of the technology disclosed herein allow for the creation of multiple orthogonal blockchains, each one of which assigns validity to an entirely different set of transaction block headers according to the configuration key 214 that each user 201 elects to apply to the programmable transformation block 215.
In various embodiments there may be one or several null configuration key 214 values which, if programmed into the programmable transformation block 215 will cause the programmable transformation block 215 to effect no change in the information passing through it, and thus cause the presence of the programmable transformation block 215 to effect no change in the final hash value that is calculated by the cryptographic processing core 207 for each of the transaction header blocks received from the transaction block header framer 205 and passed on to the evaluator 211. In some embodiments, a null configuration key may be represented by a string of zeroes of the same length as the length of the configuration key, which in certain embodiments may be 256 bits in length.
In various embodiments incorporating one or several null keys, the overall effect of programming the programmable transformation function with a null key is such that the set of transaction block header hashes considered valid by the evaluator would not be altered, rendering the output from the cryptographic processing core 207 functionally identical to the output from the hashing core 107 discussed with respect to
In such embodiments, and in other embodiments not incorporating the figure of a null configuration key, the programming of the programmable transformation block 215 with a configuration key 214 different from the null configuration key will cause a change in the final hash value calculated by the cryptographic hashing core 207 for each of the candidate transaction block headers produced by the transaction block header framer 205 and passed on to the evaluator 211. This in turn will cause a change in what subset of all candidate transaction block headers are deemed to be valid by the evaluator 211 and thus further communicated to the decision engine 212, which will then be communicated the outside of the integrated circuit 203 in the form of a success report 213b.
Further, and as described above, due to the interaction of the programmable transformation function 215 with certain mathematical functions of OWFs such as most standard modern cryptographic hashing functions, any change (including a single digit) in the input of a cryptographic hashing function causes a wholesale change in the resulting hash value that is not easily distinguishable from noise.
As noted above, in some embodiments the programmable transformation block 215 may be placed prior to the first hashing block, such that the single input point of the cryptographic processing core is the programmable transformation block. One such example of this is illustrated in
In some embodiments, a single integrated circuit may incorporate more than one programmable transformation block 215.
Such embodiments implement a process that shares some characteristic with both cascade ciphers and multi-signature schemes but is distinct from both. Specifically, cascade ciphers involve the use sequential application of ciphers, that is, processes that encrypt data in such a manner it that at a later time it may be deciphered, that is, be rendered legible again. Various embodiments of the technology described herein as illustrated in
Thus, various embodiments of the technology described herein are distinct from both cascade ciphers, digital multi-signature schemes and other present cryptographic technologies. While lacking a common name due to its novelty, such a system may be described as a multi-key cascading transformed one-way function system.
In some embodiments where the cryptographic hashing algorithm embodied as circuitry in at least the second hashing block 410 may be a proven standard cryptographic hashing algorithm including, without limitation: SHA-2 in its various implementations; Keccak/SHA-3 in its various implementations; Skein in its various implementations; Grostl in its various implementations; JH in its various implementations; and others, or be a non-standard hashing algorithm that, despite being non-standard, is still a OWF that is hard to reverse (where the term “hard” is understood in the sense of polynomial time theory). In such embodiments, the technology described herein as illustrated in
In some embodiments, both the first and second programmable transformation blocks 418, 415 may be programmed by first and second configuration keys 417, 414 that are 256 bits in length, while in other embodiments either one or both may be of a different length depending on the specifics of the implementation.
In various embodiments of the technology described herein also illustrated by
In certain embodiments of the technology described herein also illustrated by
In other embodiments of the technology described herein not illustrated in
In some embodiments of the technology described herein also not illustrated in
Various embodiments utilizing a direct bit inversion transformation scheme as described herein may be implemented to take advantage of the fact that a 256 bit binary configuration key provides a succinct means to enable access to the full key space provided by the programmable transformation function 215. That is, 256 bits is the minimum length necessary to enable the user to specify which one among 256 distinct transformations is to be performed by the programmable transformation function 215 on the first hash value 209. Using a direct bit inversion transformation scheme may also enable the use of a minimal amount of new circuit elements to embody of the transformation function as datapath circuitry. This is important because the fact that the transformation function is embodied as datapath circuitry means that any additional circuitry placed on the datapath will operate at line speed and result in an overall degradation of the performance of the transform-enabled integrated circuit 203 as a whole.
In various embodiments, the configuration of the programmable transformation block 515 may add as little as a single NOT gate to the datapath circuitry of the transform-enabled integrated circuit. By comparison, each hashing block may, depending on the details of their design, contain approximately 4,000 gates. Therefore, the programmable transformation block 515 may add a very modest 128 gates (assuming a 256-bit key) to the cryptographic datapath previously containing approximately 8,000 gates (assuming a double SHA-256 hashing process). Accordingly, the degradation in performance introduced by the programmable transformation block 515 in various embodiments may be very limited, so much so that in practice the difference in performance would be overshadowed by other factors to such a degree that it would be difficult to accurately quantify in isolation.
A direct bit inversion transformation scheme may also provide a straightforward means to disable all effects of the programmable transformation 215 by simply setting all values in the 256 bit configuration key to zero. Such a key may be referred to as a null key. One result of this it simplifies the process of configuring a transform-enabled integrated circuit 203 so that it operates in a manner undistinguishable from that of a comparable integrated circuit not incorporating the programmable transformation function 215. The practical result of this is that integrated circuits incorporating the technology described herein may easily be configured to operate in the same manner as standard bitcoin mining ASICs and be used to mine bitcoins with no particular difficulty, (aside from and in addition to being able to operate in manners that are not replicable by bitcoin mining ASICs not incorporating the technology described herein).
For ease of discussion,
The coding of the programmable transformation block is illustrated in
At Stage 2, the programmable transformation block 15 is coded, embodying the configuration key 14 as provided by the user. As illustrated, the configuration key 14 comprises the string “011000.” The corresponding micro-fuses are disabled according to the configuration key 14, as illustrated by the shaded boxes within the programmable transformation circuit 15. At Stage 3, a lock fuse 16 may be disabled following coding of the programmable transformation block 15, protecting the configuration key 14 from discovery. A lock fuse 16 may be disposed on the programming circuitry through which the programming transformation block 15 is programmed by the user. By disabling the lock fuse 16, the cryptographic processing core including the programming transformation block 15 returns to having a single input point and single output point, thereby providing the type of protection discussed in detail above with respect to
In various embodiments, multiple cryptographic processing cores may be included in parallel within the same integrated circuit.
Where multiple cryptographic processing cores are implemented, some embodiments may implement the programmable transformation block to provide the ability to generate unique blockchains as discussed above.
In various embodiments, the integrated circuit may include additional, non-cryptographic processes.
The general-purpose portion 1007 of the dual-purpose integrated circuit 1006 may include components designed for general purposes, such as a central processing unit or a system-on-chip (SoC) processor designed to perform a number of additional functions (e.g., graphics, audio, communications processing, etc.). Spare memory cells may also be included in the general-purpose portion 1007 in some embodiments to enable swapping out faulty memory components. In some embodiments, the general-purpose portion 1007 may have its own interface 1009 through which a user 1008 may configure the components of the general-purpose portion 1007. In addition, in some embodiments the user 1008 may write system information 1010 into permanent memory of the general-purpose portion 1007. In various embodiments, the configuration interface 1002 and the interface 1009 may be a single set of electrical circuitry, and the user 1001 and user 1008 may be the same entity. A bidirectional communication link 1005 may connect the cryptographic processing core 1004 to the general-purpose portion 1007, enabling the CPU or SoC to send tasks to be performed by the cryptographic processing core 1004, and receive results of calculations. The integrated circuit 1006 may interact with local resources 1011 and external resources 1012. Internal resources 1011 may be, but are not limited to, the user 1001 or 1008, local memory, or software applications running locally with the dual-purpose integrated circuit 1006. External resources 1012 may include external memory or other nodes within the network on which the integrated circuit 1006 is connected.
Occasionally, the dual-purpose integrated circuit 1006 may be connected to other nodes in an untrusted network, such as through an unsecured wireless or wired connection. In some embodiments, the general-purpose portion 1007 may be configured to conduct several processes designed to securely identify an integrated circuit containing a transformation block in accordance with the technology presented herein, over an untrusted network. A string generator 1013 may access system information 1010 written into the integrated circuit 1006 by the user 1008, and combine such system information 1010 with transaction information, such as transaction and system data 102b discussed with respect to
The message generator 1014 may send the data to the cryptographic processing core 1004 over the bidirectional communication link 1005. In this way, the data may be processed to generate a transform-coded string, which the cryptographic processing core 1004 may then send back to the message generator 1014. The message generator 1014 may then generate a network message 1015. The network message 1015 may include the initial data outputted by the string generator 1013. In various embodiments, additional information may be included in the network message 1015, including but not limited to: system date and time; previously-received external messages; or the transform-coded string; among others. The network message 1015 is then sent to an TO component 1016. In various embodiments, the TO component 1016 may include local communication protocols, external communication protocols, or a combination thereof.
Referring now to
As can be seen from the diagram, the circuit illustrated in
In some implementations, following the programming of the programmable transformation block within the transform-enabled hashing core 1205, user 2 may simply enter some input values which are then directly communicated as input data to the transform-enabled hashing core 1205 subsequently, upon completion of the calculations, the transform-enabled hashing core 1205 will then return the final hash value calculated to user 2. If the implementation of the technology described herein is generally the same in the transform enabled hashing core 1205 as in a different transform-enabled circuit that previously carried out such operations, the input data such as, for example, a transaction block header is the same in both cases, and the configuration key or keys programmed into both are also the same in both cases, then the final hash value calculated by both integrated circuits will also be the same. Thus the validity of certain items which may, for example, include transaction block headers from the blockchain, other transaction block headers, other candidate transaction block headers, and others may be validated. Further by using a circuit such as some embodiments of the circuit illustrated in
In some embodiments, the user may be a person, while in other embodiments the user may be an automated process such as wallet software, mining software or other kinds of automated processes. In certain embodiments user 2 may also have access to the configuration of the various operating aspects of the integrated circuit as described above. In certain embodiments there may be a single interface for the configuration of the various operating aspects of the integrated circuit as a whole, the programming of keys and the obtaining of final transform enabled hash values calculated on the basis of data supplied by the user, while in other embodiments some or all of those functions may be separate. In certain embodiments, the integrated circuit illustrated by
In certain embodiments, various implementations of the integrated circuit illustrated in
Turning now to
The method of operation and overall purpose of the integrated circuit illustrated in
In this document explicit reference has only been made of certain cryptographic hashing algorithms, specifically the second iteration of the Secure Hashing Algorithm family (SHA-2), and within that particularly the 256-bit version. However, the technology described herein is fully applicable to other cryptographic hashing algorithms, including without limitation: SHA-2 in its various implementations; Keccak/SHA-3 in its various implementations; Skein in its various implementations; GrØstl in its various implementations; JR in its various implementations; and others.
As used herein, the term set may refer to any collection of elements, whether finite or infinite. The term subset may refer to any collection of elements, wherein the elements are taken from a parent set; a subset may be the entire parent set. The term proper subset refers to a subset containing fewer elements than the parent set. The term sequence may refer to an ordered set or subset. The terms less than, less than or equal to, greater than, and greater than or equal to, may be used herein to describe the relations between various objects or members of ordered sets or sequences; these terms will be understood to refer to any appropriate ordering relation applicable to the objects being ordered.
The term tool can be used to refer to any apparatus configured to perform a recited function. For example, tools can include a collection of one or more components and can also be comprised of hardware, software or a combination thereof. Thus, for example, a tool can be a collection of one or more software components, hardware components, software/hardware components or any, combination or permutation thereof. As another example, a tool can be a computing device or other appliance on which software runs or in which hardware is implemented.
As used herein, the term component might describe a given unit of functionality that can be performed in accordance with one or more embodiments of the technology disclosed herein. As used herein, a component might be implemented utilizing any form of hardware, software, or a combination thereof. For example, one or more processors, controllers, ASICs, PLAs, PALs, CPLDs, FPGAs, logical components, software routines or other mechanisms might be implemented to make up a component. In implementation, the various components described herein might be implemented as discrete components or the functions and features described can be shared in part or in total among one or more components. In other words, as would be apparent to one of ordinary skill in the art after reading this description, the various features and functionality described herein may be implemented in any given application and can be implemented in one or more separate or shared components in various combinations and permutations. Even though various features or elements of functionality may be individually described or claimed as separate components, one of ordinary skill in the art will understand that these features and functionality can be shared among one or more common software and hardware elements, and such description shall not require or imply that separate hardware or software components are used to implement such features or functionality.
Where components or components of the technology are implemented in whole or in part using software, in one embodiment, these software elements can be implemented to operate with a computing or processing component capable of carrying out the functionality described with respect thereto. One such example computing component is shown in
Referring now to
Computing component 1100 might include, for example, one or more processors, controllers, control components, or other processing devices, such as a processor 1104. Processor 1104 might be implemented using a general-purpose or special-purpose processing engine such as, for example, a microprocessor, controller, or other control logic. In the illustrated example, processor 1104 is connected to a bus 1102, although any communication medium can be used to facilitate interaction with other components of computing component 1100 or to communicate externally.
Computing component 1100 might also include one or more memory components, simply referred to herein as main memory 1108. For example, preferably random access memory (RAM) or other dynamic memory, might be used for storing information and instructions to be executed by processor 1104. Main memory 1108 might also be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 1104. Computing component 1100 might likewise include a read only memory (“ROM”) or other static storage device coupled to bus 1102 for storing static information and instructions for processor 1104.
The computing component 1100 might also include one or more various forms of information storage mechanism 1110, which might include, for example, a media drive 1112 and a storage unit interface 1120. The media drive 1112 might include a drive or other mechanism to support fixed or removable storage media 1114. For example, a hard disk drive, a floppy disk drive, a magnetic tape drive, an optical disk drive, a CI) or DVD drive (R or RW), or other removable or fixed media drive might be provided. Accordingly, storage media 1114 might include, for example, a hard disk, a floppy disk, magnetic tape, cartridge, optical disk, a CD or DVD, or other fixed or removable medium that is read by, written to or accessed by media drive 1112. As these examples illustrate, the storage media. 111A can include a computer usable storage medium having stored therein computer software or data.
In alternative embodiments, information storage mechanism 1110 might include other similar instrumentalities for allowing computer programs or other instructions or data to be loaded into computing component 1100. Such instrumentalities might include, for example, a fixed or removable storage unit 1122 and an interface 1120. Examples of such storage units 1122 and interfaces 1120 can include a program cartridge and cartridge interface, a removable memory (for example, a flash memory or other removable memory component) and memory slot, a PCMCIA slot and card, and other fixed or removable storage units 1122 and interfaces 1120 that allow software and data to be transferred from the storage unit 1122 to computing component 1100.
Computing component 1100 might also include a communications interface 1124. Communications interface 1124 might be used to allow software and data to be transferred between computing component 1100 and external devices. Examples of communications interface 1124 might include a modem or softmodem, a network interface (such as an Ethernet, network interface card, WiMedia, IEEE 802.XX or other interface), a communications port (such as for example, a USB port, IR port, RS232 port Bluetooth® interface, or other port), or other communications interface. Software and data transferred via communications interface 1124 might typically be carried on signals, which can be electronic, electromagnetic (which includes optical) or other signals capable of being exchanged by a given communications interface 1124. These signals might be provided to communications interface 1124 via a channel 1128. This channel 1128 might carry signals and might be implemented using a wired or wireless communication medium. Some examples of a channel might include a phone line, a cellular link, an RF link, an optical link, a network interface, a local or wide area network, and other wired or wireless communications channels.
In this document, the terms “computer program medium” and “computer usable medium” are used to generally refer to media such as, for example, memory 1108, storage unit 1120, media 1114, and channel 1128. These and other various forms of computer program media or computer usable media may be involved in carrying one or more sequences of one or more instructions to a processing device for execution. Such instructions embodied on the medium, are generally referred to as “computer program code” or a “computer program product” (which may be grouped in the form of computer programs or other groupings). When executed, such instructions might enable the computing component 1100 to perform features or functions of the disclosed technology as discussed herein.
While various embodiments of the disclosed technology have been described above, it should be understood that they have been presented by way of example only, and not of limitation. Likewise, the various diagrams may depict an example architectural or other configuration for the disclosed technology, which is done to aid in understanding the features and functionality that can be included in the disclosed technology. The disclosed technology is not restricted to the illustrated example architectures or configurations, but the desired features can be implemented using a variety of alternative architectures and configurations. Indeed, it will be apparent to one of skill in the art how alternative functional, logical or physical partitioning and configurations can be implemented to implement the desired features of the technology disclosed herein. Also, a multitude of different constituent component names other than those depicted herein can be applied to the various partitions. Additionally, with regard to flow diagrams, operational descriptions and method claims, the order in which the steps are presented herein shall not mandate that various embodiments be implemented to perform the recited functionality in the same order unless the context dictates otherwise.
Although the disclosed technology is described above in terms of various exemplary embodiments and implementations, it should be understood that the various features, aspects and functionality described in one or more of the individual embodiments are not limited in their applicability to the particular embodiment with which they are described, but instead can be applied, alone or in various combinations, to one or more of the other embodiments of the disclosed technology, whether or not such embodiments are described and whether or not such features are presented as being a part of a described embodiment. Thus, the breadth and scope of the technology disclosed herein should not be limited by any of the above-described exemplary embodiments.
Terms and phrases used in this document, and variations thereof, unless otherwise expressly stated, should be construed as open ended as opposed to limiting. As examples of the foregoing: the term “including” should be read as meaning “including, without limitation” or the like; the term “example” is used to provide exemplary instances of the item in discussion, not an exhaustive or limiting list thereof; the terms “a” or “an” should be read as meaning “at least one,” “one or more” or the like; and adjectives such as “conventional,” “traditional,” “normal,” “standard,” “known” and terms of similar meaning should not be construed as limiting the item described to a given time period or to an item available as of a given time, but instead should be read to encompass conventional, traditional, normal, or standard technologies that may be available or known now or at any time in the future. Likewise, where this document refers to technologies that would be apparent or known to one of ordinary skill in the art, such technologies encompass those apparent or known to the skilled artisan now or at any time in the future.
The presence of broadening words and phrases such as “one or more,” “at least,” “but not limited to” or other like phrases in some instances shall not be read to mean that the narrower case is intended or required in instances where such broadening phrases may be absent. The use of the term “component” does not imply that the components or functionality described or claimed as part of the component are all configured in a common package. Indeed, any or all of the various components of a component, whether control logic or other components, can be combined in a single package or separately maintained and can further be distributed in multiple groupings or packages or across multiple locations.
Additionally, the various embodiments set forth herein are described in terms of exemplary block diagrams, flow charts and other illustrations. As will become apparent to one of ordinary skill in the art after reading this document, the illustrated embodiments and their various alternatives can be implemented without confinement to the illustrated examples. For example, block diagrams and their accompanying description should not be construed as mandating a particular architecture or configuration.
This application is a continuation of and claims the benefit of priority to U.S. patent application Ser. No. 14/997,113, entitled “Cryptographic ASIC Including Circuitry-Encoded Transformation Function,” filed on Jan. 15, 2016, which is hereby incorporated by reference herein in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
5442705 | Miyano | Aug 1995 | A |
5774552 | Grimmer | Jun 1998 | A |
6307936 | Ober et al. | Oct 2001 | B1 |
6581162 | Angelo et al. | Jun 2003 | B1 |
6704871 | Kaplan et al. | Mar 2004 | B1 |
6708273 | Ober et al. | Mar 2004 | B1 |
6763465 | Kelley et al. | Jul 2004 | B1 |
7177421 | Buer et al. | Feb 2007 | B2 |
7191341 | Paaske et al. | Mar 2007 | B2 |
7234021 | Chilton | Jun 2007 | B1 |
7373517 | Riggins | May 2008 | B1 |
7472369 | Bain et al. | Dec 2008 | B1 |
7483945 | Blumofe | Jan 2009 | B2 |
7606362 | Streicher et al. | Oct 2009 | B1 |
7644278 | Catherman et al. | Jan 2010 | B2 |
7675313 | Tang et al. | Mar 2010 | B1 |
7681103 | Devadas et al. | Mar 2010 | B2 |
7725738 | Langhammer et al. | May 2010 | B1 |
7818584 | Joyce et al. | Oct 2010 | B1 |
7890917 | Young et al. | Feb 2011 | B1 |
7892917 | Cho et al. | Feb 2011 | B2 |
7971017 | Mann et al. | Jun 2011 | B1 |
8132005 | Tarkkala et al. | Mar 2012 | B2 |
8332931 | Tran et al. | Dec 2012 | B1 |
8347096 | Hoornaert et al. | Jan 2013 | B2 |
8402241 | Miranda et al. | Mar 2013 | B2 |
8683210 | Devadas | Mar 2014 | B2 |
8751786 | Feng et al. | Jun 2014 | B1 |
8751855 | Yairi et al. | Jun 2014 | B2 |
8782396 | Ziola et al. | Jul 2014 | B2 |
9479328 | Wilburn et al. | Oct 2016 | B1 |
9495668 | Juels | Nov 2016 | B1 |
9672385 | Newell | Jun 2017 | B2 |
9866370 | Doi et al. | Jan 2018 | B2 |
9893885 | Miller et al. | Feb 2018 | B1 |
9959065 | Ateniese et al. | May 2018 | B2 |
10200196 | Rodriguez De Castro | Feb 2019 | B1 |
10256974 | Rodriguez De Castro | Apr 2019 | B1 |
10262163 | Rodriguez De Castro | Apr 2019 | B1 |
10262164 | Rodriguez De Castro et al. | Apr 2019 | B2 |
10372943 | Rodriguez De Castro | Aug 2019 | B1 |
10404454 | Rodriguez De Castro | Sep 2019 | B1 |
10404463 | Rodriguez De Castro | Sep 2019 | B1 |
10607030 | Rodriguez De Castro | Mar 2020 | B2 |
10607031 | Rodriguez De Castro | Mar 2020 | B2 |
10607032 | Rodriguez De Castro | Mar 2020 | B2 |
10796024 | Rodriguez De Castro et al. | Oct 2020 | B2 |
20010021927 | Laurent et al. | Sep 2001 | A1 |
20010044897 | Ishiguro et al. | Nov 2001 | A1 |
20020080958 | Ober et al. | Jun 2002 | A1 |
20020085710 | Clark et al. | Jul 2002 | A1 |
20020147918 | Osthoff et al. | Oct 2002 | A1 |
20020184512 | Cardoso | Dec 2002 | A1 |
20020199110 | Kean | Dec 2002 | A1 |
20030056139 | Murray et al. | Mar 2003 | A1 |
20040005051 | Wheeler et al. | Jan 2004 | A1 |
20040019789 | Buer | Jan 2004 | A1 |
20040034766 | Sakamura et al. | Feb 2004 | A1 |
20040044431 | Pellegrini et al. | Mar 2004 | A1 |
20040088552 | Candelore | May 2004 | A1 |
20050047543 | Sandstrom | Mar 2005 | A1 |
20050132184 | Palliyil et al. | Jun 2005 | A1 |
20060041510 | Gagnon et al. | Feb 2006 | A1 |
20060059368 | Fayad et al. | Mar 2006 | A1 |
20060072748 | Buer | Apr 2006 | A1 |
20060107320 | Bhatt et al. | May 2006 | A1 |
20060182283 | Sandhu et al. | Aug 2006 | A1 |
20060184799 | Seo et al. | Aug 2006 | A1 |
20060248346 | Shiomi et al. | Nov 2006 | A1 |
20060273147 | Jackson et al. | Dec 2006 | A1 |
20060291650 | Ananth | Dec 2006 | A1 |
20070005963 | Eldar et al. | Jan 2007 | A1 |
20070024316 | Dellow | Feb 2007 | A1 |
20070090920 | Canter et al. | Apr 2007 | A1 |
20070101156 | Novoa | May 2007 | A1 |
20070110230 | Buer et al. | May 2007 | A1 |
20070124818 | Bumiller et al. | May 2007 | A1 |
20070208918 | Harbin et al. | Sep 2007 | A1 |
20070230693 | Mueller et al. | Oct 2007 | A1 |
20070245159 | Youn | Oct 2007 | A1 |
20070255966 | Condorelli et al. | Nov 2007 | A1 |
20070294497 | Chen | Dec 2007 | A1 |
20080148001 | Gehrmann et al. | Jun 2008 | A1 |
20080170694 | Ryan et al. | Jul 2008 | A1 |
20080235772 | Janzen | Sep 2008 | A1 |
20080263353 | Droms et al. | Oct 2008 | A1 |
20080270805 | Kean | Oct 2008 | A1 |
20080278285 | Matsushima et al. | Nov 2008 | A1 |
20090024784 | Wang et al. | Jan 2009 | A1 |
20090067686 | Boshra et al. | Mar 2009 | A1 |
20090169019 | Bauchot et al. | Jul 2009 | A1 |
20090202068 | Qureshi et al. | Aug 2009 | A1 |
20090238362 | Kitani et al. | Sep 2009 | A1 |
20090257595 | De Cesare et al. | Oct 2009 | A1 |
20090259855 | De Cesare et al. | Oct 2009 | A1 |
20090320127 | Hong | Dec 2009 | A1 |
20090328195 | Smith | Dec 2009 | A1 |
20100042845 | Kobayashi et al. | Feb 2010 | A1 |
20100061137 | Kim | Mar 2010 | A1 |
20100088752 | Nagulakonda et al. | Apr 2010 | A1 |
20100095357 | Willis et al. | Apr 2010 | A1 |
20100220853 | Schneider | Sep 2010 | A1 |
20100242122 | Goto | Sep 2010 | A1 |
20100250967 | Miwa | Sep 2010 | A1 |
20110010552 | Hoornaert et al. | Jan 2011 | A1 |
20110066835 | Kothari et al. | Mar 2011 | A1 |
20110119293 | Taylor et al. | May 2011 | A1 |
20110179289 | Guenther | Jul 2011 | A1 |
20110225128 | Jarrett et al. | Sep 2011 | A1 |
20110268269 | Spalka et al. | Nov 2011 | A1 |
20110311051 | Resch et al. | Dec 2011 | A1 |
20120060039 | Leclercq | Mar 2012 | A1 |
20120066504 | Hird et al. | Mar 2012 | A1 |
20120069995 | Matthews, Jr. | Mar 2012 | A1 |
20120079287 | Leclercq | Mar 2012 | A1 |
20120151223 | Conde et al. | Jun 2012 | A1 |
20120309348 | De Atley et al. | Dec 2012 | A1 |
20130065669 | Michaelson et al. | Mar 2013 | A1 |
20130101120 | Brique et al. | Apr 2013 | A1 |
20130145140 | Hsien | Jun 2013 | A1 |
20130230166 | Bauchot et al. | Sep 2013 | A1 |
20140016776 | Van Foreest et al. | Jan 2014 | A1 |
20140156531 | Poon et al. | Jun 2014 | A1 |
20140164779 | Hartley et al. | Jun 2014 | A1 |
20140205092 | Hartley et al. | Jul 2014 | A1 |
20140223160 | Kim | Aug 2014 | A1 |
20140258188 | Chen et al. | Sep 2014 | A1 |
20140358792 | Berke et al. | Dec 2014 | A1 |
20140359268 | Jauhiainen et al. | Dec 2014 | A1 |
20140359303 | Berke et al. | Dec 2014 | A1 |
20150003607 | Choi et al. | Jan 2015 | A1 |
20150019856 | Kim et al. | Jan 2015 | A1 |
20150052351 | Nodehi Fard Haghighi et al. | Feb 2015 | A1 |
20150086016 | Oshida et al. | Mar 2015 | A1 |
20150113278 | Cocchi et al. | Apr 2015 | A1 |
20150134555 | Fancher et al. | May 2015 | A1 |
20150163211 | Chellappa et al. | Jun 2015 | A1 |
20150213253 | Miranda et al. | Jul 2015 | A1 |
20150255052 | Rex | Sep 2015 | A1 |
20150294308 | Pauker | Oct 2015 | A1 |
20150302409 | Malek et al. | Oct 2015 | A1 |
20150317644 | Chanez et al. | Nov 2015 | A1 |
20150332283 | Witchey | Nov 2015 | A1 |
20150363187 | Dhar et al. | Dec 2015 | A1 |
20150371224 | Lingappa | Dec 2015 | A1 |
20160092687 | Boenisch et al. | Mar 2016 | A1 |
20160099922 | Dover | Apr 2016 | A1 |
20160148232 | Besehanic | May 2016 | A1 |
20160180343 | Poon et al. | Jun 2016 | A1 |
20160188910 | Nakkiran | Jun 2016 | A1 |
20160205075 | Asokan et al. | Jul 2016 | A1 |
20160260169 | Arnold et al. | Sep 2016 | A1 |
20160261565 | Lorenz et al. | Sep 2016 | A1 |
20160283920 | Fisher et al. | Sep 2016 | A1 |
20160285636 | Davoust et al. | Sep 2016 | A1 |
20160294783 | Piqueras Jover et al. | Oct 2016 | A1 |
20160330034 | Back et al. | Nov 2016 | A1 |
20160358184 | Radocchia et al. | Dec 2016 | A1 |
20170017957 | Radu | Jan 2017 | A1 |
20170046516 | Henry | Feb 2017 | A1 |
20170046517 | Henry | Feb 2017 | A1 |
20170109668 | Marcu et al. | Apr 2017 | A1 |
20170109676 | Marcu et al. | Apr 2017 | A1 |
20170126414 | Goel et al. | May 2017 | A1 |
20170163760 | Wood et al. | Jun 2017 | A1 |
20170206382 | Rodriguez De Castro et al. | Jul 2017 | A1 |
20170221055 | Carlsson et al. | Aug 2017 | A1 |
20170228731 | Sheng et al. | Aug 2017 | A1 |
20170236121 | Lyons et al. | Aug 2017 | A1 |
20170243176 | Hanke et al. | Aug 2017 | A1 |
20170250796 | Samid | Aug 2017 | A1 |
20170310653 | Zhang | Oct 2017 | A1 |
20170331624 | Samid | Nov 2017 | A1 |
20170345019 | Radocchia et al. | Nov 2017 | A1 |
20180006826 | Smith et al. | Jan 2018 | A1 |
20180012311 | Small et al. | Jan 2018 | A1 |
20180041345 | Maim | Feb 2018 | A1 |
20180046956 | Marcu et al. | Feb 2018 | A1 |
20180048462 | Salmela et al. | Feb 2018 | A1 |
20180054491 | Mankovskii et al. | Feb 2018 | A1 |
20180089685 | Mcgregor et al. | Mar 2018 | A1 |
20180108024 | Greco et al. | Apr 2018 | A1 |
20180131519 | Le Scouarnec et al. | May 2018 | A1 |
20180136633 | Small et al. | May 2018 | A1 |
20180137512 | Georgiadis et al. | May 2018 | A1 |
20180152297 | Fielding et al. | May 2018 | A1 |
20180183587 | Won et al. | Jun 2018 | A1 |
20180184290 | Luo et al. | Jun 2018 | A1 |
20180227275 | Russinovich et al. | Aug 2018 | A1 |
20180234248 | Imamoto et al. | Aug 2018 | A1 |
20180331832 | Pulsifer | Nov 2018 | A1 |
20180343238 | Tola | Nov 2018 | A1 |
20180349608 | De Cesare et al. | Dec 2018 | A1 |
20180359811 | Verzun et al. | Dec 2018 | A1 |
20180365422 | Callaghan et al. | Dec 2018 | A1 |
20180365424 | Callaghan et al. | Dec 2018 | A1 |
20190007222 | Noguchi | Jan 2019 | A1 |
20190080093 | Pirvu et al. | Mar 2019 | A1 |
20190102558 | De Cesare et al. | Apr 2019 | A1 |
20190163910 | Moon et al. | May 2019 | A1 |
20190325165 | Rodriguez De Castro et al. | Oct 2019 | A1 |
20190332552 | Rodriguez De Castro | Oct 2019 | A1 |
20190332817 | Rodriguez De Castro | Oct 2019 | A1 |
20190332818 | Rodriguez De Castro | Oct 2019 | A1 |
20190334711 | Rodriguez De Castro | Oct 2019 | A1 |
20190342087 | Rodriguez De Castro | Nov 2019 | A1 |
20190342099 | Rodriguez De Castro | Nov 2019 | A1 |
20200184111 | Rodriguez De Castro | Jun 2020 | A1 |
Number | Date | Country |
---|---|---|
1815948 | Aug 2006 | CN |
101243643 | Aug 2008 | CN |
101965573 | Feb 2011 | CN |
102474416 | May 2012 | CN |
104683099 | Jun 2015 | CN |
104838385 | Aug 2015 | CN |
108885675 | Nov 2018 | CN |
108885675 | Nov 2018 | CN |
108885675 | Mar 2020 | CN |
111382464 | Jul 2020 | CN |
112017000394 | Oct 2018 | DE |
112017000394 | Oct 2018 | DE |
19100807.2 | Nov 2019 | HK |
2308080 | Oct 2007 | RU |
2013141238 | Mar 2015 | RU |
2017123902 | Jul 2017 | WO |
WO-2017123902 | Jul 2017 | WO |
2019182965 | Sep 2019 | WO |
2019209457 | Oct 2019 | WO |
2019209464 | Oct 2019 | WO |
2019209465 | Oct 2019 | WO |
2019209475 | Oct 2019 | WO |
2019209560 | Oct 2019 | WO |
2019209561 | Oct 2019 | WO |
2019182965 | Apr 2020 | WO |
Entry |
---|
“International Application Serial No. PCT US17 13377, International Search Report dated Apr. 18, 2017”, 2 pgs. |
“International Application Serial No. PCT US17 13377, Written Opinion dated Apr. 18, 2017”, 7 pgs. |
“U.S. Appl. No. 14/997,113, Non Final Office Action dated Oct. 10, 2017”, 31 pgs. |
“U.S. Appl. No. 14/997,113, Examiner Interview Summary dated Dec. 19, 2017”, 3 pgs. |
“International Application Serial No. PCT US2017 013377, International Preliminary Report on Patentability dated Feb. 13, 2013”, 8 pgs. |
“International Application Serial No. PCT US2017 013377, Response filed Nov. 13, 2017 to Written Opinion mailed Apr. 18, 2017”, 4 pgs. |
“U.S. Appl. No. 14/997,113, Response filed Mar. 12, 2018 to Non Final Office Action dated Oct. 10, 2017”, 24 pgs. |
“U.S. Appl. No. 14/997,113, Final Office Action dated Apr. 11, 2018”, 35 pgs. |
“U.S. Appl. No. 15/975,615, Non Final Office Action dated Jul. 23, 2018”, 12 pgs. |
“U.S. Appl. No. 15/975,539, First Action Interview—Pre-Interview Communication dated Aug. 7, 2018”, 4 pgs. |
“U.S. Appl. No. 15/979,072, First Action Interview—Pre-Interview Communication dated Aug. 3, 2018”, 3 pgs. |
“U.S. Appl. No. 14/997,113, Response filed Aug. 10-18, to Final Office Action dated Apr. 11, 2018”, 22 pgs. |
“U.S. Appl. No. 14/997,113, Advisory Action dated Aug. 28, 2018”, 5 pgs. |
“U.S. Appl. No. 15/975,539, Response filed Sep. 7, 2018 to First Action Interview—Pre-Interview Communication dated Aug. 7, 2018”, 17 pgs. |
“U.S. Appl. No. 15/994,877, First Action Interview—Pre-Intervew Communication dated Sep. 4, 2018”, 4 pgs. |
“U.S. Appl. No. 15/980,179, First Action Interview—Pre-Interview Communication dated Sep. 7, 2018”, 4 pgs. |
“U.S. Appl. No. 15/994,938, First Action Interview—Pre-Interview Communication dated Sep. 14, 2018”, 4 pgs. |
“U.S. Appl. No. 15/975,539, Preliminary Amendment filed Sep. 20, 2018”, 17 pgs. |
“U.S. Appl. No. 15/979,072, Response filed Sep. 3, 2018 to Pre-Interview Communication dated Aug. 3, 2018”, 5 pgs. |
“U.S. Appl. No. 15/979,072, Preliminary Amendment filed Oct. 1, 2018”, 10 pgs. |
“U.S. Appl. No. 14/997,113, Response filed Oct. 11, 2018 to Final Office Action dated Apr. 11, 2018 and Advisory Action dated Aug. 28, 2018”, 24 pgs. |
“U.S. Appl. No. 15/994,938, Response filed Oct. 14, 2018 to First Action Interview Pre-Interview Communication dated Sep. 14, 2018”, 15 pgs. |
“U.S. Appl. No. 15/799,072, Notice of Allowance dated Oct. 23, 2018”, 10 pgs. |
“U.S. Appl. No. 15/994,877, Examiner Interview Summary dated Oct. 23, 2018”, 3 pgs. |
“U.S. Appl. No. 15/975,615, Examiner Interview Summary dated Oct. 23, 2018”, 3 pgs. |
“U.S. Appl. No. 15/980,179, First Action Interview—Office Action Summary dated Oct. 26, 2018”, 3 pgs. |
“U.S. Appl. No. 15/994,877, Preliminary Amendment filed Nov. 5, 2018”, 10 pgs. |
“U.S. Appl. No. 15/994,938, Preliminary Amendment filed Nov. 14, 2018”, 12 pgs. |
“U.S. Appl. No. 15/979,072, Corrected Notice of Allowability dated Nov. 29, 2018”, 2 pgs. |
“U.S. Appl. No. 15/975,539, First Action Interview—Office Action Summary dated Dec. 10, 2018”, 4 pgs. |
“U.S. Appl. No. 15/975,615, Notice of Allowance dated Dec. 10, 2018”, 12 pgs. |
“U.S. Appl. No. 15/975,539, Examiner Interview Summary dated Dec. 10, 2018”, 3 pgs. |
“U.S. Appl. No. 15/980,179, Response filed Dec. 21, 2018 to First Action Interview—Office Action Summary dated Oct. 26, 2018”, 20 pgs. |
“U.S. Appl. No. 16/190,073, Preliminary Amendment filed Dec. 28, 2018”, 9 pgs. |
“U.S. Appl. No. 15/979,072, Notice of Allowability dated Jan. 4, 2019”, 2 pgs. |
“U.S. Appl. No. 15/994,877, Notice of Allowance dated Jan. 17, 2019”, 7 pgs. |
“U.S. Appl. No. 14/997,113, Notice of Allowance dated Jan. 31, 2019”, 16 pgs. |
“U.S. Appl. No. 16/139,332, First Action Interview—Pre-Interview Communication dated Jan. 24, 2019”, 3 pgs. |
“U.S. Appl. No. 15/975,539, Response filed Feb. 11, 2019 to First Action Interview Office Action Summary dated Dec. 10, 2018”, 15 pgs. |
“U.S. Appl. No. 15/994,938, First Action Interview—Office Action Summary dated Feb. 14, 2019”, 4 pgs. |
“U.S. Appl. No. 14/997,113, Corrected Notice of Allowability dated Feb. 19, 2019”, 2 pgs. |
“U.S. Appl. No. 16/139,332, Response filed Feb. 24, 2019 to First Action Interview—Pre-Interview Communication dated Jan. 24, 2019”, 5 pgs. |
“U.S. Appl. No. 16/139,332, Notice of Allowance dated Mar. 27, 2019”, 13 pgs. |
“U.S. Appl. No. 15/980,179, Final Office Action dated Mar. 28, 2019”, 30 pgs. |
“U.S. Appl. No. 15/994,938, Response filed Apr. 15, 2019 to First Action Interview—Office Action Summary dated Feb. 14, 2019”, 16 pgs. |
“U.S. Appl. No. 15/975,539, Request for Examiner's Amendment filed Apr. 29, 2019”, 12 pgs. |
“International Application Serial No. PCT US2019 022735, International Search Report dated Apr. 22, 2019”, 3 pgs. |
“U.S. Appl. No. 16/292,162 Preliminary Amendment filed May 13, 2019”, 12 pgs. |
“U.S. Appl. No. 16/292,142 Preliminary Amendment filed May 13, 2019”, 11 pgs. |
“U.S. Appl. No. 15/975,539, Notice of Allowance dated May 15, 2019”, 9 pgs. |
“International Application Serial No. PCT US2019 027432, International Search Report dated Jul. 18, 2019”, 2 pgs. |
“International Application Serial No. PCT US2019 027432, Written Opinion dated Jul. 18, 2019”, 5 pgs. |
“Chinese Application Serial No. 201780006769.6, Office Action dated Jun. 20, 2019”, w English translation, 11 pgs. |
“U.S. Appl. No. 16/512,901, Preliminary Amendment filed Jul. 25, 2019”, 8 pgs. |
“U.S. Appl. No. 16/190,073, Non Final Office Action dated Aug. 8, 2019”, 13 pgs. |
“U.S. Appl. No. 15/980,179, Examiner Interview Summary dated Aug. 28, 2019”, 3 pgs. |
“U.S. Appl. No. 16/292,142, Non Final Office Action dated Sep. 3, 2019”, 10 pgs. |
“U.S. Appl. No. 15/980,179, Response filed Sep. 25, 2019 to Final Office Action dated Mar. 28, 2019”, 15 pgs. |
“U.S. Appl. No. 15/980,179, Non Final Office Action dated Oct. 10, 2018”, 11 pgs. |
“U.S. Appl. No. 15/980,179, Notice of Allowance dated Nov. 14, 2019”, 14 pgs. |
“U.S. Appl. No. 16/190,073, Response filed Dec. 5, 2019 to Non Final Office Action dated Aug. 8, 2019”, 8 pgs. |
“German Application Serial No. 112017000394.6, Voluntary Amendment filed Mar. 26, 2019”, w English claims, 14 pgs. |
“Chinese Application Serial No. 201780006769.6, Response filed Nov. 5, 2019 to Office Action dated Jun. 20, 2019”, w English Claims, 12 pgs. |
“U.S. Appl. No. 16/292,142, Response filed Dec. 26, 2019 to Non Final Office Action dated Sep. 3, 2019”, 7 pgs. |
“U.S. Appl. No. 16/292,142, Notice of Allowance dated Jan. 15, 2020”, 10 pgs. |
“U.S. Appl. No. 16/190,073, Notice of Allowance dated Jan. 21, 2020”, 13 pgs. |
“U.S. Appl. No. 16/190,073, Corrected Notice of Allowability dated Feb. 27, 2020”, 2 pgs. |
“U.S. Appl. No. 15/980,179, Corrected Notice of Allowability dated Mar. 2, 2020”, 2 pgs. |
“Chinese Application Serial No. 202010185225.4, Notification to Make Rectification dated Apr. 17, 2020”, 1 pgs. |
“U.S. Appl. No. 16/512,838, Non Final Office Action dated Jun. 22, 2020”, 9 pgs. |
“U.S. Appl. No. 16/452,890, Notice of Allowance dated Jul. 1, 2020”, 11 pgs. |
“U.S. Appl. No. 16/512,838, Response filed Jul. 24, 2020 to Non Final Office Action dated Jun. 22, 2020”, 5 pgs. |
“U.S. Appl. No. 16/512,838, Notice of Allowance dated Aug. 10, 2020”, 11 pgs. |
“Russian Application Serial No. 2019136310, Office Action dated Jul. 30, 2020”, w English translation, 20 pgs. |
Huang, Qiang, “Two Efficient Hashing Schemes for High-Dimensional Furthest Neighbor Search”, IEEE Transactions on Knowledge and Data Engineering, vol. 29, Issue: 12, [Online] Retrieved from the internet:https: ieeexplore.ieee.org stamp stamp.jsp?tp=andarnumber=8038075, (2017). |
Masanes, Lluis, “Full Security of Quantum Key Distribution From No-Signaling Constraints”, IEEE Transactions on Information Theory, vol. 60, Issue: 8, [Online] Retrieved from the internet:https: ieeexplore.ieee.org stamp stamp.jsp?tp=andarnumber=6846344, (2014). |
Nakamoto, Satoshi, “Bitcoin: A Peer-to-Peer Electronic Cash System”, (2009), 1-9. |
Ramakrishna, M. V, “Perfect Hashing Functions for Hardware Applications”, Proceedings. Seventh International Conference on Data Engineering, [Online] Retrieved from the internet:https: ieeexplore.ieee.org stamp stamp.jsp?tp=andarnumber=131495, (1991). |
Vitalik, Buterin, “A Next Generation Smart Contract and Decentralized Application Platform”, (Jan. 1, 2015), 36 pgs. |
“Chinese Application Serial No. 201780006769.6, Voluntary Amendment and PPH Request filed Apr. 29, 2019”, w English claims, 15 pgs. |
“U.S. Appl. No. 15/994,938, Notice of Allowance dated Jun. 20, 2019”, 18 pgs. |
“International Application Serial No. PCT US2019 024579, International Search Report dated Jun. 20, 2019”, 2 pgs. |
“International Application Serial No. PCT US2019 024579, Written Opinion dated Jun. 20, 2019”, 4 pgs. |
“International Application Serial No. PCT US2019 025439, International Search Report dated Jun. 25, 2019”, 2 pgs. |
“International Application Serial No. PCT US2019 025439, Written Opinion dated Jun. 25, 2019”, 9 pgs. |
“International Application Serial No. PCT US2019 024993, International Search Report dated Jun. 26, 2019”, 2 pgs. |
“International Application Serial No. PCT US2019 024993, Written Opinion dated Jun. 26, 2019”, 4 pgs. |
“U.S. Appl. No. 16/452,890 Preliminary Amendment filed Jul. 16, 2019”, 4 pgs. |
“U.S. Appl. No. 14/997,113, Corrected Notice of Allowability dated Feb. 21, 2019”, 2 pgs. |
“U.S. Appl. No. 14/997,113, Examiner Interview Surnrnary dated Dec. 19, 2017”, 3 pgs. |
“U.S. Appl. No. 14/997,113, Response filed Aug. 10, 2018 to Final Office Action dated Apr. 11, 2018”, 22 pgs. |
“U.S. Appl. No. 15/979,072, Notice of Allowance dated Oct. 23, 2018”, 10 pgs. |
“U.S. Appl. No. 15/994,877, First Action Interview—Pre-Interview Communication dated Sep. 4, 2018”, 4 pgs. |
“U.S. Appl. No. 15/994,877, Notice of Allowancer dated Jan. 17, 2019”, 7 pgs. |
“U.S. Appl. No. 15/994,938, Response filed Oct. 14, 2018 to First Action Interview Pre-Interview Communication dated Sep. 14-18, 2018”, 15 pgs. |
“International Application Serial No. PCT/US2017/013377, International Preliminary Report on Patentability dated Feb. 13, 2018”, 8 pgs. |
“International Application Serial No. PCT/US2017/013377, Response filed Nov. 13, 2017 to Written Opinion dated Apr. 18, 2017”, 4 pgs. |
“International Application Serial No. PCT/US2019/022735, Written Opinion dated Apr. 22, 2019”, 3 pgs. |
“International Application Serial No. PCT/US2019/025006, International Search Report dated Apr. 22, 2019”, 2 pgs. |
“International Application Serial No. PCT/US2019/025006, Written Opinion dated Apr. 22, 2019”, 3 pgs. |
“International Application Serial No. PCT/US2019/027440, International Search Report dated May 13, 2019”, 2 pgs. |
“International Application Serial No. PCT/US2019/027440, Written Opinion dated May 13, 2019”, 3 pgs. |
“Russian Application Serial No. 2018128197, PPH Request filed Mar. 1, 2019”,w/ English claims, minor revisions made to claims upon filing PPH request, 60 pgs. |
Atighehchi, Kevin, et al., “Generic Parallel Cryptography for Hashing Schemes”, 2013 IEEE 12th International Symposium on Parallel and Distributed Computing, https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6663582, (2013), 201-208. |
Han, Demin, et al., “High-performance Implementation of a New Hash Function on FPGA”, 2012 14th International Conference on Advanced Communication Technology (ICACT). https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6174591, (2012), 217-220. |
Lao, Yingjie, et al., “Obfuscating DSP Circuitsvia High-Level Transformations”, IEEE Transactionson Very Large Scale Integration (VLSI) Systems, vol. 23, Issue: 5. https//ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=6825872, (2014), 819-830. |
Atighehchi, Kevin, “Generic Parallel Cryptography for Hashing Schemes”, 2013 IEEE 12th International Symposiumon Parallel and Distributed Computing. https: ieeexplore.ieee.org stamp stamp.jsp?tp=andarnumber=6663582, (2013), 201-208. |
Han, Demin, “High-performance Implementation of a New Hash Function on FPGA”, 2012 14th International Conference onAdvanced Communication Technology (ICACT). https: ieeexplore.ieee.org stamp stamp.jsp?tp=andarnumber=6174591, (2012), 217-220. |
Lao, Yingjie, “Obfuscating DSP Circuits via High-Level Transformations”, IEEE Transactions on Very Large ScaleIntegration (VLSI) Systems, vol. 23, Issue: 5. https: ieeexplore.ieee.org stamp stamp.jsp?tp=andarnumber=6825872, (2014), 819-830. |
Number | Date | Country | |
---|---|---|---|
20190272393 A1 | Sep 2019 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 14997113 | Jan 2016 | US |
Child | 16292013 | US |