Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
SECURE IDENTITY CARD USING UNCLONABLE FUNCTIONS
Document Type and Number:
WIPO Patent Application WO/2021/028574
Kind Code:
A1
Abstract:
Various systems and methods for securely sharing private information are described herein. A user device includes a memory device; and a processor subsystem, which when configured by instructions stored on the memory device, is operable to perform the operations comprising: receiving, at a verifier device, an indication of supported unclonable functions and a challenge value; identifying an unclonable function from the supported unclonable functions, to obtain a selected unclonable function; executing the selected unclonable function based on the challenge value, to obtain a result; and transmitting the indication of supported unclonable functions, the selected unclonable function, and the result to the verifier device to authenticate the user device.

Inventors:
KAUFMANN MARTIN (AT)
Application Number:
PCT/EP2020/072877
Publication Date:
February 18, 2021
Filing Date:
August 14, 2020
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
ASSA ABLOY AB (SE)
International Classes:
H04L9/32
Domestic Patent References:
WO2018183926A12018-10-04
WO2018183915A12018-10-04
Foreign References:
US20180129801A12018-05-10
US20190199525A12019-06-27
Attorney, Agent or Firm:
SCHWEGMAN LUNDBERG WOESSNER LIMITED (GB)
Download PDF:
Claims:
CLAIMS

What is claimed is:

1. A user device comprising: a memory device; and a processor subsystem, which when configured by instructions stored on the memory device, is operable to perform operations comprising: receiving, from a verifier device, an indication of supported unclonable functions and a challenge value; identifying an unclonable function from the supported unclonable functions, to obtain a selected unclonable function; executing the selected unclonable function based on the challenge value, to obtain a result; and transmitting the indication of supported unclonable functions, the selected unclonable function, and the result to the verifier device to authenticate the user device.

2. The user device of claim 1, wherein the indication of supported unclonable functions is included in a field of a message structure.

3. The user device of claim 1 or 2, wherein the challenge value is a random value.

4. The user device of claim 1, wherein the selected unclonable function is a physically unclonable function (PUF).

5. The user device of claim 4, wherein executing the unclonable function based on the challenge value comprises: executing the PUF with the challenge value as an input bit value for the PUF.

6. The user device of claim 1 or 2, wherein the selected unclonable function is a software-based unclonable function.

7. The user device of claim 6, wherein executing the unclonable function based on the challenge value comprises: executing the software-based unclonable function with the challenge value as an input value to the software-based unclonable function.

8. The user device of claim 1, 2, 4, or 5, wherein the memory device is to store a credential.

9. The user device of claim 8, wherein the unclonable function is used to secure the credential.

10. The user device of claim 1, 2, 4, or 5, wherein the processor subsystem is operable to perform the operations comprising: receiving a message from the verifier device to access the credential, the message including the indication of supported unclonable functions and the challenge value, and the message having a corresponding response message format defined by a protocol; and transmitting the indication of supported unclonable functions, the selected unclonable function, and the result to the verifier device to authenticate the user device using the corresponding response message format.

11. A method for securing data on a user device, the method comprising: receiving, from a verifier device, an indication of supported unclonable functions and a challenge value; identifying an unclonable function from the supported unclonable functions, to obtain a selected unclonable function; executing the selected unclonable function based on the challenge value, to obtain a result; and transmitting the indication of supported unclonable functions, the selected unclonable function, and the result to the verifier device to authenticate the user device.

12. The method of claim 11, wherein the indication of supported unclonable functions is included in a field of a message structure.

13. The method of claim 11 or 12, wherein the challenge value is a random value.

14. The method of claim 11, wherein the selected unclonable function is a physically unclonable function (PUF).

15. The method of claim 14, wherein executing the unclonable function based on the challenge value comprises: executing the PUF with the challenge value as an input bit value for the PUF.

16. The method of claim 11 or 12, wherein the selected unclonable function is a software- based unclonable function.

17. The method of claim 16, wherein executing the unclonable function based on the challenge value comprises: executing the software-based unclonable function with the challenge value as an input value to the software-based unclonable function.

18. The method of claim 11, 12, 14, or 15, wherein the credential is stored in a memory device of the user device.

19. The method of claim 11, wherein the unclonable function is used to secure the credential.

20. The method of claim 11, 12, 14, or 15, comprising: receiving a message from the verifier device to access the credential, the message including the indication of supported unclonable functions and the challenge value, and the message having a corresponding response message format defined by a protocol; and transmitting the indication of supported unclonable functions, the selected unclonable function, and the result to the verifier device to authenticate the user device using the corresponding response message format.

21. A machine-readable medium including instructions for securing data on a user device, which when executed by the user device, cause the user device to perform operations comprising: receiving, from a verifier device, an indication of supported unclonable functions and a challenge value; identifying an unclonable function from the supported unclonable functions, to obtain a selected unclonable function; executing the selected unclonable function based on the challenge value, to obtain a result; and transmitting the indication of supported unclonable functions, the selected unclonable function, and the result to the verifier device to authenticate the user device.

22. The machine-readable medium of claim 21, wherein the indication of supported unclonable functions is included in a field of a message structure.

23. The machine-readable medium of claim 21 or 22, wherein the challenge value is a random value.

24. The machine-readable medium of claim 21, wherein the selected unclonable function is a physically unclonable function (PUF).

25. The machine-readable medium of claim 24, wherein executing the unclonable function based on the challenge value comprises: executing the PUF with the challenge value as an input bit value for the PUF.

26. The machine-readable medium of claim 21 or 22, wherein the selected unclonable function is a software-based unclonable function.

27. The machine-readable medium of claim 26, wherein executing the unclonable function based on the challenge value comprises: executing the software-based unclonable function with the challenge value as an input value to the software-based unclonable function.

28. The machine-readable medium of claim 21, 22, 24, or 25, wherein the memory device is to store a credential.

29. The machine-readable medium of claim 21, wherein the unclonable function is used to secure the credential.

30. The machine-readable medium of claim 21, 22, 24, or 25, wherein the processor subsystem is operable to perform the operations comprising: receiving a message from the verifier device to access the credential, the message including the indication of supported unclonable functions and the challenge value, and the message having a corresponding response message format defined by a protocol; and transmitting the indication of supported unclonable functions, the selected unclonable function, and the result to the verifier device to authenticate the user device using the corresponding response message format.

