Instantiating a wallet application and deriving keys to sign blockchain transactions using a PUF device

PUF devices enhance blockchain transaction signing by deriving keys from a challenge-response mechanism, addressing vulnerabilities in traditional hardware wallets and improving security and privacy.

JP7823081B2Active Publication Date: 2026-03-03NCHAIN LICENSING AG
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2022-04-12
Publication Date
2026-03-03

AI Technical Summary

Technical Problem

Existing blockchain transaction signing methods rely on traditional hardware wallets that store keys, making them vulnerable to physical attacks, and there is a need for a more secure and practical solution.

Method used

Utilizing a PUF device to generate keys for signing blockchain transactions by deriving them from a seed based on a challenge-response mechanism, eliminating the need to store the master key on disk and enhancing security against physical attacks.

Benefits of technology

PUF-based hardware wallets provide secure key generation without storing the master key, protecting against physical compromises and improving robustness and privacy in key management systems.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007823081000002
    Figure 0007823081000002
  • Figure 0007823081000003
    Figure 0007823081000003
  • Figure 0007823081000004
    Figure 0007823081000004
Patent Text Reader

Abstract

A challenge is input to a PUF device having a physical unclonable function (PUF). The device generates a corresponding response. A wallet application is instantiated to use a seed determined from the response, the instantiation including storing a transformation of the seed or the response in association with the wallet application. A user then provides information to the wallet application indicating an entitlement to use the seat, and the wallet application is configured to derive at least one child key from the seed in response to verifying the information based on the transformation stored in association with the wallet application, and provided that the information has been verified thereby. A blockchain transaction is then signed using the child key derived by the wallet application in response to the verification.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure relates to a physical unclonable function (PUF) device having a PUF. [Background technology]

[0002] A physically unclonable function (PUF) is a term used to refer to a function that is deterministic but involves unpredictable physical phenomena. PUFs are sometimes also referred to as physical random number functions. PUFs receive an input, called a "challenge," and generate a corresponding output, called a "response," depending on the challenge and the physical phenomenon employed by the PUF. PUFs are sometimes classified as strong or weak. A strong PUF can generate responses to many different challenges, typically allowing any value of the challenge. A weak PUF can generate responses to only a single response or a small number of responses (typically not allowing any value of the challenge). In other words, a strong PUF has many challenge-response pairs (i.e., it has a large challenge-response space), while a weak PUF has a single challenge-response pair or a limited number of challenge-response pairs (i.e., a small or limited challenge-response space). By one definition, a weak PUF has a large number of responses that grow linearly with the number of challenge bits, or more generally, responses that do not grow more than linearly with the number of challenge bits or any other parameter (in other words, a weak PUF cannot scale up its challenge-response space, i.e., at most the challenge-response space scales linearly).

[0003] A known example of a strong PUF is an optical PUF. For example, an optical PUF may include a laser, an optical sensor, and a solid optical medium with an air bubble or other such artifact set in the medium. The laser is shone through the optical medium at a controllable angle, generating a diffraction or scattering pattern (which is the effect of the air bubble or artifact in the medium). The sensor is configured to sense this pattern. The challenge is the angle of the laser, and a response is generated based on the sensed pattern.

[0004] An example of a weak PUF is an SRAM PUF. In this case, the challenge is to power up an SRAM (Static Random Access Memory). Due to slight manufacturing variations between SRAMs, the SRAM cells enter a unique pattern of 0 / 1 states upon power-up, thereby forming a distinctive fingerprint for each individual SRAM. The PUF is configured to output this as its response after power-up.

[0005] PUFs can be used as a means of generating keys for use in cryptographic algorithms (e.g., to sign or encrypt documents), etc. Another use of PUFs is in identifying devices, such as computer devices, that incorporate the PUF. If an expected response to a given challenge has previously been determined, a verifier can later challenge a target device and check whether it gives the expected response, thereby checking whether the target device is the device associated with the expected response.

[0006] Because the challenge-response space is limited, the input-output (I / O) interface to a weak PUF tends to be restricted to only one or a limited number of parties (e.g., only one or a limited number of trusted parties may be physically or legally granted access to the PUF, or the interface to the PUF may be password-protected, or similar). That is, only one or more interested parties may gain access to the inputs to the PUF that are required to submit a challenge and the outputs used to receive the returned response. On the other hand, with a strong PUF, the I / O interface to the strong PUF may be made widely available to a large or unlimited number of parties, although not all of them are necessarily known or trusted. The reason is that the challenge-response space is large enough that it is infeasible for an adversary to enumerate all of the challenge-response pairs; therefore, the adversary's ability to freely access the PUF should not compromise its security by allowing enumeration and spoofing of the PUF, as is the case with weak PUFs.

[0007] In different technical fields, blockchain refers to a form of distributed data structure in which a replica of the blockchain is maintained at each of multiple nodes in a distributed peer-to-peer (P2P) network (hereinafter referred to as a "blockchain network") and made publicly available. A blockchain includes a chain of blocks of data, each containing one or more transactions. Each transaction points to a previous transaction in the sequence, which may span one or more blocks, tracing back to one or more coinbase transactions, except for so-called "coinbase transactions," which are described below. Transactions submitted to a blockchain network are included in new blocks. New blocks are created through a process often referred to as "mining," which involves multiple nodes competing to perform "proof of work," i.e., solving a cryptographic puzzle based on a representation of a defined set of ordered, confirmed, pending transactions awaiting inclusion in a new block of the blockchain. Note that a blockchain may be pruned at some nodes, and block publication may be achieved simply through the publication of block headers.

[0008] Transactions in a blockchain may be used for one or more of the following purposes: to transfer digital assets (i.e., multiple digital tokens), to order a set of entries in a virtualized ledger or registry, to receive and process timestamp entries, and / or to time-order index pointers. Blockchains may also be utilized to layer additional functionality on top of the blockchain. For example, blockchain protocols may allow additional user data or indexes to data to be stored within a transaction. There is no pre-specified limit on the maximum amount of data that can be stored within a single transaction, and therefore increasingly complex data may be incorporated. For example, this could be used to store electronic documents or audio or video data on the blockchain.

[0009] Nodes (often referred to as "miners") in a blockchain network perform a distributed transaction registration and validation process, which will be described in more detail later. Briefly, in this process, a node approves a transaction, inserts it into a block template, and attempts to identify a valid proof-of-work solution for it. Once a valid solution is found, a new block is propagated to other nodes in the network, thereby allowing each node to record a new block on the blockchain. To record a transaction on the blockchain, a user (e.g., a blockchain client application) submits the transaction to one of the nodes in the network, where it is propagated. Nodes receiving the transaction may compete to find a proof-of-work solution that will incorporate the approved transaction into a new block. Each node is configured to enforce the same node protocol, which may include one or more conditions for a transaction to be valid. Invalid transactions are not propagated or incorporated into blocks. Assuming the transaction is approved and thereby accepted onto the blockchain, the transaction (including any user data) remains registered and indexed at each of the nodes in the blockchain network as an immutable public record.

[0010] Nodes that successfully solve the proof-of-work puzzle to create the latest block are typically rewarded with a new transaction called a "coinbase transaction" that distributes a digital asset value, i.e., a number of tokens. The detection and rejection of invalid transactions is enforced by the activities of competing nodes, who act as agents of the network and are incentivized to report and block illegal activity. The widespread publication of information allows users to continuously audit node performance. The mere publication of block headers allows participants to ensure the ongoing integrity of the blockchain.

[0011] In an “output-based” model (sometimes referred to as a UTXO-based model), the data structure of a given transaction comprises one or more inputs and one or more outputs. Any spendable output includes an element specifying the amount of a digital asset derivable from an ongoing series of transactions. A spendable output is sometimes referred to as a UTXO (or “unspent transaction output”). An output may further include a locking script that specifies the conditions for the output’s future redemption. A locking script is a predicate that defines the conditions necessary to approve and transfer a digital token or asset. Each input of a transaction (other than a coinbase transaction) includes a pointer (i.e., a reference) to such output in a preceding transaction and may further include an unlocking script for unlocking the locking script of the pointed-to output. Consider a pair of transactions, called a first transaction and a second transaction (or “target” transaction). The first transaction includes at least one output specifying the amount of a digital asset and includes a locking script that defines one or more conditions for unlocking the output. The second target transaction includes at least one input that includes a pointer to the output of the first transaction and an unlock script for unlocking the output of the first transaction.

[0012] In such a model, when a second target transaction is sent to the blockchain network to be propagated and recorded in the blockchain, one of the validity criteria applied by each node is that the unlocking script meets all of one or more conditions defined in the locking script of the first transaction. Another is that the output of the first transaction has not already been redeemed by another, previous, valid transaction. A node that finds the target transaction invalid according to any of these conditions neither propagates it (as a valid transaction, but possibly to register an invalid transaction) nor includes it in a new block to be recorded in the blockchain.

[0013] An alternative type of transaction model is the account-based model, where each transaction defines the transfer amount not by referencing the UTXO of the transaction that precedes it in the sequence of past transactions, but rather by referencing absolute account balances. The current state of all accounts is stored and constantly updated by nodes separate from the blockchain. Summary of the Invention [Means for solving the problem]

[0014] The present disclosure provides a method for instantiating a wallet application to derive keys for signing blockchain transactions using a PUF device.

[0015] According to one aspect disclosed herein, a method includes inputting an input challenge to a PUF device including a PUF module having a physical unclonable function (PUF). The PUF device is configured to generate a corresponding output response based on the input challenge and the PUF in response to inputting the input challenge. The method further includes instantiating a wallet application to use a seed determined from an output response generated by the PUF device in response to inputting the input challenge. The instantiating includes storing a transformation of the seed or the output response in association with the wallet application. Thereafter, a user provides information to the wallet application indicating right to use the seed, and the wallet application is configured to derive at least one child key from the seed in response to verifying the information based on the transformation stored in association with the wallet application, and provided the information is thereby verified. The method then includes signing a blockchain transaction using the child key derived by the wallet application in response to the verification, and submitting the signed blockchain transaction for recording to the blockchain.

[0016] PUF devices can therefore replace traditional hardware wallets, with the advantage of not requiring a source of entropy to be stored on disk. In typical hardware wallets, keys are stored on the device, which is typically air-gapped and not connected to the internet at all. The owner then connects the device when they need to sign a transaction or transfer funds. There is also typically a password or PIN that allows the user to authorize the use of the keys stored on the device. In PUF-based hardware wallets, the typical PIN or password replaces the challenge, and the data key replaces the physical system's response. The PUF hardware wallets disclosed herein can mimic the same functionality as existing hardware wallets, but do not store the master key on disk, or at least not in the clear. This protects against physical attacks on the storage medium, to which hardware wallets are still subject to some degree of compromise.

[0017] To facilitate an understanding of embodiments of the present disclosure and to show how such embodiments may be carried into effect, reference will now be made, by way of example only, to the accompanying drawings, in which: [Brief explanation of the drawings]

[0018] [Figure 1] FIG. 1 is a schematic block diagram of a system for implementing a blockchain. [Figure 2] FIG. 1 illustrates a schematic of some example transactions that may be recorded on a blockchain. [Figure 3] FIG. 1 illustrates an example of a PUF challenge and response scheme. [Figure 4] 1 is a schematic block diagram of a system including a PUF. [Figure 5A] 1 is a schematic block diagram of an extended PUF according to embodiments disclosed herein; [Figure 5B] FIG. 2 is a schematic block diagram of an extended PUF in a non-extended mode of operation. [Figure 6A] FIG. 1 is a schematic block diagram of a system with a PUF device for generating keys for use in a blockchain network. [Figure 6B] FIG. 10 is a schematic block diagram illustrating another embodiment of a PUF device. [Figure 7] 1 is a signaling diagram illustrating a first method according to an embodiment disclosed herein. [Figure 8] FIG. 10 is a signaling diagram illustrating a second method according to an embodiment disclosed herein. DETAILED DESCRIPTION OF THE INVENTION

[0019] The robustness of systems such as key generation systems and privacy-preserving identity systems, both to humans and machines, can be improved by the involvement of Physically Unclonable Functions (PUFs), which may be interacting parties and / or autonomous machines, or public systems such as blockchains.

[0020] These functions are based on physical systems and guaranteed by the assumption that there are random, undeterminable, and unrepeatable variations in the manufacturing of physical devices, and can be used to strengthen the link established between a person's identity and their device, or even to establish an unforgeable, unique identity of the device itself.

[0021] In the literature, PUFs are classified into weak and strong types, which are classified according to their different characteristics. In some embodiments below, a generalized extended PUF (ePUF) framework is also provided to describe practical PUF devices that have the advantages of both of these types of PUFs. That is, ePUFs can generate a large range of challenge-response pairs for use in applications while remaining practical and cost-effective for implementation.

[0022] 1. Physically Unclonable Function (PUF) - Introduction The term Physically Unclonable Function (PUF) refers to a class of physical systems and devices that act as universal probability functions. These PUFs are uniquely characterized by their physical properties, often on the submicron scale, which can be uniquely identified and verified by probing those properties with physical stimuli. At a high level, a PUF can be thought of as a function that maps a challenge to a response, the pair often referred to as a challenge-response pair (CRP). Notation F:C->R∀(C,R)∈Φ F We can write such a mapping F using C and R represent the challenge and response, respectively, and Φ F is the set of all challenge-response pairs of the form (C, R) that can be generated by the PUF.

[0023] The unique physical properties of a PUF are typically the result of random process variations inherent in the manufacture of a physical device, such as a silicon chip. Assumptions typically made about PUFs are: 1. The parameters of a physical system are difficult to completely determine by any form of analysis. 2. The parameters of the physical system are unknown to any party, including the original manufacturer of the device used as the PUF. This assumption is often referred to as manufacturer-resistance.

[0024] These assumptions allow a PUF to be used to generate an unpredictable yet deterministic response to any challenge. In this challenge-response process, we treat the PUF like a physical black box, as illustrated in Figure 3.

[0025] 3 shows a PUF 302 modeled as a physical black box. A submitter 103S submits a challenge C as input to the PUF 302, and in response, the PUF 302 generates a corresponding response R. The submitter submits the challenge from a device, such as the submitter's computing device (not shown), which may be the same or a different device than the device on which the PUF 302 itself is implemented.