31. A verifier device comprising: a memory device; and a processor subsystem, which when configured by instructions stored on the memory device, is operable to perform the operations comprising: transmitting, to a user device, an indication of supported unclonable functions and a challenge value; receiving, from the user device, the indication of supported unclonable functions, a selected unclonable function, and a result, the selected unclonable function selected from the supported unclonable functions, and the result being derived from an output of the selected unclonable function with the challenge value used as input to the selected unclonable function; obtaining an expected result of the selected unclonable function with the challenge value as input; and authenticating the user device based on a comparison between the expected result and the result received from the user device.

32. The verifier device of claim 31, wherein the indication of supported unclonable functions is included in a field of a message structure.

33. The verifier device of claim 31 or 32, wherein the challenge value is a random value.

34. The verifier device of claim 31 or 32, wherein the selected unclonable function is a physically unclonable function (PUF).

35. The verifier device of claim 31 or 32, wherein the selected unclonable function is a software-based unclonable function.

36. The verifier device of claim 31, wherein obtaining the expected result of the selected unclonable function with the challenge value as input comprises: accessing a secure storage device having challenge/response pairs for the supported unclonable functions for the user device; and obtaining the expected result by performing a lookup on the challenge/response pairs using the challenge value and the selected unclonable function.

37. A method of authenticating a user device at a verifier device, the method comprising: transmitting, to the user device, an indication of supported unclonable functions and a challenge value; receiving, from the user device, the indication of supported unclonable functions, a selected unclonable function, and a result, the selected unclonable function selected from the supported unclonable functions, and the result being derived from an output of the selected unclonable function with the challenge value used as input to the selected unclonable function; obtaining an expected result of the selected unclonable function with the challenge value as input; and authenticating the user device based on a comparison between the expected result and the result received from the user device.

38. The method of claim 37, wherein the indication of supported unclonable functions is included in a field of a message structure.

39. The method of claim 37 or 38, wherein the challenge value is a random value.

40. The method of claim 37 or 38, wherein the selected unclonable function is a physically unclonable function (PUF).

41. The method of claim 37 or 38, wherein the selected unclonable function is a software- based unclonable function.

42. The method of claim 37 or 38, wherein obtaining the expected result of the selected unclonable function with the challenge value as input comprises: accessing a secure storage device having challenge/response pairs for the supported unclonable functions for the user device; and obtaining the expected result by performing a lookup on the challenge/response pairs using the challenge value and the selected unclonable function.

43. A machine-readable medium including instructions for authenticating a user device at a verifier device, which when executed by the verifier device, cause the verifier device to perform operations comprising: transmitting, to the user device, an indication of supported unclonable functions and a challenge value; receiving, from the user device, the indication of supported unclonable functions, a selected unclonable function, and a result, the selected unclonable function selected from the supported unclonable functions, and the result being derived from an output of the selected unclonable function with the challenge value used as input to the selected unclonable function; obtaining an expected result of the selected unclonable function with the challenge value as input; and authenticating the user device based on a comparison between the expected result and the result received from the user device.

44. The machine-readable medium of claim 43, wherein the indication of supported unclonable functions is included in a field of a message structure.

45. The machine-readable medium of claim 43 or 44, wherein the challenge value is a random value.

46. The machine-readable medium of claim 43 or 44, wherein the selected unclonable function is a physically unclonable function (PUF).

47. The machine-readable medium of claim 43 or 44, wherein the selected unclonable function is a software-based unclonable function.

48. The machine-readable medium of claim 43 or 44, wherein obtaining the expected result of the selected unclonable function with the challenge value as input comprises: accessing a secure storage device having challenge/response pairs for the supported unclonable functions for the user device; and obtaining the expected result by performing a lookup on the challenge/response pairs using the challenge value and the selected unclonable function.

Description:
SECURE IDENTITY CARD USING UNCLONABLE FUNCTIONS

TECHNICAL FIELD

[0001] Embodiments described herein generally relate to electronic credential systems, and in particular, to secure authentication.

BACKGROUND

[0002] Identity documents, such as identity cards, may have multiple pieces of information stored on them. When in use, an identity card is read by a reader device or interrogator device. The pieces of information stored on the identity card are protected using various security mechanisms to limit access by reader devices.

BRIEF DESCRIPTION OF THE DRAWINGS [0003] In the drawings, which are not necessarily drawn to scale, like numerals may describe similar components in different views. Like numerals having different letter suffixes may represent different instances of similar components. Some embodiments are illustrated by way of example, and not limitation, in the figures of the accompanying drawings in which: [0004] FIG. l is a block diagram illustrating a credential system, according an embodiment;

[0005] FIG. 2 is a message sequence diagram illustrating an interaction between an application executing on a verifier device and Seos® on a user device, according to an embodiment;

[0006] FIG. 3 is a flowchart of a method for using a physically unclonable function (PUF), according to an embodiment;

[0007] FIG. 4 is a flowchart of a method for using a software-based unclonable function, according to an embodiment;

[0008] FIG. 5 is a flowchart illustrating a method of using unclonable functions in an authentication mechanism, according to an embodiment;

[0009] FIG. 6 is a flowchart illustrating a method of using unclonable functions in an authentication mechanism, according to an embodiment; and

[0010] FIG. 7 is a block diagram illustrating an example machine upon which any one or more of the techniques (e.g., methodologies) discussed herein may perform, according to an embodiment. DETAILED DESCRIPTION

[0011] In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of some example embodiments. It will be evident, however, to one skilled in the art that the present disclosure may be practiced without these specific details.

[0012] Personal electronic identity cards are becoming more popular. Such cards may be issued by governments, schools, health care systems, or the like. To use a personal electronic identity card, a card reader (e.g., reader device or interrogator device) is used to read some or all of the information contained on the card. There are various protocols in place that dictate how a reader device is to access data on the identity card.

[0013] A security risk exists where a malicious party may clone a personal identity card and then use the card to access places or resources by impersonating the owner of the card. The present disclosure introduces the use of an unclonable function in the security protocol used to access data on an identity card. Unclonable functions may be separated into two classifications: software-based and hardware-based. Software-based unclonable functions include functions that use one-way abstract mathematical functions, such as prime number factorization, discrete logarithm problems, and hashing. Hardware-based unclonable functions use inherent randomness of the physical structure or manufacture of underlying hardware to create a unique signature. Hardware-based unclonable functions are also referred to as physically unclonable functions (PUF).

[0014] A number of various types of PUFs exist. These include optical PUFs, coating PUFs, delay PUFs, static random-access memory (SRAM) PUFs, radio frequency (RF)

PUFs, butterfly PUFs, bistable ring PUFs, digital PUFs, magnetic PUFs, metal resistant PUFs, and the like. Using natural variation in manufacturing and materials, each PUF is nearly guaranteed to be a unique representation. For instance, a digital PUF is based on the interconnect geometrical randomness induced by lithography variations during manufacture, while an optical PUF is based on the random application of light scattering particles applied to a surface, which when illuminated cast a unique and reproducible speckle pattern. A PUF is based on the physical system and is a repeatable and straightforward way to evaluate using the physical system.

[0015] Using an unclonable function provides increased security because its output looks like a random function, which is unpredictable even for an attacker with physical access. Unclonability refers to a function or system where the cost to engineer or manufacture another function or system with the same fingerprint would be prohibitively expensive or impractical using known techniques.

[0016] The present disclosure describes an improved communication mechanism to provide stronger security of the data elements on the identity card with the use of unclonable functions. Additional features are discussed below.

System Overview

[0017] Identity credentials (e.g., electronic documents, cards, mobile profiles, etc.) include information such as a first and last name, a date of birth, an address, etc. In the digital world, each piece of information is a data element and these data elements are combined into a package that is issued to a target user. Having a digital credential provides several advantages. Information and documentation are easy to access. The information is centralized and may be stored in a network location, providing backup and redundancy. Digital credentials may also be more immune to counterfeiting and corruption than conventional credentials.

[0018] Some terms are provided here for common reference. It is understood that these terms are non-limiting and that other terms, phrases, or descriptions of operations, components, or devices in the systems and methods described may be used.

[0019] Package - a Package is a collection of name:value pairs of data. The name of the data pair may be referred to as a Tag, Field, or Description. A Package may include metadata about the Package, such as a Package Hash, Package Signature, Package Expiration, or the like.

[0020] Credential - a Credential is an encapsulation of one or more packages. An aggregated Credential includes two or more packages. A Credential may include metadata describing the issuer of the credential, expiration or validity dates, or other information about the Credential.

[0021] Issuer - an Issuer is a person, entity, service, or other platform that provides a Package. The Issuer may attest to the authenticity, validity, and correctness of data contained in the Package. The Issuer may sign the Package or sign individual data in the Package. The Issuer may be an Original Issuer, which is an Issuer that created the data, or a Re-Issuer, which is one that reuses the Original Issuer’s data. An Issuer or Re-issuer may issue a Package as a Credential.

[0022] Data that is provided by an Issuer may have an associated Assurance Level. An Assurance Level is an indication of the trustworthiness of the data. The Assurance Level may be a numerical range, a letter grade, or other indication. Data issued by an Original Issuer may have the highest Assurance Level. As data is reused and republished by Re-Issuers in derivative Packages, the Assurance Level may decrease stepwise. By analyzing the Assurance Level of data contained in a Package, one may be able to see how many steps away the data in the current Package is from the Original Issuer.

[0023] Verifier - a Verifier is a device, person, entity, service, or other platform that verifies data in a Package or Credential. A Verifier may obtain data from a user Credential, for example a point-of-sale, and then contact one or more Issuers to validate the data. Other forms of validation may be used, such as by analyzing data signatures, analyzing a blockchain, or the like. A Verifier may verify the authenticity or validity of a Credential. [0024] FIG. 1 is a block diagram illustrating a credential system 100, according an embodiment. The credential system 100 includes a first original issuer 102A and a second original issuer 102B (collectively referred to as 102) that issue core packages 104A, 104B (collectively referred to as 104). The core packages 104 include tags and values that are generated by the original issuers 102. The credential system 100 also includes re-issuer 106 that compiles data from one or more issuers (or re-issuers) in the credential system 100 and re-issues an aggregated credential with contents from two or more packages. While one re issuer 106 is illustrated, it is understood that more than one re-issuer 106 may be active in the credential system 100.

[0025] The re-issuer 106 may also add its own data to the aggregate credential by issuing its own package and consolidating the package with data from packages of other issuers 102. The re-issuer 106 may sign its own package, portions of its own package, or the aggregated credential.

[0026] In the example illustrated in FIG. 1, the first original issuer 102A is a government agency that issues birth certificates (e.g., a Public Health Office of a county). The first original issuer 102A is the place where the user’s name, date of birth (DOB), and place of birth are first recorded. The second original issuer 102B is a vehicle manufacturer that produces vehicles. Each vehicle produced is uniquely identified with a vehicle identification number (VIN). The second original issuer 102B creates a package with data describing a vehicle.

[0027] The re-issuer 106 may be a government agency that produces packages for vehicle titles (e.g., a Department of Motor Vehicles (DMV)). The vehicle title is identified with a title identifier that uniquely identifies the title. Consequently, the aggregate credential produced by the re-issuer 106 may include: the vehicle title identifier, as issued by the re-issuer 106; some or all of information from a package from first original issuer 102A describing an owner’s personal information; and some or all of information from a package from the second original issuer 102B describing the vehicle.

[0028] A credential database 108 may be used to store packages and other data from one or more issuers 102 or re-issuers 106. The credential database 108 may use a relational database management system (RDBMS) to organize the package information into tables. The credential database 108 may be queried by various entities or users, such as a re-issuer 106, a verifier 110, or a user at a user device 112. A re-issuer 106 may query the credential database 108 to obtain original package information to populate an aggregated credential. The credential database 108 may be implemented on one or more servers, which may be owned or operated by a credential issuing entity. In some embodiments, credential issuing entities access the credential database 108 as part of a service.

[0029] The various components of the credential system 100 may communicate over one or more networks 114, which may include any known type of network that facilitates machine-to-machine communications. The network 114 may use the same communication protocols or different protocols without departing from the scope of the present disclosure. The network 114 may include wired or wireless communication technologies. The Internet is an example of a communication network that constitutes an Internet Protocol (IP) network consisting of many computers, computing networks, and other communication devices located all over the world, which are connected through many telephone systems and other means. Other examples of a communication networks include, without limitation, a Plain Old Telephone System (POTS), an Integrated Services Digital Network (ISDN), the Public Switched Telephone Network (PSTN), a Local Area Network (LAN), a Wide Area Network (WAN), a Session Initiation Protocol (SIP) network, a Voice over Internet Protocol (VoIP) network, a cellular network, and any other type of packet-switched or circuit-switched network known in the art. In addition, it can be appreciated that the communication network 114 need not be limited to any one network type, and instead may be comprised of several different networks or network types. Moreover, the network 114 may include a number of different communication media such as coaxial cable, copper cable/wire, fiber-optic cable, antennas for transmitting/receiving wireless messages, and combinations thereof.