[0026] The presenter 103S may be the party that generates the challenge-response (CR) pair as part of a setup phase (examples provided below) to establish a set of expected responses linked to the identity of a target party or device, or the presenter 103S may be a verifier that submits a challenge in a later verification phase to verify that the generated responses match the expected responses, thus validating the identity of the target device containing the PUF 302 or the target party in possession of the PUF.

[0027] In another example scenario, the submitter 103S may be a party that wishes to use the generated response as a key or a seed for generating a key for use in a cryptographic application, such as a blockchain application (e.g., to sign a blockchain transaction).

[0028] FIG. 4 illustrates a system with an example of an interface to a PUF 302. The system includes a processor 402 and the PUF 302. The interface includes interface logic 404 stored in memory and configured to execute on the processor 402. The memory in which the interface logic 404 is stored may include one or more memory units employing one or more storage media (e.g., magnetic media such as magnetic disks or tapes, or electronic media such as ROM, EPROM, EEPROM, flash memory, SRAM, DRAM, etc.). The processor 402 may include one or more processing units (e.g., a general-purpose processor such as a CPU, or an application-specific or accelerator processor such as a GPU, DSP, or cryptoprocessor). It is also not excluded that the interface logic 404 could instead be implemented partially or entirely in dedicated hardware circuits or configurable or reconfigurable circuits such as PGAs or FPGAs.

[0029] The submitter 103S uses a device (not shown) to submit a challenge C to the PUF 302 via the interface logic 404. The device used by the submitter 103S can be, for example, a computing device, either an external computing device or the same computing device in which the processor 402 is implemented. The PUF 302 then returns a corresponding response R to the submitter 302's device via the interface logic 404. In some embodiments, described in more detail below, the interface logic 404 may include access control logic 406 that restricts access to the PUF 302 to only certain parties, e.g., parties capable of presenting recognized credentials such as a password, PIN, or biometric information. And / or the physical interface to the device comprising the processor 402 may be restricted, such as by being located in a room or complex to which only authorized personnel have access, or by being kept in a locked box or cabinet. However, in alternative systems, the interface logic 404 may be made available for any party to query with a challenge.

[0030] The PUF's challenge-response process allows for the generation of pseudo-random data values ​​by deriving these challenges from selected responses. For example, a PUF can be used as a key generator to derive random, reproducible data to be used in cryptography. Note that the PUF 302 works in a deterministic and reproducible manner, such that the PUF will produce the same response when given the same challenge on multiple separate occasions.

[0031] There are many different physical systems that can be used as PUFs, and many different implementations of PUFs that use these systems. An illustrative example of a PUF is an optical medium containing gas bubbles, which, when probed with a laser, produces a response diffraction or "speckle" pattern that is deterministically determined by (i) the position of the laser, and (ii) small-scale parameters of the optical medium.

[0032] 1.1. Classes of PUFs 1.1.1 Weak PUFs: Weak PUFs are characterized by having a small challenge-response space, often with a CRP space size of |Φ F , where n is the number of components in the PUF that are subject to uncontrollable manufacturing variations.

[0033] For weak PUFs, it is also typically assumed that access to the PUF's responses is restricted. This is because the number of CRPs served by a weak PUF is small, so an adversary could enumerate all such pairs in a reasonable amount of time, thus mimicking or "spoofing" the PUF's behavior. This restriction is sometimes referred to as a restricted challenge-response interface when describing the behavior of a weak PUF.

[0034] These properties make weak PUFs most naturally suited for use in cryptographic applications as key generators, where one (or a few) CRPs generated by a PUF may be used as a secret key for a cryptographic operation, such as encrypting on-device non-volatile memory (NVM) or using it as an HMAC symmetric key. In such cases, the key derived from the PUF's response must be kept secret and known only to the device owner for the security of both the cryptographic process being performed and the PUF itself.

[0035] A prominent and widely implemented example of a weak PUF is the SRAM PUF, where the term "SRAM" refers to "static random access memory." SRAM PUF designs exploit the variability in the "power-on" state of an SRAM chip, such that each SRAM cell within the chip has a unique fingerprint due to the variability in being in either the "0" state or the "1" state when the chip is powered on.

[0036] In this case, the PUF configuration is considered weak because there is one fixed mode for probing the PUF (i.e., by powering up the SRAM chip) and therefore only a single CRP. In this case, the unique "challenge" is to power up the SRAM chip, and the response is a unique fingerprint derived from its power-on state. Access control to ensure confidentiality of the response can also be implemented using existing memory access control policies or mechanisms in place on the device where the SRAM PUF is used, or alternative mechanisms employed on the device.

[0037] A feature of some PUF implementations, such as in the case of SRAM PUFs, is the use of error correction in the responses generated by the PUF to ensure that the same challenge results in the same response in a condition- and time-invariant manner. Details of such error correction techniques are known to those skilled in the art. In some cases, the error correction process may require that the PUF device be initially "registered" to provide a source of helper data that is combined with later-generated responses on demand to facilitate error correction.

[0038] 1.1.2. Strong PUFs: In contrast to weak PUFs, strong PUFs are characterized by having a large space of possible challenge-response pairs (CR-pairs, or CRPs) that can be exploited. This large space of CRPs means that it is considered impossible for an adversary to enumerate all of the challenge-response pairs in the domain of a strong PUF in polynomial time. This property means that strong PUFs can generally have an unprotected challenge-response interface, since even if an adversary has free access to the PUF, this does not compromise security by allowing enumeration and spoofing of the PUF, as is the case with weak PUFs. This class of PUFs is characterized by Φ F It is also said to produce responses that are unpredictable even from the perspective of an adversary who knows a large subset of , which means that a strong PUF performs more like a cryptographic hash function with a large domain.

[0039] However, a strong PUF is constrained such that when presented with a challenge C, only a response R should be given by the PUF, and no other information about the PUF's internal workings or operation should be leaked in the process. This constraint mitigates various analytical attacks in which an adversary may attempt to characterize the physical system underlying the PUF's behavior. These are often referred to in the literature as modeling attacks.

[0040] Similar to weak PUFs, some strong PUF configurations may rely on error correction techniques to ensure the accuracy of the responses generated by the device.

[0041] The primary existing application of strong PUFs is to facilitate system authentication and identification using unique challenge-response mechanisms. These mechanisms rely on protocols that directly involve the creation of a CRP as a shared secret between two parties, often requiring at least one party to generate a table of CRPs prior to the time they are used as authentication tokens for the other party (initial setup).

[0042] One of the earliest examples of a strong PUF implementation was the optical PUF system. In this configuration, the PUF contains an optical medium containing randomly distributed physical defects resulting from manufacturing variations that scatter incident light. The PUF can be probed by a laser beam directed at the optical scattering medium. In this case, the direction and polarization of the incident beam form the challenge, and the observed scattering pattern is taken as the PUF's response.

[0043] However, this strong PUF configuration is complicated to implement due to the fact that the measurement device is separate from the rest of the PUF device and difficult to directly integrate with semiconductor components. This adds to the cost associated with the device itself, and the lack of portability of the configuration reduces its practicality for everyday use.

[0044] An electrically integrated strong PUF, known as an Arbiter PUF (APUF), has since been proposed that overcomes some of these issues. This configuration utilizes signal multiplexing to exploit runtime delays in the electrical components. Many other strong PUF configurations have been proposed in parallel, but many lack practical suitability for widespread use, and many have associated weaknesses in terms of security and potential attack vectors. For example, a highly problematic potential attack is the man-in-the-middle attack, where an attacker can intercept a challenge submitted in plaintext and spoof the guarantee calculation.

[0045] 1.1.3. Controlled PUFs: A third class of PUFs, known as controlled PUFs (CPUFs), are improvements on existing strong PUF constructions but use them as building blocks. These PUFs take strong PUFs and apply additional control logic that restricts access to the PUF, distinguishing them from uncontrolled strong PUFs that may otherwise have an unprotected challenge-response interface.

[0046] 4, the control logic 406 applied to the PUF, now part of a larger PUF device, can mediate access to the PUF 302 itself. This means that the control logic component 406 can restrict which challenges are presented to the PUF and also control how subsequent responses are revealed to the user.

[0047] In a CPUF configuration, the control logic component 406 should preferably be embedded within or wrapped by a strong PUF component. According to one definition of a CPUF, a PUF is said to be controlled if it can only be accessed through an algorithm that is physically linked to the PUF in an inseparable way (i.e., attempts to circumvent the algorithm lead to the destruction of the PUF). This embedding should make probing of the control logic significantly more difficult.

[0048] This establishes a mutually beneficial relationship between the PUF component and the control logic component such that each mitigates certain attacks against the other: encapsulating the control logic within the PUF device itself protects the control logic from physical or invasive attacks that would irreparably corrupt the PUF component and alter its responses, while the control logic naturally protects the PUF component from protocol-level attacks that extract CRP or other information about the internal physical system underlying the PUF itself.

[0049] The uses of CPUFs are largely the same as for strong PUFs, but can be achieved in a more robust manner. In particular, guaranteed computation and execution proofs can be easily achieved with the protocols outlined above.

[0050] Early examples of CPUFs, which extended the design of strong arbiter PUFs (APUFs), required the control logic to be intertwined with the APUF itself in the manner already described, with the control logic and APUF mutually protecting each other from different types of attacks. The control APUF design generates a large set of CRPs from a single static response from an integrated circuit (IC) by incorporating the transient response of the system.

[0051] Another known example of a controlled PUF is the PUF-FSM configuration, which includes a strong PUF (actually an APUF) together with a finite state machine (FSM) that acts as the control logic that restricts access to the challenge-response interface of the APUF component itself.

[0052] Discussion Practicality: It is acknowledged in the literature that it is extremely difficult to create a strong PUF that is practical and lightweight, yet can be integrated with standard complementary metal-oxide semiconductor (CMOS) components. In contrast, weak PUFs, such as SRAM PUFs, may be trivially inexpensive to create and can be combined with integrated circuit architectures.

[0053] 1.2.2 Attacks against PUFs: There are many different attacks that have been proposed and studied, and different attacks may target specific PUF configurations or classes. Some of the most widely known attack types are listed below. MITM attacks - These attacks target strong PUFs without the PUF's control, allowing an adversary to intercept challenges made in plaintext in order to forge or spoof the PUF's response, especially when used for guarantee calculations. Modeling attacks - These attacks demonstrate vulnerabilities to many strong PUF constructions, such as APUF. Chosen Challenge Attacks - These attacks also affect strong PUFs and are part of the motivation for moving towards CPUF architectures.

[0054] Additionally, various PUF designs have other issues, such as a lack of uniqueness in some cases, which allows for exploitation that undermines the security of the PUF system in question.

[0055] 1.2.3 Security Models,The security models for PUFs tend to share some similarities,,such as the assumption that random process or manufacturing,variations that CRPs incur are manufacturer-resistant,,and that the physical system of a PUF is difficult to characterize,by analytical means.,However, there are also some differences between the security,models of the three major PUF classes. Weak PUFs - The security of a weak PUF relies on the assumption that its CRP is kept secret, otherwise the device can be enumerated and impersonated. This means that a weak PUF can be used to provide a source of entropy for cryptographic operations and secure storage of that entropy, but the actual CRP response data itself is not publicly revealed in the process. Strong PUFs - The security of a strong PUF relies on the fact that its CRP space tends to grow exponentially with the number of challenge bits, and therefore enumerating the entire space is infeasible within a reasonable timeframe. This means that a strong PUF's CRP response can be revealed by a device, unlike a weak PUF's. Controlled PUF - The security of a controlled PUF is determined by the combination of the control logic, which protects against protocol-level attacks, and the PUF itself, which protects against physical attacks.

[0056] Two properties distinguish strong PUFs from weak PUFs: First, a strong PUF has a large set of CRPs, which means that a strong PUF can solve a large challenge space Φ F, a weak PUF typically only has one (or a few) available challenges. A strong PUF is also considered unpredictable with respect to any and all known CRPs. In other words, knowledge of any number of CRPs is not advantageous in predicting the response to a new challenge.

[0057] Second, a strong PUF can have an unprotected challenge-response interface. The assumption is made that a given strong PUF does not require access control logic to restrict access to the challenge-response interface. This means that any party with physical access to the PUF can arbitrarily apply challenges and obtain responses without revealing any additional information about the PUF or its physical properties.

[0058] A controlled PUF has a protected challenge-response interface, but also has a large challenge-response space like a strong PUF.

[0059] 2. Enhanced PUF (ePUF) Next, we disclose systems and methods for extending the challenge-response (CR) space of a PUF by generating multiple secondary CR pairs from a given CR pair of the base PUF 302. This may be referred to herein as an “extended PUF,” or “ePUF.” This concept can also be used, for example, to expand the challenge-response space of a weak PUF that has only one or a limited number of unique CR pairs, without the complexity or impracticality of typical strong PUF mechanisms (such as optical PUFs, which require lasers, optical media, and sensors). However, in principle, the disclosed techniques can also be used more generally to extend the number of CR pairs of any base PUF, whether weak, strong, controlled, or otherwise, or to transform the CR pairs of any PUF for other purposes, such as obfuscation or reusability.

[0060] 5A illustrates an enhanced PUF (ePUF) 500 according to an embodiment disclosed herein. The ePUF 500 includes a constituent-based PUF 302, which may be, for example, a conventional weak PUF. The ePUF 500 further includes a transformation function 502, for example, a hash function such as a cryptographic hash function (e.g., SHA256). The ePUF 500 also includes interface logic 404′, which may be similar to the interface logic 404 described in connection with FIG. 4 but with additional interface functionality. The interface logic 404′ and the transformation function 502 may be implemented in software, for example, embedded firmware, stored in memory and configured to execute on a processor 402 (as shown in FIG. 4 but performing the additional functionality of the interface 404′ and the transformation function 502). The memory in which the interface function 404′ and the transformation logic 504 are stored may include one or more memory units employing one or more storage media (e.g., magnetic media such as magnetic disks or tapes, or electronic media such as ROM, EPROM, EEPROM, flash memory, SRAM, DRAM, fuse latches, etc.). The processor on which they execute may comprise one or more processing units (e.g., general-purpose processors such as CPUs, or application-specific or accelerator processors such as GPUs, DSPs, or cryptoprocessors). It is also not excluded that the interface logic 404′ and / or the transformation function 502 may instead be implemented partly or wholly in dedicated hardware circuits, or in configurable or reconfigurable circuits such as PGAs or FPGAs.