[0030] The user device 112 and verifier device 110 may be of any type of compute device. The user device 112 is typically portable in nature, and may take the form of a cellular phone, mobile device, smart phone, personal digital assistant, laptop, tablet, wearable device, portable credential card, key fob, or the like. It should be appreciated that the verifier device 110 does not necessarily have to take the form of a mobile device, but rather may be implemented as a part of a personal computer, desktop computer, kiosk, payment terminal, beacon, or the like.

[0031] During a transaction, a user with the user device 112 may be asked to present a credential 116 or part of a credential 116 to a verifier device 110. The verifier device 110 may be a point-of-sale terminal with a beacon, for example. The beacon may periodically attempt to connect with user devices 112 in communication range or within some threshold proximity. The verifier device 110 may connect with the user device 112 over wireless communications (e.g., BLUETOOTH® or WI-FI), and obtain some or all of a credential 116 from the user device 112. For instance, as the user approaches the checkout lane, the beacon may advertise a connection, which the user device 112 uses to connect with the beacon and construct a secure connection. The beacon may request certain credential information, such as a user’s name and credit card number, and the user device 112 may respond with the information. The user may selectively share portions of the credential 116 to the verifier device 110 to maintain as much personal privacy as possible. The verifier device 110 may validate the credential 116 by accessing an issuer 102, re-issuer 106, or credential database 108.

[0032] Depending on how the system is organized, the user device 112 may obtain one or more credentials 116 from one or more issuers 102 or re-issuers 106. For instance, the user may obtain a driving license credential from a government motor vehicles agency and a health care identification card from a health insurance company. Alternatively, the user may obtain a composite credential that includes a package from the government motor vehicles agency and another package from the health insurance agency.

[0033] The interaction between the user device 112 and the verifier device 110 may be controlled by a protocol and command set that is used to access data on the user device 112 from the verifier device 110. In an embodiment, the protocol and command set are SEOS® CORE from HID GLOBAL CORPORATION.

[0034] The Seos® core is a software implementation, in the form of an application or firmware executing on a device, that manages and secures a set of data containers accessible through the Seos® command set. Each data container is known as an Application Data File (ADF). Each ADF is uniquely identified within the container by an OID (Object Identifier). OIDs are globally unique. An application that is accessing the container will use the OID to select the ADF that it wishes to read/write to. An ADF is itself comprised of multiple objects. [0035] There is a sequence of commands that are used to read and write data to an established ADF. Regardless of whether the application is reading or writing data it must first select the ADF it wishes to address and then establish a secure channel with that ADF. Once this has been done it can then either write to the ADF using the PUT DATA command or read from the ADF using the GET DATA command.

[0036] To first access the ADF, a SELECT ADF command is used to select the ADF that the application wishes to read from / write to. It requires possession of the privacy key set for that ADF. This key set is defined within the ADF. Privacy keys are not diversified.

[0037] The GENERAL AUTHENTICATE command establishes a secure channel with a specific ADF within the Seos® core. It requires possession of an authentication key set for that ADF. These key sets are defined within the ADF. Authentication keys are diversified and hence unique to each instance of a Seos® core. Note that a single ADF may have multiple authentication key sets. Access control rules can be defined within the ADF that determine which authentication key set must be used to gain read or write access to a specific object within that ADF.

[0038] The next command is PUT DATA. This command enables the application to write data to an identified object within the ADF. It requires possession of the of the session key established during GENERAL AUTHENTICATE. Another command is GET DATA. This command enables the application to read data from an identified object within the ADF.

There are also commands to create and destroy ADFs within the Seos® core.

[0039] FIG. 2 is a message sequence diagram illustrating an interaction between an application 200 executing on a verifier device (e.g., verifier device 110) and a Seos® core 202 on a user device (e.g., user device 112), according to an embodiment. The application 200 issues a SELECT SEOS command (210) to select the Seos® core. This is optional in a native Seos® card because the Seos® core is the default application. The Seos® core 202 responds with a file control information (215).

[0040] The application 200 then issues a SELECT ADF command (220) using the ADF’s OID. Multiple ADF OIDs may be specified in the SELECT ADF command (220). In order to strengthen security, the SELECT ADF command (220) includes a list of supported unclonable functions (F sup ) and a challenge value x. The challenge value may be a random value (e.g., a machine-generated pseudo-random value). The challenge value may be bounded to a certain length, such as 4 bits, 8 bits, 2 bytes, or other size depending on the implementation. The list F sup and challenge value are included in the data portion of the SELECT ADF message. [0041] In response to the SELECT ADF command (220), the Seos® core provides an encrypted message (225) with data for use in key derivation during the later stages when the application 200 accesses the contents of the ADF. Additionally, the response to the SELECT ADF command (225) includes the list of supported unclonable functions (F sup ), an identifier of the unclonable function used (Fused), and an output of the unclonable function (f(x)) that was used. The list of supported unclonable functions (F sup ) is provided as a way for the application 200 to verify that the response is valid and that the Seos® core 202 is authentic. For instance, the application 200 may compare the value of F sup that was sent in the SELECT ADF command (220) with the value of F sup in the response (225) to verify a valid response. [0042] If the Seos® core 202 does not support any of the functions in the F sup list, then the return value f(x) is equal to the challenge value x. If the Seos® core 202 supports at least one function in the F sup list, then the Seos® core 202 may execute an unclonable function (operation 222) and return the result, along with an indication of which function was executed (225). The output of the unclonable function f(x) is compared to a previously determined value to validate the device (operation 227).

[0043] The F sup list may include software-based or hardware-based unclonable functions. For a software-based unclonable function, the challenge value may be used as input to the function and f(x) is the output. For a hardware-based unclonable function (e.g., PUF), the challenge value may be a parameter used to configure hardware.

[0044] A user device may support a combination of hardware and software unclonable functions. For instance, a user device may implement several hardware PUFs, such as a SRAM PUF, a digital PUF, and a butterfly PUF. Each PUF may use a certain hardware component, such as SRAM, a pair of pre-designated flip-flops, a pre-designated circuit, or the like. The challenge value may be used to control a type of input, a timing of an input, a magnitude of an input, or other aspects to trigger the PUF functionality in a circuit, component, or aspect of the user device.

[0045] After the ADF is selected by the SELECT ADF command (220), the authentication phase is used to authenticate the application 200 to the ADF. A GENERAL AUTHENTICATE command (230) is issued to the Seos® core 202. The response (235) to the GENERAL AUTHENTICATE command (230) includes data from the Seos® core 202 that is used for mutual authentication. In the mutual authentication, the application 200 authenticates to the Seos® core 202 and the Seos® core 202 to the application 200. As part of the mutual authentication operation, the application 200 sends an F sup list and a challenge value y in the GENERAL AUTHENTICATE command (230). The F sup list used in the authentication operation may differ from the F sup list used above in the SELECT ADF (220) communication or it may be the same list. In the response (235), the Seos® core 202 includes F sup , F used , and f(y), which is the output of the used unclonable function withy as the input (operation 232). The output of the unclonable function f(y) is compared to a previously determined value to validate the device (operation 237).

[0046] The application 200 may use the return value f(x) or f(y) to determine whether the Seos® core 202 is authentic and that the message is valid. The return value is compared to a previously-known resultant value that is mapped to the input challenge value (e.g., x ory, respectively) (operations 227 or 237, respectively). The previously-known resultant value may be stored in a secure memory device and may be provided to the application 200 using a secure communication mechanism. The previously-known resultant value may be stored remotely from the application 200 (e.g., in a cloud service) and be obtained using a secure communication channel. In some cases, a range of input values are used to obtain a range of output values and each of the input values and corresponding output values are stored in the secure memory device for later reference. The input and output values may be stored with a corresponding device identifier or Seos® core 202 identifier, to uniquely identify the input/output pairs corresponding to the device.

[0047] After the application 200 and Seos® core 202 mutually authenticate, additional operations may be performed (240), such as a GET DATA or PUT DATA operation to retrieve or insert data into/out of an ADF.

[0048] Although Seos® is described here in various use cases, it is understood that the implementation of PUF-enabled security mechanisms is not limited to Seos® installations. The following sections include descriptions of process flows that are able to be implemented in any secured resource facility. Generally, a PUF is designated and provided to a user device, which executes the PUF and returns the result. The result is verified against a previously-stored value to validate the user device. Additional embodiments and features are described throughout this document.

[0049] FIG. 3 is a flowchart of a method 300 for using a physically unclonable function (PUF), according to an embodiment. The PUF is manufactured (operation 302). Challenge and response pairs are generated from unclonable function(s) (operation 304). These challenge and response pairs may be for multiple types of supported unclonable functions. The challenge and response pairs are stored in a secure storage (operation 306). The secure storage is accessible to the verifier device. The PUF (e.g., user device, identity card, etc.) is provided to the user device (operation 308). When the user is ready to present the user device for authentication, the verifier device selects a challenge from the known challenge/response pairs and transmits it to the user device (operation 310). The user device runs the challenge on the PUF and returns the response (operation 312). The verifier device is then able to check and ensure that the response is correct based on the challenge/response pairs saved in secure storage (operation 314). If there are several PUFs supported by the user device, then the user device may select one and use the challenge with the specific one and then provide an indication to the verifier device of which PUF was used.

[0050] FIG. 4 is a flowchart of a method 400 for using a software-based unclonable function, according to an embodiment. Software-based unclonable functions are identified and stored in secure storage (402). Each of the verifier device and the user device have access to the unclonable functions. When the user is ready to present the user device for authentication, the verifier device selects a challenge and transmits it to the user device (operation 404). The challenge may be a random value. The user device selects an unclonable function to execute (operation 406). It may be selected from a list of unclonable functions supported by the verifier device. The user device runs the challenge with the selected unclonable function and returns the response (operation 408). The user device also includes an indication of which unclonable function was used in the execution. The verifier device is then able to check and ensure that the response is correct by executing the same unclonable function with the initial challenge and comparing the result with that provided by the user device (operation 410).

Operations

[0051] FIG. 5 is a flowchart illustrating a method 500 of using unclonable functions in an authentication mechanism, according to an embodiment. The method 500 begins at operation 502, where an indication of supported unclonable functions and a challenge value are received at a user device from a verifier device. In an embodiment, the indication of supported unclonable functions is included in a field of a message structure. In an embodiment, the challenge value is a random value.

[0052] At 504, an unclonable function is identified from the supported unclonable functions. This obtains a selected unclonable function.

[0053] At 506, the selected unclonable function is executed based on the challenge value, to obtain a result. In an embodiment, the selected unclonable function is a physically unclonable function (PUF). In a further embodiment, executing the unclonable function based on the challenge value includes executing the PUF with the challenge value as an input bit value for the PUF.

[0054] In an embodiment, the selected unclonable function is a software-based unclonable function. In a further embodiment, executing the unclonable function based on the challenge value includes executing the software-based unclonable function with the challenge value as an input value to the software-based unclonable function.

[0055] At 508, the indication of supported unclonable functions, the selected unclonable function, and the result are transmitted to the verifier device to authenticate the user device. [0056] In an embodiment, the credential is stored in a memory device of the user device.

In a further embodiment, the unclonable function is used to secure the credential. In a further embodiment, the method 500 includes receiving a message from the verifier device to access the credential, the message including the indication of supported unclonable functions and the challenge value, and the message having a corresponding response message format defined by a protocol. The method 500 includes transmitting the indication of supported unclonable functions, the selected unclonable function, and the result to the verifier device to authenticate the user device using the corresponding response message format. The message formats may be in a Seos® command protocol, e.g., SELECT ADF or GENERAL AUTHENTICATE.

[0057] FIG. 6 is a flowchart illustrating a method 600 of using unclonable functions in an authentication mechanism, according to an embodiment. The method 600 begins at operation 602, where a verifier device transmits, to a user device, an indication of supported unclonable functions and a challenge value. In an embodiment, the indication of supported unclonable functions is included in a field of a message structure. In an embodiment, the challenge value is a random value.

[0058] At 604, the indication of supported unclonable functions, a selected unclonable function, and a result are received from the user device. In the responsive transmission, the selected unclonable function selected from the supported unclonable functions, and the result is derived from an output of the selected unclonable function with the challenge value used as input to the selected unclonable function. In an embodiment, the selected unclonable function is a physically unclonable function (PUF). In another embodiment, the selected unclonable function is a software-based unclonable function.

[0059] At 606, an expected result of the selected unclonable function with the challenge value as input is obtained. This may be obtained from a database of challenge/response pairs that were previously tested and generated with the user device. Thus, in an embodiment, obtaining the expected result of the selected unclonable function with the challenge value as input includes accessing a secure storage device having challenge/response pairs for the supported unclonable functions for the user device and obtaining the expected result by performing a lookup on the challenge/response pairs using the challenge value and the selected unclonable function.

[0060] At 608, the user device is authenticated based on a comparison between the expected result and the result received from the user device.

Example System Components