[0061] The interface logic 404′ is operatively coupled to the transformation function 502 and optionally to the base PUF 302. The base PUF 302 is operatively coupled to the transformation function. The interface logic 404′ is configured to receive input from and provide output to a device (not shown in FIG. 5A ) of the submitter 103S, e.g., a computing device, which may be the same device in which the ePUF 500 is implemented or an external device. The submitter 103S may be the party that uses the ePUF 500 to perform setup and generate a set of challenges and expected responses to be linked to an identity for future reference, or it may be a verifier (or a challenger that generates a response to provide to a verifier) ​​that later uses the PUF to verify whether the generated responses match previously established expected responses. In another exemplary application, the submitter 103S may use the ePUF 500 to generate responses for use as keys or as a seed for generating keys. For example, it could be used as a cryptographic key to encrypt or sign messages, e.g., to sign part of a blockchain transaction.

[0062] The base PUF 302 is operable to generate as an output a “primary” response Rw in response to receiving as an input a “primary” challenge Cw. A “primary” challenge-response (CR) pair herein refers to the base or “native” (i.e., unique) CR pair of the base, configuration PUF 302. In some embodiments, the base PUF 302 may be capable of generating only a single base (i.e., primary) response Cw in response to a single challenge Cw, like a weak PUF.

[0063] In operation, the interface logic 404′ receives challenge data (challenge input) from the submitter 103S device, including at least one “secondary” challenge Ci. In addition, a primary (base) challenge Cw is input to the base PUF 302 to generate a primary (base) response Rw. In an embodiment, the submitter 103S must include the base challenge Cw in the challenge data input to the ePUF 500, and the interface logic 404′ routes this to the base PUF 302 to generate the primary response Rw. However, in other embodiments, it is not excluded that the primary challenge Cw be input to the base PUF 302 from an internal source, such as a memory, a fuse latch, or a dedicated circuit. In any case, the transformation function 502 is arranged to receive as input: a) the secondary challenge Ci as received in the input challenge data from the submitter, and b) the primary response Rw as generated by the base PUF 302. The transformation function 502 is a function configured to deterministically map these combinations onto a unique respective "secondary" response Ri corresponding to the particular combination of Ci and Rw input to the transformation function 502. The secondary challenge-response pairs may be referred to herein as "secondary" in the sense that they are layered on top of the primary (base) CR pair, which is generated in part based on the primary response Rw. These may also be referred to as "extension layer" or "supplemental" challenges and responses.

[0064] In an embodiment, the transformation function 502 comprises a hash function, e.g., a cryptographic hash function such as a SHA or DSA hash function. There are at least two different ways in which the hash function can be used. First, the transformation function 502 comprises a hash of a preimage, where the preimage comprises a combination (e.g., concatenation) of the received secondary challenge Ci and the generated primary response. That is, Ri = H(Ci | |Rw). Or, more generally, the preimage may include other elements as well and / or another form of combination other than concatenation.

[0065] In a second alternative approach, the transformation function 502 includes a hash of a preimage, where the preimage includes the received secondary challenge, and the hash function is initialized with the generated primary response. That is, Ri = H(Ci), where H is initialized by Rw. Or, again more generally, the preimage of H can include other elements as well, as long as it includes at least Ci. Initialization by Rw means that the mapping of the preimage to the output defined by the hash function H itself depends on Rw.

[0066] In the previous case, the mapping of preimages to outputs caused by H does not depend on Rw; rather, the preimages depend on Rw. That is, in the previous paragraph, the preimages depend on Rw, while in this paragraph, only H depends on Rw.

[0067] More generally, however, in principle, any function can be used as long as it deterministically and uniquely maps combinations of Ci and Rw to respective values ​​of Ri for each possible Ci in the domain accommodated by ePUF500.

[0068] The secondary challenge Ci can take on any of a number of different possible values, and the conversion function 502 maps those values ​​to respective values ​​of the secondary response Ri based on the particular received value of the secondary challenge Ci and the value of the primary response Rw. Thus, the ePUF 502 can extend the CR space of a given primary (base) CR pair to multiple secondary CR pairs. In an embodiment, Ci can take on any value within the range of values ​​supported by the variables used (e.g., for a 32-bit integer, 2 32 can take one of the following values).

[0069] In some embodiments, the ePUF 500 may be capable of operating in an alternative mode of operation, as shown in FIG. 5B. In this case, the interface logic 404′ detects that the input challenge data includes only a primary challenge—Cw. In response, it routes the received value of Cw to the base PUF 302 and routes the resulting primary response Rw to the submitter 103S device. In other words, in this embodiment, the ePUF 500 may also operate in a “legacy” or “non-enhanced” mode.

[0070] Optionally, depending on the application, the interface logic 404' may include access control logic 406 that restricts access to only a limited number of possible submitters 103S, such as by granting access only to parties that can present credentials (e.g., password, PIN, or biometric input) that it recognizes as being mapped to an authorized party. In this case, the ePUF 500 may also be considered a form of CPUF.

[0071] Alternatively, the physical interface to the ePUF 500 may be legally or physically protected, such as by keeping the device with the ePUF 500 in a room or premises that only a limited set of parties are allowed access to, or by keeping it in a locked box, cabinet, or room, in which case the ePUF 500 can be thought of as a kind of extended weak PUF.

[0072] As an alternative to, or in addition to, such physical restrictions on the interface to the PUF, access may be restricted by limiting access to the primary challenge. For example, the target party 103T ("Alice," described below) may be the only party that knows Cw.

[0073] However, as another alternative, access to the interface logic 404′ may not be restricted, e.g., any party may freely inquire via the Internet. In this case, the ePUF 500 may be thought of as a kind of strong PUF 502 created by extending the weak base PUF mechanism.

[0074] The arrangement shown in FIG. 5A provides a new hybrid class of PUF device, referred to herein as an enhanced PUF (ePUF), which can be generally used as a framework for many applications, as presented later.

[0075] 5A , which together include three modules: a base PUF 302, such as an inherently weak PUF; a transformation function 502, such as a cryptographic hash function; and an interface logic module 404′. As described, the ePUF 500 may be “extended” with respect to the regular PUF 302 by introducing a transformation function 404′, such as a cryptographic hash function, which provides a unique challenge space Φ F The size of |Φ for the weak PUF302 based on F From about |1, the weak PUF is constrained instead by the choice of hash function rather than the physical system |Φ F |>>Because it increases to 1.

[0076] The idea of ​​realizing a system that combines the large CRP space of a strong PUF with the practicality of a weak PUF has itself been explored before. It is known to use multiple FPGA-based weak PUFs in combinatorial operation to form a system with the characteristics of a strong PUF. The intention here is, in part, to "extend" the CRP space of the base weak PUF. However, existing configurations of this nature are limited in practice. In the case of the FPGA design mentioned above, the system must be built on an FPGA, which still requires a relatively low CRP space (approximately 2 10) is affected.

[0077] The ePUF design disclosed herein is designed to be extremely lightweight, in that it only requires the addition of an interface logic component 404′ and a cryptographic hash function (or other such transformation function) 502 to an existing weak PUF 302. For example, if an SRAM PUF is selected as the widely used weak PUF 302, the addition of the two remaining modules 404′, 502 should not result in significant overhead and may be implemented, for example, as a small algorithm in software (e.g., firmware) or as a relatively simple hardware circuit. Furthermore, the space of possible outputs of the ePUF 500 extends to the range of the selected hash or transformation function 502, which is significantly larger than the above. For example, if the SHA-256 hash function is selected, the space of possible outputs (and therefore CRPs) immediately expands to 2 256 -1, eliminating the need to scale the hardware overhead beyond embedding the hash function module itself.

[0078] 5A shows a schematic design for an enhanced PUF (ePUF) 500. Embodiments in which a cryptographic hash function is used also mean that the ePUF 500 has the property that its CRP is unpredictable, which is also the case for strong PUF systems.

[0079] The control logic element 406 of the ePUF device can also be generalized in this configuration: the control logic 406 can simply be implemented as a physical security, similar to an SRAM PUF, for example, if this is appropriate for the application.

[0080] Alternatively, the control logic module 406 may be implemented as a software control module similar to that used with the CPUF, which is in fact embedded within the PUF device itself, providing the mutual security benefits of encapsulation previously described.

[0081] However, one point here that distinguishes this ePUF design specifically from CPUF designs is that there are no strict requirements for the control logic to be implemented in this way.

[0082] It is not necessarily assumed that an invasive attack on the control module 406 necessarily changes the behavior of the weak PUF component 302 in the ePUF design. Instead, the implementation of this element can be chosen on a case-by-case basis.

[0083] 2.1. Challenge and Response to ePUF A set of challenge-response pairs (C, R) ∈ Φ corresponding to the ePUF F can be defined as follows: Φ F ={(C w ,R w ),(C1,R1),(C2,R2),..., (C N ,R N )}, F:C i →R i , ∀i∈(1,N) F w :C w →R w where (C w ,R w ) is the privileged CRP corresponding to the base challenge response of the weak PUF 302, and the map F w is defined by a unique physical property of the weak PUF. The pair (Cw, Rw) is sometimes referred to herein as the base or primary pair of the ePUF. The map F is, in turn, defined by the cryptographic hash function selected for the ePUF. Figures 5A-5B illustrate extracting a response from an ePUF 500 where (Figure 5B) the challenge is only Cw and (Figure 5A) the challenge also includes Ci.

[0084] In some embodiments of the extended PUF, all challenges C i , i∈{1 ,2,...,N}, there is a base challenge C w must be accompanied by a base response R w is the response of all other responses R, as shown in Figure 5A. i is incorporated into the process for generating

[0085] The process depicted in Figure 5A for generating a generic CRP using ePUF can be used with any other challenge C i This base secret pairing is then extended by applying w ,R w The algorithm used to generate the CRP from the ePUF is designed to use base pairs (C w ,R w ) can be tailored to specific applications. A simple example of such an algorithm is denoted getResponse() and can be written as follows: getResponse() Input: Challenge 1. Get a challenge from the user / client. 2. Check if challenge==Cw i. If yes: 1. C w Weak PUF modules are probed with R w Get 2. Response←R w Set ii. If no: 1. Challenge to C w Components and C i Separation into components. 2. C w Weak PUF modules are probed with R w Get 3. C i and R w is sent to the hash function module. 4. hash(C i,R w ,H). 5. Response←hash(C i ,R w ,H). 3. Return the response. Output: Response

[0086] The function hash(C i ,R w ,H) is a generic function used to compute a hash digest using a cryptographic hash function H. The function hash() is simply H(C i ||R w ) or by simply calculating the value R w is used as the initial vector for the hash function H.

[0087]

number

[0088] In any case, the output of hash() is i and R w It depends on both.

[0089] The diagrams of Figures 5A and 5B show that the ePUF 500 may include interface logic 404', which optionally includes a control logic module 406. In an embodiment, there are two possible paths to take in generating a response, the path of Figure 5B being one in which the challenge is simply C w The path in Figure 5A is used when the challenge is w The new value C associated with i This is deterministic.

[0090] The disclosed ePUF design can be used to provide any of the following and / or other advantages. · A large CRP space defined by the domain and range of the selected hash function. · The flexibility to separate the control logic from the PUF itself. · Weak PUF security primitives.

[0091] This means that a user can use an ePUF device in the same way as a CPUF device, but controlled access to the PUF is restricted by (I) the base CRP (C w ,R w ) and (II) restricting physical access to the PUF device to only the intended user. In this model, w ,R w ) acts as a master key, from which the form (C i ,R i ) numerous other CRPs can be derived, C i may be submitted externally or by a third party.

[0092] 2.2. Applications of ePUF Possible applications (use cases) of ePUF devices can be broadly divided into at least two categories: 1. Linking an identity to an activity or computational operation; and 2. To act as a key generator for cryptographic operations.

[0093] Application (1) is most commonly implemented with existing strong PUFs, and application (2) is most commonly implemented with existing weak PUFs. The fact that ePUF configurations combine the properties of each can be handled equally well for either application. For application (1), the advantage is that it may be much easier to actually implement such an application using ePUFs than with the strongest or most controlled PUFs.

[0094] 3. PUF Device as Key Generator The idea here is to use the PUF response as a seed (i.e., master entropy) for a wallet application, such as an HD wallet, used for blockchain transactions. To use the wallet, for example, by regenerating a private key for signing transactions, the user needs two things: knowledge of the correct challenge to derive the response corresponding to the wallet's entropy, and physical control of the PUF device.

[0095] This concept can be used to create a new type of hardware wallet with the advantage that, unlike typical hardware wallets, the "keys" or source of entropy do not need to be stored on disk. In a regular hardware wallet, the keys are stored on the device, which is usually air-gapped and not connected to the internet at all. The owner then connects the device when they need to sign a transaction or transfer funds. There is also usually a password or PIN that allows the user to authorize the use of the keys stored on the device. In a PUF-based hardware wallet, the usual PIN or password is replaced with a challenge, and a data key is replaced with the response of the physical system.

[0096] The PUF hardware wallets disclosed herein can mimic the same functionality as existing hardware wallets, but do not store the master key on disk, or at least not in plain sight. This protects against physical attacks on the storage medium, to which hardware wallets are still subject to some degree of compromise. For example, a PUF-based wallet can be configured as "send-only" when the wallet is plugged into a computer to perform transactions. This means that the PUF device does not need to interface to a computer in the reverse direction. In embodiments, the PUF device can additionally perform ECDSA or other cryptographic operations on the device to create transactions ready for transmission.

[0097] 6A provides a schematic block diagram of an exemplary system according to one class of embodiments disclosed herein. The system includes a PUF device 600 and a computer 102.

[0098] The PUF device 600 comprises a PUF module 302 / 500, a controller 601, and a device-to-device interface 603 for connecting to the computer 102. Preferably, these components of the PUF device 600 are all integrated into the same self-contained housing (i.e., casing), which can be sealed or locked to prevent tampering. The PUF device 600 may also have its own built-in user interface (UI) 602 integrated into this housing. The UI 602 may comprise one or more user input means, such as, for example, a simple keypad or a dedicated touchscreen. The PUF device 600 may take the form of a dedicated box or dongle, or other such peripheral device with dedicated functionality for generating responses to instantiate a wallet application.

[0099] The computer 102 may have any suitable form, including one or more computer terminals or units. For example, it may take the form of a desktop, laptop, tablet, smartphone, or even a wearable computer such as a smartwatch or smart glasses. The computer 102 may also take any form, for example, as described below with respect to FIG. 1. In an embodiment, the computer 102 may be located within a larger system, as will be briefly described in connection with FIG. 1. The computer 102 has installed thereon a wallet application 605, which is similar to the wallet application 105 described below with respect to the general system of FIG. 1, but with additional specific functionality that can be instantiated based on responses from the PUF device 600, as will be briefly described with reference to FIGS. 6A and 7. The computer 102 also includes a network interface 606 for connecting, directly or proxied through an intermediary, to the blockchain network 106 to submit transactions 152 for recording on the blockchain 150 (as will be described again in more detail below). This connection may be via one or more underlying network infrastructures (e.g., the Internet) overlaid on the blockchain network 106. For example, the network interface 606 may comprise a Wi-Fi transceiver for connecting to a wireless router and then to the Internet, or a mobile cellular transceiver for connecting to the Internet via a mobile cellular network, or a wired modem for connecting to the Internet via a telephone line, optical fiber, etc.

[0100] The device-to-device interface 603 / 604 may preferably be a direct local interface, which herein means not connected via any network to which any third device can simultaneously connect. The local interface may be a wired, non-networked interface. For example, in an embodiment, the device-to-device interface 604 of the computer 102 may be a USB port or a serial port, and the corresponding device-to-device interface 603 of the PUF device 603 may include a USB plug or a serial port connector, respectively. As another example, the device-to-device interface 603 of the PUF device 600 may include a screen configured to display the output response R in a graphical format, such as a barcode or QR code, and the device-to-device interface 604 of the computer 102 includes a camera or a scanner for reading the graphical format of the response R from the screen. The possibility of a directly paired RF interface, such as a Bluetooth connection, or a networked connection, such as via WLAN, is not excluded, although these options may offer more opportunities for eavesdropping depending on the scenario in which the PUF device 600 is deployed.

[0101] In an embodiment, the PUF device's inter-device interface 603 is configured as a unidirectional interface (transmit-only) that only allows data to be output, not input, from device 600. In an embodiment, UI 602 is the only means of inputting data into PUF device 600 (other than by disassembling the housing).

[0102] Within PUF device 600, controller 601 may take the form of a piece of code (software, e.g., firmware) stored in an embedded memory of PUF device 600 and configured to run on an embedded processor of PUF device 601. The embedded memory may comprise one or more memory units, which may employ any one or more suitable memory media, such as electronic memory, such as ROM, EPROM, EEPROM, flash memory, or static or dynamic RAM, or magnetic media, such as magnetic disks or tapes. The embedded processor may comprise any one or more processing units, which may take any suitable form, such as, for example, a general-purpose processor, such as a CPU, or an application-specific processor, such as a GPU, DSP, or cryptographic processor. In other embodiments, controller 601 may even be implemented in the form of dedicated hardware circuitry, or a configurable or reconfigurable circuit, such as a PGA or FPGA, or any combination of software and hardware.

[0103] In operation, the controller 601 receives an input challenge from the user 103. In embodiments, this is entered through the built-in UI 602, e.g., the user enters a code or mnemonic phrase. For example, the UI 602 may include a numeric keypad, so that the user enters the challenge numerically, or the UI 602 may include a character keypad for the user to enter the challenge in the form of a mnemonic phrase, such as a BIP32 mnemonic phrase, which the controller 601 converts to numeric form for input to the PUF module 500 / 302 (the mnemonic phrase option may be more appropriate if the PUF module takes a longer form of input challenge, such as a 256-bit challenge). In other embodiments, it is not excluded that the input challenge may be provided from another device via the PUF device 600's (or another) device-to-device interface 603. In any case, the controller 601 forwards this input challenge C to the PUF module 302 / 500, which in response generates an output response R. The controller 602 then forwards this response to the wallet application 605 on the computer 102 via the respective inter-device interfaces 603, 604.

[0104] In an embodiment, the PUF module in the PUF device 602 may be comprised of the enhanced PUF (ePUF) 500 described above in connection with FIG. 5A. In this case, the input challenge C input to the PUF module 500 of FIG. 6A is a secondary challenge C, and the output response R is a secondary response R. The interface logic 404′ provides the primary challenge C to the actual PUF 302 and provides the secondary challenge C to a conversion function 502. The conversion function 502 takes this and the primary response R of the PUF module 302 as inputs and maps the combination to a secondary response R. The interface logic 404′ then outputs this secondary response R as the output response R of the PUF module 500. The wallet application 605 then uses the output response R to determine a seed (i.e., a master key or parent key) and instantiates itself based on this seed (as described in more detail below).

[0105] However, in an alternative embodiment, the PUF module in the PUF device may simply be a plain PUF 302. In this case, the input challenge C and output response R used to instantiate the wallet application 605 are simply the primary CR pair (i.e., the base or unique CR pair) of the PUF 302.

[0106] Preferably, the PUF module 500 / 302 provides the capabilities of a strong PUF, i.e., the ability to map multiple challenge-response pairs, with the input challenge C and output response R used to instantiate the wallet application 605 forming one of multiple CR pairs. In the case of the ePUF 500, the PUF 302 may itself be a weak PUF, but the ePUF 502 extends its weak capabilities to enable it to generate multiple secondary challenge-response pairs from a single primary challenge-response pair Cw, Rw. Thus, the ePUF 500 behaves like a strong PUF overall. In this case, the input challenge C and output response R used to instantiate the wallet application 605 are one of the secondary pairs. However, alternatively, in embodiments in which the PUF module is itself simply the PUF 302, this PUF 302 may be a strong PUF with multiple primary CR pairs, with the pair used to instantiate the wallet application 605 being one such pair. While the possibility of simply using a weak PUF is not precluded, the advantage of a strong PUF is that if the user 103 loses their wallet, a malicious party who discovers it will not be able to determine which challenge needs to be used to generate the response required for the wallet application 605 to use the instantiated seed.

[0107] Whatever form the PUF module 302 / 500 takes, to determine the seed used to instantiate the wallet application 605, in embodiments, the output response R may simply be used as is (unconverted) as the seed if it is already the same length (i.e., bit length minus number of bits) as the type of seed used by the wallet application. Alternatively, a transformation can be applied to convert the output response R into a seed. For example, if the seed length used by the wallet application 105 is different from the length of the response R output by the PUF module 302 / 500, the wallet application 605 may need to apply a transformation to fit the length of the response R, e.g., from 256 bits to 128 bits. Examples of such transformations include hash functions (functions that output a fixed-length value regardless of the length of the input), functions that truncate or pad the output response R, functions that take every n-bit from the output response R, etc.

[0108] However the seed is determined from the output response R (either directly or via a transformation), this seed may be used as a master or parent key to derive at least one child key for signing one or more blockchain transactions 152 for recording on the blockchain 150 (see, e.g., FIG. 1, described in more detail below). Various child key derivation functions for deriving child keys from parent keys are themselves known in the art.

[0109] Before doing this, the wallet application 605 is first "instantiated" with a seed. This means that a portion of the computer 102's memory associated with the wallet application 105 stores information that can later be used to verify that the user has the right to use the seed (i.e., the seed can be used to generate one or more child keys for cryptographically signing transactions, etc.). This piece of information is at least one of two things: A) a one-way transformation (e.g., a hash) of the seed or the response from which the seed is determined, or B) an encrypted version of the seed or response. The former (A) is sometimes called a "certificate" for the seed or response.

[0110] In case A), when generating the response R used to initially instantiate the wallet application 105, the user memorizes or stores the corresponding input challenge C that was entered into the PUF device 600 to generate the response R. Storing here can mean writing it down on paper or storing it digitally either on the computer 102 or another device (e.g., a separate personal device such as a phone or smartwatch). The user can remember or store the challenge in the form of a convenient mnemonic, such as a BIP32 mnemonic that can be mapped back to the numeric form of the challenge.

[0111] Subsequently, when the user 103 wishes to sign a blockchain transaction 152, he / she recalls or retrieves the code from his / her brain, paper, or digital storage and inputs it back into the PUF device 600 (e.g., via the built-in UI 602), regenerating the same response R that was generated at the time of instantiation. In some embodiments, this may involve mapping the phrase back to a numeric value and inputting that value via the UI 602, or inputting a mnemonic phrase into the UI 602 that the controller 601 maps back to a numeric challenge. By whatever means, the challenge is re-entered, which causes the controller 601 to again output the response R to the wallet application 105 on the computer 102 via the device-to-device interfaces 603, 604. In response, the wallet application 605 applies the same transformation (e.g., hash) that was used to generate the original certificate from the time of instantiation and compares the result with the stored certificate. If they match, this indicates that the user possesses the same PUF device 600 and challenge C used during instantiation, and therefore the currently existing user can be trusted. The wallet application 605 then enables the user to derive at least one child key using the newly determined seed from the recently generated response instance, which the user can use to sign one or more blockchain transactions 152 for recording on the blockchain 150.

[0112] In case A), neither the response R nor the seed is stored in any form on the computer 102, and preferably not actually stored anywhere (they are deleted from the computer 102 after the certificate is generated). Thus, only the party who owns the PUF device 600 and can remember the original challenge C can use the seed.

[0113] In a less preferred variation, the user 103 can memorize, write down, or store the response R or seed and enter it directly into the wallet application 605 without regenerating it from the PUF device 600. However, this is less secure because the user does not need to have the PUF device 600 in their possession to generate the key if what they memorized, wrote down, or stored is compromised.

[0114] In case B), instead of a certificate such as a hash, an encrypted version of the response or seed is stored in a portion of the computer 102's memory in association with the wallet application 605. The wallet application 105 also determines a password or code that will allow the response or seed to be decrypted and provides this to the user through the computer 102's UI (e.g., on-screen or audibly). The user then memorizes, writes down, or digitally stores this password or code (either on the computer or another device, e.g., another personal device such as a phone or smartwatch). Thereafter, when the user wants to use the seed to sign a transaction, the user enters the password or passcode into the wallet application 605 through the computer 102's UI. In some embodiments, the password / code may be the decryption key itself that the wallet application 605 uses to decrypt the response or seed. Alternatively, the password or code may be separate data that the wallet application stores in association with the decryption key, releasing the decryption key if the user-specified password / code matches the stored password / code (or its certificate). The wallet application 605 then uses the released key to decrypt the response or seed, and based on this, enables the user to use the seed to derive at least one child key for signing one or more blockchain transactions 152.

[0115] Optionally, the user 103 may also be required to provide a response or seed to the wallet application. They may do this by memorizing, writing down, or digitally storing the original challenge C and re-entering it into the PUF device to recreate the response R. Alternatively, in less secure use cases, the response R or seed may be memorized, written down, or digitally stored. In either case, the wallet application 605 can verify that the decrypted version of the response or seed matches the version currently provided by the user 103 (e.g., based on the instance of the challenge currently being re-entered into the PUF device 600).

[0116] Preferably, neither the response R nor the unencrypted (in-the-clear) version of the seed is stored on the computer 102 or anywhere in fact (they are deleted from the computer 102 after the encrypted version is generated).

[0117] Regardless of which approach (e.g., A or B) is used to verify the right to use the seed, once the child key is derived and the blockchain transaction 152 is signed with it, the wallet application 600 can submit the signed transaction for recording on the appropriate blockchain 150. The computer 102 further includes a network interface 606 for this purpose, such as a Wi-Fi transceiver or a wired modem. The computer 102 can submit the signed transaction directly to one of the nodes 104 of the blockchain network 106 (see FIG. 1 ) for the node 104 to propagate the transaction throughout the network. Alternatively, the computer 102 can submit the transaction to the node 104 through one or more intermediate parties. For example, the signed transaction could be a template transaction signed by Alice 103a, but with some portions that need to be completed by Bob 103b before being broadcast to the blockchain network 106. In this case, Alice 103a adds her signature and sends the signed template to Bob 103b to add Bob's part, after which Bob can forward the completed version of the transaction to node 104 in the blockchain network 106.

[0118] Figure 7 is a signalling diagram illustrating an example of how wallet operations are external to the PUF device 600 as in Figure 6A. Steps S1 to S6 are performed in a setup phase 701, and steps T1 to T6 are performed in a subsequent payment phase 702.

[0119] At the start of the setup phase 701, in step S1, the user 103 selects a random challenge in the form of a mnemonic phrase that maps to a numeric value of a particular bit length, such as 256 bits. In step S2, the user 103 inputs the challenge into the PUF device 600 via the built-in UI 602. For example, the UI 602 may include a character keypad, and the user may input a phrase of their choosing. The controller 601 of the PUF device 600 then provides the input challenge to the PUF module 500 / 302. In an embodiment, the controller 601 may convert the challenge from mnemonic form to numeric form before inputting it to the PUF module 500 / 302.

[0120] In step S3, in response to the input challenge, the PUF module 500 / 302 outputs a corresponding response, which the controller 601 forwards to the wallet application 605 on the computer 102 via the respective inter-device interfaces 603, 604. In step S4, the response is converted into a seed, for example, by generating a seed of a fixed seed length from responses of different lengths. Alternatively, the response can be used directly as the seed, provided that it is in a format suitable for the key derivation algorithm being used.

[0121] In step S5, the wallet application 105 is instantiated with the determined seed, for example, by storing a certificate such as a hash of the seed, or by storing an encrypted version of the seed. Preferably, neither the seed nor the response itself is stored, or at least not in plain sight. In step S6, the user securely “stores” the challenge used to generate the seed-determined response. In embodiments, this may involve the user memorizing the challenge mentally (e.g., in mnemonic form), writing it down by hand, or digitally storing it (perhaps on a device separate from the computer 102, such as a separate phone or wearable device, or on a memory key that can be kept in a locked safe or storage box).

[0122] Thereafter, in step T1 of the payment phase 702, the user 103 retrieves the stored challenge, for example by recalling it from memory or reading it from a written or digital storage where it was kept. In step T2, the user re-enters the challenge into the PUF device 600 to have a response regenerated and output to the wallet application 605 in step T3. This can be done in the same way as described in relation to steps S2 to S3.