[0061] Embodiments may be implemented in one or a combination of hardware, firmware, and software. Embodiments may also be implemented as instructions stored on a machine- readable storage device, which may be read and executed by at least one processor to perform the operations described herein. A machine-readable storage device may include any non- transitory mechanism for storing information in a form readable by a machine (e.g., a computer). For example, a machine-readable storage device may include read-only memory (ROM), random-access memory (RAM), magnetic disk storage media, optical storage media, flash-memory devices, and other storage devices and media.

[0062] A processor subsystem may be used to execute the instruction on the machine- readable medium. The processor subsystem may include one or more processors, each with one or more cores. Additionally, the processor subsystem may be disposed on one or more physical devices. The processor subsystem may include one or more specialized processors, such as a graphics processing unit (GPU), a digital signal processor (DSP), a field programmable gate array (FPGA), or a fixed function processor.

[0063] Examples, as described herein, may include, or may operate on, logic or a number of components, modules, or mechanisms. Modules may be hardware, software, or firmware communicatively coupled to one or more processors in order to carry out the operations described herein. Modules may be hardware modules, and as such modules may be considered tangible entities capable of performing specified operations and may be configured or arranged in a certain manner. In an example, circuits may be arranged (e.g., internally or with respect to external entities such as other circuits) in a specified manner as a module. In an example, the whole or part of one or more computer systems (e.g., a standalone, client or server computer system) or one or more hardware processors may be configured by firmware or software (e.g., instructions, an application portion, or an application) as a module that operates to perform specified operations. In an example, the software may reside on a machine-readable medium. In an example, the software, when executed by the underlying hardware of the module, causes the hardware to perform the specified operations. Accordingly, the term hardware module is understood to encompass a tangible entity, be that an entity that is physically constructed, specifically configured (e.g., hardwired), or temporarily (e.g., transitorily) configured (e.g., programmed) to operate in a specified manner or to perform part or all of any operation described herein. Considering examples in which modules are temporarily configured, each of the modules need not be instantiated at any one moment in time. For example, where the modules comprise a general- purpose hardware processor configured using software; the general-purpose hardware processor may be configured as respective different modules at different times. Software may accordingly configure a hardware processor, for example, to constitute a particular module at one instance of time and to constitute a different module at a different instance of time. Modules may also be software or firmware modules, which operate to perform the methodologies described herein.

[0064] Circuitry or circuits, as used in this document, may comprise, for example, singly or in any combination, hardwired circuitry, programmable circuitry such as computer processors comprising one or more individual instruction processing cores, state machine circuitry, and/or firmware that stores instructions executed by programmable circuitry. The circuits, circuitry, or modules may, collectively or individually, be embodied as circuitry that forms part of a larger system, for example, an integrated circuit (IC), system on-chip (SoC), desktop computers, laptop computers, tablet computers, servers, smart phones, etc.

[0065] As used in any embodiment herein, the term “logic” may refer to firmware and/or circuitry configured to perform any of the aforementioned operations. Firmware may be embodied as code, instructions or instruction sets and/or data that are hard-coded (e.g., nonvolatile) in memory devices and/or circuitry.

[0066] “Circuitry,” as used in any embodiment herein, may comprise, for example, singly or in any combination, hardwired circuitry, programmable circuitry, state machine circuitry, logic and/or firmware that stores instructions executed by programmable circuitry. The circuitry may be embodied as an integrated circuit, such as an integrated circuit chip. In some embodiments, the circuitry may be formed, at least in part, by the processor circuitry executing code and/or instructions sets (e.g., software, firmware, etc.) corresponding to the functionality described herein, thus transforming a general-purpose processor into a specific- purpose processing environment to perform one or more of the operations described herein.

In some embodiments, the processor circuitry may be embodied as a stand-alone integrated circuit or may be incorporated as one of several components on an integrated circuit. In some embodiments, the various components and circuitry of the node or other systems may be combined in a system-on-a-chip (SoC) architecture

[0067] FIG. 7 is a block diagram illustrating a machine in the example form of a computer system 700, within which a set or sequence of instructions may be executed to cause the machine to perform any one of the methodologies discussed herein, according to an embodiment. In alternative embodiments, the machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine may operate in the capacity of either a server or a client machine in server-client network environments, or it may act as a peer machine in peer-to-peer (or distributed) network environments. The machine may be a smart identification card, a smart credential, an electronic credential, a verifier device, a user device, a mobile device, a personal computer (PC), a tablet PC, a hybrid tablet, a personal digital assistant (PDA), a mobile telephone, a kiosk, a beacon, or any machine capable of executing instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein. Similarly, the term “processor-based system” shall be taken to include any set of one or more machines that are controlled by or operated by a processor (e.g., a computer) to individually or jointly execute instructions to perform any one or more of the methodologies discussed herein.

[0068] Example computer system 700 includes at least one processor 702 (e.g., a central processing unit (CPU), a graphics processing unit (GPU) or both, processor cores, compute nodes, etc.), a main memory 704 and a static memory 706, which communicate with each other via a link 708 (e.g., bus). The computer system 700 may further include a video display unit 710, an alphanumeric input device 712 (e.g., a keyboard), and a user interface (UI) navigation device 714 (e.g., a mouse). In one embodiment, the video display unit 710, input device 712 and UI navigation device 714 are incorporated into a touch screen display. The computer system 700 may additionally include a storage device 716 (e.g., a drive unit), a signal generation device 718 (e.g., a speaker), a network interface device 720, and one or more sensors (not shown), such as a global positioning system (GPS) sensor, compass, accelerometer, gyrometer, magnetometer, or other type of sensor.

[0069] The storage device 716 includes a machine-readable medium 722 on which is stored one or more sets of data structures and instructions 724 (e.g., software) embodying or utilized by any one or more of the methodologies or functions described herein. The instructions 724 may also reside, completely or at least partially, within the main memory 704, static memory 706, and/or within the processor 702 during execution thereof by the computer system 700, with the main memory 704, static memory 706, and the processor 702 also constituting machine-readable media.

[0070] While the machine-readable medium 722 is illustrated in an example embodiment to be a single medium, the term “machine-readable medium” may include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more instructions 724. The term “machine-readable medium” shall also be taken to include any tangible medium that is capable of storing, encoding or carrying instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the present disclosure or that is capable of storing, encoding or carrying data structures utilized by or associated with such instructions. The term “machine-readable medium” shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media. Specific examples of machine- readable media include non-volatile memory, including but not limited to, by way of example, semiconductor memory devices (e.g., electrically programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM)) and flash memory devices; magnetic disks such as internal hard disks and removable disks; magneto optical disks; and CD-ROM and DVD-ROM disks.