[0123] In step T4, the wallet application 605 determines a (candidate) seed from the newly supplied response instance and verifies that this is indeed the seed originally determined in the setup phase 701. This can be done by applying the same transformation (e.g., hash function) to the newly generated response instance that was used to generate the stored certificate during the setup phase and verifying that the result matches the stored certificate. If there is a match, the wallet application uses the seed to derive at least one child key using an appropriate child key derivation function depending on the implementation.

[0124] Alternatively, if the instantiation includes storing an encrypted version of the seed rather than a certificate, then in step T4, the user 103 must enter a password or passcode, which may be a decryption key or a word or code that releases the decryption key. In either case, if the user 103 supplies the correct password / code, the wallet application 605 can decrypt the seed and compare it to the newly determined candidate seed. Provided they match, the wallet application can use the seed to derive at least one child key using an appropriate child key derivation function, depending on the implementation. As an additional condition, the wallet application 605 can also require the user to re-enter the response or seed, which the user can do by recalling or retrieving the original challenge C and re-entering it into the PUF device 600 to regenerate the response R.

[0125] In step T5, the wallet application 605 uses the derived child key to sign the blockchain transaction 152. In step T6, the wallet application 605 sends the signed transaction 152 to be recorded on the blockchain 150.

[0126] Figure 6B shows a variation of the system of Figure 6A in which a wallet application 605 is integrated into the PUF device 600 in the same housing as the other components. The wallet application is stored in a portion of the embedded memory of the PUF device 600 and is configured to run on the embedded processor of the PUF device 600. Alternatively, the wallet application 605 can be implemented in dedicated hardware circuitry, in configurable or reconfigurable circuitry such as a PGA or FPGA, or in any combination of hardware and software.

[0127] In the case of FIG. 6B , the system may be configured as already described in connection with FIG. 6A , except that when the controller 601 outputs the response R, it outputs it directly to the wallet application 605 via an internal interface. Also, a stored transformation of the seed or response—e.g., a certificate (e.g., a hash) or an encrypted seed—is stored in a portion of the PUF device 600's built-in memory, rather than in the computer 102. To have the wallet application 605 sign a transaction, the user 103 can control the wallet application via the PUF device's built-in UI 602. When it comes time to send a signed transaction to be recorded on the blockchain 150, the wallet application can output it to the computer 102 via the respective device-to-device interfaces 603, 604, for the computer 102 to forward the transaction toward the blockchain network 106 via the computer's 102's network interface 606. Alternatively, the network interface 606 can be integrated into the housing of the PUF device 600, such that the computer 102 is not required at all.

[0128] 8 is a signaling diagram illustrating an example of how wallet operations occur within PUF device 600. The method includes a setup phase 801, which includes steps E1 to E5, and a payment phase 802, which includes steps P1 to P5.

[0129] At the start of the setup phase 801, in step E1, the user 103 selects a random challenge C, and in step E2, the user 103 inputs that challenge into the PUF device 600. These steps may be performed similarly to steps S1-S2. Step E2 causes the PUF device 600 to generate a response R, which does not need to be sent to the computer 102 but instead makes it available to the embedded wallet application 105 within the PUF device 600. In step E3, the embedded wallet application 105 determines a seed from the response R within the PUF device 600. In step E4, the wallet application 605 is instantiated by authenticating the seed or response, or storing an encrypted version of the seed or response internally within a portion of the PUF device 600's embedded memory.

[0130] In the payment phase 802, in step P1, the user 103 recalls, looks up, or reads the challenge C. In step P2, the user 103 re-enters the challenge into the PUF device 600, causing the PUF module 500 / 302 to regenerate the response R and provide it internally within the PUF device 600 to the embedded wallet application 605. The user also enters the transaction to be signed (or this can be done later, after step P3). In step P3, the embedded wallet application derives a child key from the seed (assuming the user provided a challenge and the expected response was generated in step P2). In step P4, the embedded wallet application 605 signs the transaction using the child key. Steps P3-P4 are still performed internally within the PUF device 600. In step P5, the embedded wallet application 605 transmits the signed transaction to be recorded on the blockchain 150. This transmission can occur via the computer 102 or directly from the PUF device 600's built-in network interface.

[0131] In some embodiments, the key derivation algorithm is also a function of a nonce value. In this case, in step P2, the user 103 may also input a nonce value into the PUF device 600 along with the input challenge C. This allows a unique one-time key to be derived based on the seed. This is not required in all possible implementations, and the nonce, if used, does not necessarily have to be user-provided (e.g., it could be an incrementing counter on the device), although in some cases the user may specify the nonce used to derive the key.

[0132] 6A / 7 and 6B / 8, the user preferably stores, writes down, or memorizes only the input challenge C used, not the corresponding response R, and then re-runs it using the PUF device to later generate the response again when needed to derive the actual child key. In embodiments, there may be nothing stopping the user from writing down R and re-entering it into the wallet application instead—the wallet application does not know how R was derived and does not care how R was stored off-device. However, users are encouraged not to store or write down R for security reasons, i.e., to avoid an attacker compromising R without access to the PUF.

[0133] 4. Exemplary Blockchain System Next, we will describe an example broader blockchain system in which the system of Figure 6A or 6B and the method of Figure 7 or 8 may be deployed in some embodiments of the present disclosure. "Alice" and "Bob" are merely arbitrary names for two parties, and Alice and Bob do not necessarily have the same roles in this section as in the previous or next sections across several scenarios they may play.

[0134] 4.1. Example System Overview 1 illustrates an exemplary system 100 for implementing a blockchain 150. The system 100 may comprise a packet-switched network 101, typically a wide-area internetwork such as the Internet. The packet-switched network 101 includes a plurality of blockchain nodes 104 that may be arranged to form a peer-to-peer (P2P) network 106 within the packet-switched network 101. Although not illustrated, the blockchain nodes 104 may be arranged as a nearly complete graph. Thus, each blockchain node 104 is highly connected to other blockchain nodes 104.

[0135] Each blockchain node 104 includes a peer computer device, with different ones of the nodes 104 belonging to different peers. Each blockchain node 104 includes a processing unit including one or more processors, e.g., one or more central processing units (CPUs), accelerator processors, application-specific processors and / or field programmable gate arrays (FPGAs), and other devices such as application-specific integrated circuits (ASICs). Each node also includes memory, i.e., computer-readable storage in the form of a non-transitory computer-readable medium. The memory may include one or more memory units employing one or more memory media, e.g., magnetic media such as a hard disk, electronic media such as a solid-state drive (SSD), flash memory, or EEPROM, and / or optical media such as an optical disk drive.

[0136] A blockchain 150 includes blocks of data 151, and a respective copy of the blockchain 150 is maintained at each of multiple blockchain nodes 104 in a distributed or blockchain network 106. As mentioned above, maintaining a copy of the blockchain 150 does not necessarily mean storing the blockchain 150 in its entirety. Instead, the blockchain 150 can be pruned so long as each blockchain node 150 stores the block header (described below) of each block 151. Each block 151 in the chain includes one or more transactions 152, where a transaction in this context refers to a type of data structure. The nature of the data structure depends on the type of transaction protocol used as part of the transaction model or scheme. A given blockchain uses one particular transaction protocol throughout. In one common type of transaction protocol, the data structure for each transaction 152 includes at least one input and at least one output. Each output specifies an amount representing a quantity of a digital asset as property, an example of which is a user 103 to whom the output is cryptographically locked (requiring that user's signature or other solution to unlock it and thereby be redeemed or spent). Each input points to the output of a preceding transaction 152, thereby linking the transactions.

[0137] Each block 151 also contains a block pointer 155 that points to a previously created block 151 in the chain, defining an order for the blocks 151. Each transaction 152 (other than a coinbase transaction) contains a pointer to a previous transaction, defining an order for the sequence of transactions (note: the sequence of transactions 152 is allowed to branch). The chain of blocks 151 traces back to a genesis block (Gb) 153, which was the first block in the chain. One or more original transactions 152 early in the chain 150 pointed to the genesis block 153 rather than to a preceding transaction.

[0138] Each blockchain node 104 is configured to forward transactions 152 to other blockchain nodes 104, thereby propagating the transactions 152 throughout the network 106. Each blockchain node 104 is configured to create blocks 151 and store respective copies of the same blockchain 150 in its memory. Each blockchain node 104 also maintains an ordered set (or "pool") 154 of transactions 152 waiting to be incorporated into a block 151. The ordered pool 154 is often referred to as a "mempool." This term herein is not intended to be limited to any particular blockchain, protocol, or model. It refers to the ordered set of transactions that the node 104 has accepted as valid, for which the node 104 is obligated to not accept any other transactions that attempt to consume the same output.

[0139] For a given current transaction 152j, its (or each) input includes a pointer that references the output of a preceding transaction 152i in the sequence of transactions, specifying that this output should be redeemed or "consumed" in the current transaction 152j. In general, a preceding transaction can be any transaction in the ordered set 154 or any block 151. A preceding transaction 152i does not necessarily have to exist at the time the current transaction 152j is created or even transmitted to the network 106, but the preceding transaction 152i must exist and be approved for the current transaction to be valid. Thus, "preceding" herein refers to a preceding element in a logical sequence linked by a pointer, not necessarily at the time of creation or transmission in the temporal sequence, and thus does not necessarily preclude transactions 152i, 152j from being created or transmitted out of order (see the discussion below regarding orphan transactions). A preceding transaction 152i can equally be referred to as a previous transaction or a preceding transaction.

[0140] The input of this transaction 152j also includes an input authorization, e.g., the signature of the user 103a to whom the output of the previous transaction 152i is locked. The output of this transaction 152j can then be cryptographically locked to the new user or entity 103b. The current transaction 152j can therefore transfer to the new user or entity 103b the amount defined in the input of the previous transaction 152i as defined in the output of this transaction 152j. In some cases, transaction 152j can have multiple outputs to divide the input amount among multiple users or entities (one of which may be the original user or entity 103a to provide change). In some cases, a transaction can also have multiple inputs to collect amounts from multiple outputs of one or more previous transactions and redistribute them into one or more outputs of the current transaction.

[0141] According to output-based transaction protocols such as Bitcoin, when a party 103, such as an individual user or an organization, wishes to enact a new transaction 152j (either manually or through an automated process employed by the party), the enacting party sends the new transaction from its computer terminal 102 to a recipient. The enacting party or recipient ultimately transmits this transaction to one or more blockchain nodes 104 of the network 106 (currently typically a server or data center, but in principle could be other user terminals). It is also not excluded that the party 103 enacting a new transaction 152j transmits this transaction directly to one or more blockchain nodes 104 and, in some instances, does not transmit it to a recipient. The blockchain nodes 104 receiving the transaction check whether the transaction is valid according to a blockchain node protocol applied at each of the blockchain nodes 104. The blockchain node protocol typically requires the blockchain nodes 104 to check that the cryptographic signature in the new transaction 152j matches an expected signature, which depends on the previous transaction 152i in the ordered sequence of transactions 152. In such output-based transaction protocols, this may involve checking that a cryptographic signature or other authorization of party 103 included in the input of new transaction 152j matches a condition defined in the output of the preceding transaction 152i that the new transaction assigns, which condition typically includes at least checking that the cryptographic signature or other authorization in the input of new transaction 152j unlocks the output of the previous transaction 152i to which the input of the new transaction is linked. This condition may be defined at least in part by a script included in the output of the previous transaction 152i. Alternatively, it may be fixed simply by the blockchain node protocol, or result from a combination thereof.In any case, if the new transaction 152j is valid, the blockchain node 104 forwards it to one or more other blockchain nodes 104 in the blockchain network 106. These other blockchain nodes 104, following the same blockchain node protocol and applying the same tests, forward the new transaction 152j to one or more further nodes 104, and so on. In this way, the new transaction is propagated throughout the network of blockchain nodes 104.

[0142] In the output-based model, the definition of whether a given output (e.g., UTXO) has been allocated (e.g., spent) is whether it has yet been validly redeemed by the input of another, forward transaction 152j, according to the blockchain node protocol. Another condition for a transaction to be valid is that the output of the preceding transaction 152i it attempts to redeem has not yet been redeemed by another transaction. Again, if it is not valid, the transaction 152j is not propagated (unless it is flagged as invalid and propagated due to a warning) or recorded in the blockchain 150. This protects against double-spending, where a transactor attempts to allocate the same transaction output multiple times. On the other hand, the account-based model prevents double-spending by maintaining an account balance. Again, because there is a defined order of transactions, the account balance has a single defined state at any given time.

[0143] In addition to approving transactions, blockchain nodes 104 compete to be the first to create a block of transactions in a process commonly referred to as mining, supported by "proof of work." Blockchain nodes 104 add new transactions to an ordered pool 154 of valid transactions that have not yet appeared in a block 151 recorded on the blockchain 150. Blockchain nodes then compete to assemble a new valid block 151 of transactions 152 from the ordered set of transactions 154 by attempting to solve a cryptographic puzzle. Typically, this involves searching for a "nonce" such that when the nonce is concatenated and hashed with a representation of the ordered pool of pending transactions 154, the hash output satisfies a predetermined condition. For example, the predetermined condition could be that the hash output has a certain predefined number of leading zeros. This is just one particular type of proof-of-work puzzle; other types are not excluded. A property of a hash function is that it has an unpredictable output given an input. Therefore, this search can only be performed by brute force, thus consuming a substantial amount of processing resources at each blockchain node 104 attempting to solve the puzzle.

[0144] The first blockchain node 104 to solve the puzzle publishes this to the network 106, providing the solution as a proof that can be easily checked by other blockchain nodes 104 in the network (given the hash solution, it is easy to check that it matches the hash output). The first blockchain node 104 propagates the block to a threshold consensus of other nodes, who accept the block, thus enforcing the protocol rules. The ordered set of transactions 154 then becomes recorded as a new block 151 in the blockchain 150 by each of the blockchain nodes 104. A block pointer 155 is also assigned to the new block 151n, pointing to the previously created block 151n-1 in the chain. The significant amount of effort required to create the proof-of-work solution, e.g., in the form of a hash, signals the first node 104's willingness to follow the rules of the blockchain protocol. Such rules include not accepting a transaction as valid if it assigns the same output as a previously approved transaction, otherwise known as a double-spend. Once created, blocks 151 cannot be modified because they are known and maintained by each of the blockchain nodes 104 in the blockchain network 106. Block pointers 155 also impose an order on the blocks 151. Transactions 152 are recorded in ordered blocks at each blockchain node 104 in the network 106, thus providing an immutable public ledger of transactions.

[0145] Note that different blockchain nodes 104 competing to solve the puzzle at any given time may do so based on different snapshots of the pool of transactions 154 that have not yet been published at any given time, depending on when they began searching for a solution or the order in which transactions were received. The first to solve each puzzle defines which transactions 152 will be included in the next new block 151n and in what order, and the current pool 154 of unpublished transactions is updated. Blockchain nodes 104 then compete to create blocks from the newly defined ordered pool of unpublished transactions 154, and so on. There is also a protocol for resolving any "forks" that may occur, which is when two blockchain nodes 104 solve the puzzle within such a short time of each other that opposing views of the blockchain are propagated between the nodes 104. In essence, whichever branch of the fork grows the longest becomes the definitive blockchain 150. Note that this should not affect users or agents of the network when the same transaction appears in both forks.

[0146] According to the Bitcoin blockchain (and most other blockchains), a node that successfully constructs a new block 104 is granted the ability to allocate additional accepted amounts of digital assets in a new, special type of transaction that distributes an additional defined amount of digital assets (as opposed to an agent-to-agent or user-to-user transaction that transfers an amount of digital assets from one agent or user to another). This special type of transaction is typically referred to as a “coinbase transaction,” but may also be called an “initiation transaction” or “generation transaction.” It typically forms the first transaction in a new block 151n. The proof of work signals the node constructing the new block’s intention to follow protocol rules that allow this special transaction to be redeemed later. Blockchain protocol rules may require a redemption period, e.g., 100 blocks, before this special transaction can be redeemed. Often, a regular (non-generation) transaction 152 also specifies an additional transaction fee in one of its outputs to further reward the blockchain node 104 that created the block 151n in which the transaction was published. This fee is commonly referred to as a "transaction fee" and is explained below.

[0147] Due to the resources involved in validating and publishing transactions, at least each of the blockchain nodes 104 typically takes the form of a server including one or more physical server units, or even an entire data center. However, in principle, any given blockchain node 104 could also take the form of a user terminal or a group of networked user terminals.

[0148] The memory of each blockchain node 104 stores software configured to execute on the processing unit of the blockchain node 104 to perform its respective one or more roles and process transactions 152 in accordance with the blockchain node protocol. It will be understood that any activity attributed to a blockchain node 104 herein may be performed by software executing on the processing unit of the respective computing device. The node software may be implemented in one or more applications at the application layer, or at a lower layer, such as the operating system layer or protocol layer, or any combination thereof.

[0149] Also connected to the network 101 are computer devices 102 of each of a number of parties 103 that act as consuming users. These users may interact with the blockchain network 106 but do not participate in approving transactions or constructing blocks. Some of these users or agents 103 may act as senders and receivers in transactions. Other users may interact with the blockchain 150 without necessarily acting as senders or receivers. For example, some parties may act as storage entities that store copies of the blockchain 150 (e.g., obtaining copies of the blockchain from blockchain nodes 104).

[0150] Some or all of the parties 103 may be connected as part of a different network, for example, a network overlaid on the blockchain network 106. Users of the blockchain network (often referred to as "clients") may be said to be part of a system that includes the blockchain network 106, but these users are not blockchain nodes 104 because they do not perform the necessary roles of blockchain nodes. Instead, each party 103 interacts with the blockchain network 106 by connecting to (i.e., communicating with) a blockchain node 106, thereby utilizing the blockchain 150. Two parties 103 and their respective devices 102 are shown for illustrative purposes: a first party 103a and its respective computer device 102a, and a second party 103b and its respective computer device 102b. It will be understood that many more such parties 103 and their respective computer devices 102 may exist and participate in the system 100, but are not illustrated for convenience. Each party 103 may be an individual or an organization. Purely by way of example, the first party 103a will be referred to herein as Alice and the second party 103b will be referred to as Bob, although it will be understood that this is not limiting and that references herein to Alice or Bob may be replaced with "first party" and "second party," respectively.

[0151] The computing equipment 102 of each party 103 includes a respective processing unit including one or more processors, e.g., one or more CPUs, GPUs, other accelerator processors, application-specific processors, and / or FPGAs. The computing equipment 102 of each party 103 further includes memory, i.e., computer-readable storage in the form of a non-transitory computer-readable medium. This memory may include one or more memory units employing one or more memory media, e.g., magnetic media such as hard disks, electronic media such as SSDs, flash memory, or EEPROMs, and / or optical media such as optical disk drives. The memory on the computing equipment 102 of each party 103 stores software including a respective instance of at least one client application 105 configured to execute on the processing unit. It will be understood that any activity attributed to a given party 103 herein may be performed using software executing on the processing unit of the respective computing equipment 102. The computing equipment 102 of each party 103 includes at least one user terminal, e.g., a desktop or laptop computer, a tablet, a smartphone, or a wearable device such as a smartwatch. The computing equipment 102 of a given party 103 may also include one or more other network-connected resources, such as cloud computing resources accessed via a user terminal.

[0152] The client application 105 may be initially provided to the computer equipment 102 of any given party 103 on a suitable computer-readable storage medium, for example downloaded from a server, or may be provided on a removable storage device such as a removable SSD, flash memory key, removable EEPROM, removable magnetic disk drive, magnetic floppy disk or tape, an optical disk such as a CD or DVD ROM, or a removable optical drive, etc.

[0153] The client application 105 has at least a "wallet" function. It has two main functionalities. One of these is to allow each party 103 to create, authorize (e.g., sign), and send transactions 152 to one or more Bitcoin nodes 104, which then propagate throughout the network of blockchain nodes 104 and thereby be included in the blockchain 150. The other is to report to each party the amount of digital assets they currently own. In an output-based system, this second function involves reconciling the amounts belonging to the party of interest as determined in the outputs of various transactions 152 scattered throughout the blockchain 150.

[0154] NOTE: While various client functions may be described as being integrated into a given client application 105, this is not necessarily limiting; instead, any client function described herein may instead be implemented as a set of two or more different applications, for example, interfaced via an API or plugging one into the other. More generally, client functions may also be implemented at the application layer, or at a lower layer such as an operating system, or any combination thereof. While the following description will be given with respect to client application 105, it will be understood that this is not limiting.

[0155] An instance of a client application or software 105 on each computing device 102 is operably coupled to at least one of the blockchain nodes 104 of the network 106. This enables the wallet functionality of the client 105 to send transactions 152 to the network 106. The client 105 can also contact the blockchain nodes 104 to query the blockchain 150 for any transactions in which the respective party 103 is a recipient (or indeed to inspect the transactions of other parties in the blockchain 150, since in embodiments the blockchain 150 is a public facility that provides trust in transactions, in part through its public visibility). The wallet functionality on each computing device 102 is configured to formulate and send transactions 152 according to a transaction protocol. As noted above, each blockchain node 104 executes software configured to approve transactions 152 according to a blockchain node protocol and forward transactions 152 for propagation throughout the blockchain network 106. Transaction protocols and node protocols correspond to one another; a given transaction protocol combines with a given node protocol to together implement a given transaction model. The same transaction protocol is used for all transactions 152 in the blockchain 150. The same node protocol is used by all nodes 104 in the network 106.

[0156] When a given party 103, e.g., Alice, wishes to submit a new transaction 152j to be included in the blockchain 150, Alice formulates the new transaction (using the wallet functionality of Alice's client application 105) according to the associated transaction protocol. Alice then sends the transaction 152 from her client application 105 to one or more blockchain nodes 104 to which she is connected. For example, this could be the blockchain node 104 most connected to Alice's computer 102. When any given blockchain node 104 receives the new transaction 152j, it processes it according to the blockchain node protocol and its respective role. This involves first checking whether the newly received transaction 152j meets certain conditions for being "valid," examples of which will be described in more detail shortly. In some transaction protocols, the conditions for validation may be configurable per transaction via script included in the transaction 152.

[0157] Alternatively, the condition may simply be a built-in feature of the node protocol, or may be defined by a combination of script and node protocol.

[0158] Provided that the newly received transaction 152j passes the test to be considered valid (i.e., it is "approved"), any blockchain node 104 that receives the transaction 152j adds the new approved transaction 152 to the ordered set of transactions 154 maintained by that blockchain node 104. Additionally, any blockchain node 104 that receives the transaction 152j forward-propagates the approved transaction 152 to one or more other blockchain nodes 104 in the network 106. Because each blockchain node 104 applies the same protocol, then, assuming the transaction 152j is valid, this means that it will immediately propagate throughout the network 106.

[0159] After being admitted to the ordered pool of pending transactions 154 maintained by a given blockchain node 104, that blockchain node 104 begins a race to solve a proof-of-work puzzle with the latest version of each pool 154 that contains the new transaction 152. (Remember, other blockchain nodes 104 may be trying to solve the puzzle based on different pools of transactions 154, but whoever gets there first defines the set of transactions included in the latest block 151.) Eventually, the blockchain node 104 will have solved the puzzle for the part of the ordered pool 154 that contains Alice's transaction 152j. After proof-of-work has been done for the pool 154 containing the new transaction 152j, it immutably becomes part of one of the blocks 151 in the blockchain 150. Each transaction 152 contains a pointer to the previous transaction; therefore, the order of the transactions is also immutably recorded.

[0160] Different blockchain nodes 104 may initially receive different instances of a given transaction and therefore have conflicting views about which instance is "valid" before the instances are published in a new block 151, at which point all blockchain nodes 104 agree that the published instance is the only valid instance. If a blockchain node 104 accepts one instance as valid and then discovers that a second instance has been recorded in the blockchain 150, it must accept it and discard (i.e., treat as invalid) the instance it originally accepted (i.e., the one not published in block 151).

[0161] An alternative type of transaction protocol operated by some blockchain networks may be referred to as an "account-based" protocol, as part of the account-based transaction model. In the account-based case, each transaction defines the transfer amount not by referencing the UTXO of a preceding transaction in a sequence of past transactions, but rather by referencing an absolute account balance. The current state of every account is stored and constantly updated by the network's nodes, separate from the blockchain. In such a system, transactions are ordered using the account's running transaction tally (also called the "position"). This value is signed by the sender as part of the cryptographic signature and hashed as part of the transaction reference calculation. Additionally, any data field may also be signed in the transaction. This data field may refer to a previous transaction, for example, if a previous transaction ID is included in the data field.

[0162] 4.2. UTXO-Based Model Figure 2 illustrates an example transaction protocol. This is an example of a UTXO-based protocol. Transactions 152 (abbreviated as "Tx") are the fundamental data structure of a blockchain 150 (each block 151 contains one or more transactions 152). The following is described with reference to an output-based or "UTXO"-based protocol. However, this is not limited to all possible embodiments. Note that the exemplary UTXO-based protocol is described with reference to Bitcoin, but could equally be implemented on other exemplary blockchain networks.

[0163] In the UTXO-based model, each transaction (“Tx”) 152 comprises a data structure that includes one or more inputs 202 and one or more outputs 203. Each output 203 may include an unspent transaction output (UTXO) that can be used as a source of input 202 for another new transaction (if the UTXO has not yet been redeemed). A UTXO contains a value that specifies an amount of a digital asset, which represents a set number of tokens on the distributed ledger. A UTXO may also include, among other information, the transaction ID of the transaction from which it originated. The transaction data structure may also comprise a header 201, which may include indicators of the sizes of the input fields 202 and output fields 203. The header 201 may also include the transaction's ID. In embodiments, the transaction ID is a hash of the transaction data (excluding the transaction ID itself) and is stored in the header 201 of the raw transaction 152 submitted to the node 104.

[0164] For example, Alice 103a wants to create transaction 152j to transfer an amount of digital assets of interest to Bob 103b. In FIG. 2, Alice's new transaction 152j is labeled "Tx1." It takes the amount of digital assets locked to Alice in the output 203 of the preceding transaction 152i in the sequence and transfers at least a portion of it to Bob. The preceding transaction 152i is labeled "Tx0" in FIG. 2. Tx0 and Tx1 are merely arbitrary labels. They do not necessarily mean that Tx0 is the first transaction in the blockchain 151 or that Tx1 is the immediate next transaction in the pool 154. Tx1 could also refer to any preceding (i.e., previous) transaction that still has unspent outputs 203 locked to Alice.

[0165] The preceding transaction Tx0 may already have been validated and included in a block 151 of the blockchain 150 by the time Alice creates, or at least submits, the new transaction Tx1 to the network 106. It may already be included in one of the blocks 151 at that time, or may still be waiting in the ordered set 154, in which case it will soon be included in the new block 151. Alternatively, Tx0 and Tx1 could be created and submitted to the network 106 together, or Tx0 could even be submitted after Tx1 if the node protocol allows for buffering of “orphan” transactions. The terms “preceding” and “subsequent,” as used herein in the context of a sequence of transactions, refer to the order of the transactions in the sequence as defined by the transaction pointers specified in the transactions (e.g., which transactions point to which other transactions). These terms could equally be interchanged with “predecessor” and “successor,” or “predecessor” and “descendant,” “parent” and “child,” or the like. This does not necessarily imply the order in which they are created, transmitted to the network 106, or arrive at any given blockchain node 104. Nevertheless, subsequent transactions (descendant transactions or "children") that point to a preceding transaction (previous transaction or "parent") will not be approved until and unless the parent transaction is approved. A child that arrives at a blockchain node 104 before its parent is considered an orphan. It may be discarded or buffered for a period of time to await its parent, depending on the node protocol and / or node behavior.

[0166] One of the one or more outputs 203 of the preceding transaction Tx0 includes a particular UTXO, here labeled UTXO0. Each UTXO includes a value specifying the amount of the digital asset represented by the UTXO and a locking script that defines the conditions that must be met by the unlocking script of the input 202 of the subsequent transaction for the subsequent transaction to be approved and therefore the UTXO to be successfully redeemed. Typically, the locking script locks the amount to a particular party (the beneficiary of the transaction in which it is included). That is, the locking script typically defines unlocking conditions, including a condition that the unlocking script in the input of the subsequent transaction include the cryptographic signature of the party to whom the preceding transaction is locked.

[0167] A lock script (aka scriptPubKey) is a fragment of code written in a domain-specific language recognized by the node protocol. A specific example of such a language is called "Script" (capital S), used in blockchain networks. A lock script specifies the information needed to consume a transaction output 203, for example, Alice's signature requirements. An unlock script appears within the transaction's output. An unlock script (aka scriptSig) is a fragment of code written in a domain-specific language that provides the information needed to satisfy the lock script's criteria. For example, this could include Bob's signature. An unlock script appears within the transaction's input 202.

[0168] Thus, in the illustrated example, UTXO0 in Tx0's output 203 must contain Alice's signature Sig P in order for UTXO0 to be redeemed (or, more precisely, for any subsequent transaction attempting to redeem UTXO0 to be valid). A Requires a lock script [Checksig P A ] is equipped. [Checksig P A ] is Alice's public key P from her public-private key pair. A, a representation (i.e., a hash) of Tx1's input 202. Tx1's input 202 includes a pointer to Tx1 (e.g., using its transaction ID, TxID0, which in an embodiment is a hash of the entire transaction Tx0). Tx1's input 202 includes an index that identifies UTXO0 within Tx0 to distinguish it from any other possible outputs of Tx0. Tx1's input 202 includes an unlock script that contains Alice's cryptographic signature, created by Alice applying the private key from her key pair to a predefined portion of data (sometimes called a "message" in cryptography). <Sig P A The data (or "message") that needs to be signed by Alice to provide a valid signature may be defined by the lock script, or by the node protocol, or by a combination of these.

[0169] When new transaction Tx1 arrives at blockchain node 104, the node applies its node protocol, which involves running the lock script and unlock script together to check whether the unlock script satisfies the conditions defined in the lock script (where the conditions may include one or more criteria). In an embodiment, this involves concatenating the two scripts as follows: <Sig P A > <P A > || [Checksig P A ] where "||" denotes concatenation, "<...>" means putting data on the stack, and "[...]" is a function composed by the lock script (a stack-based language in this example). Equivalently, the scripts could be executed one after the other, with a common stack, rather than concatenating the scripts. Either way, when executed together, the scripts will create a lock script containing Alice's public key P as contained in the lock script in the output of Tx0. Athat the unlock script in Tx1's input contains Alice's signature, which signs the expected portion of the data. To perform this authentication, the expected portion of the data itself (the "message") must also be included. In an embodiment, the signed data includes Tx1 in its entirety (and thus there is no need to include a separate element specifying the signed portion of the data in plaintext, as it is already inherently present).

[0170] The details of authentication via public-private cryptography will be familiar to those skilled in the art. Essentially, if Alice signs a message using her private key, then, given Alice's public key and the plaintext message, another entity, such as node 104, can authenticate that the message must have been signed by Alice. Signing typically involves hashing the message, signing the hash, and tagging this as the signature with the message, so that anyone holding the public key can authenticate the signature. Thus, it should be noted that references herein to signing a particular data portion, transaction portion, etc., can, in embodiments, mean signing a hash of that data portion or transaction portion.

[0171] If the unlock script of Tx1 satisfies one or more conditions specified in the lock script of Tx0 (thus, in the illustrated example, if Alice's signature is provided and authenticated in Tx1), the blockchain node 104 considers Tx1 valid. This means that the blockchain node 104 adds Tx1 to its ordered pool of pending transactions 154. The blockchain node 104 also forwards transaction Tx1 to one or more other blockchain nodes 104 in the network 106, thereby propagating throughout the network 106. After Tx1 is approved and entered into the blockchain 150, it defines Tx0 to UTXO0 as spent. Note that Tx1 can only be valid if it consumes unspent transaction outputs 203. If it attempts to consume an output that has already been consumed by another transaction 152, Tx1 becomes invalid, even if all other conditions are met. Therefore, a blockchain node 104 also needs to check whether a UTXO referenced in a preceding transaction Tx0 has already been spent (i.e., whether it already forms a valid input to another valid transaction). This is one reason why it is important for the blockchain 150 to impose a defined order on transactions 152. Indeed, a given blockchain node 104 may maintain a separate database that marks which UTXOs 203 have been spent in which transactions 152, but what ultimately defines whether a UTXO has been spent is whether it already forms a valid input to another valid transaction in the blockchain 150.

[0172] If the total amount specified in all outputs 203 of a given transaction 152 is greater than the total amount pointed to by all its inputs 202, this is another criterion for invalidity in most transaction models. Therefore, such a transaction is not propagated and is not included in block 151.

[0173] Note that in the UTXO-based transaction model, a given UTXO must be spent in its entirety. Part of the amount defined in the UTXO cannot be "left over" as spent while another part is being spent. However, the amount from a UTXO can be split among multiple outputs of subsequent transactions. For example, the amount defined in UTXO0 in Tx0 can be split among multiple UTXOs in Tx1. Thus, if Alice does not want to give Bob all of the amount defined in UTXO0, she can use the remainder to give herself change in the second output of Tx1 or to pay another party.

[0174] In practice, Alice is typically required to include a fee for any Bitcoin node 104 that successfully includes her transaction 104 in block 151. If Alice does not include such a fee, Tx0 will be rejected by the blockchain node 104 and, thus, while technically valid, will not be propagated and included in the blockchain 150 (the node protocol does not force blockchain nodes 104 to accept transaction 152 if they do not want to). In some protocols, the transaction fee does not require its own separate output 203 (i.e., it does not require a separate UTXO). Instead, any difference between the total amount pointed to by input 202 and the total amount specified in the output 203 of a given transaction 152 is automatically given to the blockchain node 104 that publishes the transaction. For example, suppose a pointer to UTXO0 is the only input to Tx1, and Tx1 has only one input, UTXO1. If the amount of digital assets specified in UTXO0 is greater than the amount specified in UTXO1, the difference may be allocated by the node 104 that won the proof-of-work competition to create the block containing UTXO1. However, it is not necessarily excluded that a transaction fee may alternatively, or in addition, be explicitly specified in one of transaction 152's UTXOs 203 itself.

[0175] Alice and Bob's digital assets consist of the UTXOs locked to them in any transaction 152 anywhere in the blockchain 150. Thus, typically, a given party's 103 assets are scattered throughout the UTXOs of various transactions 152 throughout the blockchain 150. There is no single number stored anywhere in the blockchain 150 that defines a given party's 103 total balance. It is the responsibility of the wallet function within the client application 105 to collate together the values ​​of all the various UTXOs locked to each party that have not yet been spent in another forward transaction. This can be done by querying a copy of the blockchain 150, such as that stored in one of the Bitcoin nodes 104.

[0176] Note that script code is often expressed generally (i.e., without using a precise language). For example, an operation code (opcode) may be used to express a particular function. "OP_..." refers to a particular opcode in the Script language. As an example, OP_RETURN is an opcode in the Script language that, when preceded by OP_FALSE at the beginning of a lock script, creates a non-consumable output of the transaction that can store data within the transaction, thereby immutably recording the data in the blockchain 150. For example, the data may include a document that is desired to be stored in the blockchain.

[0177] Typically, the input to a transaction is a public key P AIn an embodiment, this is based on ECDSA using the elliptic curve secp256k1. The digital signature signs specific data. In some embodiments, for a given transaction, the signature signs some of the transaction inputs and some or all of the transaction outputs. The specific parts of the outputs to sign depend on the SIGHASH flag, which is a four-byte code typically included at the end of the signature that selects which outputs are signed (and therefore fixed at the time of signing).

[0178] A lock script is sometimes referred to as a "scriptPubKey," referring to the fact that it typically includes the public key of the party to whom each transaction is locked. An unlock script is sometimes referred to as a "scriptSig," referring to the fact that it typically provides the corresponding signature. However, more generally, in all applications of blockchain 150, it is not essential that the condition for a UTXO to be redeemed include authenticating the signature. More generally, a scripting language can be used to define any condition or conditions. Therefore, the more general terms "lock script" and "unlock script" may be preferred.

[0179] Side Channels As shown in FIG. 1, the client applications on each of Alice's and Bob's computing devices 102a, 102b may each include additional communication capabilities. This additional functionality allows Alice 103a to establish a separate side channel 107 with Bob 103b (at the instigation of either party or a third party). The side channel 107 allows for the exchange of data away from the blockchain network. Such communication is sometimes referred to as “off-chain” communication. For example, this may be used to exchange transactions 152 between Alice and Bob without the transaction being registered on the blockchain network 106 or progressing on the chain 150 until one of the parties chooses to broadcast it to the network 106. Sharing transactions in this manner is sometimes referred to as sharing a “transaction template.” A transaction template may lack one or more inputs and / or outputs necessary to form a complete transaction. Alternatively, or in addition, the side channel 107 may be used to exchange any other transaction-related data, such as keys, negotiated amounts or terms, data content, etc.

[0180] The side channel 107 may be established over the same packet-switched network 101 as the blockchain network 106. Alternatively, or in addition, the side channel 301 may be established over a different network, such as a mobile cellular network, or a local area network, such as a local wireless network, or even over a direct wired or wireless link between Alice's device 102a and Bob's device 102b. In general, a side channel 107 referenced anywhere herein may include any one or more links over one or more network technologies or communication media for exchanging data “off-chain,” i.e., separate from the blockchain network 106. When multiple links are used, the bundle or collection of off-chain links may be referred to as the side channel 107 as a whole. Thus, it should be noted that when Alice and Bob are said to exchange some information or data or the like over the side channel 107, this does not necessarily imply that all pieces of this data must be transmitted over the exact same link or the same type of network.

[0181] The side channel 107 may include a secure channel employing known secure communication techniques to enable secure and confidential off-chain communication between parties, such as Alice and Bob. For example, the secure channel may be based on a shared secret shared between the parties communicating over the secure channel. Such a channel may be used for communication between the verifier 103V and the target party 103T, such as to enable the verifier 103V to submit a challenge to a PUF 302 / 500 held by the target party and receive a corresponding response.

[0182] 5. Conclusion Other modifications or use cases of the disclosed technology will become apparent to those skilled in the art after reading the disclosure herein. The scope of the present disclosure is not limited by the described embodiments, but only by the appended claims.

[0183] For example, some embodiments above have been described with respect to the Bitcoin network 106, the Bitcoin blockchain 150, and the Bitcoin nodes 104. However, it will be understood that the Bitcoin blockchain is a particular example of a blockchain 150, and the above description may apply generally to any blockchain. That is, the present invention is in no way limited to the Bitcoin blockchain. More generally, any references above to the Bitcoin network 106, the Bitcoin blockchain 150, and the Bitcoin nodes 104 may be replaced with references to the blockchain network 106, the blockchain 150, and the blockchain nodes 104, respectively. The blockchains, blockchain networks, and / or blockchain nodes may share some or all of the described characteristics of the Bitcoin blockchain 150, the Bitcoin network 106, and the Bitcoin nodes 104 described above.

[0184] In a preferred embodiment of the present invention, the blockchain network 106 is the Bitcoin network, and the Bitcoin nodes 104 perform at least all of the described functions of creating, publishing, propagating, and storing blocks 151 in the blockchain 150. It is not excluded that there may be other network entities (or network elements) that perform only one or some, but not all, of these functions. That is, network entities may perform the functions of propagating and / or storing blocks without creating and publishing them (recall that these entities are not considered nodes of the preferred Bitcoin network 106).

[0185] In other embodiments of the present invention, blockchain network 106 may not be the Bitcoin network. In these embodiments, it is not excluded that a node may perform at least one or some, but not all, of the functions of creating, publishing, propagating, and storing blocks 151 of blockchain 150. For example, in these other blockchain networks, "node" may be used to refer to a network entity that is configured to create and publish blocks 151, but does not store and / or propagate those blocks 151 to other nodes.

[0186] More generally, any reference above to the term "Bitcoin node" 104 may be replaced with the term "network entity" or "network element," where such entity / element is configured to perform some or all of the roles of creating, publishing, propagating, and storing blocks. The functionality of such network entity / element may be implemented in hardware using the same methods as described above with reference to blockchain node 104.

[0187] It will be understood that the above embodiments have been described by way of example only. More generally, there may be provided a method, apparatus or program according to any one or more of the following statements:

[0188] Statement 1. A method comprising: inputting an input challenge to a PUF device including a PUF module having a physical unclonable function (PUF), the PUF device being configured to generate a corresponding output response based on the input challenge and the PUF in response to inputting the input challenge; instantiating a wallet application to use a seed determined from an output response generated by the PUF device in response to inputting the input challenge, the instantiating including storing a transformation of the seed or the output response in association with the wallet application; thereafter, providing information to the wallet application indicating a user's right to use the seed, the wallet application being configured to derive at least one child key from the seed in response to verifying the information based on the transformation stored in association with the wallet application, and on the condition that the information is verified; signing a blockchain transaction using the child key derived by the wallet application in response to the verification, and submitting the signed blockchain transaction to be recorded on the blockchain.

[0189] Statement 2. The method of claim 1, wherein the information includes a regenerated instance of the output response generated by the user re-inputting an instance of the input challenge into the PUF device.

[0190] Statement 3. The method of claim 1 or 2, wherein the seed is equal to the output challenge.

[0191] Statement 4. The method of claim 1 or 2, wherein the seed is derived from the output challenge.

[0192] Statement 5. The method of claim 4, wherein deriving a seed from the output challenge includes deriving a seed of a fixed seed length required for a wallet application, where the output responses are of different lengths.

[0193] Statement 6. The method of any one of claims 1 to 5, wherein the transform comprises a certificate including a hash or other one-way transform of the seed or output response, the information includes a re-submitted instance of the seed or output response, and wherein verifying by the wallet application includes either i) verifying that the same transform applied to the re-submitted instance of the seed or output response equals the stored certificate for the seed or output response, respectively, or ii) redetermining the seed from the re-submitted instance of the output response and verifying that the same transform applied to the redetermined seed equals the stored certificate for the seed.

[0194] Statement 7. The method of claim 6, wherein the resubmitted instance of the seed or output response is a regenerated instance generated by a user re-entering an instance of the input challenge into the PUF device.

[0195] Statement 8. The method of any one of claims 1 to 4, wherein the transformation includes an encrypted version of the seed or output response, the information includes a password or passcode, and the verification by the wallet application includes verifying the supplied password or passcode and decrypting the encrypted version of the seed or output response in accordance with that condition.

[0196] Statement 9. The method of claim 8, wherein the password or passcode includes a decryption key, and wherein verifying and decrypting includes decrypting an encrypted version of the seed or output response using the supplied decryption key.

[0197] Statement 10. The method of claim 8, wherein the wallet application stores a decryption key in association with the wallet application, the password or passcode having a distinct piece of information, and the decryption releases the decryption key to decrypt an encrypted version of the seed or output response on the condition that the supplied password or passcode is verified.

[0198] Statement 11. The method of any one of claims 8 to 10, wherein the information further includes a re-submitted instance of the seed or output response, and wherein verifying by the wallet application further includes verifying that the decrypted seed or response equals the re-submitted instance of the seed or output response, respectively.

[0199] Statement 12. The method of claim 11, wherein the resubmitted instance of the seed or output response is a regenerated instance generated by a user re-entering an instance of the input challenge into the PUF device.

[0200] Statement 13. The method of any one of claims 1 to 12, wherein the PUF module includes an extended PUF device with PUF interface logic and a deterministic transformation function, the input challenge is a secondary challenge and the output response is the secondary response, the interface logic is configured to input the primary challenge to the PUF to cause the PUF to generate the primary response, the transformation function is configured to generate the secondary response as a function of the secondary challenge and the primary response, and the interface is configured to return the secondary response as an output response of the PUF device.

[0201] Statement 14. The method of any one of claims 1 to 12, wherein the PUF module consists solely of a PUF, and the input challenge and output response are the primary challenge and response of the PUF, respectively.

[0202] Statement 15. The method of any one of claims 13 or 14, wherein the PUF module has a plurality of different possible challenge-response pairs, and the input challenge and output response are one of the plurality of challenge-response pairs.

[0203] Statement 16. The method of any one of claims 1 to 15, wherein the PUF device including the PUF is contained within a self-contained housing.

[0204] Statement 17. The method of claim 16, wherein entering the input challenge is performed via a built-in user interface integrated into the housing of the PUF device.

[0205] Statement 18. The method of claim 16 or 17, wherein the PUF device has no interface for receiving data other than a user interface.

[0206] Statement 19. The method of claim 16 or 17, wherein the built-in user interface includes a keyboard.

[0207] Statement 20. The method of any one of claims 16 to 19, wherein the wallet application is installed on and runs on a computer housed in a housing separate from the PUF device, the seed transformation is stored on the computer, the PUF device comprises a device-to-device interface for communicating with the computer to output an output response to the wallet application on the computer so that the wallet application executes the seed determination, a user inputs information via a user interface of the computer, and a blockchain transaction is signed on the computer and sent from the computer to be recorded on the blockchain.

[0208] Statement 21. The method of claim 20, wherein the device-to-device interface is a direct local interface.

[0209] Statement 22. The method of claim 19 or 21, wherein the interface comprises one of: - a USB connector for connecting to a computer via a USB port of the computer, or - a screen configured to display the output response in graphical form, to be read by a camera or scanner of the computer.

[0210] Statement 23. A method according to any one of claims 16 to 19, wherein the wallet application is integrated within the PUF device, the seed transformation is stored within the PUF device, and entering the input challenge is performed via a built-in user interface integrated within the housing of the PUF device, the user enters the information via the built-in user interface of the PUF device, and the blockchain transaction is signed on the PUF device and sent from the PUF device to be recorded on the blockchain.

[0211] Statement 24. The method of claim 23, wherein the blockchain transaction is transmitted to a separate computer via a local interface of the PUF device and then further transmitted via a network interface of the computer.

[0212] Statement 25. The method of claim 23, wherein blockchain transactions are transmitted directly through a network interface integrated within the PUF device.

[0213] Statement 26. The method of any one of claims 20 to 25, wherein the output response is not stored, or at least not explicitly stored, on the computer.

[0214] Statement 27. The method of any one of claims 16 to 26, wherein the housing of the PUF device is locked or sealed.

[0215] Statement 28. The method of any one of claims 1 to 27, wherein the output response is not stored anywhere, or at least not stored in an obvious manner.

[0216] Statement 29. A method according to any one of claims 1 to 28, wherein the input challenge is entered in the form of a BIP32 mnemonic phrase or other mnemonic phrase that is mapped to a numerical value of the input challenge, and the numerical value is used by the PUF device to generate an output response.

[0217] Statement 30. A PUF device comprising: an embedded user interface for inputting an input challenge; and a physical unclonable function (PUF) module integrated within the same housing, the PUF module being configured to generate a corresponding output response based on the input challenge and the PUF in response to input of the input challenge; an embedded memory having one or more memory units; and an embedded processor configured to execute a blockchain wallet application stored in a portion of the embedded memory, the blockchain wallet application being configured to be instantiated to use a seed determined from an output challenge generated by the PUF device, the instantiating storing in a portion of the embedded memory a transformation of the seed or the output response, the wallet application being further operable to receive information from a user indicating right to use the seed, the wallet application being configured to derive at least one child key from the seed in response to, and on condition that, the information is verified based on the transformation stored in association with the wallet application, the wallet application being operable to sign blockchain transactions using the child key derived by the wallet application in response to the verification, and the PUF device further comprising a data interface configured to transmit the signed blockchain transaction for recording to the blockchain. [Explanation of symbols]

[0218] 100 systems 101 Packet Switched Network 102 Computer Equipment 102a Computer Equipment 102b Computer Equipment 102T Computer Equipment 102V Computer Equipment 103a User 103b New User or Entity 103S Submitted by 103T Target Party 103V Verifier 104 blockchain nodes 105 Client Applications 106 Peer-to-Peer (P2P) Networks 107 Side Channel 150 Blockchain 151 blocks 151n Block 152 transactions 152i Transactions 152j Transaction 152M New Modifier Transactions 152S Memory Transaction 152U Modifier Transaction 154 Ordered Sets (or "Pools") 155 Block Pointer 201 Header 202 Input 203 Output 301 Side Channel 302 PUF 402 processor 404 Interface Logic 404' Interface Logic 406 Access Control Logic 500 Enhanced PUF (ePUF) 502 Conversion Functions 504 Conversion Logic

Claims

1. inputting an input challenge to a PUF device including a PUF module having a physical unclonable function (PUF), the PUF device being configured to generate a corresponding output response based on the input challenge and the PUF in response to inputting the input challenge; instantiating a wallet application to use a seed determined from the output response generated by the PUF device in response to the input of the input challenge, wherein the instantiating includes storing a transformation of the seed or output response in association with the wallet application, the transformation including either a) a certificate including a hash or other one-way transformation of the seed or output response, or b) an encrypted version of the seed or output response; thereafter, the user providing information to the wallet application indicating the right to use the seed, wherein in case a) the information includes a re-submitted instance of the seed or output response, or in case b) the transformation includes an encrypted version of the seed or output response; the wallet application is configured to derive at least one child key from a seed in response to, and on condition that, the information is verified based on the transformation stored in association with the wallet application; the method further comprising signing a blockchain transaction using the child key derived by the wallet application in response to the verification and submitting the signed blockchain transaction for recording to a blockchain; In case a), the verification by the wallet application is i) verifying that the same transformation applied to said re-submitted instance of said seed or output response is equal to the stored certificate of said seed or output response, respectively; or ii) re-determining the seed from the re-submitted instance of the output response and verifying that the same transformation applied to the re-determined seed is equal to the stored certificate of the seed. or In case b), the verification by the wallet application is iii) verifying a supplied password or passcode and conditionally decrypting the encrypted version of the seed or output response.