[0071] The instructions 724 may further be transmitted or received over a communications network 726 using a transmission medium via the network interface device 720 utilizing any one of a number of well-known transfer protocols (e.g., HTTP). Examples of communication networks include a local area network (LAN), a wide area network (WAN), the Internet, mobile telephone networks, plain old telephone (POTS) networks, and wireless data networks (e.g., Bluetooth, Wi-Fi, 3G, and 4G LTE/LTE-A, 5G, DSRC, or WiMAX networks). The term “transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding, or carrying instructions for execution by the machine, and includes digital or analog communications signals or other intangible medium to facilitate communication of such software.

Additional Notes & Examples:

[0072] Example l is a user device comprising: a memory device; and a processor subsystem, which when configured by instructions stored on the memory device, is operable to perform operations comprising: receiving, from a verifier device, an indication of supported unclonable functions and a challenge value; identifying an unclonable function from the supported unclonable functions, to obtain a selected unclonable function; executing the selected unclonable function based on the challenge value, to obtain a result; and transmitting the indication of supported unclonable functions, the selected unclonable function, and the result to the verifier device to authenticate the user device.

[0073] In Example 2, the subject matter of Example 1 includes, wherein the indication of supported unclonable functions is included in a field of a message structure.

[0074] In Example 3, the subject matter of Examples 1-2 includes, wherein the challenge value is a random value.

[0075] In Example 4, the subject matter of Examples 1-3 includes, wherein the selected unclonable function is a physically unclonable function (PUF).

[0076] In Example 5, the subject matter of Example 4 includes, wherein executing the unclonable function based on the challenge value comprises: executing the PUF with the challenge value as an input bit value for the PUF.

[0077] In Example 6, the subject matter of Examples 1-5 includes, wherein the selected unclonable function is a software-based unclonable function.

[0078] In Example 7, the subject matter of Example 6 includes, wherein executing the unclonable function based on the challenge value comprises: executing the software-based unclonable function with the challenge value as an input value to the software-based unclonable function.

[0079] In Example 8, the subject matter of Examples 1-7 includes, wherein the memory device is to store a credential.

[0080] In Example 9, the subject matter of Example 8 includes, wherein the unclonable function is used to secure the credential.

[0081] In Example 10, the subject matter of Example 9 includes, wherein the processor subsystem is operable to perform the operations comprising: receiving a message from the verifier device to access the credential, the message including the indication of supported unclonable functions and the challenge value, and the message having a corresponding response message format defined by a protocol; and transmitting the indication of supported unclonable functions, the selected unclonable function, and the result to the verifier device to authenticate the user device using the corresponding response message format.

[0082] Example 11 is a method for securing data on a user device, the method comprising: receiving, from a verifier device, an indication of supported unclonable functions and a challenge value; identifying an unclonable function from the supported unclonable functions, to obtain a selected unclonable function; executing the selected unclonable function based on the challenge value, to obtain a result; and transmitting the indication of supported unclonable functions, the selected unclonable function, and the result to the verifier device to authenticate the user device.

[0083] In Example 12, the subject matter of Example 11 includes, wherein the indication of supported unclonable functions is included in a field of a message structure.

[0084] In Example 13, the subject matter of Examples 11-12 includes, wherein the challenge value is a random value.

[0085] In Example 14, the subject matter of Examples 11-13 includes, wherein the selected unclonable function is a physically unclonable function (PUF).

[0086] In Example 15, the subject matter of Example 14 includes, wherein executing the unclonable function based on the challenge value comprises: executing the PUF with the challenge value as an input bit value for the PUF.

[0087] In Example 16, the subject matter of Examples 11-15 includes, wherein the selected unclonable function is a software-based unclonable function.

[0088] In Example 17, the subject matter of Example 16 includes, wherein executing the unclonable function based on the challenge value comprises: executing the software-based unclonable function with the challenge value as an input value to the software-based unclonable function.

[0089] In Example 18, the subject matter of Examples 11-17 includes, wherein the credential is stored in a memory device of the user device.

[0090] In Example 19, the subject matter of Example 18 includes, wherein the unclonable function is used to secure the credential.

[0091] In Example 20, the subject matter of Example 19 includes, receiving a message from the verifier device to access the credential, the message including the indication of supported unclonable functions and the challenge value, and the message having a corresponding response message format defined by a protocol; and transmitting the indication of supported unclonable functions, the selected unclonable function, and the result to the verifier device to authenticate the user device using the corresponding response message format.

[0092] Example 21 is a machine-readable medium including instructions for securing data on a user device, which when executed by the user device, cause the user device to perform operations comprising: receiving, from a verifier device, an indication of supported unclonable functions and a challenge value; identifying an unclonable function from the supported unclonable functions, to obtain a selected unclonable function; executing the selected unclonable function based on the challenge value, to obtain a result; and transmitting the indication of supported unclonable functions, the selected unclonable function, and the result to the verifier device to authenticate the user device.

[0093] In Example 22, the subject matter of Example 21 includes, wherein the indication of supported unclonable functions is included in a field of a message structure.

[0094] In Example 23, the subject matter of Examples 21-22 includes, wherein the challenge value is a random value.

[0095] In Example 24, the subject matter of Examples 21-23 includes, wherein the selected unclonable function is a physically unclonable function (PUF).

[0096] In Example 25, the subject matter of Example 24 includes, wherein executing the unclonable function based on the challenge value comprises: executing the PUF with the challenge value as an input bit value for the PUF.

[0097] In Example 26, the subject matter of Examples 21-25 includes, wherein the selected unclonable function is a software-based unclonable function.

[0098] In Example 27, the subject matter of Example 26 includes, wherein executing the unclonable function based on the challenge value comprises: executing the software-based unclonable function with the challenge value as an input value to the software-based unclonable function.

[0099] In Example 28, the subject matter of Examples 21-27 includes, wherein the memory device is to store a credential.

[00100] In Example 29, the subject matter of Example 28 includes, wherein the unclonable function is used to secure the credential.

[00101] In Example 30, the subject matter of Example 29 includes, wherein the processor subsystem is operable to perform the operations comprising: receiving a message from the verifier device to access the credential, the message including the indication of supported unclonable functions and the challenge value, and the message having a corresponding response message format defined by a protocol; and transmitting the indication of supported unclonable functions, the selected unclonable function, and the result to the verifier device to authenticate the user device using the corresponding response message format.