2. The method of claim 1 , wherein the information includes a regenerated instance of the output response generated by the user re-inputting an instance of the input challenge into the PUF device.

3. The method of claim 1 , wherein the seed is equal to the output response.

4. The method of claim 1 , wherein the seed is derived from an output response.

5. 5. The method of claim 4, wherein deriving the seed from the output response includes deriving a seed of a fixed seed length required for the wallet application, and the output response is of a length different from the fixed seed length.

6. 6. The method of claim 1, wherein the transform comprises a certificate including a hash or other one-way transform of the seed or output response, the information includes a re-submitted instance of the seed or output response, and wherein verifying by the wallet application comprises either i) verifying that the same transform applied to the re-submitted instance of the seed or output response equals the stored certificate for the seed or output response, respectively, or ii) redetermining the seed from the re-submitted instance of the output response and verifying that the same transform applied to the redetermined seed equals the stored certificate for the seed.

7. 7. The method of claim 6, wherein the resubmitted instance of the seed or output response is a regenerated instance generated by the user re-entering an instance of the input challenge into the PUF device.

8. 5. The method of claim 1, wherein the transformation includes an encrypted version of the seed or output response, the information includes a password or passcode, and the verifying by the wallet application includes verifying a supplied password or passcode and decrypting the encrypted version of the seed or output response accordingly.