[00102] Example 31 is a verifier device comprising: a memory device; and a processor subsystem, which when configured by instructions stored on the memory device, is operable to perform the operations comprising: transmitting, to a user device, an indication of supported unclonable functions and a challenge value; receiving, from the user device, the indication of supported unclonable functions, a selected unclonable function, and a result, the selected unclonable function selected from the supported unclonable functions, and the result being derived from an output of the selected unclonable function with the challenge value used as input to the selected unclonable function; obtaining an expected result of the selected unclonable function with the challenge value as input; and authenticating the user device based on a comparison between the expected result and the result received from the user device.

[00103] In Example 32, the subject matter of Example 31 includes, wherein the indication of supported unclonable functions is included in a field of a message structure.

[00104] In Example 33, the subject matter of Examples 31-32 includes, wherein the challenge value is a random value.

[00105] In Example 34, the subject matter of Examples 31-33 includes, wherein the selected unclonable function is a physically unclonable function (PUF).

[00106] In Example 35, the subject matter of Examples 31-34 includes, wherein the selected unclonable function is a software-based unclonable function.

[00107] In Example 36, the subject matter of Examples 31-35 includes, wherein obtaining the expected result of the selected unclonable function with the challenge value as input comprises: accessing a secure storage device having challenge/response pairs for the supported unclonable functions for the user device; and obtaining the expected result by performing a lookup on the challenge/response pairs using the challenge value and the selected unclonable function.

[00108] Example 37 is a method of authenticating a user device at a verifier device, the method comprising: transmitting, to the user device, an indication of supported unclonable functions and a challenge value; receiving, from the user device, the indication of supported unclonable functions, a selected unclonable function, and a result, the selected unclonable function selected from the supported unclonable functions, and the result being derived from an output of the selected unclonable function with the challenge value used as input to the selected unclonable function; obtaining an expected result of the selected unclonable function with the challenge value as input; and authenticating the user device based on a comparison between the expected result and the result received from the user device.

[00109] In Example 38, the subject matter of Example 37 includes, wherein the indication of supported unclonable functions is included in a field of a message structure. [00110] In Example 39, the subject matter of Examples 37-38 includes, wherein the challenge value is a random value.

[00111] In Example 40, the subject matter of Examples 37-39 includes, wherein the selected unclonable function is a physically unclonable function (PUF).

[00112] In Example 41, the subject matter of Examples 37-40 includes, wherein the selected unclonable function is a software-based unclonable function.

[00113] In Example 42, the subject matter of Examples 37-41 includes, wherein obtaining the expected result of the selected unclonable function with the challenge value as input comprises: accessing a secure storage device having challenge/response pairs for the supported unclonable functions for the user device; and obtaining the expected result by performing a lookup on the challenge/response pairs using the challenge value and the selected unclonable function.

[00114] Example 43 is a machine-readable medium including instructions for authenticating a user device at a verifier device, which when executed by the verifier device, cause the verifier device to perform operations comprising: transmitting, to the user device, an indication of supported unclonable functions and a challenge value; receiving, from the user device, the indication of supported unclonable functions, a selected unclonable function, and a result, the selected unclonable function selected from the supported unclonable functions, and the result being derived from an output of the selected unclonable function with the challenge value used as input to the selected unclonable function; obtaining an expected result of the selected unclonable function with the challenge value as input; and authenticating the user device based on a comparison between the expected result and the result received from the user device.

[00115] In Example 44, the subject matter of Example 43 includes, wherein the indication of supported unclonable functions is included in a field of a message structure.

[00116] In Example 45, the subject matter of Examples 43-44 includes, wherein the challenge value is a random value.

[00117] In Example 46, the subject matter of Examples 43-45 includes, wherein the selected unclonable function is a physically unclonable function (PUF).

[00118] In Example 47, the subject matter of Examples 43-46 includes, wherein the selected unclonable function is a software-based unclonable function.

[00119] In Example 48, the subject matter of Examples 43-47 includes, wherein obtaining the expected result of the selected unclonable function with the challenge value as input comprises: accessing a secure storage device having challenge/response pairs for the supported unclonable functions for the user device; and obtaining the expected result by performing a lookup on the challenge/response pairs using the challenge value and the selected unclonable function.

[00120] Example 49 is at least one machine-readable medium including instructions that, when executed by processing circuitry, cause the processing circuitry to perform operations to implement of any of Examples 1-48.

[00121] Example 50 is an apparatus comprising means to implement of any of Examples 1- 48.

[00122] Example 51 is a system to implement of any of Examples 1-48.

[00123] Example 52 is a method to implement of any of Examples 1-48.

[00124] The above detailed description includes references to the accompanying drawings, which form a part of the detailed description. The drawings show, by way of illustration, specific embodiments that may be practiced. These embodiments are also referred to herein as “examples.” Such examples may include elements in addition to those shown or described. However, also contemplated are examples that include the elements shown or described. Moreover, also contemplated are examples using any combination or permutation of those elements shown or described (or one or more aspects thereof), either with respect to a particular example (or one or more aspects thereof), or with respect to other examples (or one or more aspects thereof) shown or described herein.

[00125] Publications, patents, and patent documents referred to in this document are incorporated by reference herein in their entirety, as though individually incorporated by reference. In the event of inconsistent usages between this document and those documents so incorporated by reference, the usage in the incorporated reference(s) are supplementary to that of this document; for irreconcilable inconsistencies, the usage in this document controls. [00126] In this document, the terms “a” or “an” are used, as is common in patent documents, to include one or more than one, independent of any other instances or usages of “at least one” or “one or more.” In this document, the term “or” is used to refer to a nonexclusive or, such that “A or B” includes “A but not B,” “B but not A,” and “A and B,” unless otherwise indicated. In the appended claims, the terms “including” and “in which” are used as the plain-English equivalents of the respective terms “comprising” and “wherein.” Also, in the following claims, the terms “including” and “comprising” are open-ended, that is, a system, device, article, or process that includes elements in addition to those listed after such a term in a claim are still deemed to fall within the scope of that claim. Moreover, in the following claims, the terms “first,” “second,” and “third,” etc. are used merely as labels, and are not intended to suggest a numerical order for their objects.

[00127] The above description is intended to be illustrative, and not restrictive. For example, the above-described examples (or one or more aspects thereof) may be used in combination with others. Other embodiments may be used, such as by one of ordinary skill in the art upon reviewing the above description. The Abstract is to allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. Also, in the above Detailed Description, various features may be grouped together to streamline the disclosure. However, the claims may not set forth every feature disclosed herein as embodiments may feature a subset of said features. Further, embodiments may include fewer features than those disclosed in a particular example. Thus, the following claims are hereby incorporated into the Detailed Description, with a claim standing on its own as a separate embodiment. The scope of the embodiments disclosed herein is to be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.