9. 9. The method of claim 8, wherein the password or passcode includes a decryption key, and wherein the verifying and decrypting includes decrypting the encrypted version of the seed or output response using the provided decryption key.

10. 9. The method of claim 8, wherein the wallet application stores a decryption key associated with the wallet application, the password or passcode having a distinct piece of information, and the decryption releases the decryption key to decrypt the encrypted version of the seed or output response on condition of verifying the supplied password or passcode.

11. 9. The method of claim 8, wherein the information further includes a re-submitted instance of the seed or output response, and wherein the verifying by the wallet application further includes verifying that the decrypted seed or response equals the re-submitted instance of the seed or output response, respectively.

12. 12. The method of claim 11, wherein the resubmitted instance of the seed or output response is a regenerated instance generated by the user re-entering an instance of the input challenge into the PUF device.

13. 2. The method of claim 1, wherein the PUF module includes an extended PUF device having PUF interface logic and a deterministic transformation function, the input challenge being a secondary challenge and the output response being a secondary response, the PUF interface logic being configured to input a primary challenge to the PUF to cause the PUF to generate a primary response, the deterministic transformation function being configured to generate the secondary response as a function of the secondary challenge and the primary response, and an interface being configured to return the secondary response as the output response of the PUF device.

14. The method of claim 1 , wherein the PUF module consists solely of a PUF, and the input challenge and output response are a primary challenge and response of the PUF, respectively.

15. 14. The method of claim 13, wherein the PUF module has a plurality of different possible challenge-response pairs, and the input challenge and output response is one of the plurality of challenge-response pairs.

16. The method of claim 1 , wherein the PUF device containing the PUF is contained within a self-contained housing.

17. 17. The method of claim 16, wherein entering the input challenge is performed via a built-in user interface integrated into a housing of the PUF device.

18. The method of claim 17 , wherein the PUF device has no interface for receiving data other than the built-in user interface.

19. The method of claim 17 , wherein the built-in user interface includes a keyboard.

20. 17. The method of claim 16, wherein the wallet application is installed on and runs on a computer housed in a separate housing from the PUF device, the transformation of the seed is stored on the computer, the PUF device comprises a device-to-device interface for communicating with the computer to output the output response to the wallet application on the computer so that the wallet application executes the determination of the seed, a user inputs the information via a user interface of the computer, and the blockchain transaction is signed on the computer and sent from the computer to be recorded on the blockchain.

21. The method of claim 20 , wherein the device-to-device interface is a direct local interface.

22. The device-to-device interface - a USB connector for connecting to said computer via a USB port of said computer, or - a screen configured to display said output response in a graphical format for reading by a camera or scanner of said computer.

21. The method of claim 20, comprising one of:

23. 17. The method of claim 16, wherein the wallet application is integrated within the PUF device, the transformation of the seed is stored within the PUF device, entering the input challenge is performed via a built-in user interface integrated within a housing of the PUF device, a user enters the information via the built-in user interface of the PUF device, and the blockchain transaction is signed on the PUF device and sent from the PUF device to be recorded on the blockchain.

24. 24. The method of claim 23, wherein the blockchain transaction is transmitted to a separate computer via a local interface of the PUF device and then further transmitted via a network interface of the computer.

25. 24. The method of claim 23, wherein the blockchain transaction is transmitted directly through a network interface integrated within the PUF device.

26. 21. The method of claim 20, wherein the output response is not stored, or at least not explicitly stored, on the computer.

27. The method of claim 16 , wherein the housing of the PUF device is locked or sealed.

28. The method of claim 1 , wherein the output response is not stored anywhere, or at least not explicitly stored.

29. 2. The method of claim 1, wherein the input challenge is entered in the form of a BIP32 mnemonic phrase or other mnemonic phrase that is mapped to a numeric value of the input challenge, the numeric value being used by the PUF device to generate the output response.

30. A PUF device integrated in the same housing, a built-in user interface for entering an input challenge; a physical unclonable function (PUF) module, the PUF device configured to generate a corresponding output response based on the input challenge and the PUF in response to input of the input challenge; an embedded memory having one or more memory units; an embedded processor configured to execute a blockchain wallet application stored in a portion of the embedded memory, the blockchain wallet application configured to be instantiated to use a seed determined from an output response generated by the PUF device, the instantiating including storing in a portion of the embedded memory a transformation of the seed or output response, the transformation including either a) a certificate including a hash or other one-way transformation of the seed or output response, or b) an encrypted version of the seed or output response; the built-in user interface is further operable to receive information from a user indicating a right to use the seed, wherein in case a), the information includes a re-submitted instance of the seed or output response, or in case b), the transformation includes an encrypted version of the seed or output response; the wallet application is configured to derive at least one child key from the seed in response to, and on condition that, the information is verified based on the transformation stored in association with the wallet application; the wallet application is operable to sign a blockchain transaction using the child key derived by the wallet application in response to the verification; the PUF device further comprises a data interface configured to transmit signed blockchain transactions to be recorded in a blockchain; In case a), the verification by the wallet application is i) verifying that the same transformation applied to said re-submitted instance of said seed or output response is equal to the stored certificate of said seed or output response, respectively; or ii) re-determining the seed from the re-submitted instance of the output response and verifying that the same transformation applied to the re-determined seed is equal to the stored certificate of the seed. or In case b), the verification by the wallet application is iii) a PUF device that verifies a supplied password or passcode and conditionally decrypts the encrypted version of the seed or output response.

Citation Information

Patent Citations

  • Device authentication using a physically unclonable functions based key generation system

    US20140189890A1

  • Secure digital signatures using physical unclonable function devices with reduced error rates

    US20200076624A1