US11212102B2 - System and method for an electronic identity brokerage - Google Patents

System and method for an electronic identity brokerage Download PDF

Info

Publication number
US11212102B2
US11212102B2 US16/503,154 US201916503154A US11212102B2 US 11212102 B2 US11212102 B2 US 11212102B2 US 201916503154 A US201916503154 A US 201916503154A US 11212102 B2 US11212102 B2 US 11212102B2
Authority
US
United States
Prior art keywords
computing device
proof
verifier
data
group
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active, expires
Application number
US16/503,154
Other versions
US20200014537A1 (en
Inventor
Edison U. ORTIZ
Arya POURTABATABAIE
Margaret Inez SALTER
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Royal Bank of Canada
Original Assignee
Royal Bank of Canada
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US16/503,154 priority Critical patent/US11212102B2/en
Application filed by Royal Bank of Canada filed Critical Royal Bank of Canada
Priority to US16/521,569 priority patent/US11277412B2/en
Priority to CA3050487A priority patent/CA3050487A1/en
Publication of US20200014537A1 publication Critical patent/US20200014537A1/en
Priority to US16/750,542 priority patent/US11356262B2/en
Priority to CA3069582A priority patent/CA3069582A1/en
Assigned to ROYAL BANK OF CANADA reassignment ROYAL BANK OF CANADA ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ORTIZ, EDISON U., SALTER, Margaret Inez, POURTABATABAIE, Arya
Priority to US17/509,781 priority patent/US20220045861A1/en
Publication of US11212102B2 publication Critical patent/US11212102B2/en
Application granted granted Critical
Priority to US17/692,637 priority patent/US11700257B2/en
Priority to US17/833,448 priority patent/US20220385469A1/en
Priority to US18/220,103 priority patent/US20230362166A1/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
    • G07C9/00Individual registration on entry or exit
    • G07C9/20Individual registration on entry or exit involving the use of a pass
    • G07C9/28Individual registration on entry or exit involving the use of a pass the pass enabling tracking or indicating presence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • H04L9/3213Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3218Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3226Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using a predetermined code, e.g. password, passphrase or PIN
    • H04L9/3231Biological data, e.g. fingerprint, voice or retina
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3255Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using group based signatures, e.g. ring or threshold signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
    • G07C9/00Individual registration on entry or exit
    • G07C9/20Individual registration on entry or exit involving the use of a pass
    • G07C9/27Individual registration on entry or exit involving the use of a pass with central registration

Definitions

  • Embodiments of the present disclosure generally relate to the field of electronic verification, and more specifically, embodiments relate to devices, systems and methods for electronic verification of credentials.
  • the verification of characteristics of an entity is a useful tool in the context of decision making, for example, in relation to access provisioning, goods and service provisioning, among others.
  • an individual when providing credentials for verification may wish to restrict the amount of information being provided to the counterparty.
  • the credentials being provided, to increase trust may also benefit from verification through association with a third-party verifier (e.g., indicating that the individual is who they purport to be).
  • Credential assertion with restricted information has been difficult to implement in practice as it is technically challenging to generate and provide sufficient trusted credentials, especially on a high-volume, scalable system adapted to serve a large number of users on an on-demand basis.
  • Embodiments described herein are directed to computer systems and devices directed to provide a cryptographic platform for generating and transmitting messages that are adapted to assert attributes about various objects (e.g., user profiles) without indicating any more than is actually required, and corresponding methods and computer readable media storing machine-interpretable instruction sets for performing the methods.
  • objects e.g., user profiles
  • the computer systems and devices are adapted to a high-volume, scalable system, which dynamically responds to data credential requests of one or more users or one or more computer systems requesting identity/credential proofs.
  • the assertions are conducted using mobile endpoints (e.g., user devices) which may have limited computational performance and resources, and accordingly, an improved cryptographic approach and system is proposed that enables the assertion functionality through the passing of cryptographically generated messages between devices.
  • An improvement associated with the proposed cryptographic approach of some embodiments is that it is able to operate in a secure and scalable way, even on limited computational resources (e.g., those available on an unenhanced smartphone).
  • Credential verification when conducted manually, is a tedious process prone to falsification and also over-provisioning of information.
  • Alice is a law-abiding 26 year old, and she would like an alcoholic beverage.
  • Bob wants to make sure of two things: She is legally allowed to drink, meaning 21 years of age or more, and that she is not a problem customer.
  • her driver's license shows her name and date of birth. She would like to not disclose anything to him other than the fact that she satisfies the conditions.
  • Bob ends up knowing more than he needs to know (e.g., age and specific date of birth as opposed to the fact that she is above 21 years of age and is not the problem customer). Further, aside from visual inspect of the license, Bob has practical difficulties in verifying that the driver's license is not a fake driver's license.
  • a challenge involves providing a robust credential verification whereby Alice is able to prove to Bob that she does satisfy Bob's customer policy, while revealing nothing other than the fact to him.
  • Alice is able to prove to Bob that she does satisfy Bob's customer policy, while revealing nothing other than the fact to him.
  • a policy of being older than 21 That is all Bob needs to know. He does not and should not know that Alice is in fact 26.
  • the system is configured to adduce stripped down credentials to meet Bob's customer policy without exposing additional information.
  • cryptographic techniques are utilized that undertake specific steps and computational approaches to provide a secure, yet computationally efficient mechanism for proof generation.
  • an issuer device issues one or more signed token data objects, which are stored on a client's device for later usage.
  • the client's device Upon encountering a situation where verification is required, the client's device is configured to dynamically generate proof data messages which are then provided to the verifier's computing device (e.g., the verifier's smart phone, a point of sale device, an access control system, a mantrap gate).
  • the verifier is able to conduct a verification check using the proof data message to see only that the conditions required in the original verification check message without providing the actual underlying characteristics.
  • the verifier is able to validate that such proof data message is associated with a trusted verifier.
  • proofs There are two different types of proofs that are proposed in some embodiments, these being exact match proofs (non-zeroness protocol; e.g., this person either matches someone on a whitelist or doesn't match anyone on a blacklist), and conditional proofs (e.g., based on an inequality condition being matched, such as over 18 years old?).
  • exact match proofs non-zeroness protocol; e.g., this person either matches someone on a whitelist or doesn't match anyone on a blacklist
  • conditional proofs e.g., based on an inequality condition being matched, such as over 18 years old?
  • improved cryptographic protocols are proposed that, relative to prior approaches, reduce an overall cryptographic complexity without a significant reduction in security. Accordingly, the proofs can be generated more quickly, which improves convenience, especially where a system is being established for mass adoption and client device characteristics are highly variable across the users (e.g., some users may be using devices with extremely limited capabilities).
  • An enhanced solution is described herein that is adapted for protecting a client's personal information and only providing what is needed by leveraging a client's special space using a secure enclave and a blockchain solution, in accordance with some embodiments.
  • a blockchain infrastructure and the secure enclave each store data sets representing aspects of signed attributes and, in some embodiments, a proof response logic.
  • the block chain infrastructure can include distributed logic technologies and combination with cascading encryption to provide an immutable ledger.
  • the proof requests and responses can be conducted using intelligent connected devices such as a mobile device, or wearable devices (e.g., a smartwatch that is connected to a mobile device across Bluetooth low energy).
  • Secure enclaves can be utilized, or other types of hardware protected spaces are usable.
  • a registration mechanism and method is utilized to initialize and populate the attributes using public and secret (private) encryption keys.
  • Issuer devices create attribute data records that are generated using a combination of a client's public key and an issuer's secret key (e.g., using digital signatures or encryption/decryption).
  • the attributes can be made publicly available, for example, on a blockchain, whereby the attributes can be signed by an issuer's secret key but encrypted using the client's public key.
  • a verification mechanism and method is provided whereby a communications channel can be established with an authenticated verifier device, which initiates a proof request, which triggers a process to establish a proof response that is transmitted to the verifier.
  • An example use case includes a specially configured age verifier terminal, which for example, can include a graphical user interface rendering visual and coded objects such as a quick response code that can be scanned by a mobile device.
  • the verification mechanism Upon scanning the quick response code, the verification mechanism is invoked, and the mobile device may share data sets on a backend communications network such as the Internet.
  • the proof response can be transferred to the verifier device based off of identifiers or information stored other on the age verifier terminal, or encoded within the quick response code the age verifier terminal returning true or false such that both a verifier such as a cashier, and the customer are able to visually confirm.
  • the proof response rendering for example, may be restricted to a true/false determination (e.g., additional private information is not disclosed or rendered).
  • a computer implemented system for communicating data messages between a verifier computing device and a portable client computing device, the data messages establishing authentication of one or more characteristics of a client associated with the portable client computing device.
  • the system includes the portable client computing device including at least a client computing device processor and data storage, the data storage storing one or more token data objects received from or computed jointly in a multiparty protocol with an issuer computing device, the one or more token data objects generated using at least a issuer computing device private issuance key, the one or more token data objects each including one or more signed data elements representing at least one of the one or more characteristics of the client associated with the portable client computing device.
  • the client computing device processor is a secure enclave processor or a trusted execution environment that is segregated from a general execution environment of the client computing device.
  • the data storage is a secure enclave memory region that is segregated from a general memory region of the client computing device, the secure enclave memory region not accessible by general execution environment of the client computing device.
  • the one or more token data objects are pre-loaded into the data storage such that the generation of the proof can be conducted at a time temporally separated from when the one or more token data objects were generated or preloaded.
  • the one or more proof data messages are generated such that the one or more proof data messages can be validated using an issuer computing device public encryption key corresponding to the issuer computing device private issuance key.
  • the verification request data message includes a blacklist data structure and the one or more proof data messages are generated to establish that the client associated with the portable client computing device does not match one or more identities stored in the blacklist data structure, or wherein the verification request data message includes a whitelist data structure and the one or more proof data messages are generated to establish that the client associated with the portable client computing device matches one or more identities stored in the blacklist data structure.
  • the provisioning of access to the secured resource includes transmitting an electronic signal to a physical lock actuator, or to a digital challenge-response mechanism.
  • a computer implemented system for communicating data messages between a verifier computing device and a portable client computing device, the data messages establishing authentication of one or more characteristics of a client associated with the portable client computing device, the system comprising: the portable client computing device including at least a client computing device processor and data storage, the data storage storing one or more token data objects received from or computed jointly in a multiparty protocol with an issuer computing device, the one or more token data objects generated using at least a issuer computing device private issuance key, the one or more token data objects each including one or more signed data elements representing at least one of the one or more characteristics of the client associated with the portable client computing device.
  • the proof data message is encapsulated such that the proof data message is free of A 0 , B 0 and C 0 to reduce a filesize of the proof data message, and wherein the verifier computing device is configured to derive A 0 , B 0 and C 0 independently.
  • FIG. 1 is a pictorial rendering of an example scenario, according to some embodiments.
  • FIG. 2 is a graphical representation of parties to a verification event, according to some embodiments.
  • FIG. 3 is an example system for conducting credential verification, according to some embodiments.
  • the system aspects may include logical components, physical components, or a combination of logical and physical components, in accordance with various embodiments.
  • FIG. 4 is an example O-Auth based method, according to some embodiments.
  • FIG. 5A is an example method diagram where a secure enclave master verifier is utilized, according to some embodiments.
  • FIG. 5B is a state diagram of a verify oracle, according to some embodiments.
  • FIG. 6A is a system diagram providing additional detail in the context of a verifier hosted enclave, according to some embodiments.
  • FIG. 6B is a system diagram providing a simplified variation of the system shown in FIG. 6A , according to some embodiments.
  • FIG. 7 is a method diagram providing an example issuer sequence where the prover computing system has a corresponding key pair, according to some embodiments.
  • the prover key is optional, but in some cases, the prover key pair helps prevent sharing or can be utilized to reduce an amount of data required to be held secret.
  • the use of a key pair for the prover may be instrumental in preventing credential subletting, an abuse of the system whereby the prover shares some of their credentials with another for attribute impersonation.
  • FIG. 8 is a method diagram providing an example verification sequence, where the prover computing system has a corresponding key pair, according to some embodiments.
  • FIG. 9 is a method diagram providing an example issuer sequence where the prover computing system does not have a corresponding key pair, according to some embodiments.
  • FIG. 10 is a method diagram providing an example verification sequence, where the prover computing system does not have a corresponding key pair, according to some embodiments.
  • FIG. 11 is a system diagram providing an example verification system having a third party hosted enclave including a transcript, according to some embodiments.
  • FIG. 12 is an example C-based proof request description language, according to some embodiments.
  • FIG. 13 is an example method diagram for an anonymous credentials approach, according to some embodiments.
  • FIG. 14 is a screenshot of an example credential manager, according to some embodiments.
  • an application residing on a mobile device such as the credential manager, is configured to perform one or more actions directed to the prover role in the above embodiments.
  • FIG. 15 is a screenshot of an example credential manager having an expanded portion to view additional details of the credential, according to some embodiments.
  • FIG. 16 is a screenshot of an example credential manager showing an expanded credential view of a single credential, according to some embodiments.
  • FIG. 17 is a screenshot of an example page requiring verification, according to some embodiments.
  • FIG. 18 is a screenshot of an example proof request interface page, according to some embodiments.
  • FIG. 19 is a screenshot of an example proof input interface page, according to some embodiments.
  • FIG. 20 is a topology of an example computing device, according to some embodiments.
  • FIG. 21 is a server for inclusion in a data center, according to some embodiments.
  • FIG. 22 is a system diagram for an example verification system, according to some embodiments.
  • FIG. 23 is a system diagram depicting a method for registration, according to some embodiments.
  • FIG. 24 is a system diagram depicting a method for verification, according to some embodiments.
  • FIG. 25 is a system diagram depicting an example age verifier device, according to some embodiments.
  • Embodiments described herein are directed to computer systems and devices directed to provide a cryptographic platform for generating and transmitting messages that are adapted to assert attributes about various objects (e.g., user profiles) without indicating any more than is actually required, and corresponding methods and computer readable media storing machine-interpretable instruction sets for performing the methods.
  • objects e.g., user profiles
  • computing devices that interoperate with one another in concert with the cryptographic platform, including devices associated with issuers, verifiers, and clients.
  • issuers are trusted entities which provide cryptographically validated credential messages that are issued to the client devices for storage thereon.
  • the cryptographically validated credential messages are then presentable to a verifier (e.g., a third party organization) that seeks to validate that identity or aspects of the identity of the user associated with the client device.
  • a verifier e.g., a third party organization
  • the cryptographically validated credential messages are configured such that the user is able to validate such identity or aspects without providing additional information associated with the user that is not requested (e.g., as opposed to presenting all the information on a driver's license).
  • the credential assertion platform is a high-volume, scalable system which dynamically responds to data credential requests of one or more users or one or more computer systems requesting identity/credential proofs.
  • the assertions are conducted using mobile endpoints (e.g., user devices) which may have limited computational performance and resources, and accordingly, an improved cryptographic approach and system is proposed that enables the assertion functionality through the passing of cryptographically generated messages between devices.
  • mobile endpoints e.g., user devices
  • an improved cryptographic approach and system is proposed that enables the assertion functionality through the passing of cryptographically generated messages between devices.
  • An improvement associated with the proposed cryptographic approach of some embodiments is that it is able to operate in a secure and scalable way, even on limited computational resources (e.g., those available on an unenhanced smartphone).
  • a device with limited computational resources can include basic smartphones, which may be one or more generations out of date, and also have limited amounts of on-board memory (e.g., 1-4 GB of memory) and storage (e.g., 8-64 GB of solid state memory).
  • the transfer protocols as between the client devices and the verifier devices may also have limited bandwidth (e.g., through near-field communications (NFC), Bluetooth, limiting communications to only several Mbit/s).
  • NFC near-field communications
  • Bluetooth Bluetooth
  • an improved cryptographic mechanism and protocol is proposed that reduces an overall number of data messages and/or cryptographic steps required to be taken to generate the proof data messages.
  • the method of Belenkiy requires 4 randomizations, 3 group multiplications and 7 group exponentiations, which includes elliptic curve exponentiations that are computationally expensive (e.g., involves more than 256 operations on 512 long integers).
  • a field inversion is provided, which itself is an expensive operation, but reduces a consideration number of group exponentiations.
  • the proof data messages are designed to have a “soundness” attribute whereby a malicious verifier is unable to find out from the proof data message more information that what is being provided in the proof data message (e.g., can't find out the underlying characteristic values).
  • a computer implemented identity brokerage solution is described in accordance with various embodiments.
  • the identity brokerage solution is adapted to address problems with identity and attribute verification, using computer implemented cryptographic approaches to provide a robust mechanism for conducting verifications while reducing the provisioning of extraneous information (e.g., information not required for the verification).
  • FIG. 1 is a pictorial rendering of an example scenario, according to some embodiments.
  • Alice is a law-abiding 26 year old, and she is thirsting for beer. She decides to go to Bob's German-style beer hall to quench her thirst for beer.
  • Bob is not looking for a headache so before selling beer to Alice, wants to make sure of two things: She is legally allowed to drink, meaning 21 years of age or more, and that she is not Mallory McFelon, a problem customer. Alice thinks the conditions are fair, and they both know presenting her ID card would prove that she does satisfy them. She could provide her driver's license, which shows her name and date of birth.
  • Alice also knows that Bob tends to be nosy, so she would like to not disclose anything to him other than the fact that she satisfies the conditions.
  • Bob ends up knowing more than he needs to know (e.g., age and specific date of birth as opposed to the fact that she is above 21 years of age and is not Mallory). Further, aside from visual inspect of the license, Bob has practical difficulties in verifying that the driver's license is not a fake driver's license.
  • a challenge involves providing a robust credential verification whereby Alice is able to prove to Bob that she does satisfy Bob's customer policy, while revealing nothing other than the fact to him.
  • Alice is able to prove to Bob that she does satisfy Bob's customer policy, while revealing nothing other than the fact to him.
  • a policy of being older than 21 That is all Bob needs to know. He does not and should not know that Alice is in fact 26.
  • FIG. 2 is a graphical representation of parties to a verification event, according to some embodiments.
  • the parties to a verification event include a prover (e.g., the entity seeking to prove the entity's characteristics and/or identity, for example, through programmatic mobile application client 202 having a token 204 stored thereon), a verifier 206 (e.g., the entity seeking to verify the prover's characteristics and/or identity in accordance with a policy), and an issuer 208 (e.g., the entity, such as a financial institution, which has a relationship with the prover and can attest to the prover's characteristics and/or identity, whose representations are trusted by the verifier 206 ).
  • a prover e.g., the entity seeking to prove the entity's characteristics and/or identity, for example, through programmatic mobile application client 202 having a token 204 stored thereon
  • a verifier 206 e.g., the entity seeking to verify the prover's characteristics and/or identity in accordance
  • the prover's client 202 holds credentials that are digitally signed by the issuer (“tokens”) 208 .
  • An example token are those provided by U-Prove specifications.
  • a U-Prove token can include a credential similar to a PKI certificate with cryptographic wrapping of attributes to aid in reducing unwanted tracking of users.
  • a token may have various artifacts wrapped therein and may include information, such as issuer parameters, including issuer public key information (e.g., coupled an issuer's private key) that can be used for signing or encrypting elements of information stored thereon to prove the veracity of such signature or to protect sensitive information.
  • issuer signature can be used by the prover or verifier to verify issuer parameters being relied upon, and the token itself, in some embodiments, may have one or more data fields storing information such as token usage restrictions, validity period, token metadata.
  • the token is jointly created using a combination of issuer information and prover information.
  • issuer information For example, there may be information stored thereon that is established in conjunction and hidden from the issuer, such as contact information, encryption key, or verifier supplied nonces, etc.
  • an issuer may authenticate the existence and access/control that the prover has over the prover's device.
  • Tokens include attributes that can be converted from a natural form to a sequence of large numbers (field elements) suitable for public key operations. These public key operations include anonymous credentials protocols.
  • Attributes are organized in a tree.
  • An attribute can either come with a value, in which case it is called a leaf attribute, or bundle a number of sub-attribute, in which case it is called a parent attribute.
  • a credential token can be considered consisting of a single root attribute containing all others as descendants.
  • the prover may wish to communicate metadata about it to the verifier.
  • the most important such property is an attribute's name.
  • the number “170” in an attribute would mean nothing without the name “height” attached. Additionally, such numeric attributes require units as context. The number “170” is unreasonable if considered in inches but plausible when in centimeters.
  • the token can include fields that additionally give the users an ability to decide if they want to hide an attribute's metadata. For example, even if hidden, an attribute attesting to a negative syphilis test can carry social stigma.
  • An attribute will be serialized into one “raw attribute” (a number or string) if the user chooses its metadata to depend on its parent's. If not, it will be serialized into two, the first representing its metadata and the second representing the value.
  • a proof request is issued from the verifier 206 to the prover's client 202 , asking the prover to give the verifier 206 cryptographic assurance that according to some issuer trusted by the verifier, the prover's attributes satisfy a certain (arbitrary) policy (e.g. older than 21, as far as provisioning alcohol is concerned.), and these proof requests typically contain one or more challenge messages.
  • a proof request can include a nonce, types of conditions, etc., and these conditions may be encapsulated as inequalities (e.g., intUserAge>18), or logical statements (e.g., intUserID not equal to 22412).
  • One or more lookup reference data structures may also be passed, which can include blacklists, whitelists, values for various constants (e.g., MINIMUMDRINKINGAGE).
  • a proof is provided by the prover through client 202 as a response to the verifier 206 's request, which includes cryptographic assurance that the prover's credentials satisfy the verifier 106 's proof request, the cryptographic assurance being held being as good as the issuer 108 's word.
  • the proof is a data message that encapsulates various information (e.g., proof responses directed to a sigma protocol).
  • the data message includes sufficient information such that the verifier is able to receive the data message, and conduct steps to validate and verify that such proof responses are indeed acceptable.
  • the proof data message can include aspects indicative of the identity of an issuer, and a potential step is the validation by the verifier that such issuer is indeed trustworthy as a source of credential authentication.
  • the proof responses can be processed to generate gatekeeping control signals, which, for example, in an example embodiment, may be as simple as a device that operates a lightbulb whenever someone is validated as being of age (e.g., so that a bouncer at a bar is able to know that this person should be allowed in), or as complex as control mechanisms that automatically open doors, enable access to online accounts (e.g., on a web portal), etc.
  • the verifier systems can include physical and electronic mechanisms which can generate alerts, notifications, actuation/control signals, digital or electronic signals, among others.
  • Factors for assessing identity brokerage solutions include how light the required infrastructure is (e.g., it may be important to reduce the need for specialized hardware, centralized devices, or complex distributed systems that make deployment and entry difficult), a level of computational efficiency, a simplicity of cryptography, a level of un-linkability between various parties (e.g., the issuer should not be able to aggregate additional data about the client, even in collusion with verifiers), and a flexibility and level of minimalism of disclosed information.
  • Reduced complexity is desirable as a solution may be less likely to suffer implementation flaws, be more easily understood, and less likely to theoretically break due to reliance on unusual hardness assumptions. If computational operations that have optimized/low-level implementations, the solution may be able to operate using less computing resources and/or time.
  • the identity protocols ideally, should require little time, take little power, have few rounds of message transmission, and pass messages having small sizes and/or overhead. This is especially important where the parties implement portions of the identity brokerage solution on mobile devices to handle one or more verification events.
  • the mobile devices have limited computational, storage, and interface capabilities.
  • the parties hold corresponding public/secret (e.g., private) key pairs.
  • the public keys can be utilized to determine the veracity of information signed using the private keys, and to encrypt information that can be decrypted using the corresponding private key.
  • the private keys can be utilized to sign information and to decrypt information that has been encrypted using the corresponding public key, and in some cases, produce Zero-Knowledge Proofs of Knowledge.
  • Each secret key is maintained by the corresponding computing device associated with the corresponding entity.
  • the parties each have corresponding computing systems, which are used to electronically communicate amongst one another (e.g., through a network) and to perform various cryptographic activities, including signing, verifying signatures, encrypting information, decrypting information and various anonymous credential issuance, proof and verification protocol implementations.
  • Each verification event is associated with validating whether all logical conditions of the proof request are satisfied. A positive determination may lead to access/service/goods being provisioned to the prover. A negative determination may lead to access/service/goods not being provisioned to the prover.
  • a proposed approach is provided in an anonymous credentials based design whereby a client receives token data structure(s) that are stored on data storage, and asynchronously, the client gets a verifier request from a verifier.
  • the verifier may, for example, have a list of trusted issuers that the issuer verifier trusts. Certain organizations may be trusted for certain information, such as a bank for employment or financial status, a university for educational attainment characteristics, among others.
  • the client generates a proof (e.g., encapsulated as a proof data message) based on the token and the verifier request, and the proof can be established as either a non-zeroness proof or a conditional proof.
  • Token objects can be received from or computed jointly in a multiparty protocol with an issuer computing device.
  • the proof approach generation can include a first modular inverse, two randomization steps, two group exponentiations, and a group multiplication.
  • the steps in an example non-limiting embodiment can be established as:
  • R C x r 1 h r 2
  • R is effectively a commitment to random values r 1 and r 2
  • C x is a commitment to attribute x
  • h is a group generator taken from cryptographic specifications (e.g., elliptic curve, Diffie-Hellman group).
  • a commitment is a representation of a value that is both hiding and binding, hiding in the sense that the recipient of the commitment cannot find out anything about what the value of the commitment is, and binding in the sense that the sender later cannot pretend that it was a commitment to another value than it originally was.
  • the verifier independently validates the received proof and the verifier makes a determination of access grant or not grant.
  • the verifier is a verifier computing system that automatically grants access to one or more secured resources, such as a physical access entry (e.g., mantrap, revolving doors, locked gateway, locked cabinet), and in other embodiments, the system grants access to one or more virtual resources (e.g., administrator access on a computer system, logging into accounts, access to secured sections of webpages), among others.
  • a physical access entry e.g., mantrap, revolving doors, locked gateway, locked cabinet
  • virtual resources e.g., administrator access on a computer system, logging into accounts, access to secured sections of webpages
  • Prover sends all A i , R ai,0 , R ai,1 , d′′ ai,0 , Z ai,0 , Z ai,1 , B i , R bi,0 , R bi,1 , d′′ bi,0 , z bi,0 , z bi,1 , C i , R ci,0 , R ci,1 , d′′ ci,0 , Z ci,0 , Z ci,1 .
  • the client computing device e.g., the prover
  • the verifier instead of verifying a relation between the bit commitments the verifier derives A 0 , B 0 and C 0 independently. This aspect may be particularly useful in low data throughput situations or where storage space is very limited.
  • the comparison method of some embodiments reduces the problem of comparison to three bit decompositions.
  • the computational burden on the prover consists of about 12N-3 group exponentiations.
  • the two decompositions will require a total of 8N-2 group exponentiations. Accordingly, it is estimated that Belenkiy's method requires 16N-10 group exponentiations. This demonstrates that for N ⁇ 2, the proposed method for the comparison protocol is more efficient, and this superiority becomes increasing important as the numbers to be compared scale up.
  • the scale up may occur if the credential verification system is utilized across a large number of users.
  • FIG. 3 is an example system for conducting credential verification, according to some embodiments.
  • the components are shown as an example of one embodiment, and alternatives are also contemplated.
  • the components of the system do not necessarily reside on the same computing device and may be distributed across one or more computing devices.
  • a computer implemented system 300 for electronic verification of credentials includes at least one processor and data storage, and includes a proof request parsing engine 302 configured to receive one or more proof request data structures 304 , which in combination represent one or more logical conditions.
  • a credential parsing engine 306 is provided to receive one or more credentials 308 which in combination, validate one or more characteristics of an identity profile 310 of a prover entity.
  • a proof generation engine 312 is provided that receives, from a verifier computing system 314 , the one or more proof request data structures 304 and the one or more credentials 308 ; and for each logical condition provided in the one or more proof request data structures, parse the one or more characteristics of the identity profile 310 to determine whether the logical condition has been satisfied.
  • One or more proof output data structures 316 storing signatures or zero knowledge proofs of satisfaction of a subset or all of the one or more logical conditions is returned by the system (e.g., in the form of data fields).
  • a secure encryption engine 318 and a secure processing enclave 320 may be included, in accordance with various embodiments.
  • a proof generation engine 312 in some embodiments, resides at or is coupled to a data center of a financial institution, and wherein parsing the one or more characteristics of the identity profile includes invoking an electronic comparison against a stored user profile of the financial institution corresponding to the prover entity.
  • the example implementations are not restricted to such a topology, and other topologies are contemplated, including a cloud/distributed resources based proof generation engine 312 .
  • the proof generation engine 312 is coupled to the secure processing enclave 320 , which may also be coupled to a verifier computing device 314 .
  • the proof generation engine 312 lies within the prover's user device, thus user data will never be provided to the verifier and the issuer will not be informed of the transaction taking place.
  • the electronic comparison against the stored user profile of the financial institution corresponding to the prover entity includes querying one or more attributes of the stored user profile and comparing the queried one or more attributes against the one or more logical conditions to determine whether individual logical conditions of the one or more logical conditions have been satisfied.
  • the characteristics and attributes of the user profile can be used established and stored thereon the portable client computing device as one or more token data objects that can be received from or computed jointly in a multiparty protocol with an issuer computing device.
  • the one or more token data objects are generated (e.g., as signed objects or encrypted objects) using at least an issuer computing device private issuance key.
  • the one or more token data objects each including one or more signed data elements representing at least one of the one or more characteristics of the client associated with the portable client computing device.
  • the verifier computing system is configured to encapsulate the one or more credentials along with the one or more proof request data structures in a single data container transmitted to the proof generation engine.
  • FIG. 4 is an example O-Auth token based method, according to some embodiments.
  • the O-Auth based method portrayed does not address the issue of unlinkability, and in this example, the prover computing device electronically communicates to the verifier O-Auth tokens containing the verifier's proof request, which the verifier computing system can use to formulate a query message to be transmitted to the issuer computing system, and receive a yes/no answer in response.
  • a benefit to this approach is that there is relatively light infrastructure required, it is very efficient, and the cryptography is simple and flexible.
  • the issuer computing system needs to be available (e.g., online) to be able to process the request.
  • the prover confers an OAuth token (not to be confused with credentials) that the verifier can use to query the issuer and be assured that the prover does indeed satisfy their policy.
  • the verifier is provided tokens containing the verifier's proof request which can be used to query a computing system associated with an issuer, receiving an answer, such as a yes or no response (e.g., or a Boolean variable, such as TRUE/FALSE, 0, 1).
  • a challenging technical problem occurs in implementing a system where the verifier is able to ensure the prover has the correct credentials, while preserving their privacy.
  • a secure enclave based approach is described.
  • Intel Software Guard ExtensionsTM (SGX) can be utilized, among others.
  • Intel SGX SDKTM natively supports 128-bit AESGCM. This primitive can be used for authenticated encryption. It remains to be seen if larger AES key sizes are necessary. In that case, Galois-Counter Mode cannot be used.
  • Hashing can be performed using SHA-2, as this is natively supported by the Intel SGXTM SDK. As it supports 256-bit blocks, it would also be useful in case of a migration to larger AES blocks; both as a means of key derivation as well of a MAC building block.
  • the secure enclave approach improves computational efficiency and minimizes a trusted computing base, rendering it more amenable to formal analysis.
  • the verifier may include a verify oracle, which is a trusted software/hardware component hosted by an untrusted third party. It is allowed to view a prover's attributes in the clear and attest that they satisfy a certain predicate queried by the verifier.
  • the issuer should demand the prover to incorporate some important secret about their account (not even known by the issuer) into the private key, such that the secret can be inferred from the private key. This will discourage provers from sharing credentials with one another. Alice may be willing to let Bob use some credential issued to her by her bank, but not be comfortable giving him complete control over her bank account.
  • Another possible technique to approach this is to issue credentials to specific devices, using private keys that the device can create for an application and sign using them on the application's behalf, without ever sharing the key with the application.
  • the issuer generates a signature on the prover's attributes using an arbitrary signature scheme that is secure against existential forgery.
  • the signature should also involve a description of the token's data structure.
  • the prover and the issuer agree on a string a p representing the prover's attributes.
  • the issuer knows the prover as the owner of pk p , satisfying a p .
  • An example protocol for showing verification by the oracle is provided.
  • the verifier chooses a random challenge c and sends it to the prover.
  • a proof request predicate P is agreed upon.
  • the oracle decrypts d and checks that the following propositions are satisfied: sigver(pk i ; ⁇ i ;f sk p ) ⁇ a p ) P(pk i ,a p )
  • the verifier only needs to check that sigver(pk o ; ⁇ o ;c ⁇ P) holds.
  • Malicious issuer and prover to break soundness This attack can be trivially mounted and in some embodiments, there is not attempt to prevent it.
  • the issuer can always issue bogus adaptively chosen untruthful credentials for an accomplice prover.
  • such a problem is best thwarted by strong and transparent authentication and KYC practices by issuers, as well as careful choice of trusted issuers by verifier consortiums based on thorough vetting.
  • Zero-knowledge in this context means that an adversary controlling all issuers and verifiers cannot pinpoint which of the trusted issuers implied by the query and which of the credentials obtained from the issuer the credential in use is.
  • the analysis makes use of the CCA2 property of the encryption scheme used in Acquire Proof queries.
  • FIG. 5A is an example method diagram where a secure enclave master verifier is utilized, according to some embodiments.
  • the issuer computing system signs attributes with a cryptographic technique
  • the verifier computing system sends issuer computing system a challenge and proof request.
  • the prover computing device sends encrypted credential, challenge and proof request to a master verifier computing device.
  • the master verifier signs challenge and proof request computing device.
  • This approach while requiring additional infrastructure relative to the approach of FIG. 4 , satisfies many of the conditions for an ideal verification.
  • the issuer computing system does not obtain further information (e.g., the identity of the verifier) from the verification event.
  • FIG. 5B is a state diagram of a verify oracle, according to some embodiments.
  • the verify oracle can be implemented using software, hardware, or a combination thereof.
  • the states may be transitioned through the use of a processor configured to transition between one or more states, and to perform steps described below in conjunction with machine-interpretable instruction sets.
  • a Verify Oracle supports three states:
  • Trust by Provers and Verifiers is assumed in all the previously described models as a common reference. Also, for obvious performance concerns, it is vital to be able to perform Remote Attestation on an enclave non-interactively. As such, the enclave's host can perform a publicly verifiable remote attestation with its enclave and publish the transcript to it. In order to do so, she may employ the Fiat-Shamir heuristic using the collision-resistant function H(.) modeled as a Random Oracle.
  • the Remote Attestation Verifier would normally use a probabilistic polynomial-time algorithm m2 ⁇ A(m1;r) to generate the second message, in this scenario the second message would be derived through m 2 ⁇ A(m 1 ; H(m 1 )).
  • a proof request can be defined in accordance with variations of the following examples.
  • StraightTalk a C-like language called StraightTalk is described as an example, and it is only capable of describing straight-line programs:
  • FIG. 6A is a system diagram providing additional detail in the context of a verifier hosted enclave, according to some embodiments.
  • the verifier enclave stores a secret key which is utilized in a flow of signed messages.
  • the key encapsulation process in various embodiments, includes 2-way or 1-way authenticated public key encryption.
  • FIG. 6B is a simplified diagram providing additional detail in the context of a verifier hosted enclave, according to some embodiments.
  • the verifier receives the proof request, the proof request, and the proofs directly from the prover or prover device, and transmits a proof verification message to the verifier.
  • the secure enclave is adapted for processing encrypted credentials, challenges, and proof requests.
  • the secure enclave can be a processor or a secured memory location that is configured for maintaining a verifier secret key utilized to generate a first signed message.
  • the verifier computing device receives, from a prover computing device, a second signed message including at least an enclosed issuer signed message representing one or more encrypted containers storing at least one or more characteristics of an identity profile of a prover entity along with a message authentication code based at least on the proof request data structure.
  • the verifier computing device then transmits the second signed message, the proof request data structure, and the one or more encrypted containers to the secure enclave.
  • the verifier computing device then receives a response data message from the secure enclave indicative of whether all of the one or more logical conditions were satisfied by the at least one or more characteristics of the identity profile of the prover entity.
  • the secure enclave is configured to provide publicly verifiable remote attestation with a verifiable threat model and a verifiable proof of security.
  • a remote attestation protocol involves a zero knowledge proof with a prover and a verifier, the enclave being the prover.
  • a direct run of this protocol by both Identity Brokerage parties (prover and verifier) may compromise efficiency. Therefore, a mechanism is implemented using the Fiat-Shamir heuristic, and the enclave's maintainer is configured to run an instance of remote attestation in a publicly verifiable manner.
  • the remote attestation verifier (the enclave's maintainer) replaces every randomness with the output of a pseudorandom function applied to the entire protocol transcript up until that moment, and an arbitrary initial nonce.
  • the enclave's maintainer can efficiently convince the identity brokerage parties that the enclave is a trustworthy one.
  • the verifier enclave or a third party hosted system tracks records transcripts of an exchange, which are exposed to the public. For example, it may be the responsibility of a verifier computing system to run a remote attestation protocol with its enclave once whereby the enclave communicates its public key, which is then stored in on a transcript exposure module, which may be hosted by any one of the computing systems associated with any one of the parties or by a third party hosted system.
  • a pseudorandom function e.g., block cipher, etc.
  • the secure enclave processor maintains a verification transcript in relation to its own credentials, as the enclave is wholly trusted by both the prover and the verifier, it should be strongly vetted itself.
  • Chip manufacturers provide mechanisms to verify an enclave involving multi-round interactive protocols.
  • Remote attestation is a protocol based on bilinear group signatures, whereby an enclave proves to a third party that it is running on a legitimate Intel SGX platform, and that is running a particular program.
  • FIG. 7 is a method diagram providing an example issuer sequence where the prover computing system has a corresponding key pair, according to some embodiments.
  • FIG. 8 is a method diagram providing an example verification sequence, where the prover computing system has a corresponding key pair, according to some embodiments.
  • FIG. 9 is a method diagram providing an example issuer sequence where the prover computing system does not have a corresponding key pair, according to some embodiments.
  • FIG. 10 is a method diagram providing an example verification sequence, where the prover computing system does not have a corresponding key pair, according to some embodiments.
  • FIG. 11 is a system diagram providing an example verification system having a third party hosted enclave, according to some embodiments.
  • FIG. 12 is an example C-based proof request description language, according to some embodiments.
  • An example proof request is shown in FIG. 12 , and other policies are possible.
  • the policies can be compiled from a simple C-like language only capable of writing straight-line non-branching programs.
  • FIG. 13 is an example method diagram for an anonymous credentials approach, according to some embodiments.
  • the approach utilizes advanced cryptography for issuance and presentation protocols, and has relatively fewer infrastructure requirements and is unlinkable and flexible.
  • Anonymous Credentials is aimed at solving the problem of identity brokerage through designs depending on cryptographic hardness assumptions.
  • a custom-built signature mechanism is used for the issuance protocol that is amenable with the type of zero-knowledge proofs of knowledge approaches used in the proof protocol.
  • Notable examples are U-Prove (relying on Diffie-Hellman type hardness assumptions), Idemix (relying on RSA-type hardness assumptions) and later approaches based on bilinear maps.
  • FIGS. 14-19 are screenshots of an example web application illustrating a sample prover computing device user experience, according to some embodiments.
  • a token is a signed token from a semi-honest issuer attesting to its carrier's having a certain attribute, and an attribute is any logically simple claim one can make about oneself.
  • FIG. 14 is a screenshot of an example credential manager, according to some embodiments.
  • FIG. 15 is a screenshot of an example credential manager having an expanded portion to view additional details of the credential, according to some embodiments.
  • FIG. 16 is a screenshot of an example credential manager showing an expanded credential view of a single credential, according to some embodiments.
  • FIG. 17 is a screenshot of an example page requiring verification, according to some embodiments.
  • the prover has navigated to a page for a skydiving program whereby the user must prove that they are at least 18 years of age, and that they have been recently declared healthy.
  • FIG. 18 is a screenshot of an example proof request interface page, according to some embodiments.
  • the verifier e.g., a vendor
  • sends a proof request and the user is redirected to the user interface.
  • the proof request is written in a formal language; therefore, the natural language description also comes from the vendor.
  • the user has the option to view the proof request code and vote on whether it matched the natural language description.
  • FIG. 19 is a screenshot of an example proof input interface page, according to some embodiments.
  • the interface After agreeing to the policy, the interface includes visual elements that the prover may select to choose which of their credentials to use as input to the proof generation algorithm. These credentials will not be shared with the verifier, but it will be proven in zero knowledge that they satisfy the policy.
  • connection may include both direct coupling (in which two elements that are coupled to each other contact each other) and indirect coupling (in which at least one additional element is located between the two elements).
  • Issuer/Identity Provider is a party trusted by the prover and the verifier, that attests to the prover's attributes.
  • Prover/Client the party in contact with the issuer as well as the verifier, attempting to prove properties in zero knowledge.
  • Proof Request a formalized message from the verifier specifying the property of which it demands knowledge, containing additional information about the protocols supported, etc.
  • Proof a message from the client to the verifier, providing cryptographic assurance as to the issuer's attestation to the client's satisfaction of the property specified in the proof request.
  • the protocols message can be communicated as JSON-encoded.
  • the verifier can provide the source code or bytecode to a straight talk script.
  • a standard bytecode language for straight talk shall also be provided.
  • FIG. 20 is a schematic diagram of a computing device 2000 such as a server. As depicted, the computing device includes at least one processor 2002 , memory 20020 , at least one I/O interface 2006 , and at least one network interface 2008 .
  • Processor 2002 may be an Intel or AMD x86 or x64, PowerPC, ARM processor, or the like.
  • Memory 2004 may include a combination of computer memory that is located either internally or externally such as, for example, random-access memory (RAM), read-only memory (ROM), compact disc read-only memory (CDROM).
  • RAM random-access memory
  • ROM read-only memory
  • CDROM compact disc read-only memory
  • Each I/O interface 2006 enables computing device 2000 to interconnect with one or more input devices, such as a keyboard, mouse, camera, touch screen and a microphone, or with one or more output devices such as a display screen and a speaker.
  • input devices such as a keyboard, mouse, camera, touch screen and a microphone
  • output devices such as a display screen and a speaker.
  • Each network interface 2008 enables computing device 2000 to communicate with other components, to exchange data with other components, to access and connect to network resources, to serve applications, and perform other computing applications by connecting to a network (or multiple networks) capable of carrying data including the Internet, Ethernet, plain old telephone service (POTS) line, public switch telephone network (PSTN), integrated services digital network (ISDN), digital subscriber line (DSL), coaxial cable, fiber optics, satellite, mobile, wireless (e.g. W-Fi, WiMAX), SS7 signaling network, fixed line, local area network, wide area network, and others.
  • POTS plain old telephone service
  • PSTN public switch telephone network
  • ISDN integrated services digital network
  • DSL digital subscriber line
  • coaxial cable fiber optics
  • satellite mobile
  • wireless e.g. W-Fi, WiMAX
  • SS7 signaling network fixed line, local area network, wide area network, and others.
  • Computing device 2000 is operable to register and authenticate users (using a login, unique identifier, and password for example) prior to providing access to applications, a local network, network resources, other networks and network security devices. Computing devices 2000 may serve one user or multiple users.
  • FIG. 21 is a server for inclusion in a data center, according to some embodiments.
  • the server is an illustration of a special purpose machine 2102 , according to some embodiments that may reside at data center.
  • the special purpose machine 2102 incorporates the features of the verification system and is provided in a portable computing mechanism that, for example, may be placed into a data center as a rack server or rack server component that interoperates and interconnects with other devices, for example, across a network or a message bus.
  • the server may be configured to provide one or more secure data storage spaces, or may include one or more secure enclave processors, among others.
  • FIG. 22 is a system diagram for an example verification system, according to some embodiments.
  • issuer entities there may be multiple issuer entities, each having their own set of associated computing devices (e.g., computers in data centers).
  • the issuer entities and their computing devices may have heterogeneous data storage mechanisms, which can include local storage and/or specially allocated memory storages, including secured enclave memory and/or processors.
  • issuer devices 2202 are coupled to a client secured data storage.
  • the issuer device 2204 may be coupled to a blockchain data structure backend or a distributed ledger mechanism that can be accessed and/or otherwise interacted with (e.g., pushing new information to be stored on the blockchain, querying the blockchain using a blockchain explorer), among others.
  • the blockchain data structure in some embodiments, is a public blockchain (e.g., publicly accessible, such as an Ethereum blockchain), or a private, permissioned blockchain that operates through a propagated distributed ledger shared across a set of trusted nodes.
  • the blockchain data structure may store immutable attributes (and/or encrypted or signed versions of the attributes).
  • Multiple authoritative issuer devices 2202 , 2204 are configured to provide signed attributes which may either be delivered to the client special space 2206 (e.g., a secured enclave having secured memory and/or secured processors) or onto the blockchain data structure 2208 . These attributes represent aspects of client personal information.
  • the client special space 2206 can store some signed attributes and the proof response logic, and can be stored in a data storage remote from the on-board memory of devices associated with the client.
  • a benefit of having a client special space 2206 is that, for example, multiple client devices 2210 are able to connect to the client special space 2206 (e.g., a tablet, a mobile device, a desktop computer), and if a client loses a device, the signed attributes remain accessible.
  • the blockchain data structure 2208 is adapted to store on one or more distributed ledgers, data blocks representing signed attributes and the proof response logic, according to some embodiments.
  • multiple client devices 2210 are able to connect to the blockchain data structure 2208 (e.g., a tablet, a mobile device, a desktop computer), and if a client loses a device 2210 , the signed attributes remain accessible.
  • Proof requests and responses can be conducted using, for example, connected electronic client devices 2210 (e.g., a mobile device, such as a smartphone or a tablet) or other devices that are connected to the mobile device using Bluetooth low energy (e.g., a wearable device).
  • client devices 2210 may store locally a public key which can be utilized to encrypt data messages for decryption using the corresponding secret key or validate signed attributes that are signed based on the corresponding secret key.
  • FIG. 23 is a system diagram depicting a method for registration, according to some embodiments.
  • a data communication occurs between the client device to the client special space data storage, whereby the client device generates control messages that authenticates and establishes the special space data storage, which, in an example, is a SGX Secure Enclave or other hardware protected space.
  • a public/private key pair is generated, and the client device retains the public key (Pk) in data storage, while the private/secret key (Sk) is stored on the client special space data storage.
  • a data communication occurs between the client device to the issuer device.
  • the client authenticates (e.g., 2 way authentication) in relation to the issuer device, selecting which attributes he/she wants to provide (e.g., Age, zip, over 21, etc.) from a set of offered selections.
  • the issuer device may provide one or more interface options indicative of potential token destinations (e.g., storage destinations), including the client special space data storage or a blockchain-based data storage, such as a permissioned blockchain or a public blockchain.
  • the issuer is configured to then deliver attributes, for example, in a client secret space data structure, the client's device can provide a pointer (e.g., a uniform resource locator address (URL)) to a special space data structure, and can transmit the public key (Pk) to the issuer device. Attributes are then created by the issuer device using a combination of the client's public key and the issuer's secret key (Sk), which can be delivered for storage on the client secret space data structure (3A) or on a data block of a blockchain. Where the attribute is stored on the blockchain, the attribute may be made public (if the issuer is blockchain enabled), and thus publicly viewable.
  • the public blockchain may be configured to store a pre-defined set of attribute types that are thus publically viewable (e.g., using a blockchain explorer).
  • the issuer device is capable of interacting with the blockchain and the attribute can be made public (e.g., over 21)
  • the issuer device delivers attributes signed by the issuer using the client's public key (Pk) to the blockchain (3B).
  • the issuer device is capable of interacting with the blockchain and the attribute requires the client's permission (e.g., date of birth)
  • the issuer can store on the blockchain signed attributes that are encrypted with the client's public key (3C).
  • a sidechain is utilized to keep attestation private between the involved parties.
  • FIG. 24 is a system diagram depicting a method for verification, according to some embodiments.
  • Sample steps for verification are described herein, whereby the client device forms a communication channel with the authenticated verifier, and the verifier makes a “Proof Request”.
  • the proof request can be provided, for example, to the client secret space data storage.
  • a “Proof Request” is sent to the Client's special space data storage, where a bounded device has both the URL and public key to access the special space.
  • a “Proof Response” is sent back to the client device.
  • the issuer device is blockchain-enabled and the attribute can be made public (e.g., that the user is over 21)
  • data messages representing the “Proof Request” are transmitted to the blockchain (or a blockchain explorer tool configured to interact with the blockchain)
  • a data message representing the “Proof Response” is sent back to the device as the attribute is public.
  • the client device can direct the verifier to the blockchain, for example by providing a link or a block number indicative of where the attribute is stored.
  • the issuer is blockchain-enabled and but the attribute needs client's permission (e.g., date of birth).
  • a “Proof Request” is sent to the blockchain (e.g., or to a blockchain explorer tool configured to interact with the blockchain), and at step 4 C, an “Encrypted Proof Response” is sent back to the device.
  • the client device may then be required to grant permission to share the attribute at step 5 C, and responsive to permission being granted, at step 6 C, the “Encrypted Proof Request” is then transmitted to the client special space data storage for decryption.
  • a Decrypted Proof Response is sent back to the client device that could then be provided to the verifier device.
  • FIG. 25 is a system diagram depicting an example age verifier device 2502 , according to some embodiments.
  • a device is positioned at a point of sale or other location where verification is required, such as in front of a bar serving alcohol.
  • the verification can be used as a gatekeeper mechanism in some cases, or in other cases, as a tool to determine whether a particular individual is entitled to various statuses or discounts (e.g., student discount).
  • the device 2502 is adapted, in a specific, illustrative example, in relation to a requirement to check the age of all customers.
  • the device 2502 can be a terminal set up at the point of sale, for example, which could be designated a verifier computing device.
  • the device 2502 may be configured to render a visual representation 2504 of a resource locator, such as a quick response code.
  • the quick response code can be related to an underlying data element, such as a URL, which the client device can interact with, for example, by scanning the code to access the URL.
  • verification processes as described in various embodiments herein are utilized to transmit or otherwise make available signed attribute information of the client device, which are then provided to the verification device 2502 such that verification device 2502 is able to verify specific attributes of the client (e.g., age>25).
  • the verification device 2502 can be configured to modify a rendering 2506 to visually or audibly indicate that the client has successfully passed or failed the attribute test.
  • one or more aspects of the blockchain, tokenization and/or verification/validation/proof processes described herein can involve one or more secure execution environments and/or secure storage elements.
  • the storage of private keys and tokens in addition to computations required for issuance and proofs, could be performed on Trusted Execution Environments, Smart Cards, Secure Elements or Trusted Platform Modules on devices such as mobile and personal computers using corresponding APIs.
  • a computing system includes or is configured to provide a plurality of distinct execution environments. The isolation of these environments can be enforced using software or hardware.
  • a distinct execution environment can include one or more secure storage elements (for example, a Secure Element or one or more aspects of a Smart Card).
  • the distinct execution environments are, in some embodiments, configured to provide access to different storage and processing resources.
  • one of the environments may be referred to as a trusted execution environment (TEE) and may have access to isolated and secure storage and processing resources.
  • TEE trusted execution environment
  • a secure environment may support a distinct operating system, or it may be a set of secure resources accessible to applications that are assigned to use it by the underlying operating system of the overall system.
  • a computing system includes a dedicated secure storage resource, such as a separate secure storage or a secure storage area within a general storage resource.
  • the computing system includes a dedicated secure memory device such as a separate secure memory, or a secure area within a general memory resource (e.g. secure memory may be accessible in a different address space or in a different address range).
  • resources may be physically and/or logically distinct from the general resources of the same type.
  • the first execution environment is a secure execution environment and the second execution environment is a potentially unsecure environment.
  • the secure execution environment is sometimes referred to as a trusted execution environment (TEE) and the potentially unsecure environment is sometimes referred to as a rich execution environment (REE).
  • TEE trusted execution environment
  • REE rich execution environment
  • the second execution environment (e.g. the potentially unsecure execution environment) is configured to communicate with the secure execution environment (e.g. the first execution environment) to request one or more aspects of the tokenization and/or verification/validation process to be performed.
  • the second execution environment includes an unsecure portion of a processor, memory, and storage.
  • Software code of the second execution environment can include an unsecure OS which is stored in storage, loaded into memory at run time, and executed by processor to perform OS operations.
  • software executable by the second execution environment can include one or more APIs or other software components for providing function calls or otherwise interfacing with one or more components of the first execution environment.
  • the first (e.g. secure) execution environment can include (e.g. store) one or more keys such as root keys, private keys, and the like for generating signs tokens, validating one or more signed data elements, and/or the like.
  • first execution environment can include (e.g. store) one or more tokens against which one or more credentials or other data elements can be validated.
  • first execution environment can include one or more software components including computer executable code for generating/issuing and/or validating one or more tokens, credentials and/or other data elements.
  • a digitally signed token representing a verified identity or account can be stored in a secure storage element in a secure execution environment.
  • a secure execution environment can include computer executable instructions which receive from an unsecure execution environment one or more data sets representing one or more biometric verification credentials.
  • the computer executable instructions and the secure execution environment can be configured to perform one or more calculations or data transformations to validate that the data sets representing the biometric verification credentials match or otherwise correspond to the digitally signed token as described herein or otherwise.
  • the data sets representing the one or more biometric verification credentials can be received at the device on which the secure execution environment resides and/or an external device in communication with the device in which the secure execution environment resides.
  • secure execution environment can return one or more signals indicating whether the biometric verification credentials are valid or otherwise match the digitally signed token.
  • the signals can include one or more signed data elements to confirm the veracity of the signals.
  • the secure execution environment can be configured to respond to proof requests from unsecure execution environment(s).
  • a secure execution environment can be used to generate a signed token.
  • a secure execution environment can receive from an unsecure execution environment one or more tokens and/or credentials.
  • One or more software elements within the secure execution environment can generate a signed token and/or credential using one or more private keys stored within the secure execution environment.
  • the signed token and/or credential can then be returned to the unsecure execution environment.
  • one or more aspects of the blockchain verification, transaction and/or other modification processes can be performed within a secure execution environment to ensure that private keys, addresses, credentials and/or the like are only accessible by authorized users and/or processes within the secured environment.
  • Any other aspect of the tokenization and/or her validation process can be similarly applied to using these secure an unsecure execution environment to ensure that sensitive information such as keys, credentials, tokens, tokenization algorithms, biometric data, biometric processing algorithms, blockchain transactions/activities, neural networks, and/or the like are only accessible by authorized users and/or processes.
  • sensitive operations using a private key may be performed only in a secure area. In some embodiments, all or additional operations may be performed in a java card space of a smart card.
  • the NIST-recommended SECP256r1 curve has been used as the discrete log group with g being the default generator.
  • c The specific value of c depends on how hashing is carried out. Many possible ways of doing so can be valid.
  • the process involves deterministically serializing the objects to be hashed (however seen fit) and pass the resulting byte array through a secure hash (in this example, SHA256).
  • C x (e6ab3db4c6691dda4a8b05d79a15559c18181cda6c6dfc7fc77f41dff392e41,f 0d8a7a52e882ff9da9f64cf082db98bbe1db6fa6f965dc96a4150b95270e073,1da350a2e431d51de9217a218313fb2cc39f8f1dda48ea33ad7b1e561ef00e89)
  • h (e6ab3db4c6691dda4a8b05d79a15559c18181cda6c6dfc7fc77f41dff392e41,f0d8a7a52e882ff9da9f64cf082db98bbe1db6fa6f965dc96a4150b95270e073,1da350a2e431d51de9217a218313fb2cc39f8f1dda48ea33ad7b1e561ef00e89)
  • the prover avoids sending A 0 , B 0 and C 0 to reduce the size of its messages. In that case, in step 6, instead of verifying a relation between the bit commitments the verifier derives A 0 , B 0 and C 0 independently.
  • a ⁇ -protocol is a schema for proving knowledge of a witness w to an NP-Statement x ⁇ L. It consists of the following three moves:
  • the verifier accepts if and only if the components of their view satisfy a certain polynomially-verifiable relation.
  • the view includes are the problem statement P(x) and the three messages exchanged.
  • a ⁇ -protocol must also satisfy the following properties:
  • the prover In order to prove that at least one of the two statements A and B is true, the prover proves one (one that is actually true) and simulates the other (which the zero knowledge property guarantees to be possible, regardless of its truth). In order to allow the prover to simulate one and only one of the two, for each verifier challenge c an efficient and efficiently invertible bijective function f c : C ⁇ C, where C is the set of possible challenges is devised.
  • the simulator can sample c and c 1 in advance and derive c 2 from the two. Because the protocols for the sub-statements are zero-knowledge, the simulator can output (R 1 , c 1 , z 1 ) and (R 2 , c 2 , z 2 ) that are indistinguishable from honest transcripts, given the challenges.
  • the computational overhead is negligible compared to that of providing the honest and simulated proofs, both in providing honest or simulated proofs and verifying them.
  • Communication has an overhead of the prover sending one of the sub-challenges to the verifier.
  • the sub-simulators can each create honest-looking transcripts (R n , c, z n ). Clearly a sequence of such transcripts will also be honest-looking.
  • a ⁇ -protocol is not guaranteed to be Zero Knowledge. However, under certain black-box transformations, a ⁇ -protocol can be converted into a ZKPoK.
  • the verifier hands the prover a challenge string, later used in generating the ⁇ -protocol challenge.
  • the main body of the protocol is made non-interactive, as the prover self-generates the challenge by hashing together the verifier-provided challenge string and its own commitments.
  • challenge string provided by the verifier need not be random; uniqueness suffices.
  • Operations are carried out in a prime order group G and the field
  • This group has at least two publicly known elements g and h, along with a hash function H.
  • the security of the constructions depends on the following properties.
  • the non-interactive version of this protocol can serve as a signature scheme with the verifier challenge serving as the message to be signed.
  • the simulator can first randomize the challenge and the response c,z ⁇ F
  • . It then generates fake mask commitment R g z X ⁇ c .
  • C,Z and R represent the challenge, response and the mask respectively.
  • the response is generated independently of the challenge, therefore Z
  • the response is obtained by adding a uniformly randomized r to a fixed multiple of c. Therefore, in that case also one will have Z
  • every field multiplication involves ⁇ (log
  • ) field additions which is again at least about 256.
  • the analysis will dismiss basic field operations as inexpensive, reasonably certain that the analysis will not suffer much.
  • Schnorr's signature can be naturally extended to efficiently prove knowledge of a group element X's discrete logarithm based multi-generator set ⁇ g n ⁇ .
  • the prover may want to prove that some of these exponents are equal.
  • the prover does the following:
  • the prover performs the following:
  • the prover needs to compute x ⁇ 1 and ⁇ rx ⁇ 1 , requiring one field inversion and one multiplication only.
  • the verifier and simulator need no additional setup.
  • An extractor can obtain x ⁇ y and r, with the guarantee that x ⁇ y ⁇ 0. From that X can also be determined.
  • XY ⁇ 1 is uniquely determined from common inputs X and Y ⁇ 1 and the subprotocol it is handed to is special zero-knowledge; thus so is this protocol.
  • Group elements X 1 and X 2 are common input, and private to the prover are
  • the prover sends C 1 , . . . , C N ⁇ 1 to the verifier. Apart from that, the prover will need to provide proofs of commitment for C 0 , . . . , C N ⁇ 1 .
  • a simulator can randomize group elements (C 1 , . . . , C N ⁇ 1 ) and have sub-simulators generate honest-looking sub-proofs for their validity as bit commitments.
  • the prover randomizes N ⁇ 1 masks and infers r 0 from them.
  • computing C 1 to C N ⁇ 1 takes N ⁇ 1 group exponentiations and N ⁇ 1 group compositions.
  • C 0 takes N ⁇ 1 group doublings and N ⁇ 1 group compositions.
  • the verifier takes C 1 to C N ⁇ 1 and computes C 0 , knowing C. That takes N ⁇ 1 group doublings and N ⁇ 1 group compositions. The rest of its work is to verify individual bit commitment proofs.
  • the carry in c N is considered 0 and the carry out c 0 is the result.
  • C N ⁇ 1 can be simply computed as A N ⁇ 1 B B ⁇ 1 ⁇ 1 g a N ⁇ 1 ⁇ b N ⁇ 1 h r N ⁇ 1 ⁇ r′ N ⁇ 1 .
  • a simulation would involve a simulation of both subcomponents. Each contributes an extra exponentiation.
  • An honest proof involves a proof of zeroness on c n+1 and a proof of equality between A n B n ⁇ 1 and C n .
  • a simulation likewise involves simulating the two.
  • the prover needs to generate the bit comparison commitments C N ⁇ 1 , . . . , C 0 and prove their correctness. This takes N field randomizations, N exponentiations and N group compositions.
  • q can be as small as the prover feels comfortable, as it puts an upper limit on the values a and b.
  • This construction essentially reduces comparison between two arbitrary numbers to a comparison between an arbitrary one and one the prover gets to choose. Powers of 2 are very easy to compare against, when equipped with decomposition proofs, which essentially enable one to make statements such as “a is at most N bits long.”
  • a i g a i h r i .
  • a i g a i h r i .
  • the prover and the verifier have ⁇ A i ⁇ as common input, and the prover additionally has ⁇ a i , r i ⁇ as private input.

Abstract

A computer implemented system for electronic verification of credentials including at least one processor and data storage is described in various embodiments. The system includes cryptographic mechanisms and electronic communication between one or more computing systems that in concert, provide verification of a prover's credentials in accordance to logical conditions of a verifier's policy without providing additional information to a verifier entity.

Description

CROSS REFERENCE TO RELATED APPLICATIONS
This application is a non-provisional of, and claims all benefit, including priority to, U.S. Application No. 62/693,680, dated 3-Jul.-2018; U.S. Application No. 62/702,684, dated 24-Jul.-2018, U.S. Application No. 62/839,408, dated 26-Apr.-2019 all entitled SYSTEM AND METHOD FOR AN ELECTRONIC IDENTITY BROKERAGE, all incorporated herein in their entirety by reference.
FIELD
Embodiments of the present disclosure generally relate to the field of electronic verification, and more specifically, embodiments relate to devices, systems and methods for electronic verification of credentials.
INTRODUCTION
The verification of characteristics of an entity is a useful tool in the context of decision making, for example, in relation to access provisioning, goods and service provisioning, among others.
However, an individual when providing credentials for verification may wish to restrict the amount of information being provided to the counterparty. The credentials being provided, to increase trust, may also benefit from verification through association with a third-party verifier (e.g., indicating that the individual is who they purport to be).
Credential assertion with restricted information has been difficult to implement in practice as it is technically challenging to generate and provide sufficient trusted credentials, especially on a high-volume, scalable system adapted to serve a large number of users on an on-demand basis.
SUMMARY
Embodiments described herein are directed to computer systems and devices directed to provide a cryptographic platform for generating and transmitting messages that are adapted to assert attributes about various objects (e.g., user profiles) without indicating any more than is actually required, and corresponding methods and computer readable media storing machine-interpretable instruction sets for performing the methods.
The computer systems and devices, in accordance with some embodiments, are adapted to a high-volume, scalable system, which dynamically responds to data credential requests of one or more users or one or more computer systems requesting identity/credential proofs.
In some embodiments, the assertions are conducted using mobile endpoints (e.g., user devices) which may have limited computational performance and resources, and accordingly, an improved cryptographic approach and system is proposed that enables the assertion functionality through the passing of cryptographically generated messages between devices. An improvement associated with the proposed cryptographic approach of some embodiments is that it is able to operate in a secure and scalable way, even on limited computational resources (e.g., those available on an unenhanced smartphone).
Prior approaches required large numbers of large messages being sent, which made the approaches impractical where resources were limited. The approach proposed herein requires less messages and streamlines the amount of cryptographic computations required to make these assertions. For example, Belenkiy describes an approach which requires a large number of computational steps, which can have deleterious impacts on performance.
Credential verification, when conducted manually, is a tedious process prone to falsification and also over-provisioning of information. In an example, Alice is a law-abiding 26 year old, and she would like an alcoholic beverage. Before selling beer to Alice, Bob wants to make sure of two things: She is legally allowed to drink, meaning 21 years of age or more, and that she is not a problem customer.
Alice thinks the conditions are fair, and they both know presenting her ID card would prove that she does satisfy them. She could provide her driver's license, which shows her name and date of birth. She would like to not disclose anything to him other than the fact that she satisfies the conditions. However, by providing her driver's license, Bob ends up knowing more than he needs to know (e.g., age and specific date of birth as opposed to the fact that she is above 21 years of age and is not the problem customer). Further, aside from visual inspect of the license, Bob has practical difficulties in verifying that the driver's license is not a fake driver's license.
Accordingly, a challenge involves providing a robust credential verification whereby Alice is able to prove to Bob that she does satisfy Bob's customer policy, while revealing nothing other than the fact to him. As an example, consider a policy of being older than 21. That is all Bob needs to know. He does not and should not know that Alice is in fact 26.
The system is configured to adduce stripped down credentials to meet Bob's customer policy without exposing additional information. In particular, cryptographic techniques are utilized that undertake specific steps and computational approaches to provide a secure, yet computationally efficient mechanism for proof generation.
Accordingly, an issuer device issues one or more signed token data objects, which are stored on a client's device for later usage. Upon encountering a situation where verification is required, the client's device is configured to dynamically generate proof data messages which are then provided to the verifier's computing device (e.g., the verifier's smart phone, a point of sale device, an access control system, a mantrap gate). The verifier is able to conduct a verification check using the proof data message to see only that the conditions required in the original verification check message without providing the actual underlying characteristics. As the proof data messages are generated using the token data objects, the verifier is able to validate that such proof data message is associated with a trusted verifier.
There are two different types of proofs that are proposed in some embodiments, these being exact match proofs (non-zeroness protocol; e.g., this person either matches someone on a whitelist or doesn't match anyone on a blacklist), and conditional proofs (e.g., based on an inequality condition being matched, such as over 18 years old?).
As described in various embodiments herein, improved cryptographic protocols are proposed that, relative to prior approaches, reduce an overall cryptographic complexity without a significant reduction in security. Accordingly, the proofs can be generated more quickly, which improves convenience, especially where a system is being established for mass adoption and client device characteristics are highly variable across the users (e.g., some users may be using devices with extremely limited capabilities).
An enhanced solution is described herein that is adapted for protecting a client's personal information and only providing what is needed by leveraging a client's special space using a secure enclave and a blockchain solution, in accordance with some embodiments.
A blockchain infrastructure and the secure enclave each store data sets representing aspects of signed attributes and, in some embodiments, a proof response logic. The block chain infrastructure can include distributed logic technologies and combination with cascading encryption to provide an immutable ledger. In some embodiments, the proof requests and responses can be conducted using intelligent connected devices such as a mobile device, or wearable devices (e.g., a smartwatch that is connected to a mobile device across Bluetooth low energy).
In an example embodiment, there are multiple authoritative issuers who are able to provide signed attributes (e.g., for storage in secure enclaves or on a distributed ledger blockchain data structure). Secure enclaves can be utilized, or other types of hardware protected spaces are usable.
A registration mechanism and method is utilized to initialize and populate the attributes using public and secret (private) encryption keys. Issuer devices create attribute data records that are generated using a combination of a client's public key and an issuer's secret key (e.g., using digital signatures or encryption/decryption). The attributes can be made publicly available, for example, on a blockchain, whereby the attributes can be signed by an issuer's secret key but encrypted using the client's public key.
A verification mechanism and method is provided whereby a communications channel can be established with an authenticated verifier device, which initiates a proof request, which triggers a process to establish a proof response that is transmitted to the verifier.
An example use case includes a specially configured age verifier terminal, which for example, can include a graphical user interface rendering visual and coded objects such as a quick response code that can be scanned by a mobile device. Upon scanning the quick response code, the verification mechanism is invoked, and the mobile device may share data sets on a backend communications network such as the Internet. The proof response can be transferred to the verifier device based off of identifiers or information stored other on the age verifier terminal, or encoded within the quick response code the age verifier terminal returning true or false such that both a verifier such as a cashier, and the customer are able to visually confirm. The proof response rendering, for example, may be restricted to a true/false determination (e.g., additional private information is not disclosed or rendered).
Corresponding computer implemented methods and computer readable media are contemplated.
In accordance with a first aspect, a computer implemented system is provided for communicating data messages between a verifier computing device and a portable client computing device, the data messages establishing authentication of one or more characteristics of a client associated with the portable client computing device.
The system includes the portable client computing device including at least a client computing device processor and data storage, the data storage storing one or more token data objects received from or computed jointly in a multiparty protocol with an issuer computing device, the one or more token data objects generated using at least a issuer computing device private issuance key, the one or more token data objects each including one or more signed data elements representing at least one of the one or more characteristics of the client associated with the portable client computing device.
The client computing device processor is configured to: receive a verification request data message from the verifier computing device, the verification request data message including at least a nonce c0; and compute t=x−1 mod p, where x is an attribute value from the one or more token data objects, and p is an order of the discrete log group according to a cryptographic protocol being used; t is a modular inverse of x mod p; uniformly sample a first random number r1 and a second random number, r2, such that r1, r2
Figure US11212102-20211228-P00001
p; compute R=Cx r 1 hr 2 , where R is a commitment (e.g., a representation of a value that is both hiding and binding, hiding in the sense that the recipient of the commitment cannot find out anything about what the value of the commitment is, and binding in the sense that the sender later cannot pretend that it was a commitment to another value than it originally was) to random values r1 and r2, Cx is a commitment to attribute x, h is a group generator taken from cryptographic specifications; compute c=H(Cx, R, c0), where c is a proof challenge, based at least on the Fiat-Shamir Heuristic; compute z1=ct+r1 and z2=−cty+r2, where z1 and z2 are proof responses in a sigma protocol; and encapsulate and transmit one or more proof data messages including R, z1 and z2 as data objects to the verifier computing device, such that the verifier computing device is able to compute c=H(Cx, R, c0) and confirm that gcR=Cx z 1 hz 2 , the verifier computing device controlling provisioning of access to a secured resource responsive to the confirmation that gcR=Cx z 1 hz 2 .
In another aspect, the client computing device processor is a secure enclave processor or a trusted execution environment that is segregated from a general execution environment of the client computing device.
In another aspect, the data storage is a secure enclave memory region that is segregated from a general memory region of the client computing device, the secure enclave memory region not accessible by general execution environment of the client computing device.
In another aspect, the one or more token data objects are pre-loaded into the data storage such that the generation of the proof can be conducted at a time temporally separated from when the one or more token data objects were generated or preloaded.
In another aspect, the one or more proof data messages are generated such that the one or more proof data messages can be validated using an issuer computing device public encryption key corresponding to the issuer computing device private issuance key.
In another aspect, gcR=Cx z 1 hz 2 indicates that a condition established in the verification request data message is met without having to present the underlying one or more characteristics of the client associated with the portable client computing device.
In another aspect, the verification request data message includes a blacklist data structure and the one or more proof data messages are generated to establish that the client associated with the portable client computing device does not match one or more identities stored in the blacklist data structure, or wherein the verification request data message includes a whitelist data structure and the one or more proof data messages are generated to establish that the client associated with the portable client computing device matches one or more identities stored in the blacklist data structure.
In another aspect, the provisioning of access to the secured resource includes transmitting an electronic signal to a physical lock actuator, or to a digital challenge-response mechanism.
In another aspect, there is provided a computer implemented system for communicating data messages between a verifier computing device and a portable client computing device, the data messages establishing authentication of one or more characteristics of a client associated with the portable client computing device, the system comprising: the portable client computing device including at least a client computing device processor and data storage, the data storage storing one or more token data objects received from or computed jointly in a multiparty protocol with an issuer computing device, the one or more token data objects generated using at least a issuer computing device private issuance key, the one or more token data objects each including one or more signed data elements representing at least one of the one or more characteristics of the client associated with the portable client computing device. In this aspect, the client computing device processor is configured to: receive a verification request data message from the verifier computing device including a request to prove a≤b; generate a proof data message wherein G is defined as a discrete log group of prime order p and g and h be generators with unknown discrete logs, numbers q and l are defined such that q−l=2N≤p/2 and two whole numbers a and b such that l≤a≤b<q; and G is a discrete log group of prime order p and g and h be generators with unknown discrete logs, considering consider commitments A=gahm a and B=gbhm b to a and b, respectively, by: computing C=BA−1=gb−ahm b −m a =gchm c ; producing bit commitments Ai=ga i hm ai , Bi=gb i hm bi , Ci=gc i hm ci for i ∈{1, . . . , N−1} where ai, bi and ci are the i′th bits of a−l, b−l and c, respectively, and mai, mbi and mci are sampled randomly; computing A0=ga o hm ao =AΠi=1 N−1 Ai −2 i and likewise B0=gb o hm b0 =BΠi=1 N−1Bi −2 i and C0=gc o hm c0 =CΠi=1 N−1 Ci −2 i ; for each i ∈{0,1, . . . , N−1}, and repeated through each of A, B, and C: randomly sampling rai, d′ai and z′ai; computing Rai,a i =hr ai and Rai,(1−a i )=hz′ ai (Aig−a i )−d′ ai ; computing dai=H(Ai, Rai,0, Rai,1); computing zai=(dai−d′ai)mai+rai; assigning zai,ai=zai, zai,(1−a i )=z′ai, d″ai,a i =dai−d′ai and d″ai,(1−a i )=d′ai; encapsulating proof data message including at least Ai, Rai,0, Rai,1, d′ai,0, zai,0, zai,1, Bi, Rbi,0, Rbi,1, d″bi,0, zbi,0, zbi,1, Ci, Rci,0, Rci,1, d″ci,0, zci,0, zci,1; wherein the proof data message can be verified by the verifier computing device checking for A, B, and C, that a=Πi=0 N−1 Ai 2 i , B=Πi=0 N−1 Bi 2 i , BA−1i=0 N−1 Ci 2 i ; and for each
i { 0 , 1 , , N - 1 } : A d ai , 0 R ai , 0 = h z ai , 0 , ( Ag - 1 ) H ( A i , R ai , 0 , R ai , 1 ) - d ai , 0 R ai , 1 = h z ai , 1 .
In another aspect, the proof data message is encapsulated such that the proof data message is free of A0, B0 and C0 to reduce a filesize of the proof data message, and wherein the verifier computing device is configured to derive A0, B0 and C0 independently.
DESCRIPTION OF THE FIGURES
In the figures, embodiments are illustrated by way of example. It is to be expressly understood that the description and figures are only for the purpose of illustration and as an aid to understanding.
Embodiments will now be described, by way of example only, with reference to the attached figures, wherein in the figures:
FIG. 1 is a pictorial rendering of an example scenario, according to some embodiments.
FIG. 2 is a graphical representation of parties to a verification event, according to some embodiments.
FIG. 3 is an example system for conducting credential verification, according to some embodiments. The system aspects may include logical components, physical components, or a combination of logical and physical components, in accordance with various embodiments.
FIG. 4 is an example O-Auth based method, according to some embodiments.
FIG. 5A is an example method diagram where a secure enclave master verifier is utilized, according to some embodiments.
FIG. 5B is a state diagram of a verify oracle, according to some embodiments.
FIG. 6A is a system diagram providing additional detail in the context of a verifier hosted enclave, according to some embodiments.
FIG. 6B is a system diagram providing a simplified variation of the system shown in FIG. 6A, according to some embodiments.
FIG. 7 is a method diagram providing an example issuer sequence where the prover computing system has a corresponding key pair, according to some embodiments. As described in later figures, the prover key is optional, but in some cases, the prover key pair helps prevent sharing or can be utilized to reduce an amount of data required to be held secret. The use of a key pair for the prover may be instrumental in preventing credential subletting, an abuse of the system whereby the prover shares some of their credentials with another for attribute impersonation.
FIG. 8 is a method diagram providing an example verification sequence, where the prover computing system has a corresponding key pair, according to some embodiments.
FIG. 9 is a method diagram providing an example issuer sequence where the prover computing system does not have a corresponding key pair, according to some embodiments.
FIG. 10 is a method diagram providing an example verification sequence, where the prover computing system does not have a corresponding key pair, according to some embodiments.
FIG. 11 is a system diagram providing an example verification system having a third party hosted enclave including a transcript, according to some embodiments.
FIG. 12 is an example C-based proof request description language, according to some embodiments.
FIG. 13 is an example method diagram for an anonymous credentials approach, according to some embodiments.
FIG. 14 is a screenshot of an example credential manager, according to some embodiments. Depending on the computational power of the mobile device, an application residing on a mobile device, such as the credential manager, is configured to perform one or more actions directed to the prover role in the above embodiments.
FIG. 15 is a screenshot of an example credential manager having an expanded portion to view additional details of the credential, according to some embodiments.
FIG. 16 is a screenshot of an example credential manager showing an expanded credential view of a single credential, according to some embodiments.
FIG. 17 is a screenshot of an example page requiring verification, according to some embodiments.
FIG. 18 is a screenshot of an example proof request interface page, according to some embodiments.
FIG. 19 is a screenshot of an example proof input interface page, according to some embodiments.
FIG. 20 is a topology of an example computing device, according to some embodiments.
FIG. 21 is a server for inclusion in a data center, according to some embodiments.
FIG. 22 is a system diagram for an example verification system, according to some embodiments.
FIG. 23 is a system diagram depicting a method for registration, according to some embodiments.
FIG. 24 is a system diagram depicting a method for verification, according to some embodiments.
FIG. 25 is a system diagram depicting an example age verifier device, according to some embodiments.
DETAILED DESCRIPTION
Embodiments described herein are directed to computer systems and devices directed to provide a cryptographic platform for generating and transmitting messages that are adapted to assert attributes about various objects (e.g., user profiles) without indicating any more than is actually required, and corresponding methods and computer readable media storing machine-interpretable instruction sets for performing the methods.
There are computing devices that interoperate with one another in concert with the cryptographic platform, including devices associated with issuers, verifiers, and clients. The issuers are trusted entities which provide cryptographically validated credential messages that are issued to the client devices for storage thereon.
The cryptographically validated credential messages are then presentable to a verifier (e.g., a third party organization) that seeks to validate that identity or aspects of the identity of the user associated with the client device. The cryptographically validated credential messages are configured such that the user is able to validate such identity or aspects without providing additional information associated with the user that is not requested (e.g., as opposed to presenting all the information on a driver's license).
The credential assertion platform is a high-volume, scalable system which dynamically responds to data credential requests of one or more users or one or more computer systems requesting identity/credential proofs.
In some embodiments, the assertions are conducted using mobile endpoints (e.g., user devices) which may have limited computational performance and resources, and accordingly, an improved cryptographic approach and system is proposed that enables the assertion functionality through the passing of cryptographically generated messages between devices.
An improvement associated with the proposed cryptographic approach of some embodiments is that it is able to operate in a secure and scalable way, even on limited computational resources (e.g., those available on an unenhanced smartphone).
For example, a device with limited computational resources can include basic smartphones, which may be one or more generations out of date, and also have limited amounts of on-board memory (e.g., 1-4 GB of memory) and storage (e.g., 8-64 GB of solid state memory). The transfer protocols as between the client devices and the verifier devices may also have limited bandwidth (e.g., through near-field communications (NFC), Bluetooth, limiting communications to only several Mbit/s).
Prior approaches required large numbers of large messages being sent, which made the approaches impractical where resources were limited. The approach proposed herein requires less messages and streamlines the amount of cryptographic computations required to make these assertions.
As described herein, an improved cryptographic mechanism and protocol is proposed that reduces an overall number of data messages and/or cryptographic steps required to be taken to generate the proof data messages. For example, the method of Belenkiy requires 4 randomizations, 3 group multiplications and 7 group exponentiations, which includes elliptic curve exponentiations that are computationally expensive (e.g., involves more than 256 operations on 512 long integers). In a proposed non-zeroness approach of some embodiments, a field inversion is provided, which itself is an expensive operation, but reduces a consideration number of group exponentiations.
The proof data messages are designed to have a “soundness” attribute whereby a malicious verifier is unable to find out from the proof data message more information that what is being provided in the proof data message (e.g., can't find out the underlying characteristic values).
A computer implemented identity brokerage solution is described in accordance with various embodiments. The identity brokerage solution is adapted to address problems with identity and attribute verification, using computer implemented cryptographic approaches to provide a robust mechanism for conducting verifications while reducing the provisioning of extraneous information (e.g., information not required for the verification).
Credential verification, when conducted manually, is a tedious process prone to falsification and also over-provisioning of information.
FIG. 1 is a pictorial rendering of an example scenario, according to some embodiments. Alice is a law-abiding 26 year old, and she is thirsting for beer. She decides to go to Bob's German-style beer hall to quench her thirst for beer.
Bob is not looking for a headache so before selling beer to Alice, wants to make sure of two things: She is legally allowed to drink, meaning 21 years of age or more, and that she is not Mallory McFelon, a problem customer. Alice thinks the conditions are fair, and they both know presenting her ID card would prove that she does satisfy them. She could provide her driver's license, which shows her name and date of birth.
Alice also knows that Bob tends to be nosy, so she would like to not disclose anything to him other than the fact that she satisfies the conditions. However, by providing her driver's license, Bob ends up knowing more than he needs to know (e.g., age and specific date of birth as opposed to the fact that she is above 21 years of age and is not Mallory). Further, aside from visual inspect of the license, Bob has practical difficulties in verifying that the driver's license is not a fake driver's license.
Accordingly, a challenge involves providing a robust credential verification whereby Alice is able to prove to Bob that she does satisfy Bob's customer policy, while revealing nothing other than the fact to him. As an example, consider a policy of being older than 21. That is all Bob needs to know. He does not and should not know that Alice is in fact 26.
FIG. 2 is a graphical representation of parties to a verification event, according to some embodiments. The parties to a verification event include a prover (e.g., the entity seeking to prove the entity's characteristics and/or identity, for example, through programmatic mobile application client 202 having a token 204 stored thereon), a verifier 206 (e.g., the entity seeking to verify the prover's characteristics and/or identity in accordance with a policy), and an issuer 208 (e.g., the entity, such as a financial institution, which has a relationship with the prover and can attest to the prover's characteristics and/or identity, whose representations are trusted by the verifier 206).
In accordance with various embodiments, the prover should be able to hide as many attributes as the prover seeks to prove that follows from their attributes having zero knowledge of the underlying attributes: “I've lived in the same city over the last 5 years.”
The prover's client 202 holds credentials that are digitally signed by the issuer (“tokens”) 208. An example token are those provided by U-Prove specifications. A U-Prove token can include a credential similar to a PKI certificate with cryptographic wrapping of attributes to aid in reducing unwanted tracking of users.
For example, a token may have various artifacts wrapped therein and may include information, such as issuer parameters, including issuer public key information (e.g., coupled an issuer's private key) that can be used for signing or encrypting elements of information stored thereon to prove the veracity of such signature or to protect sensitive information. The issuer signature can be used by the prover or verifier to verify issuer parameters being relied upon, and the token itself, in some embodiments, may have one or more data fields storing information such as token usage restrictions, validity period, token metadata.
In some embodiments, the token is jointly created using a combination of issuer information and prover information. For example, there may be information stored thereon that is established in conjunction and hidden from the issuer, such as contact information, encryption key, or verifier supplied nonces, etc.
During issuance of a token, an issuer may authenticate the existence and access/control that the prover has over the prover's device.
Tokens include attributes that can be converted from a natural form to a sequence of large numbers (field elements) suitable for public key operations. These public key operations include anonymous credentials protocols.
Attributes are organized in a tree. An attribute can either come with a value, in which case it is called a leaf attribute, or bundle a number of sub-attribute, in which case it is called a parent attribute.
For example, consider a geographic location attribute. That would be most naturally divided up into a latitude sub-attribute and a longitude sub-attribute. Thus, a credential token can be considered consisting of a single root attribute containing all others as descendants.
Regardless of whether an attribute is disclosed, committed to, or hidden, the prover may wish to communicate metadata about it to the verifier. The most important such property is an attribute's name. The number “170” in an attribute would mean nothing without the name “height” attached. Additionally, such numeric attributes require units as context. The number “170” is absurd if considered in inches but plausible when in centimeters.
It is important to disclose this metadata even when attributes are being committed to. Consider the non-trivial example of heights and units. Consider an attraction park that refuses to admit people taller than 180 cm on a rollercoaster. Without the proper context provided, a 188 cm tall person can abuse an attribute a height attribute of 74 inches and successfully prove 74<180, thereby put him and others in danger.
In some embodiments, the token can include fields that additionally give the users an ability to decide if they want to hide an attribute's metadata. For example, even if hidden, an attribute attesting to a negative syphilis test can carry social stigma.
An attribute will be serialized into one “raw attribute” (a number or string) if the user chooses its metadata to depend on its parent's. If not, it will be serialized into two, the first representing its metadata and the second representing the value.
Every attribute's metadata contain an array called “subAttributes”. If the array is empty, the attribute is considered to be a leaf attribute. Each sub attribute has a corresponding entry in the array. If the sub attribute is encoded independently, the entry will be an integer, denoting how many raw attributes the sub attribute and all of its descendants (subtree) together will take. If it is encoded dependently, the subAttributes entry will be all of its metadata.
In this example, it is describing a token for an individual residing in 35.796682 N, 51.416549 E, and 188 cm tall. In radians, the coordinates are 0.624769962188 N and 0.897388070061 E.
The token from the slide will serialize into the following, each bullet point representing one raw attribute:
{subAttributes: [
{name: ”homeAddress”, type: “polarCoordinates”, subAttributes: [
   {name: “longitude”, type: “polarCoordinate”, unit: “mRad”,
   subAttributes: [ ]}, 2
]},
{name: “height”, type: “length”, unit: “cm”, subAttributes: [ ]}
]}
897
{name: “latitude”, type: “polarCoordinate”, unit: “μRad”, subAttributes:
[ ]}
624770
188
A proof request is issued from the verifier 206 to the prover's client 202, asking the prover to give the verifier 206 cryptographic assurance that according to some issuer trusted by the verifier, the prover's attributes satisfy a certain (arbitrary) policy (e.g. older than 21, as far as provisioning alcohol is concerned.), and these proof requests typically contain one or more challenge messages. A proof request can include a nonce, types of conditions, etc., and these conditions may be encapsulated as inequalities (e.g., intUserAge>18), or logical statements (e.g., intUserID not equal to 22412). One or more lookup reference data structures may also be passed, which can include blacklists, whitelists, values for various constants (e.g., MINIMUMDRINKINGAGE).
A proof is provided by the prover through client 202 as a response to the verifier 206's request, which includes cryptographic assurance that the prover's credentials satisfy the verifier 106's proof request, the cryptographic assurance being held being as good as the issuer 108's word. The proof is a data message that encapsulates various information (e.g., proof responses directed to a sigma protocol). The data message includes sufficient information such that the verifier is able to receive the data message, and conduct steps to validate and verify that such proof responses are indeed acceptable. In processing proof responses, the proof data message can include aspects indicative of the identity of an issuer, and a potential step is the validation by the verifier that such issuer is indeed trustworthy as a source of credential authentication.
The proof responses can be processed to generate gatekeeping control signals, which, for example, in an example embodiment, may be as simple as a device that operates a lightbulb whenever someone is validated as being of age (e.g., so that a bouncer at a bar is able to know that this person should be allowed in), or as complex as control mechanisms that automatically open doors, enable access to online accounts (e.g., on a web portal), etc. Accordingly, the verifier systems can include physical and electronic mechanisms which can generate alerts, notifications, actuation/control signals, digital or electronic signals, among others.
Factors for assessing identity brokerage solutions include how light the required infrastructure is (e.g., it may be important to reduce the need for specialized hardware, centralized devices, or complex distributed systems that make deployment and entry difficult), a level of computational efficiency, a simplicity of cryptography, a level of un-linkability between various parties (e.g., the issuer should not be able to aggregate additional data about the client, even in collusion with verifiers), and a flexibility and level of minimalism of disclosed information.
Any solution requiring the issuer to be online at verification time risks exposing additional information about the client to the issuer. This is especially concerning in cases where the issuer and the verifier collude to track client activities.
Reduced complexity is desirable as a solution may be less likely to suffer implementation flaws, be more easily understood, and less likely to theoretically break due to reliance on unusual hardness assumptions. If computational operations that have optimized/low-level implementations, the solution may be able to operate using less computing resources and/or time.
The identity protocols, ideally, should require little time, take little power, have few rounds of message transmission, and pass messages having small sizes and/or overhead. This is especially important where the parties implement portions of the identity brokerage solution on mobile devices to handle one or more verification events. The mobile devices have limited computational, storage, and interface capabilities.
The parties hold corresponding public/secret (e.g., private) key pairs. The public keys can be utilized to determine the veracity of information signed using the private keys, and to encrypt information that can be decrypted using the corresponding private key.
The private keys can be utilized to sign information and to decrypt information that has been encrypted using the corresponding public key, and in some cases, produce Zero-Knowledge Proofs of Knowledge. Each secret key is maintained by the corresponding computing device associated with the corresponding entity.
The parties each have corresponding computing systems, which are used to electronically communicate amongst one another (e.g., through a network) and to perform various cryptographic activities, including signing, verifying signatures, encrypting information, decrypting information and various anonymous credential issuance, proof and verification protocol implementations. Each verification event is associated with validating whether all logical conditions of the proof request are satisfied. A positive determination may lead to access/service/goods being provisioned to the prover. A negative determination may lead to access/service/goods not being provisioned to the prover.
A specific technological implementation of providing identity assertions with minimal disclosure is described in various embodiments. Three separate approaches are described, along with variations thereof. These approaches include (1) an O-Auth token based design, (2) a secure enclave based design, and (3) an anonymous credentials based design.
In some embodiments, a proposed approach is provided in an anonymous credentials based design whereby a client receives token data structure(s) that are stored on data storage, and asynchronously, the client gets a verifier request from a verifier. The verifier may, for example, have a list of trusted issuers that the issuer verifier trusts. Certain organizations may be trusted for certain information, such as a bank for employment or financial status, a university for educational attainment characteristics, among others. The client generates a proof (e.g., encapsulated as a proof data message) based on the token and the verifier request, and the proof can be established as either a non-zeroness proof or a conditional proof. Token objects can be received from or computed jointly in a multiparty protocol with an issuer computing device.
For a non-zeroness proof, the proof approach generation can include a first modular inverse, two randomization steps, two group exponentiations, and a group multiplication. In particular, the steps in an example non-limiting embodiment can be established as:
(1) Receive a verification request data message from the verifier computing device, the verification request data message including at least a nonce c0.
(2) Compute t=x−1 mod p, where x is the attribute value from the token, and p is the order (e.g., size, number of elements) of the discrete log group (e.g., elliptic curve, Diffie-Hellman group) according to the cryptographic standards the parties choose to use (e.g., elliptic curve, Diffie-Hellman group); t is the modular inverse of x mod p.
(3) Sample a first random number r1 and a second random number, r2, such that rl, r2
Figure US11212102-20211228-P00002
p.
(4) Compute R=Cx r 1 hr 2 , where R is effectively a commitment to random values r1 and r2, Cx is a commitment to attribute x, h is a group generator taken from cryptographic specifications (e.g., elliptic curve, Diffie-Hellman group). A commitment is a representation of a value that is both hiding and binding, hiding in the sense that the recipient of the commitment cannot find out anything about what the value of the commitment is, and binding in the sense that the sender later cannot pretend that it was a commitment to another value than it originally was.
(5) Compute c=H(Cx, R, c0), where c is the proof challenge, following the Fiat-Shamir Heuristic.
(6) Compute z1=ct+r1 and z2=−cty+r2, where z1 and z2 are proof responses in a sigma protocol.
(7) Encapsulate and transmit one or more proof data messages including R, z1 and z2 as data objects to the verifier computing device, such that the verifier computing device is able to compute c=H(Cx, R, c0) and confirm that gcR=Cx z 1 hz 2 , the verifier computing device controlling provisioning of access to a secured resource responsive to the confirmation that gcR=Cx z 1 hz 2 .
The verifier independently validates the received proof and the verifier makes a determination of access grant or not grant.
In some embodiments, the verifier is a verifier computing system that automatically grants access to one or more secured resources, such as a physical access entry (e.g., mantrap, revolving doors, locked gateway, locked cabinet), and in other embodiments, the system grants access to one or more virtual resources (e.g., administrator access on a computer system, logging into accounts, access to secured sections of webpages), among others.
In another example, a comparison protocol may be established (e.g., to prove some condition whereby a<=b). This can be utilized to establish proof messages whereby it is necessary to indicate that a person is of a particular age, that a person has a particular minimum creditworthiness, a person has a minimum educational attainment, among others.
Consider G to be a discrete log group of prime order p and g and h be generators with unknown discrete logs.
Let numbers q and l be such that q−l=2N≤p/2 and two whole numbers a and b such that l≤a≤b<q
Consider commitments A=gahm a and B=gbhm b to a and b, respectively.
To prove that a≤b, the following steps can be taken:
(1) Prover computes C=BA−1=gb−ahm b −m a =gchm c .
(2) Prover produces bit commitments Ai=ga i hm ai , Bi=gb i hm bi , Ci=gc i hm ci for i ∈{1, . . . , N−1} where ai, bi and ci are the i′th bits of a−l, b−l and c, respectively, mai, mbi and mci are sampled randomly.
(3) Prover computes A0=ga o hm ao =AΠi=1 N−1 Ai −2 i and likewise B0=gb 0 hm b0 =B Πi=1 N−1 Bi −2 i and C0=gc o hm c0 =C Πi=1 N−1 Ci −2 i .
(4) For each i ∈{0,1, . . . , N−1}, the prover does the following:
(4.1) Randomly sample rai, d′ai and z′ai.
(4.2) Compute Rai,a i =hr ai and Rai,(1−a i )=hz′ ai (Aig−a i )−d′ ai.
(4.3) Compute dai=H(Ai, Rai,0, Rai,1).
(4.4) Compute zai=(dai−d′ai)mai+rai.
(4.5) Assign zai,a i =zai, zai(1−a i )=z′ai, d″ai,a i =dai−d′ai and d″ai,(1−a i )=d′ai.
(4.6) Repeat steps 4.1 through 4.5 for B and C.
(5) Prover sends all Ai, Rai,0, Rai,1, d″ai,0, Zai,0, Zai,1, Bi, Rbi,0, Rbi,1, d″bi,0, zbi,0, zbi,1, Ci, Rci,0, Rci,1, d″ci,0, Zci,0, Zci,1.
(6) Verifier checks that A=Πi=0 N−1 Ai 2 i , B=Πi=0 N−1 Bi 2 i , BA−1i=0 N−1 Ci 2 i .
(7) For each i Å{0,1,, . . . , N−1} the verifier checks that:
A d ai , 0 R ai , 0 = h z ai , 0 ( 7.1 ) ( Ag - 1 ) H ( A i , R ai , 0 , R ai , 1 ) - d ai , 0 R ai , 1 = h z ai , 1 ( 7.2 )
(7.3) Check the same conditions for B and C
Note: It may be that either a or b are known to the verifier. In such a case there is no need to decompose the known number and commitment C will have the same mask exponent as that of the unknown parameter.
In some embodiments, that the client computing device (e.g., the prover) does not send A0, B0 and C0 to reduce the size of its messages. In that case, in step 6, instead of verifying a relation between the bit commitments the verifier derives A0, B0 and C0 independently. This aspect may be particularly useful in low data throughput situations or where storage space is very limited.
The comparison method of some embodiments reduces the problem of comparison to three bit decompositions. As such, the computational burden on the prover consists of about 12N-3 group exponentiations.
In contrast, the method of Belenkiy involves two bit decompositions and N-1 equality maps each consisting of four 2-variable equations and a total of six distinct variables.
As such, it is estimated that each equality map requires at least 8 group exponentiations.
Using the efficient Bit Decomposition implementations of some proposed embodiments, the two decompositions will require a total of 8N-2 group exponentiations. Accordingly, it is estimated that Belenkiy's method requires 16N-10 group exponentiations. This demonstrates that for N≥2, the proposed method for the comparison protocol is more efficient, and this superiority becomes increasing important as the numbers to be compared scale up.
In particular, the scale up may occur if the credential verification system is utilized across a large number of users.
FIG. 3 is an example system for conducting credential verification, according to some embodiments. The components are shown as an example of one embodiment, and alternatives are also contemplated. The components of the system do not necessarily reside on the same computing device and may be distributed across one or more computing devices.
A computer implemented system 300 for electronic verification of credentials is illustrated. The system includes at least one processor and data storage, and includes a proof request parsing engine 302 configured to receive one or more proof request data structures 304, which in combination represent one or more logical conditions.
A credential parsing engine 306 is provided to receive one or more credentials 308 which in combination, validate one or more characteristics of an identity profile 310 of a prover entity.
A proof generation engine 312 is provided that receives, from a verifier computing system 314, the one or more proof request data structures 304 and the one or more credentials 308; and for each logical condition provided in the one or more proof request data structures, parse the one or more characteristics of the identity profile 310 to determine whether the logical condition has been satisfied.
One or more proof output data structures 316 storing signatures or zero knowledge proofs of satisfaction of a subset or all of the one or more logical conditions is returned by the system (e.g., in the form of data fields). A secure encryption engine 318 and a secure processing enclave 320 may be included, in accordance with various embodiments.
A proof generation engine 312, in some embodiments, resides at or is coupled to a data center of a financial institution, and wherein parsing the one or more characteristics of the identity profile includes invoking an electronic comparison against a stored user profile of the financial institution corresponding to the prover entity. The example implementations are not restricted to such a topology, and other topologies are contemplated, including a cloud/distributed resources based proof generation engine 312.
In other embodiments, the proof generation engine 312 is coupled to the secure processing enclave 320, which may also be coupled to a verifier computing device 314.
In another embodiment, the proof generation engine 312 lies within the prover's user device, thus user data will never be provided to the verifier and the issuer will not be informed of the transaction taking place.
In another aspect, the electronic comparison against the stored user profile of the financial institution corresponding to the prover entity includes querying one or more attributes of the stored user profile and comparing the queried one or more attributes against the one or more logical conditions to determine whether individual logical conditions of the one or more logical conditions have been satisfied. The characteristics and attributes of the user profile can be used established and stored thereon the portable client computing device as one or more token data objects that can be received from or computed jointly in a multiparty protocol with an issuer computing device.
The one or more token data objects are generated (e.g., as signed objects or encrypted objects) using at least an issuer computing device private issuance key. The one or more token data objects each including one or more signed data elements representing at least one of the one or more characteristics of the client associated with the portable client computing device.
In another aspect, the verifier computing system is configured to encapsulate the one or more credentials along with the one or more proof request data structures in a single data container transmitted to the proof generation engine.
O-Auth Based Design
FIG. 4 is an example O-Auth token based method, according to some embodiments. The O-Auth based method portrayed does not address the issue of unlinkability, and in this example, the prover computing device electronically communicates to the verifier O-Auth tokens containing the verifier's proof request, which the verifier computing system can use to formulate a query message to be transmitted to the issuer computing system, and receive a yes/no answer in response. A benefit to this approach is that there is relatively light infrastructure required, it is very efficient, and the cryptography is simple and flexible.
However, the issuer computing system needs to be available (e.g., online) to be able to process the request. In response to a proof request, the prover confers an OAuth token (not to be confused with credentials) that the verifier can use to query the issuer and be assured that the prover does indeed satisfy their policy.
The verifier is provided tokens containing the verifier's proof request which can be used to query a computing system associated with an issuer, receiving an answer, such as a yes or no response (e.g., or a Boolean variable, such as TRUE/FALSE, 0, 1).
Secure Enclave
A challenging technical problem occurs in implementing a system where the verifier is able to ensure the prover has the correct credentials, while preserving their privacy. In some embodiments, a secure enclave based approach is described. In order to implement a secure enclave, Intel Software Guard Extensions™ (SGX) can be utilized, among others.
There are different mechanisms for public key cryptography. An approach, for example, supported by the Intel SGX SDK natively supports ECDH for key encapsulation and ECDSA for digital signatures over the PRIME256V1 (also known as SECP256R1) curve. Other approaches are possible, such as Schnorr's, which would serve just as well for a digital signature scheme. 256-bit base fields may potentially provide sufficient security.
For symmetric cryptography, Intel SGX SDK™ natively supports 128-bit AESGCM. This primitive can be used for authenticated encryption. It remains to be seen if larger AES key sizes are necessary. In that case, Galois-Counter Mode cannot be used.
Hashing can be performed using SHA-2, as this is natively supported by the Intel SGX™ SDK. As it supports 256-bit blocks, it would also be useful in case of a migration to larger AES blocks; both as a means of key derivation as well of a MAC building block.
The secure enclave approach improves computational efficiency and minimizes a trusted computing base, rendering it more amenable to formal analysis. The verifier may include a verify oracle, which is a trusted software/hardware component hosted by an untrusted third party. It is allowed to view a prover's attributes in the clear and attest that they satisfy a certain predicate queried by the verifier.
An example registration protocol is provided as follows. First, a prover generates their public key. The issuer hands the prover a random string r, the prover generates sk′p and generates pkp=f(skp) for skp=(sk′p, r) and common knowledge collision resistant function f. In order for the registration to be accepted, the prover should prove to the issuer in zero knowledge that it knows a corresponding sk′p. The (semi-honest) issuer's contribution to key generation is to keep a malicious prover from stealing credentials belonging to a previously revealed private key.
In regard to credential subletting, it may be beneficial that the issuer should demand the prover to incorporate some important secret about their account (not even known by the issuer) into the private key, such that the secret can be inferred from the private key. This will discourage provers from sharing credentials with one another. Alice may be willing to let Bob use some credential issued to her by her bank, but not be comfortable giving him complete control over her bank account.
Another possible technique to approach this is to issue credentials to specific devices, using private keys that the device can create for an application and sign using them on the application's behalf, without ever sharing the key with the application.
An example issuer protocol is described:
The issuer generates a signature on the prover's attributes using an arbitrary signature scheme that is secure against existential forgery. For the construction to be secure, the signature should also involve a description of the token's data structure.
More formally, the prover and the issuer agree on a string ap representing the prover's attributes. The issuer knows the prover as the owner of pkp, satisfying ap. The issuer sends the prover back a signature σi=sig(ski;pkp∥ap) to the prover.
It is not strictly speaking necessary for the prover to have a public key at all. However, if the issuer enforces limits on how often it would register a new public key for a client, provers will be discouraged from subletting their credentials to one another. This stands in opposition to keyless credentials, where disclosing the secrets to a credential doesn't cost the original owner anything.
An example protocol for showing verification by the oracle is provided.
Let the prover and the verifier both trust a verification oracle known by the key pair (sko,pko).
The verifier chooses a random challenge c and sends it to the prover. A proof request predicate P is agreed upon. The prover composes the string d=(pki∥skp∥ap∥σp∥c∥P) and sends enc(pko;d) to the oracle.
The oracle decrypts d and checks that the following propositions are satisfied:
sigver(pkii;f skp)∥ap)
P(pki,ap)
In case of successful verification, the oracle outputs σo=sig(sko;c∥P) or it outputs ⊥ otherwise.
The verifier only needs to check that sigver(pkoo;c∥P) holds.
Note that as regards propositions P that do not depend on anything outside ap (e.g. time) there is no freshness requirement; therefore the challenge c can simply be regarded to be the empty string in such cases.
For examining the approach security, the following collusion scenarios are considered:
Malicious issuer and prover to break soundness: This attack can be trivially mounted and in some embodiments, there is not attempt to prevent it. The issuer can always issue bogus adaptively chosen untruthful credentials for an accomplice prover. In practice, such a problem is best thwarted by strong and transparent authentication and KYC practices by issuers, as well as careful choice of trusted issuers by verifier consortiums based on thorough vetting.
Malicious issuer and verifier to break zero-knowledge: Zero-knowledge in this context means that an adversary controlling all issuers and verifiers cannot pinpoint which of the trusted issuers implied by the query and which of the credentials obtained from the issuer the credential in use is. For this, the analysis makes use of the CCA2 property of the encryption scheme used in Acquire Proof queries.
More formally, consider the following game, where the adversary is allowed to make polynomially many of the following queries, interleaved with polynomial computations:
    • Create Honest Oracle: Generate (sko,pko) and add pko to the set Ohonest known to the adversary.
    • Confer Credential: Send (σi=sig(ski,pkp∥ap),pki) for arbitrary ap and arbitrary key pairs (ski,pki) and (skp,pkp).
    • Request Challenge: Send arbitrary pko ∈ Ohonest, P and c to the challenger. The challenger picks a random element d from the set D={(pki∥skp∥ap∥σi∥c∥P)|P(pki, σi)} and sends enc(pko;d) back to the adversary.
The adversary wins if D is non-empty and he can guess the value of d with non-negligible advantage over a random choice.
A simulation argument naturally follows from this intuition and is therefore avoided.
Malicious prover to break soundness: The adversary is allowed polynomially many queries from the following list; arbitrarily interleaved with one another and polynomial-time computations.
    • Create Honest Issuer: Create a new key pair (ski,pki) and add pki to the set Ihonest available to the adversary.
    • Create Honest Oracle: Create a new key pair (sko,pko) and add pko to the set Ohonest available to the adversary.
    • Initiate Registration: Receive a random string r from an honest issuer.
    • Finish Registration: Send (r,pkp,π) to an honest issuer that has sent r in a past Initiate Registration query. If π non-interactively proves knowledge of ski p such that pk p=f(sk′p, r), the issuer will later accept Acquire Credentials queries from the adversary.
    • Finish Honest Registration: Create an honest prover to respond to an already initiated registration process. sk′p will be hidden from the adversary, but pkp will be known and added to the set Phonest.
    • Acquire Credentials: Acquire σi=sig(ski;pkp,ap) for arbitrary ap and the additional requirement that pkp has been already registered with the owner of ski. Add (pki,ap) to the set A.
    • Acquire Proof: Submit enc(pko;d) an arbitrary but well-formed d=(pki∥skp∥ap∥σi∥c∥P) to an honest oracle with key pko and acquire the output σo.
    • Acquire Honest Proof Request: Send arbitrary (P,c,pko) to an honest prover and receive enc(pko;d) if the prover has a credential attesting to P and ⊥ otherwise. Add c to the set Coutsourced.
    • Forge: The adversary outputs some σ0, and the game ends. She wins if:
  • 1. sigver(pko0;c∥P) for some c and P.
  • 2. C ∈ Coutsourced
  • 3. pko ∈ Ohonest
  • 4.
    Figure US11212102-20211228-P00003
    (pki, ap) ∈ A: pki ∈Ihonest,P(pki,ap)
  • 5. ∀pki ∈ Ihonest,ap: ¬P(pki, ap)
There are no queries regarding corrupted or corruptible Issuers and Oracles since such parties can be simulated by the adversary herself.
FIG. 5A is an example method diagram where a secure enclave master verifier is utilized, according to some embodiments.
In FIG. 5A, the issuer computing system signs attributes with a cryptographic technique, the verifier computing system sends issuer computing system a challenge and proof request.
In response, the prover computing device sends encrypted credential, challenge and proof request to a master verifier computing device. The master verifier signs challenge and proof request computing device.
This approach, while requiring additional infrastructure relative to the approach of FIG. 4, satisfies many of the conditions for an ideal verification. The issuer computing system does not obtain further information (e.g., the identity of the verifier) from the verification event.
FIG. 5B is a state diagram of a verify oracle, according to some embodiments. The verify oracle can be implemented using software, hardware, or a combination thereof. For example, the states may be transitioned through the use of a processor configured to transition between one or more states, and to perform steps described below in conjunction with machine-interpretable instruction sets.
A Verify Oracle supports three states:
    • 1. Blank: At this state, only the initRemoteAttestation call would be accepted. Then, the first remote attestation message will be generated the enclave goes to the Remote Attestation state.
    • 2. Remote Attestation: At this state, the enclave accepts either a reset call or a finishRemoteAttestation call. Upon a reset call, the enclave clears all of its state data, as if it were killed and reloaded. Upon a finishRemoteAttestation call, the enclave consumes a Remote Attestation challenge message. The enclave produces a Remote Attestation message 3, generates the necessary key pairs and outputs the Remote Attestation message and the public keys. If any of this fails, it performs a reset operation.
    • 3. Ready: This is the state wherein the enclave can actually evaluate policies over attributes. It can receive a checkProofRequest call, or a reset call.
Trust by Provers and Verifiers is assumed in all the previously described models as a common reference. Also, for obvious performance concerns, it is vital to be able to perform Remote Attestation on an enclave non-interactively. As such, the enclave's host can perform a publicly verifiable remote attestation with its enclave and publish the transcript to it. In order to do so, she may employ the Fiat-Shamir heuristic using the collision-resistant function H(.) modeled as a Random Oracle. If the Remote Attestation Verifier would normally use a probabilistic polynomial-time algorithm m2←A(m1;r) to generate the second message, in this scenario the second message would be derived through m2←A(m1; H(m1)).
A proof request can be defined in accordance with variations of the following examples.
The language describing policies should be simple to interpret so as not to expose the system to security risks.
In order to prevent the execution from leaking information about the attributes, the language should preclude programs with data-dependent access patterns, runtime and execution paths. Here, a C-like language called StraightTalk is described as an example, and it is only capable of describing straight-line programs:
Figure US11212102-20211228-P00004
 policy
Figure US11212102-20211228-P00005
::= 
Figure US11212102-20211228-P00004
 token-definition 
Figure US11212102-20211228-P00005
Figure US11212102-20211228-P00004
 statement 
Figure US11212102-20211228-P00005
 *
Figure US11212102-20211228-P00004
 expression 
Figure US11212102-20211228-P00005
Figure US11212102-20211228-P00004
 token-definition 
Figure US11212102-20211228-P00005
::= ϵ
 |  
Figure US11212102-20211228-P00004
 token 
Figure US11212102-20211228-P00005
 ‘{’ 
Figure US11212102-20211228-P00004
 variable-definition 
Figure US11212102-20211228-P00005
 * ‘}’
Figure US11212102-20211228-P00004
 variable-definition 
Figure US11212102-20211228-P00005
::= 
Figure US11212102-20211228-P00004
 type 
Figure US11212102-20211228-P00005
Figure US11212102-20211228-P00004
 identifier-list 
Figure US11212102-20211228-P00005
 ‘;’
Figure US11212102-20211228-P00004
 identifier-list 
Figure US11212102-20211228-P00005
::= 
Figure US11212102-20211228-P00004
 identifier 
Figure US11212102-20211228-P00005
 |  
Figure US11212102-20211228-P00004
 identifier-list 
Figure US11212102-20211228-P00005
 ‘,’ 
Figure US11212102-20211228-P00004
 identifier 
Figure US11212102-20211228-P00005
Figure US11212102-20211228-P00004
 type
Figure US11212102-20211228-P00005
::= 
Figure US11212102-20211228-P00004
 basic-type
Figure US11212102-20211228-P00005
 |  
Figure US11212102-20211228-P00004
 basic-type 
Figure US11212102-20211228-P00005
 ‘[’ 
Figure US11212102-20211228-P00004
 integer 
Figure US11212102-20211228-P00005
 ‘]’
Figure US11212102-20211228-P00004
 basic-type
Figure US11212102-20211228-P00005
::= ‘unsigned’ ‘int’ ‘[’ 
Figure US11212102-20211228-P00004
 integer 
Figure US11212102-20211228-P00005
 ‘]’
 | ‘int’ ‘[’ 
Figure US11212102-20211228-P00004
 integer 
Figure US11212102-20211228-P00005
 ‘]’
 | ‘float’
Figure US11212102-20211228-P00004
 statement 
Figure US11212102-20211228-P00005
::= 
Figure US11212102-20211228-P00004
 variable-definition 
Figure US11212102-20211228-P00005
 |  
Figure US11212102-20211228-P00004
 expression 
Figure US11212102-20211228-P00005
 ‘;’
Figure US11212102-20211228-P00004
 argument-list 
Figure US11212102-20211228-P00005
::= ϵ
 |  
Figure US11212102-20211228-P00004
 nonempty-argument-list 
Figure US11212102-20211228-P00005
Figure US11212102-20211228-P00004
 nonempty-argument-list
Figure US11212102-20211228-P00005
::= 
Figure US11212102-20211228-P00004
Figure US11212102-20211228-P00004
expression 
Figure US11212102-20211228-P00005
 ‘,’ 
Figure US11212102-20211228-P00005
 * 
Figure US11212102-20211228-P00004
 expression 
Figure US11212102-20211228-P00005
Figure US11212102-20211228-P00004
 expression 
Figure US11212102-20211228-P00005
::= 
Figure US11212102-20211228-P00004
 expression 
Figure US11212102-20211228-P00005
 ‘?’ 
Figure US11212102-20211228-P00004
 expression 
Figure US11212102-20211228-P00005
 ‘:’
Figure US11212102-20211228-P00004
 expression 
Figure US11212102-20211228-P00005
 |  
Figure US11212102-20211228-P00004
 expression 
Figure US11212102-20211228-P00005
Figure US11212102-20211228-P00004
 binary-operator 
Figure US11212102-20211228-P00005
   
Figure US11212102-20211228-P00004
expression 
Figure US11212102-20211228-P00005
 |  
Figure US11212102-20211228-P00004
 unary-operator 
Figure US11212102-20211228-P00005
Figure US11212102-20211228-P00004
 expression 
Figure US11212102-20211228-P00005
 |  
Figure US11212102-20211228-P00004
 function-like-operator 
Figure US11212102-20211228-P00005
 ‘ 
Figure US11212102-20211228-P00004
 ’ 
Figure US11212102-20211228-P00004
 argument-
 list 
Figure US11212102-20211228-P00005
 ‘ 
Figure US11212102-20211228-P00005
 ’
 |  ‘
Figure US11212102-20211228-P00004
’ 
Figure US11212102-20211228-P00004
 expression 
Figure US11212102-20211228-P00005
 ‘ 
Figure US11212102-20211228-P00005
 ’
 |  
Figure US11212102-20211228-P00004
 string 
Figure US11212102-20211228-P00005
 |  
Figure US11212102-20211228-P00004
 base64 
Figure US11212102-20211228-P00005
 |  
Figure US11212102-20211228-P00004
 identifier 
Figure US11212102-20211228-P00005
 ‘[’ 
Figure US11212102-20211228-P00004
 integer 
Figure US11212102-20211228-P00005
 ‘]’
 |  
Figure US11212102-20211228-P00004
 identifier 
Figure US11212102-20211228-P00005
 ‘[’ 
Figure US11212102-20211228-P00004
 integer 
Figure US11212102-20211228-P00005
 ‘]’
   ‘[’ 
Figure US11212102-20211228-P00004
 integer 
Figure US11212102-20211228-P00005
 ‘]’
 |  
Figure US11212102-20211228-P00004
 identifier 
Figure US11212102-20211228-P00005
 |  
Figure US11212102-20211228-P00004
 number 
Figure US11212102-20211228-P00005
Figure US11212102-20211228-P00004
 unary-operator 
Figure US11212102-20211228-P00005
::= ‘~’
 | ‘!’
Figure US11212102-20211228-P00004
 binary-operator 
Figure US11212102-20211228-P00005
::= ‘=’
 | ‘.=’
 | ‘+’
 | ...
FIG. 6A is a system diagram providing additional detail in the context of a verifier hosted enclave, according to some embodiments. As shown in FIG. 6A, the verifier enclave stores a secret key which is utilized in a flow of signed messages. The key encapsulation process, in various embodiments, includes 2-way or 1-way authenticated public key encryption.
FIG. 6B is a simplified diagram providing additional detail in the context of a verifier hosted enclave, according to some embodiments. In FIG. 6B, the verifier receives the proof request, the proof request, and the proofs directly from the prover or prover device, and transmits a proof verification message to the verifier.
In this example, the secure enclave is adapted for processing encrypted credentials, challenges, and proof requests. The secure enclave can be a processor or a secured memory location that is configured for maintaining a verifier secret key utilized to generate a first signed message.
The verifier computing device receives, from a prover computing device, a second signed message including at least an enclosed issuer signed message representing one or more encrypted containers storing at least one or more characteristics of an identity profile of a prover entity along with a message authentication code based at least on the proof request data structure.
The verifier computing device then transmits the second signed message, the proof request data structure, and the one or more encrypted containers to the secure enclave.
The verifier computing device then receives a response data message from the secure enclave indicative of whether all of the one or more logical conditions were satisfied by the at least one or more characteristics of the identity profile of the prover entity. In some embodiments, the secure enclave is configured to provide publicly verifiable remote attestation with a verifiable threat model and a verifiable proof of security.
A remote attestation protocol involves a zero knowledge proof with a prover and a verifier, the enclave being the prover. A direct run of this protocol by both Identity Brokerage parties (prover and verifier) may compromise efficiency. Therefore, a mechanism is implemented using the Fiat-Shamir heuristic, and the enclave's maintainer is configured to run an instance of remote attestation in a publicly verifiable manner.
Instead of using actual random inputs, the remote attestation verifier (the enclave's maintainer) replaces every randomness with the output of a pseudorandom function applied to the entire protocol transcript up until that moment, and an arbitrary initial nonce. Thus, by presenting the transcript of this protocol instance, the enclave's maintainer can efficiently convince the identity brokerage parties that the enclave is a trustworthy one.
In some embodiments, the verifier enclave or a third party hosted system tracks records transcripts of an exchange, which are exposed to the public. For example, it may be the responsibility of a verifier computing system to run a remote attestation protocol with its enclave once whereby the enclave communicates its public key, which is then stored in on a transcript exposure module, which may be hosted by any one of the computing systems associated with any one of the parties or by a third party hosted system. In order to establish the honesty of the transcript, all the randomness used on the verifier's cryptography are to be created using a pseudorandom function (hash, block cipher, etc.) involving all or some of the information available to the verifier's computing device at a time of a credential validation transaction.
The secure enclave processor maintains a verification transcript in relation to its own credentials, as the enclave is wholly trusted by both the prover and the verifier, it should be strongly vetted itself.
Chip manufacturers provide mechanisms to verify an enclave involving multi-round interactive protocols. Remote attestation is a protocol based on bilinear group signatures, whereby an enclave proves to a third party that it is running on a legitimate Intel SGX platform, and that is running a particular program.
FIG. 7 is a method diagram providing an example issuer sequence where the prover computing system has a corresponding key pair, according to some embodiments.
FIG. 8 is a method diagram providing an example verification sequence, where the prover computing system has a corresponding key pair, according to some embodiments.
FIG. 9 is a method diagram providing an example issuer sequence where the prover computing system does not have a corresponding key pair, according to some embodiments.
FIG. 10 is a method diagram providing an example verification sequence, where the prover computing system does not have a corresponding key pair, according to some embodiments.
FIG. 11 is a system diagram providing an example verification system having a third party hosted enclave, according to some embodiments.
FIG. 12 is an example C-based proof request description language, according to some embodiments. An example proof request is shown in FIG. 12, and other policies are possible. In some embodiments, the policies can be compiled from a simple C-like language only capable of writing straight-line non-branching programs.
Anonymous Credentials
FIG. 13 is an example method diagram for an anonymous credentials approach, according to some embodiments. The approach utilizes advanced cryptography for issuance and presentation protocols, and has relatively fewer infrastructure requirements and is unlinkable and flexible. Anonymous Credentials is aimed at solving the problem of identity brokerage through designs depending on cryptographic hardness assumptions.
In such an approach, a custom-built signature mechanism is used for the issuance protocol that is amenable with the type of zero-knowledge proofs of knowledge approaches used in the proof protocol. Notable examples are U-Prove (relying on Diffie-Hellman type hardness assumptions), Idemix (relying on RSA-type hardness assumptions) and later approaches based on bilinear maps.
SafeShare Application
FIGS. 14-19 are screenshots of an example web application illustrating a sample prover computing device user experience, according to some embodiments. In this example, a token is a signed token from a semi-honest issuer attesting to its carrier's having a certain attribute, and an attribute is any logically simple claim one can make about oneself.
FIG. 14 is a screenshot of an example credential manager, according to some embodiments. FIG. 15 is a screenshot of an example credential manager having an expanded portion to view additional details of the credential, according to some embodiments.
FIG. 16 is a screenshot of an example credential manager showing an expanded credential view of a single credential, according to some embodiments.
FIG. 17 is a screenshot of an example page requiring verification, according to some embodiments.
In this example, the prover has navigated to a page for a skydiving program whereby the user must prove that they are at least 18 years of age, and that they have been recently declared healthy. There is also a student deal, where if the prover wishes to access the student deal, they must also prove that they are currently enrolled at a university.
FIG. 18 is a screenshot of an example proof request interface page, according to some embodiments. The verifier (e.g., a vendor) sends a proof request, and the user is redirected to the user interface. The proof request is written in a formal language; therefore, the natural language description also comes from the vendor. The user has the option to view the proof request code and vote on whether it matched the natural language description.
FIG. 19 is a screenshot of an example proof input interface page, according to some embodiments. After agreeing to the policy, the interface includes visual elements that the prover may select to choose which of their credentials to use as input to the proof generation algorithm. These credentials will not be shared with the verifier, but it will be proven in zero knowledge that they satisfy the policy.
The term “connected” or “coupled to” may include both direct coupling (in which two elements that are coupled to each other contact each other) and indirect coupling (in which at least one additional element is located between the two elements).
Although the embodiments have been described in detail, it should be understood that various changes, substitutions and alterations can be made herein without departing from the scope. Moreover, the scope of the present application is not intended to be limited to the particular embodiments of the process, machine, manufacture, composition of matter, means, methods and steps described in the specification.
As one of ordinary skill in the art will readily appreciate from the disclosure, processes, machines, manufacture, compositions of matter, means, methods, or steps, presently existing or later to be developed, that perform substantially the same function or achieve substantially the same result as the corresponding embodiments described herein may be utilized. Accordingly, the appended claims are intended to include within their scope such processes, machines, manufacture, compositions of matter, means, methods, or steps.
As can be understood, the examples described above and illustrated are intended to be exemplary only.
Glossary
Issuer/Identity Provider is a party trusted by the prover and the verifier, that attests to the prover's attributes.
Prover/Client the party in contact with the issuer as well as the verifier, attempting to prove properties in zero knowledge.
Verifier the party demanding knowledge of certain properties about the prover.
Attribute a proposition about the prover to which the issuer attests.
Property a proposition about the prover whose truth the verifier wants to ascertain. It may be identical to one of the prover's attributes or logically implied by one or many of them.
Proof Request a formalized message from the verifier specifying the property of which it demands knowledge, containing additional information about the protocols supported, etc.
Proof a message from the client to the verifier, providing cryptographic assurance as to the issuer's attestation to the client's satisfaction of the property specified in the proof request.
Templates for Messages
The protocols message can be communicated as JSON-encoded.
Proof Request
What follows is a sample proof request.
{
 “proof_request”:{
 “lang”:“straight-talk-1.0”,
 “url”:“https://bank.com/straight-talk/sample-scripts/alcohol-
 consumption.stk”,“verifier_args”:{
  “expiration_threshold”:{
   “genesis”:“01/01/2018”,
   “apocalypse”:“01/01/2100”,
   “granularity”:“day”,
   “since_genesis”:1000,
  },
  “birth_threshold”:{
   “genesis”:“01/1900”,
   “apocalypse”:“01/1998”,
   “granularity”:“day”,
   “till_apocalypse”:195
  }
 },
 “permitted_issuers”:[“Bank”,“Florida DMV”],
 “supported_schemes”:[
   {“scheme”:“u-prove”,“dlog_params”:{“group”:“prime256v1”,
“generators”:“base64 hash of generators, or list of generators”}},
   {
    “scheme”:“delegated-verification”,
    “remote_attestation”:{“offline_accepted”:true,
    “later_than”:“01/01/2017”}
   }
  ],
  “ca_certs”:[{“name”:“bank-identity-brokerage-ca”,
  “digest”:“base64 sha2”}],“challenge_string”:“base64 byte string”
 }
}

The script “alcohol-consumption.stk” can contain the following:
verifier_params
{
 date_t expiration_threshold;
 date_t birth_threshold;
};
credential{
 date_t expiration_date;
 date_t birth_date;
};
return expiration_date > expiration_threshold &&
birth_date < birth_threshold;
Instead of providing a URL, the verifier can provide the source code or bytecode to a straight talk script.
A standard bytecode language for straight talk shall also be provided.
Proof
The following can be a response to the request above:
{
  “proof”:{
    “scheme”:“u-prove-1.0”,
    “dlog_params”:{“group”:“prime256v1”,“generators”:“base64 hash”},
    “credential_metadata”:{
      “issuer”:{“name”:“BANK”,“cert”:“bash64 cert”},
      “attribute_indexes”:{
        “expiration_date”:0,
        “birth_date”:1
      },
      “attribute_count”:5
    },
    “presentation_proof”:{
      “configuration”:“cchhh”,
      “uprove stuff”:“things”
    },
    “standalone_comparison_proof”:{
      “lhs”:“expiration_date”,
      “relation”:“greater”,
      “rhs”:“06/20/1997”,
      “relation_commitment_mask”:“base64 bignum”,
      “decomposition”:
      {
        “commitment_in”:“lhs”,
        “bits_little_endian”:[
          {“commitment”:“base64     group      element”,
“well_formedness”:“...”},
          {“commitment”:“base64     group      element”,
“well_formedness”:“...”}
        ]
      },
      “comparison”:
      {
        “in”:“lhs”,
        “bit_comparisons”:[
          { }
        ]
      }
    },
    “request_digest”:“base64 hash”
  }
}
Another example proof, based on secure enclaves, is provided below:
{
  “proof”:{
    “scheme”:“delegated-verification”,
    “remote_attestation_transcript”:{
      “base_randomness”:“base64 byte array”,
      “msg1”:{ },
      “msg2”:{ },
      “msg3”:“”,
      “ias_signature”:“”
    },
    “request_digest”:“base64 hash”,
    “verifier_public_key”:“pem encoding”,
    “validation_signature”:“base64 signature”
  }
}
FIG. 20 is a schematic diagram of a computing device 2000 such as a server. As depicted, the computing device includes at least one processor 2002, memory 20020, at least one I/O interface 2006, and at least one network interface 2008.
Processor 2002 may be an Intel or AMD x86 or x64, PowerPC, ARM processor, or the like. Memory 2004 may include a combination of computer memory that is located either internally or externally such as, for example, random-access memory (RAM), read-only memory (ROM), compact disc read-only memory (CDROM).
Each I/O interface 2006 enables computing device 2000 to interconnect with one or more input devices, such as a keyboard, mouse, camera, touch screen and a microphone, or with one or more output devices such as a display screen and a speaker.
Each network interface 2008 enables computing device 2000 to communicate with other components, to exchange data with other components, to access and connect to network resources, to serve applications, and perform other computing applications by connecting to a network (or multiple networks) capable of carrying data including the Internet, Ethernet, plain old telephone service (POTS) line, public switch telephone network (PSTN), integrated services digital network (ISDN), digital subscriber line (DSL), coaxial cable, fiber optics, satellite, mobile, wireless (e.g. W-Fi, WiMAX), SS7 signaling network, fixed line, local area network, wide area network, and others.
Computing device 2000 is operable to register and authenticate users (using a login, unique identifier, and password for example) prior to providing access to applications, a local network, network resources, other networks and network security devices. Computing devices 2000 may serve one user or multiple users.
FIG. 21 is a server for inclusion in a data center, according to some embodiments. The server is an illustration of a special purpose machine 2102, according to some embodiments that may reside at data center. The special purpose machine 2102, for example, incorporates the features of the verification system and is provided in a portable computing mechanism that, for example, may be placed into a data center as a rack server or rack server component that interoperates and interconnects with other devices, for example, across a network or a message bus. For example, the server may be configured to provide one or more secure data storage spaces, or may include one or more secure enclave processors, among others.
FIG. 22 is a system diagram for an example verification system, according to some embodiments.
There may be multiple issuer entities, each having their own set of associated computing devices (e.g., computers in data centers). The issuer entities and their computing devices may have heterogeneous data storage mechanisms, which can include local storage and/or specially allocated memory storages, including secured enclave memory and/or processors.
As illustrated in the example of FIG. 22, issuer devices 2202 are coupled to a client secured data storage. The issuer device 2204 may be coupled to a blockchain data structure backend or a distributed ledger mechanism that can be accessed and/or otherwise interacted with (e.g., pushing new information to be stored on the blockchain, querying the blockchain using a blockchain explorer), among others.
The blockchain data structure, in some embodiments, is a public blockchain (e.g., publicly accessible, such as an Ethereum blockchain), or a private, permissioned blockchain that operates through a propagated distributed ledger shared across a set of trusted nodes. The blockchain data structure may store immutable attributes (and/or encrypted or signed versions of the attributes).
Multiple authoritative issuer devices 2202, 2204 are configured to provide signed attributes which may either be delivered to the client special space 2206 (e.g., a secured enclave having secured memory and/or secured processors) or onto the blockchain data structure 2208. These attributes represent aspects of client personal information. The client special space 2206 can store some signed attributes and the proof response logic, and can be stored in a data storage remote from the on-board memory of devices associated with the client. A benefit of having a client special space 2206 is that, for example, multiple client devices 2210 are able to connect to the client special space 2206 (e.g., a tablet, a mobile device, a desktop computer), and if a client loses a device, the signed attributes remain accessible.
The blockchain data structure 2208 is adapted to store on one or more distributed ledgers, data blocks representing signed attributes and the proof response logic, according to some embodiments. Similarly, multiple client devices 2210 are able to connect to the blockchain data structure 2208 (e.g., a tablet, a mobile device, a desktop computer), and if a client loses a device 2210, the signed attributes remain accessible.
Proof requests and responses can be conducted using, for example, connected electronic client devices 2210 (e.g., a mobile device, such as a smartphone or a tablet) or other devices that are connected to the mobile device using Bluetooth low energy (e.g., a wearable device). The client devices 2210 may store locally a public key which can be utilized to encrypt data messages for decryption using the corresponding secret key or validate signed attributes that are signed based on the corresponding secret key.
FIG. 23 is a system diagram depicting a method for registration, according to some embodiments.
At step 1 (shown by the encircled numbers in FIG. 23), a data communication occurs between the client device to the client special space data storage, whereby the client device generates control messages that authenticates and establishes the special space data storage, which, in an example, is a SGX Secure Enclave or other hardware protected space.
A public/private key pair is generated, and the client device retains the public key (Pk) in data storage, while the private/secret key (Sk) is stored on the client special space data storage.
At step 2, a data communication occurs between the client device to the issuer device. The client authenticates (e.g., 2 way authentication) in relation to the issuer device, selecting which attributes he/she wants to provide (e.g., Age, zip, over 21, etc.) from a set of offered selections. In some embodiments, the issuer device may provide one or more interface options indicative of potential token destinations (e.g., storage destinations), including the client special space data storage or a blockchain-based data storage, such as a permissioned blockchain or a public blockchain.
The issuer is configured to then deliver attributes, for example, in a client secret space data structure, the client's device can provide a pointer (e.g., a uniform resource locator address (URL)) to a special space data structure, and can transmit the public key (Pk) to the issuer device. Attributes are then created by the issuer device using a combination of the client's public key and the issuer's secret key (Sk), which can be delivered for storage on the client secret space data structure (3A) or on a data block of a blockchain. Where the attribute is stored on the blockchain, the attribute may be made public (if the issuer is blockchain enabled), and thus publicly viewable. The public blockchain may be configured to store a pre-defined set of attribute types that are thus publically viewable (e.g., using a blockchain explorer).
In another embodiment, where the issuer device is capable of interacting with the blockchain and the attribute can be made public (e.g., over 21), the issuer device delivers attributes signed by the issuer using the client's public key (Pk) to the blockchain (3B).
In another embodiment, where the issuer device is capable of interacting with the blockchain and the attribute requires the client's permission (e.g., date of birth), the issuer can store on the blockchain signed attributes that are encrypted with the client's public key (3C).
In an alternate embodiment, a sidechain is utilized to keep attestation private between the involved parties.
FIG. 24 is a system diagram depicting a method for verification, according to some embodiments.
Sample steps for verification are described herein, whereby the client device forms a communication channel with the authenticated verifier, and the verifier makes a “Proof Request”.
The proof request can be provided, for example, to the client secret space data storage. At step 3A, a “Proof Request” is sent to the Client's special space data storage, where a bounded device has both the URL and public key to access the special space. At step 4A, a “Proof Response” is sent back to the client device.
In an alternate embodiment where the issuer device is blockchain-enabled and the attribute can be made public (e.g., that the user is over 21), at step 3B, data messages representing the “Proof Request” are transmitted to the blockchain (or a blockchain explorer tool configured to interact with the blockchain), and at step 4B, a data message representing the “Proof Response” is sent back to the device as the attribute is public. In an alternate embodiment, the client device can direct the verifier to the blockchain, for example by providing a link or a block number indicative of where the attribute is stored.
In another embodiment, the issuer is blockchain-enabled and but the attribute needs client's permission (e.g., date of birth). In this example, at step 3C, a “Proof Request” is sent to the blockchain (e.g., or to a blockchain explorer tool configured to interact with the blockchain), and at step 4C, an “Encrypted Proof Response” is sent back to the device.
The client device may then be required to grant permission to share the attribute at step 5C, and responsive to permission being granted, at step 6C, the “Encrypted Proof Request” is then transmitted to the client special space data storage for decryption. At step 7C, a Decrypted Proof Response is sent back to the client device that could then be provided to the verifier device.
FIG. 25 is a system diagram depicting an example age verifier device 2502, according to some embodiments.
A device is positioned at a point of sale or other location where verification is required, such as in front of a bar serving alcohol. The verification can be used as a gatekeeper mechanism in some cases, or in other cases, as a tool to determine whether a particular individual is entitled to various statuses or discounts (e.g., student discount). The device 2502 is adapted, in a specific, illustrative example, in relation to a requirement to check the age of all customers.
Without such a system, a cashier would have to request an identification card (which could be falsified), and perform mental math to determine if the individual is over 19 years old. This is time consuming; and requires mental work effort. Furthermore, the customer may find the check to be invasive, as the relationship between cashier and customer is unknown.
The device 2502 can be a terminal set up at the point of sale, for example, which could be designated a verifier computing device. The device 2502, in an example embodiment, may be configured to render a visual representation 2504 of a resource locator, such as a quick response code. The quick response code can be related to an underlying data element, such as a URL, which the client device can interact with, for example, by scanning the code to access the URL. On the backend, verification processes as described in various embodiments herein are utilized to transmit or otherwise make available signed attribute information of the client device, which are then provided to the verification device 2502 such that verification device 2502 is able to verify specific attributes of the client (e.g., age>25). The verification device 2502 can be configured to modify a rendering 2506 to visually or audibly indicate that the client has successfully passed or failed the attribute test.
In some embodiments, one or more aspects of the blockchain, tokenization and/or verification/validation/proof processes described herein can involve one or more secure execution environments and/or secure storage elements. For example, in some embodiments, the storage of private keys and tokens, in addition to computations required for issuance and proofs, could be performed on Trusted Execution Environments, Smart Cards, Secure Elements or Trusted Platform Modules on devices such as mobile and personal computers using corresponding APIs.
In some embodiments, a computing system includes or is configured to provide a plurality of distinct execution environments. The isolation of these environments can be enforced using software or hardware. In some embodiments, a distinct execution environment can include one or more secure storage elements (for example, a Secure Element or one or more aspects of a Smart Card).
The distinct execution environments are, in some embodiments, configured to provide access to different storage and processing resources.
In some embodiments, one of the environments may be referred to as a trusted execution environment (TEE) and may have access to isolated and secure storage and processing resources.
In some embodiments, a secure environment may support a distinct operating system, or it may be a set of secure resources accessible to applications that are assigned to use it by the underlying operating system of the overall system. In some embodiments, a computing system includes a dedicated secure storage resource, such as a separate secure storage or a secure storage area within a general storage resource. In some embodiments, the computing system includes a dedicated secure memory device such as a separate secure memory, or a secure area within a general memory resource (e.g. secure memory may be accessible in a different address space or in a different address range).
These resources may be physically and/or logically distinct from the general resources of the same type. In a computing system that includes or is configured to provide two distinct execution environments, the first execution environment is a secure execution environment and the second execution environment is a potentially unsecure environment.
The secure execution environment is sometimes referred to as a trusted execution environment (TEE) and the potentially unsecure environment is sometimes referred to as a rich execution environment (REE).
The second execution environment (e.g. the potentially unsecure execution environment) is configured to communicate with the secure execution environment (e.g. the first execution environment) to request one or more aspects of the tokenization and/or verification/validation process to be performed.
The second execution environment includes an unsecure portion of a processor, memory, and storage. Software code of the second execution environment can include an unsecure OS which is stored in storage, loaded into memory at run time, and executed by processor to perform OS operations. In some embodiments, software executable by the second execution environment can include one or more APIs or other software components for providing function calls or otherwise interfacing with one or more components of the first execution environment.
For example, in some embodiments, the first (e.g. secure) execution environment can include (e.g. store) one or more keys such as root keys, private keys, and the like for generating signs tokens, validating one or more signed data elements, and/or the like. Some environment, first execution environment can include (e.g. store) one or more tokens against which one or more credentials or other data elements can be validated.
In some embodiments, first execution environment can include one or more software components including computer executable code for generating/issuing and/or validating one or more tokens, credentials and/or other data elements.
For example, in one example embodiment, a digitally signed token representing a verified identity or account can be stored in a secure storage element in a secure execution environment. A secure execution environment can include computer executable instructions which receive from an unsecure execution environment one or more data sets representing one or more biometric verification credentials.
The computer executable instructions and the secure execution environment can be configured to perform one or more calculations or data transformations to validate that the data sets representing the biometric verification credentials match or otherwise correspond to the digitally signed token as described herein or otherwise. In some embodiments, the data sets representing the one or more biometric verification credentials can be received at the device on which the secure execution environment resides and/or an external device in communication with the device in which the secure execution environment resides.
In some embodiments, secure execution environment can return one or more signals indicating whether the biometric verification credentials are valid or otherwise match the digitally signed token. Some environments, the signals can include one or more signed data elements to confirm the veracity of the signals.
In some embodiments, the secure execution environment can be configured to respond to proof requests from unsecure execution environment(s).
In some embodiments, a secure execution environment can be used to generate a signed token. In some embodiments, a secure execution environment can receive from an unsecure execution environment one or more tokens and/or credentials. One or more software elements within the secure execution environment can generate a signed token and/or credential using one or more private keys stored within the secure execution environment. The signed token and/or credential can then be returned to the unsecure execution environment.
In some embodiments, one or more aspects of the blockchain verification, transaction and/or other modification processes can be performed within a secure execution environment to ensure that private keys, addresses, credentials and/or the like are only accessible by authorized users and/or processes within the secured environment.
Any other aspect of the tokenization and/or her validation process can be similarly applied to using these secure an unsecure execution environment to ensure that sensitive information such as keys, credentials, tokens, tokenization algorithms, biometric data, biometric processing algorithms, blockchain transactions/activities, neural networks, and/or the like are only accessible by authorized users and/or processes.
In some embodiments, sensitive operations using a private key may be performed only in a secure area. In some embodiments, all or additional operations may be performed in a java card space of a smart card.
Applicant notes that the described embodiments and examples are illustrative and non-limiting. Practical implementation of the features may incorporate a combination of some or all of the aspects, and features described herein should not be taken as indications of future or existing product plans. Applicant partakes in both foundational and applied research, and in some cases, the features described are developed on an exploratory basis.
Example Commitment Non-Zeroness Protocol
Consider a dummy example where the group is of order 23. The prover has a commitment Cx 32 g13h12(x=13, y=12) and wants to prove that it is nonzero.
The prover first privately computes t1=x−1
Figure US11212102-20211228-P00006
16 and t2=−yx−1
Figure US11212102-20211228-P00007
15. Note that g=Cx t 1 ht 2 .
The prover first samples two random numbers, say r1=6 and r2=21. It computes R=Cx 6h21=g9h and hashes Cx and R together to obtain c, say its value is c=7. The prover computes z1=ct1+r1=3 and z2=ct2+r2=11 and sends over Cx, R, z1 and z2.
The verifier independently computes c and checks that gcR=Cx z 1 hz 2 =g16h which is indeed true.
It can be seen that the prover was required to perform one modular inverse, two randomizations, two group exponentiations and one group multiplication. The method of Belenkiy requires 4 randomizations, 3 group multiplications and 7 group exponentiations.
Data Example, Real World Setting:
Here is an example run of the protocol in a real-world setting. The NIST-recommended SECP256r1 curve has been used as the discrete log group with g being the default generator.
Integers:
x=989286703893525103965231516973559043547920049579737744125956333032737324 97743
y=950080536003610934319230465754247514336093771353579969411105819939381652 36367
x−1=462698403265673518540994510511338275355253401833673009216218520370008469 66515
−yx−1=811883617617445595202675787660756899150690176107941830256968169087277732 41705
r1=641741887648009138242672540494542503838803238375742165794804496772782878 45053
r2=780720476939726975622572766237501598771829933800253448848906197165965692 62161
c=962249901098101212105656204409842333674860682001691664025921912915116318 01053
z1=77558756204012200080475684884310387291370943910107311585466358 661683524082068
z2=10967924588729828517744024474218426311078559706343058313692421 3368004095632307
Note: The specific value of c depends on how hashing is carried out. Many possible ways of doing so can be valid. The process involves deterministically serializing the objects to be hashed (however seen fit) and pass the resulting byte array through a secure hash (in this example, SHA256).
Note: These integers are displayed in base 10.
Group Elements:
Cx=(e6ab3db4c6691dda4a8b05d79a15559c18181cda6c6dfc7fc77f41dff392e41,f 0d8a7a52e882ff9da9f64cf082db98bbe1db6fa6f965dc96a4150b95270e073,1da350a2e431d51de9217a218313fb2cc39f8f1dda48ea33ad7b1e561ef00e89)
h=(e6ab3db4c6691dda4a8b05d79a15559c18181cda6c6dfc7fc77f41dff392e41,f0d8a7a52e882ff9da9f64cf082db98bbe1db6fa6f965dc96a4150b95270e073,1da350a2e431d51de9217a218313fb2cc39f8f1dda48ea33ad7b1e561ef00e89)
R=(b5e8e60e25842deb89cdb80047e49b81b566b8bcf6b6fd6298fdc7dab5857300,54cacd179ab2e3fbc892b1001c47408dc1d8559c8a2dce519094ab874b640e87,11b5ec881901a0901d73d0892402c3f70d96f6d23ca851cd7fe9402f886f6bb4)
Note: These group elements are displayed in projective coordinates base 16.
Example Comparison Protocol
Consider G to be a discrete log group of prime order p and g and h be generators with unknown discrete logs. (Setting identical to that of all the rest of the protocols)
Let numbers q and l be such that q−l=2N≤p/2 and two whole numbers a and b such that l≤a≤b<q
Consider commitments A=gahm a and B=gbhm b to a and b, respectively.
To prove that a≤b, the following steps can be taken:
    • 1. Prover computes C=BA−1gb−ahm b −m a =gchm c
    • 2. Prover produces bit commitments Ai=ga i hm ai , Bi=gb i hm bi , Ci=gc i hm ci for i ∈ {1, . . . , N−1} where ai, bi and ci are the i′th bits of a−l, b−l and c, respectively. mai, mbi and mci are sampled randomly.
    • 3. Prover computes A0=ga o hm ao =AΠi=1 N−1Ai −2 i and likewise B0=gb o hm b0 =BΠi=1 N−1Bi −2 i and C0=gc o hm c0 =CΠi=1 N−1Ci −2 i
    • 4. For each i Å {0,1, . . . ,N−1}, the prover does the following:
      • a. Randomly sample rai, d′ai and z′ai.
      • b. Compute Rai,a i =hr ai and Rai,(1−a i )=hz′ ai (Aig−a i )−d′ ai.
      • c. Compute dai=H(Ai, Rai,0, Rai,1)
      • d. Compute zai=(dai−d′ai)mai+rai
      • e. Assign zai,a i =zai, zai,(1−a i )=z′ai, d″ai,a i =dai−d′ai and d″ai,(1−a i )=d′ai
      • f. Repeat steps a through e for B and C
    • 5. Prover sends all Ai, Rai,0, Rai,1, d′ai,0, zai,0, zai,1, Bi, Rbi,0, Rbi,1, d″bi,0, zbi,0, zbi,1, Ci, Rci,0, Rci,1, d″ci,0, zci,0, zci,1
    • 6. Verifier checks that A=Πi=0 N−1Ai 2 i , B=Πi=0 N−1Bi 2 i , BA−1i=0 N−1Ci 2 i
    • 7. For each i ∈{0,1, . . . , N−1} the verifier checks that:
a . A d ai , 0 R ai , 0 = h z ai , 0 b . ( Ag - 1 ) H ( A i , R ai , 0 , R ai , 1 ) - d ai , 0 R ai , 1 = h z ai , 1
      • c. Check the same conditions for B and C
Note: It may be that either a or b are known to the verifier. In such a case there is no need to decompose the known number and commitment C will have the same mask exponent as that of the unknown parameter.
Note: In an embodiment, the prover avoids sending A0, B0 and C0 to reduce the size of its messages. In that case, in step 6, instead of verifying a relation between the bit commitments the verifier derives A0, B0 and C0 independently.
Dummy Example
Let p-23, l=0, q=8, a=3, b5, A=g3h6, B=g5h1
    • 1. Prover computes C=g2h18
    • 2. Prover generates commitments A1=gh17, A2=h22, B1=h3, B2=gh4, C1=gh2 and C2=h17
    • 3. Prover computes commitments A0gh22, B0gh2 and C0=h15
    • 4. Prover does the following:
      • a. Randomly sample ra0=15, d′a0=10, z′a0=18, ra1=3, d′a1=5, z′a1=7, ra2=3, d′a2=18, z′a2=4, rb0=17, d′b0=19, z′b0=7, rb1=8, d′b1=12, z′b1=6, rb2=7, d′b2=5, z′b2=3, rc0=11, d′c0=21, z′c0=19, rc1=5, d′c1=16, z′c1=12, rc2=9, d′c2=5, z′c2=10.
      • b. Compute Ra0,0=h18A0 −10=g13h5, Ra0,1=h15, Ra1,0=h7A1 −5=g18h14, Ra1,1=h3, Ra2,0=h3, Ra2,1=h4(A2g−1)−18=g18h22, Rb0,0=h7B0 −19=g4h15, Rb0,1=h17, Rb1,0=h8, Rb1,1=h6(B1g−1)−12=g12h16, Rb2,0=h3(B2g−1)−5=g5h6, Rb2,1=h7, Rc0,0=h11, Rc0,1=h19(C0g−1)−21=g21h3, Rc1,0=h12C1 −16=g7h3, Rc1,1=h5, Rc2,0=h9, Rc2,1=h10(C2g−1)−5=g5h17
      • c. Compute hashes, say da0=17, da1=4, da2=17, db0=12, db1=20, db2=3, dc0=7, dc1=1, dc2=0
      • d. Compute responses za0=(17−10)22+15=8, za1=(4−5)17+3=9, za2=(17−18)22+3=4, zb0=(12−19)2+17=3, zb1=(20−12)3+8=1, zb2=(3−5)4+7=22, zc0=(7−21)15+11=8, zc1=(1×16)2+5=21, zc2=−5×17+9=16
      • e. Assign values za0,0=18, za0,1=8, za1,0=7, za1,1=9, za2,0=4, za2,1=4, zb0,0=7, zb0,01=3, zb1,0=1, zb1,1=6, zb2,0=3, zb2,1=22, zc0,0=8, zc0,1=19, zc1,0=12, zc1,1=21, zc2,0=16, zc2,1=10
    • 5. Prover sends A0=gh22, Ra0,0=g13h5, Ra0,1=h15, d″a0,0=10, za0,0=18, za0,1=8A1=gh17, Ra1,0=g18h14, Ra1,1=h3, d″a1,0=5, za1,0=7za1,1=9, A2=h22, Ra2,0=h3, Ra2,1=g18h22, d″a2,0=22, za2,0=4, za2,1=4, B0=gh2, Rb0,0=g4h15, Rb0,1=h17, d″b0,0=19, zb0,0=7, zb0,1=3, B1=h3, Rb1,0=h8, Rb1,1=g12h16, d″b1,0=8zb1,0=1, zb,1=6, B2=gh4, Rb2,0=g5h6, Rb2,1=h7, d″b2,0=5, zb2,0=3, zb2,1=22, C0=h15, Rc0,0=11, Rc0,1=g21h3, d″c0,0=9, zc0,0=8, zc0,1=19, C1=gh2, Rc1,0=g7h3, Rc1,1=h5, d″c1,0=16, zc1,0=12, zc1,1=21, C2=h17, Rc2,0=h9, Rc2,1=g5h17, d″c2,0=18, zc2,0=16, zc2,1=10 to the verifier.
    • 6. The verification steps are omitted in this description of this example.
  • Appendix: The following section provides discussion on proofs and complexity analysis
Σ-Protocols
A Σ-protocol is a schema for proving knowledge of a witness w to an NP-Statement x ∈ L. It consists of the following three moves:
    • 1. Commitment: The prover sends commitments to random values (referred to as “masks” herein) to the verifier.
    • 2. The verifier sends a random challenge back to the prover.
    • 3. The prover provides a response incorporating the mask values, the witness and the challenge.
The verifier accepts if and only if the components of their view satisfy a certain polynomially-verifiable relation. The view includes are the problem statement P(x) and the three messages exchanged.
A Σ-protocol must also satisfy the following properties:
    • 1. Special Soundness: An extractor can extract a witness from two accepting transcripts of the protocol with equal commitments and different challenges.
    • 2. Special Honest Verifier Zero Knowledge: An honest verifier can generate transcripts identically distributed as an actual execution of the protocol, given a challenge.
Note that the concept of a Σ-protocol is much broader than the algebraic cases used in this solution. Namely there is very little limitation on the mathematical nature of the NP-Statement to be proven, its witness, and the commitment scheme in use.
Note that it is not sufficient for the challenge to be unique. It needs to be unpredictable. From the Special Zero Knowledge property it follows that a malicious prover can fool a verifier if able to guess the challenge prior to commitment generation.
Note that even though a proof of knowledge, a Σ-protocol is not necessarily zero-knowledge, nor compose-able in parallel.
Composing Σ-protocols
Disjunction
In order to prove that at least one of the two statements A and B is true, the prover proves one (one that is actually true) and simulates the other (which the zero knowledge property guarantees to be possible, regardless of its truth). In order to allow the prover to simulate one and only one of the two, for each verifier challenge c an efficient and efficiently invertible bijective function fc: C→C, where C is the set of possible challenges is devised.
The prover may use arbitrary challenges c1 and c2 for its subproofs, as long as c2=fc(c1). Intuitively, the prover can fix one of the challenges and generate bogus commitments. After receiving the uniformly random verifier challenge, the prover will be bound to a uniformly distributed challenge for the other statement, which forces it to try and prove it honestly.
Special Soundness:
Imagine two accepting executions of the proof with the same mask commitments and different verifier challenges. Represent the two transcripts as ((R1, c1, z1), (R2, c2, z2)) and ((R′1, c′1, z′1), R′2, c′2,z′2)). There is the following:
R1=R′1
R2=R′2
c1+c2≠ c′1+c′2⇒ c1≠ c′1 or c2≠ c′2.
Without loss of generality, assume that c1≠ c′1. Because (R1, c1, z1) and (R1, c′1, z′1) are both accepting transcripts, a witness w1 can be extracted for the first statement, demonstrating that the prover knew it was true, as well as a witness to its truth.
Special Zero-Knowledge:
The simulator can sample c and c1 in advance and derive c2 from the two. Because the protocols for the sub-statements are zero-knowledge, the simulator can output (R1, c1, z1) and (R2, c2, z2) that are indistinguishable from honest transcripts, given the challenges.
But c1 and c2 are uniformly distributed, therefore the simulated transcripts are indistinguishable from honest transcripts.
Cost:
The computational overhead is negligible compared to that of providing the honest and simulated proofs, both in providing honest or simulated proofs and verifying them.
Communication has an overhead of the prover sending one of the sub-challenges to the verifier.
Note that the necessity of actually implementing proof simulators to build disjunction provers makes their efficiency relevant. Therefore, most complexity analyses in this document will include an estimation of the work required to simulate a proof.
Note that such differences do not enable timing attacks when disjunctions of two statements of the same form are proven.
However, whenever P1 v P2 is to be proven, care should be taken to ensure that the timing difference between honest P1 and simulated P1 is the same as the timing difference between honest P2 and simulated P2. In other words, in order to maintain zero knowledge one needs to guarantee that
t P 1 +t p 2 sim =t P 1 sim +t P 2 ⇔ t P 1 sim −t P 1 =t P 2 sm −t P 2
Conjunction
One may need to prove knowledge of all statements P1, . . . , PN, each with their own Σ-protocol. That is simply achieved through synchronizing the execution of their proof protocols. Meaning that all commitments R1, . . . , RN are sent first and the same challenge c is used to provide all responses z1, . . . , zN.
Special Soundness:
Take two accepting transcripts (R1, . . . , RN, c, z1, . . . , ZN) and (R1, . . . , RN, c′, Z′1, . . . , Z′N). From the soundness of each sub-protocol one can deduce that all wn's can be extracted.
Special Zero-Knowledge:
Given the challenge c beforehand, the sub-simulators can each create honest-looking transcripts (Rn, c, zn). Clearly a sequence of such transcripts will also be honest-looking.
From Σto ZKPoK
A Σ-protocol is not guaranteed to be Zero Knowledge. However, under certain black-box transformations, a Σ-protocol can be converted into a ZKPoK.
One such transformation (perhaps in the Random Oracle Model? Is that really bad?) uses the Fiat-Shamir heuristic.
Prior to the execution of the Σ-protocol, the verifier hands the prover a challenge string, later used in generating the Σ-protocol challenge. The main body of the protocol is made non-interactive, as the prover self-generates the challenge by hashing together the verifier-provided challenge string and its own commitments.
Roughly speaking, by having both parties contribute freshness to the hash input, the challenge is guaranteed to be unpredictable, in the sense that neither can guarantee any meaningful relation between the prover commitments and the challenge with non-negligible probability, essentially incapacitating them both from cooking up any mischief. With both parties limited to honest behavior, the special soundness and special zero knowledge properties suffice to guarantee the zero knowledge and proof of knowledge conditions.
Note that the challenge string provided by the verifier need not be random; uniqueness suffices.
Zero-Knowledge:
It is observed that the transcript of an honest prover's interaction with any verifier is identically distributed as with an honest verifier. Since good randomness from the prover alone suffices to guarantee randomness of the challenge, regardless of what the verifier contributes into the hash input, the challenge will be honestly produced.
It now remains to show that an honest prover's view under the Σ-protocol is identically distributed as that under the transformed protocol.
Proof of Knowledge:
One still needs to argue why this transformation will not spoil the original Σ-protocol's Proof of Knowledge property.
In the Random Oracle model, one can rewind the challenge creation step and have two distinct challenges that the prover can successfully respond to.
By making the protocol non-interactive, the transformation also addresses the issue of composability. Reducing the number of messages from 3 to 2 somewhat trivially guarantees parallel composability. Moreover, all zero-knowledge protocols are sequentially composeable.
This makes Σ-protocols valuable tools, mainly because proving Special Soundness and Special Honest Verifier Zero Knowledge is much easier than proving
Arbitrary-Verifier Zero Knowledge and Proof of Knowledge.
Algebraic Implementations
Operations are carried out in a prime order group G and the field
Figure US11212102-20211228-P00002
|G| of integers modulo its size. This group has at least two publicly known elements g and h, along with a hash function H. The security of the constructions depends on the following properties.
Security Assumptions
  • 1. Generator Independence: No efficient algorithm can output nonzero vector [w1 w2] such that gw 1 hw 2 =e.
  • 2. Discrete Log Hardness: No efficient algorithm can output r given hr for exponentially many uniformly sampled r ∈
    Figure US11212102-20211228-P00002
    |G|.
  • 3. There is a hash function H:(VerifierChallenge, G*)→
    Figure US11212102-20211228-P00002
    |G|, that can be used to transform a Σ-protocol on G into a ZKPoK under the Fiat-Shamir heuristic. A Σ-protocol operates on G iff R ∈ G, {c,z} ⊂
    Figure US11212102-20211228-P00002
    |G| for all its executions.
Schnorr Signature
This protocol allows an entity to prove knowledge of the discrete log x (private key) of a group element X=gx (public key) by providing a valid response (signature) to a challenge (message). The non-interactive version of this protocol can serve as a signature scheme with the verifier challenge serving as the message to be signed.
As a Σ-protocol, the following steps are to be taken:
  • 1. Prover randomizes mask r and provides R=gr.
  • 2. Prover receives challenge c ∈ F|G|.
  • 3. Prover sends z=cx+r.
  • 4. Verifier accepts iff gz=RXc.
Completeness is evident. The following prove security:
Special Soundness:
Imagine two distinct transcripts with identical commitment and different challenges.
X −c 1 g z 1 =X −c 2 g z 2 =R ⇒ X c 1 −c 2 =g z 1 −z 2 ⇒ X=g (z 1 −z 2 )(c 1 −c 2 ) −1
Thus a witness can be extracted.
Special Zero-Knowledge:
To counterfeit an accepting transcript, the simulator can first randomize the challenge and the response c,z ∈ F|G|. It then generates fake mask commitment R=gzX−c.
NOTE: In some cases the simulator may be given the challenge c. Therefore, it's best to prove result that a simulator can generate transcripts that are indistinguishable from honest ones given the challenge.
Now it remains to prove that real and fake transcripts are identically distributed:
One can represent random variables with boldface capital letters. C,Z and R represent the challenge, response and the mask respectively.
In both cases, the challenge is uniformly distributed. In other words, C˜U(
Figure US11212102-20211228-P00002
|G|).
In the counterfeit case, the response is generated independently of the challenge, therefore Z|C˜U(
Figure US11212102-20211228-P00002
|G|).
In the honest case, the response is obtained by adding a uniformly randomized r to a fixed multiple of c. Therefore, in that case also one will have Z|C˜U(
Figure US11212102-20211228-P00002
|G|).
In both cases, R is uniquely determined from c, z and X. Therefore, one can say that the random variable (Z, C, R) is identically distributed across the two cases.
Thus the protocol is Honest-Verifier Zero Knowledge in the strongest sense, namely, information theoretically.
Computational Complexity:
Group
Group composi- Field Field
exponentiation tion Multiplication randomization
Prover
1 0 1 1
Simulator 2 1 0 1
Verifier 2 1 0 0
Note on Complexity
All complexity estimates ignore the process of creating and communicating the challenge, because it can be amortized. Moreover, sometimes it is handed down from another protocol.
Note on Computational Complexity
Every group exponentiation involves θ(log|G|) group doublings and compositions. This number is considerable, at least about 256.
Every group doubling or composition in turn, involves a constant number of Field multiplications and inversions.
And finally, every field multiplication involves θ(log|G|) field additions, which is again at least about 256. This means that compared to a group exponentiation, a field addition, subtraction or negation takes a negligible 2−16=0.000015 time and effort. For the purposes of simplifying this analysis, the analysis will dismiss basic field operations as inexpensive, reasonably certain that the analysis will not suffer much.
Communication Complexity
I field and 1 group element.
Note on Communication Complexity
In many contexts, one may assume that transmitting a group element requires more or less the same number of bits as a field element does. Even so, more work may be required on the receiver's side to reconstruct a representation amenable to manipulation.
Generalized Schnorr's
Schnorr's signature can be naturally extended to efficiently prove knowledge of a group element X's discrete logarithm based multi-generator set {gn}. In addition, the prover may want to prove that some of these exponents are equal.
Prover knows X=Πn=1 Ngx i(n) , where i(n):
Figure US11212102-20211228-P00008
N
Figure US11212102-20211228-P00008
I surjectively maps an exponent's index to that of its equality class. That is to say, there are I≤N equality classes, indexed from 1 to I.
The prover does the following:
  • 1. For each equality class i sample ri
    Figure US11212102-20211228-P00002
    |G|
  • 2. Send the commitment R=Πn=1 Ngn r i(m)
  • 3. Receive challenge c ∈
    Figure US11212102-20211228-P00002
    |G|.
  • 4. For each equality class i send the response zi=cxi+ri
The verifier accepts if and only if RXcn=1 Ngn z i(n) .
Special Soundness:
Consider two transcripts (R, c, z1, . . . , zI), (R, c′, z′1, . . . , z′I). There is:
R=X −cΠn=1 N g z i(n) =X −c′Πn=1 N g z′ i(n) ⇒ X c−c′n=1 N g z i(n) −z′ i(n) Π X=π n=1 N g (z i(n) −z′ i(n) )(c−c′) −1
This gives us witnesses xn=(zi(n)−z′i(n))(c−c′)−1, such that for every n, n′ with i(n)=i(n′) one has xn=x′n.
Notice the one-sidedness of the above implication. It is not at all asserted that variables belonging to distinct equality classes hold distinct values.
Special Zero-Knowledge:
For a given challenge c ∈
Figure US11212102-20211228-P00002
|G|, the simulator uniformly samples z1, . . . , zI and computes R=X−cΠn=1 Ngz i(n) .
This is identically distributed as an honest transcript. Given a challenge c, the zis are completely masked by the ris and therefore uniformly distributed. Finally, as in the simulated case, the commitment R is uniquely determined by the challenge and the responses.
Computational Complexity:
Group
Group composi- Field Field
exponentiation tion Multiplication randomization
Prover N N − 1 I I
Simulator N + 1 N 0 I
Verifier N + 1 N 0 0
Communication Complexity:
1 field and 1 group elements.
Proving Knowledge of a Pedersen Commitment
Proving, verifying and simulating knowledge of commitment X=gxhr is reduced to Generalized Schnorr's with the following parameters:
Parameter
N I g1 g2 x1 x2
Value 2 2 g h x r
Computational Complexity:
Group
Group composi- Field Field
exponentiation tion Multiplication randomization
Prover
2 1 2 2
Simulator 3 2 0 2
Verifier 3 2 0 0
Communication Complexity:
2 field and 1 group elements.
Side note: Soundness of the Pedersen Commitment Scheme:
If a prover can open a commitment in two ways gxhr=C=gx′hr′, one has gx−x′=hr′−r. From the assumption that the prover does not know the relative discrete log of g and h, one can infer that x−x′=r′−r=0.
Very Generalized Schnorr's
This is called an “Equality Map” in the Microsoft Specifications. The problem is to prove knowledge of the discrete logarithm of a set of group elements {Xm} as:
Xmn=1 Ngn x mn
Moreover, there is an “equality map” as common input, taking the index of an exponent to that of a witness:
I:
Figure US11212102-20211228-P00008
M×
Figure US11212102-20211228-P00008
N
Figure US11212102-20211228-P00008
I∪{0}
x mn =w I(m,n)
w0=0
The symbol I stands for the equality map as well as the number of non-trivial witnesses.
The prover performs the following:
  • 1. For i ∈
    Figure US11212102-20211228-P00008
    I, sample ri
    Figure US11212102-20211228-P00002
    |G|. r0=0 by convention.
  • 2. For m ∈
    Figure US11212102-20211228-P00008
    M, send Rmn=1 Ngn r I(m,n) .
  • 3. Receive challenge c ∈
    Figure US11212102-20211228-P00002
    |G|.
  • 4. For i ∈ NI, send back zi=cwi+ri. z0=0 by convention.
The verifier accepts if and only if Xm cRmn=1 Ngn z I(m,n) for all m ∈
Figure US11212102-20211228-P00008
M.
Special Soundness:
This follows naturally from the special soundness of Generalized Schnorr's. Intuitively, the relevant witnesses for each discrete log relation can be extracted independently of the others. Consistency is still guaranteed.
Special Zero-Knowledge:
Given group elements {Xi}, challenge c and equality map I, the simulator samples zi
Figure US11212102-20211228-P00002
|G|, sets z0=0 and for m ∈
Figure US11212102-20211228-P00009
M computes Rm=Xm −cΠn=1 Ngn z i(m,n) .
Similarly to previous arguments, in both simulated and genuine cases, the set {zi} is uniform and independent of the challenge c, and the set {Rm} is uniquely determined given the two. Therefore, those cases are identically distributed.
Computational Complexity:
Consider the set E={(i,n)|∃m:I(m,n)=i}. One may say|E|≤MN.
Here, one can make an additional assumption that was not essential to the security analysis but makes complexity analysis easier.
∀m ∈
Figure US11212102-20211228-P00008
M: ∃n:I(m,n)≠ 0
That is, none of the discrete log witness vectors are trivially zero.
Group
Group composi- Field Field
exponentiation tion Multiplication randomization
Prover |E| |E| − M I I
Simulator |E| + M |E| 0 I
Verifier |E| + M |E| 0 0
Communication Complexity:
I field and M group elements.
Commitment Equality Proof
In order to prove equality of two commitments X1=gx 1 hr 1 and X2=gx 2 hr 2 , it is more efficient to devise a specially tailored proof scheme rather than using the generic equality map.
Both parties simply compute XΔ=X1X2 −1=gx 1 −x 2 hr 1 −r 2 =gx δ hr δ . The prover proves knowledge of logh XΔ.
Special Soundness:
From the special soundness of Schnorr's it follows that the extractor can compute rδ such that XΔ=hr′ δ . Assuming that the prover has knowledge of X1 and X2 as valid commitments, it should be able to compute gx δ hr δ =hr′ δ ⇒ g x δ hr δ −r′ δ =1. Because the prover doesn't know logg h, it must be that x1−x2=xδ=0.
Note that this soundness guarantee is only valid if it is already ascertained that the input commitments are valid, which is not the case with the generic equality map.
Special Zero-Knowledge:
This follows directly from the zero-knowledge property of Schnorr's.
Complexity:
The simulator computes XΔ=X1X2 −1 and simulates a Schnorr's. This results in 2 randomizations, 2 exponentiations and one extra composition. Therefore, there is an extra exponentiation.
Group
Group composi- Field Field
exponentiation tion Multiplication randomization
Prover
1 1 1 1
Simulator 2 2 0 1
Verifier 2 2 0 0
Commitment Non-Zeroness Proof
In order to prove for a commitment X=gxhr that x≠ 0, one only needs to prove the existence of a multiplicative inverse for x, namely g=Xx−1h−rx −1 . In other words, it suffices to prove the discrete log of g base X and h.
Special Soundness:
g=X a h b=(g x h r)a h b =g xa h ra+b ⇒ g xa−1 =h −ra−b
Since the prover doesn't know a nontrivial discrete log relation between the generators, this guarantees that xa−1=0. Therefore, a is the multiplicative inverse of x, guaranteeing that x is nonzero.
Special Zero Knowledge:
This follows directly from the zero knowledge property of the knowledge of commitment protocol.
Complexity:
To set up the discrete log proof, the prover needs to compute x−1 and −rx−1, requiring one field inversion and one multiplication only. The verifier and simulator need no additional setup.
Group Group Field
exponen- compo- Field Field randomi-
tiation sition Inversion Multiplication zation
Prover
2 1 1 3 2
Simulator 3 2 0 0 2
Verifier 3 2 0 0 0
Inequality Proof—Known Value
Given X=gxhr and Y=gy, with y common to both parties and x and r private to the prover, one can prove x≠ y by carrying out a non-zeroness proof on XY−1=gx−yhr.
As a side effect, this also proves knowledge of x and r.
Special Soundness:
An extractor can obtain x−y and r, with the guarantee that x−y≠ 0. From that X can also be determined.
Special Zero-Knowledge:
XY−1 is uniquely determined from common inputs X and Y−1 and the subprotocol it is handed to is special zero-knowledge; thus so is this protocol.
Complexity:
Group Group Field
exponen- compo- Field Field randomi-
tiation sition Inversion Multiplication zation
Prover 2 (3) 2 1 3 2
Simulator 3 (4) 3 0 0 2
Verifier 3 (4) 3 0 0 0
There may be an additional exponentiation required if a party doesn't have Y=gy cached.
Inequality Proof—Unknown Values
This works very similarly as with known values. Group elements X1 and X2 are common input, and private to the prover are
Figure US11212102-20211228-P00002
|G| elements x1, x2, r1, r2 such that X1=gx 1 hr 1 and X2=gx 2 hr 2 .
To prove that x1≠ x2, the parties both compute XΔ=X1X2 −1. The prover also computes xΔ=x1−x2 and rΔ=r1−r2 and proves that xA is not zero using the commitment non-zeroness proof.
Note that this protocol doesn't prove knowledge of the witnesses x1, x2, r1 and r2.
Complexity:
Group Group Field
exponen- compo- Field Field randomi-
tiation sition Inversion Multiplication zation
Prover
2 2 1 3 2
Simulator 3 3 0 0 2
Verifier 3 3 0 0 0
Bit Commitment Proof
Pedersen commitments to bits will play an important part in future sections, when comparison of two numbers is of concern. The commitment is of the form C=gbhr, where b ∈ {0,1} and r ∈
Figure US11212102-20211228-P00002
|G|. In order to prove that such a commitment is well-formed (that b is indeed a bit) one may have the following:
b { 0 , 1 } { b = 0 or b = 1 { C = h r or C = gh r { C = h r or Cg - 1 = h r
Therefore a disjunction of knowing the discrete log of either C or Cg−1 base h does the trick.
Complexity:
The prover and the verifier both do the additional work of computing C9 −1; namely, an additional group composition.
This results in 3 field randomizations, 3 group exponentiations and 1 composition for the prover, as well as 4 group exponentiations and 3 compositions for the verifier.
There is no additional communication cost.
Group
Group composi- Field Field
exponentiation tion Multiplication randomization
Prover 3 2 1 3
Simulator 4 3 0 3
Verifier 4 3 0 0
Note:
The computational burden on the verifier is less important, because it is less likely to be implemented on a mobile device.
Bit Decomposition Proof
Certain properties of committed attributes cannot be naturally expressed using algebraic techniques so far covered in this document. Comparing two numbers is one such example as
Figure US11212102-20211228-P00010
p doesn't come with a notion of order. It can be done however by a circuit operating on individual bits making up the operands. This means that one needs to produce commitments to bits and to simulate binary circuits. Fortunately, both of these can be done algebraically. This section describes a method to do the former.
The common input is a commitment C=gxhr, with the prover having x and r as private input.
To decompose x into an N-bit number, the prover generates the following:
(b N−1 , . . . ,b 0)2 =x
r1, . . . ,rN−1
Figure US11212102-20211228-P00002
|G|
r 0 =r−Σ n=1 N−12n r n
Cn=gb n hr n
This yields
Σn=0 N−12n C n =C
The prover sends C1, . . . , CN−1 to the verifier. Apart from that, the prover will need to provide proofs of commitment for C0, . . . , CN−1.
Special Soundness:
Take two accepting transcripts (C1, . . . , CN−1, R0, . . . , RN−1, c, z0, . . . , zN−1) and (C1, . . . , CN−1R0, . . . , RN−1, c′, z′0, . . . , z′N−1).
From the soundness of the conjunction proof, it can be deduce all witnesses wn can be extracted.
Special Zero-Knowledge:
A simulator can randomize group elements (C1, . . . , CN−1) and have sub-simulators generate honest-looking sub-proofs for their validity as bit commitments.
Complexity:
The prover randomizes N−1 masks and infers r0 from them. The computation is as follows:
r 0 =r−Σ n=1 N−12n r n =r−2(r 1+2(r 2+ . . . ))
This takes N−1 field additions and N−1 field doublings. In other words, it takes 2N−2 field additions, about as expensive as a couple of multiplications, at most. In most cases though, 2N is much smaller than the group size and therefore the cost of these additions can be disregarded.
Similarly, computing C1 to CN−1 takes N−1 group exponentiations and N−1 group compositions.
In the same way as computing r0, computing C0 takes N−1 group doublings and N−1 group compositions. Alternatively, using the availability of r0, C0 can be computed directly as C0=gb o hr o . This takes one group composition and one exponentiation. An exponentiation to the power of a large number takes at least about log|G|−1 exponentiations and log|G|−1 doublings alone. Therefore, direct computation of C0 would always be less efficient.
Followed by that is N independent bit commitment proofs.
The verifier, takes C1 to CN−1 and computes C0, knowing C. That takes N−1 group doublings and N−1 group compositions. The rest of its work is to verify individual bit commitment proofs.
Group
Group composi- Field Field
exponentiation tion Multiplication randomization
Prover 4N − 1 5N − 3 N 4N − 1
Simulator 5N − 1 5N − 2 0 4N − 1
Verifier 4N 5N − 2 0 0
Bit Comparison Proof
Imagine an N-bit comparator design cascaded starting from the most significant bit.
The output of any 1-bit comparator unit comparing the nth digits is a commitment of form
C n - 1 = g c n - 1 h r n - 1 , where c n = { 1 if ( a N - 1 a n ) 2 > ( b N - 1 b n ) 2 0 if ( a N - 1 a n ) 2 = ( b N - 1 b n ) 2 - 1 if ( a N - 1 a n ) 2 < ( b N - 1 b n ) 2 .
The carry in cN is considered 0 and the carry out c0 is the result.
CN−1 can be simply computed as AN−1BB−1 −1ga N−1 −b N−1 hr N−1 −r′ N−1 .
All other values are computed as
c n = { a n - b n if c n + 1 = 0 c n + 1 if c n + 1 0 .
This is equivalent to saying (cn+1≠ 0 Λ cn=cn+1)Λ(cn+1=0 Λ cn=an−bn).
Proving and simulating cn+1≠ 0 Λ cn=cn+1:
An honest proof would involve a proof of non-zeroness on Cn+1 and a Schnorr's as Cn+1Cn −1=hr.
A simulation would involve a simulation of both subcomponents. Each contributes an extra exponentiation.
Group Group Field
exponen- compo- Field Field randomi-
tiation sition Inversion Multiplication zation
Prover 3 2 1 4 3
Simulator 5 4 0 0 3
Verifier 5 4 0 0 0
Proving and simulating cn+1=0 Λ cn=an−bn:
An honest proof involves a proof of zeroness on cn+1 and a proof of equality between AnBn −1 and Cn.
A simulation likewise involves simulating the two.
Group
Group composi- Field Field
exponentiation tion Multiplication randomization
Prover
2 2 2 2
Simulator 4 4 0 2
Verifier 4 4 0 0
The most significant work difference between the cn+1≠ 0 and cn+1=0 cases is an extra field inversion and two field multiplications when cn+1≠ 0. A number of dummy operations may be necessary to close in the timing gap.
Overall Complexity:
When performing an honest proof, one of the predicates is proven and the other is simulated. When doing a simulation, they both are simulated. Disjunction provers and simulators both sample an additional challenge from the field.
Group
Group composi- Field Field
exponentiation tion Multiplication randomization
Prover 7 6 4 6
Simulator 9 8 0 6
Verifier 9 8 0 0
Whole Number Comparison—Using Comparator Circuits
Assuming decompositions are already available to both parties, the prover needs to generate the bit comparison commitments CN−1, . . . , C0 and prove their correctness. This takes N field randomizations, N exponentiations and N group compositions.
What follows is N−1 comparators with carry ins and a single group composition (providing CN−1).
Group Group Field Field
exponentiation composition Multiplication randomization
Prover  8N-7 7N-6 4(N-1) 7N-6
Simulator 10N-9 9N-8 0 7N-6
Verifier    9(N-1)   8(N-1) 0 0
Whole Number Comparison—Using Signed Arithmetic (p's Complement)
Imagine a number
q p 2 .
For any two whole numbers 0≤a,b<q, one has the following:
b≤a ⇒ 0≤a−b≤a<q
b>a ⇒−q<a−b<0⇒(a−b)mod p>p−q≥q
q can be as small as the prover feels comfortable, as it puts an upper limit on the values a and b.
This construction essentially reduces comparison between two arbitrary numbers to a comparison between an arbitrary one and one the prover gets to choose. Powers of 2 are very easy to compare against, when equipped with decomposition proofs, which essentially enable one to make statements such as “a is at most N bits long.”
Complexity:
Assuming decompositions of both operands as common input, in order to imply they are at most N bits long, the prover only needs to decompose C=AB−1, again to prove it is at most N bits long. Thus, all that is needed is a group composition and a bit decomposition.
As compared with the circuit based method, this is considerably more efficient, as it requires about half as many exponentiations. However, it is more limited in that it cannot provide a commitment to the comparison result. It only proves the result directly.
Application to Identity Brokerage
Most of these problems start with Pedersen Commitments to finitely many attributes, in the form Ai=ga i hr i . These may be provided by U-Prove or another Anonymous Credentials protocol. The prover and the verifier have {Ai} as common input, and the prover additionally has {ai, ri} as private input.

Claims (20)

What is claimed is:
1. A computer implemented system for communicating data messages between a verifier computing device and a portable client computing device, the data messages establishing authentication of one or more characteristics of a client associated with the portable client computing device, the system comprising:
the portable client computing device including at least a client computing device processor and data storage, the data storage storing one or more token data objects received from or computed jointly in a multiparty protocol with an issuer computing device, the one or more token data objects generated using at least a issuer computing device private issuance key, the one or more token data objects each including one or more signed data elements representing at least one of the one or more characteristics of the client associated with the portable client computing device; and
the client computing device processor configured to receive a verification request data message from the verifier computing device and, using a combination of the one or more token data objects and the verification request data message, generate one or more proof data messages without sending any data messages or requests to the issuer computing device by conducting a modular inverse based at least on an attribute value from the one or more token data objects, generating a first random number and a second random number, computing a first group exponentiation and a second group exponentiation based on the first random number and the second random number, and a group multiplication including at least the first group exponentiation and the second group exponentiation, the group multiplication utilized to establish proof responses in a sigma protocol that are encapsulated into a proof data message of the one or more proof data messages.
2. The computer implemented system of claim 1, wherein the verification request data message includes at least a nonce c0; and the client computing device processor is configured to:
compute t=x−1 mod p, where x is an attribute value from the one or more token data objects, and p is an order of the discrete log group; t is a modular inverse of x mod p;
uniformly sample a first random number r1 and a second random number, r2, such that r1, r2
Figure US11212102-20211228-P00001
p;
compute R=Cx r 1 hr 2 here R is a commitment to random values r1 and r2, Cx is a commitment to attribute x, h is a group generator;
compute c=H(Cx,R,c0), where c is a proof challenge, based at least on the Fiat-Shamir Heuristic;
compute z1=ct+r1 and z2=−cty+r2, where z1 and z2 are proof responses based on a Sigma protocol; and
encapsulate and transmit the one or more proof data messages including R, z1 and z2 as data objects to the verifier computing device, such that the verifier computing device is able to compute c=H(Cx,R,c0) and confirm that gcR=Cx z 1 hz 2 , the verifier computing device controlling provisioning of access to a secured resource responsive to the confirmation that gcR=Cx z 1 hz 2 .
3. The computer implemented system of claim 1, wherein the one or more token data objects are pre-loaded into the data storage such that the generation of the proof can be conducted at a time temporally separated from when the one or more token data objects were generated or preloaded.
4. The computer implemented system of claim 1, wherein the one or more proof data messages are generated such that the one or more proof data messages can be validated using an issuer computing device public encryption key corresponding to the issuer computing device private issuance key.
5. The computer implemented system of claim 1, wherein gcR=Cx z 1 hz 2 indicates that a condition established in the verification request data message is met without having to present the underlying one or more characteristics of the client associated with the portable client computing device.
6. The computer implemented system of claim 1, wherein the verification request data message includes a blacklist data structure and the one or more proof data messages are generated to establish that the client associated with the portable client computing device does not match one or more identities stored in the blacklist data structure, or wherein the verification request data message includes a whitelist data structure and the one or more proof data messages are generated to establish that the client associated with the portable client computing device matches one or more identities stored in the blacklist data structure.
7. The computer implemented system of claim 1, wherein the provisioning of access to the secured resource includes transmitting an electronic signal to a physical lock actuator, or to a digital challenge-response mechanism.
8. The computer implemented system of claim 1, wherein the client computing device processor is a secure enclave processor or a trusted execution environment that is segregated from a general execution environment of the client computing device or the data storage is a secure enclave memory region that is segregated from a general memory region of the client computing device, the secure enclave memory region not accessible by general execution environment of the client computing device.
9. A computer implemented system for communicating data messages between a verifier computing device and a portable client computing device, the data messages establishing authentication of one or more characteristics of a client associated with the portable client computing device, the system comprising:
the portable client computing device including at least a client computing device processor and data storage, the data storage storing one or more token data objects received from or computed jointly in a multiparty protocol with an issuer computing device, the one or more token data objects generated using at least a issuer computing device private issuance key, the one or more token data objects each including one or more signed data elements representing at least one of the one or more characteristics of the client associated with the portable client computing device; and
the client computing device processor configured to:
receive a verification request data message from the verifier computing device including a request to prove a≤b;
generate a proof data message wherein G is defined as a discrete log group of prime order p and g and h be generators with unknown discrete logs, numbers q and l are defined such that q−l=2N≤p/2 and two whole numbers a and b such that l≤a≤b<q; and G is a discrete log group of prime order p and g and h be generators with unknown discrete logs, considering consider commitments A=gahm a and B=gbhm b to a and b, respectively, by:
computing C=BA−1=gb−ahm b −m a =gchm c ;
producing bit commitments Ai=ga i hm ai , Bi=gb i hm bi , Ci=gc i hm ci for i ∈{1, . . . , N−1}, where aibi and ci are the i′th bits of a−l, b−l and c, respectively, mai, mbi and mci are sampled randomly;
computing A0=ga o hm ao =AΠi=1 N−1 Ai −2 i and likewise B0=gb 0 hm b0 =B Πi=1 N−1 Bi −2 i and C0=gc o hm c0 =C Πi=1 N−1 Ci −2 i ;
for each i ∈{0,1, . . . , N−1}, and repeated through each of A, B, and C:
randomly sampling rai, d′ai and z′ai;
computing Rai,a i =hr ai and Rai,(1−a i )=hz′ ai (Aig−a i )−d′ ai ;
computing dai=H(Ai, Rai,0, Rai,1);
computing zai=(dai−d′ai)mai+rai;
assigning zai,a i =zai, zai(1−a i )=z′ai, d″ai,a i =dai−d′ai and d″ai,(1−a i )=d′ai;
encapsulating proof data message including at least Ai, Rai,0, Rai,1, d″ai,0, Zai,0, Zai,1, Bi, Rbi,0, Rbi,1, d″bi,0, zbi,0, zbi,1, Ci, Rci,0, Rci,1, d″ci,0, Zci,0, Zci,1;
wherein the proof data message can be verified by the verifier computing device checking for A, B, and C, that A=Πi=0 N−1 Ai 2 i , B=Πi=0 N−1 Bi 2 i , BA−1i=0 N−1 Ci 2 i ; and for each
i { 0 , 1 , , N - 1 } : A d ai , 0 R ai , 0 = h z ai , 0 , ( Ag - 1 ) H ( A i , R ai , 0 , R ai , 1 ) - d ai , 0 R ai , 1 = h z ai , 1 .
10. The system of claim 9, wherein the proof data message is encapsulated such that the proof data message is free of A0, B0 and C0 to reduce a filesize of the proof data message, and wherein the verifier computing device is configured to derive A0, B0 and C0 independently.
11. A computer implemented method for communicating data messages between a verifier computing device and a portable client computing device, the data messages establishing authentication of one or more characteristics of a client associated with the portable client computing device, the method comprising:
storing one or more token data objects received from an issuer computing device, the one or more token data objects generated using at least a issuer computing device private issuance key, the one or more token data objects each including one or more signed data elements representing at least one of the one or more characteristics of the client associated with the portable client computing device;
receiving a verification request data message from the verifier computing device, the verification request data message including at least a nonce c0; and
generating a proof data message by conducting a modular inverse based at least on an attribute value from the one or more token data objects, generating a first random number and a second random number, computing a first group exponentiation and a second group exponentiation based on the first random number and the second random number, and a group multiplication including at least the first group exponentiation and the second group exponentiation, the group multiplication utilized to establish proof responses in a sigma protocol that are encapsulated into the proof data message.
12. The method of claim 11, wherein generating the proof data message comprises:
computing t=x−1 mod p, where x is the attribute value from the one or more token data objects, and p is an order of the discrete log group t is a modular inverse of x mod p;
uniformly sampling the first random number ri and the second random number, r2, such that r1, r2
Figure US11212102-20211228-P00001
p;
computing R=Cx r 1 hr 2 , where R is a commitment to random values r1 and r2, Cx is a commitment to attribute x, h is a group generator;
computing c=H(Cx, R, c0), where c is a proof challenge, based at least on the Fiat-Shamir Heuristic; and
computing z1=ct+r1 and z2=−cty+r2, where z1 and z2 are the proof responses in the sigma protocol; and
encapsulating and transmitting the proof data message including R, z1 and z2 as data objects to the verifier computing device, such that the verifier computing device is able to compute c=H(Cx, R, c0) and confirm that gcR=Cx z 1 hz 2 , the verifier computing device controlling provisioning of access to a secured resource responsive to the confirmation that gcR=Cx z 1 hz 2 .
13. The method of claim 11, wherein the portable client computing device includes a processor that is a secure enclave processor or a trusted execution environment that is segregated from a general execution environment of the client computing device.
14. The method of claim 11, wherein the data storage is a secure enclave memory region that is segregated from a general memory region of the portable client computing device, the secure enclave memory region not accessible by general execution environment of the client computing device.
15. The method of claim 11, wherein the proof data messages is generated such that the proof data message can be validated using an issuer computing device public encryption key.
16. The method of claim 11, wherein gcR=Cx z 1 hz 2 indicates that a condition established in the verification request data message is met without having to present the underlying one or more characteristics of the client associated with the portable client computing device.
17. The method of claim 11, wherein the verification request data message includes a blacklist data structure and the proof data message is generated to establish that the client associated with the portable client computing device does not match one or more identities stored in the blacklist data structure.
18. A computer implemented method for communicating data messages between a verifier computing device and a portable client computing device, the data messages establishing authentication of one or more characteristics of a client associated with the portable client computing device, the method comprising:
storing one or more token data objects received from an issuer computing device, the one or more token data objects generated using at least a issuer computing device private issuance key, the one or more token data objects each including one or more signed data elements representing at least one of the one or more characteristics of the client associated with the portable client computing device;
receiving a verification request data message from the verifier computing device including a request to prove a≤b;
generating a proof data message wherein G is defined as a discrete log group of prime order p and g and h be generators with unknown discrete logs, numbers q and l are defined such that q−l=2N≤p/2 and two whole numbers a and b such that l≤a≤b<q; and G is a discrete log group of prime order p and g and h be generators with unknown discrete logs, considering consider commitments A=gahm a and B=gbhm b to a and b, respectively, by:
computing C=BA−1=gb−ahm b −m a =gchm c ;
producing bit commitments Ai=ga i hm ai , Bi=gb i hm bi , Ci=gc i hm ci for i ∈{1, . . . , N−1}, where aibi and ci are the i′th bits of a−l, b−l and c, respectively, mai, mbi and mci are sampled randomly;
computing A0=ga o hm ao =AΠi=1 N−1 Ai −2 i and likewise B0=gb 0 hm b0 =B Πi=1 N−1 Bi −2 i and C0=gc o hm c0 =C Πi=1 N−1 Ci −2 i ;
for each i ∈{0,1, . . . , N−1}, and repeated through each of A, B, and C:
randomly sampling rai, d′ai and z′ai;
computing Rai,a i =hr ai and Rai,(1−a i )=hz′ ai (Aig−a i )−d′ ai ;
computing dai=H(Ai, Rai,0, Rai,1);
computing zai=(dai−d′ai)mai+rai;
assigning zai,a i =zai, zai(1−a i )=z′ai, d″ai,a i =dai−d′ai and d″ai,(1−a i )=d′ai;
encapsulating proof data message including at least Ai, Rai,0, Rai,1, d″ai,0, Zai,0, Zai,1, Bi, Rbi,0, Rbi,1, d″bi,0, zbi,0, zbi,1, Ci, Rci,0, Rci,1, d″ci,0, Zci,0, Zci,1;
wherein the proof data message can be verified by the verifier computing device checking for A, B, and C, that A=Πi=0 N−1 Ai 2 i , B=Πi=0 N−1 Bi 2 i , BA−1i=0 N−1 Ci 2 i ; and for each
i { 0 , 1 , , N - 1 } : A d ai , 0 R ai , 0 = h z ai , 0 , ( Ag - 1 ) H ( A i , R ai , 0 , R ai , 1 ) - d ai , 0 R ai , 1 = h z ai , 1 .
19. The method of claim 18, where the proof data message is encapsulated such that the proof data message is free of A0, B0 and C0 to reduce a filesize of the proof data message, and wherein the verifier computing device is configured to derive A0, B0 and C0 independently.
20. A non-transitory computer readable medium storing machine interpretable instructions, which when executed, cause a processor to perform the steps of a method for communicating data messages between a verifier computing device and a portable client computing device, the data messages establishing authentication of one or more characteristics of a client associated with the portable client computing device, the method comprising:
storing one or more token data objects received from an issuer computing device, the one or more token data objects generated using at least a issuer computing device private issuance key, the one or more token data objects each including one or more signed data elements representing at least one of the one or more characteristics of the client associated with the portable client computing device;
receiving a verification request data message from the verifier computing device, the verification request data message including at least a nonce c0; and
generating a proof data message by conducting a modular inverse based at least on an attribute value from the one or more token data objects, generating a first random number and a second random number, computing a first group exponentiation and a second group exponentiation based on the first random number and the second random number, and a group multiplication including at least the first group exponentiation and the second group exponentiation, the group multiplication utilized to establish proof responses in a sigma protocol that are encapsulated into the proof data message.
US16/503,154 2018-05-28 2019-07-03 System and method for an electronic identity brokerage Active 2039-09-11 US11212102B2 (en)

Priority Applications (9)

Application Number Priority Date Filing Date Title
US16/503,154 US11212102B2 (en) 2018-07-03 2019-07-03 System and method for an electronic identity brokerage
US16/521,569 US11277412B2 (en) 2018-05-28 2019-07-24 System and method for storing and distributing consumer information
CA3050487A CA3050487A1 (en) 2018-07-24 2019-07-24 System and method for storing and distributing consumer information
US16/750,542 US11356262B2 (en) 2018-07-03 2020-01-23 System and method for anonymous location verification
CA3069582A CA3069582A1 (en) 2019-01-23 2020-01-23 System and method for anonymous location verification
US17/509,781 US20220045861A1 (en) 2018-07-03 2021-10-25 System and method for an electronic identity brokerage
US17/692,637 US11700257B2 (en) 2018-05-28 2022-03-11 System and method for storing and distributing consumer information
US17/833,448 US20220385469A1 (en) 2018-07-03 2022-06-06 System and method for anonymous location verification
US18/220,103 US20230362166A1 (en) 2018-05-28 2023-07-10 System and method for storing and distributing consumer information

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862693680P 2018-07-03 2018-07-03
US201862702684P 2018-07-24 2018-07-24
US201962839408P 2019-04-26 2019-04-26
US16/503,154 US11212102B2 (en) 2018-07-03 2019-07-03 System and method for an electronic identity brokerage

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US16/424,242 Continuation-In-Part US10956585B2 (en) 2012-10-17 2019-05-28 System and method for secure electronic transaction platform

Related Child Applications (4)

Application Number Title Priority Date Filing Date
US16/424,242 Continuation-In-Part US10956585B2 (en) 2012-10-17 2019-05-28 System and method for secure electronic transaction platform
US16/521,569 Continuation-In-Part US11277412B2 (en) 2012-10-17 2019-07-24 System and method for storing and distributing consumer information
US16/750,542 Continuation-In-Part US11356262B2 (en) 2018-07-03 2020-01-23 System and method for anonymous location verification
US17/509,781 Continuation US20220045861A1 (en) 2018-07-03 2021-10-25 System and method for an electronic identity brokerage

Publications (2)

Publication Number Publication Date
US20200014537A1 US20200014537A1 (en) 2020-01-09
US11212102B2 true US11212102B2 (en) 2021-12-28

Family

ID=69063442

Family Applications (2)

Application Number Title Priority Date Filing Date
US16/503,154 Active 2039-09-11 US11212102B2 (en) 2018-05-28 2019-07-03 System and method for an electronic identity brokerage
US17/509,781 Pending US20220045861A1 (en) 2018-07-03 2021-10-25 System and method for an electronic identity brokerage

Family Applications After (1)

Application Number Title Priority Date Filing Date
US17/509,781 Pending US20220045861A1 (en) 2018-07-03 2021-10-25 System and method for an electronic identity brokerage

Country Status (2)

Country Link
US (2) US11212102B2 (en)
CA (1) CA3048425A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220021537A1 (en) * 2020-07-14 2022-01-20 Visa International Service Association Privacy-preserving identity attribute verification using policy tokens

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11240001B2 (en) * 2018-11-06 2022-02-01 International Business Machines Corporation Selective access to asset transfer data
US20200274713A1 (en) 2019-02-25 2020-08-27 Tbcasoft, Inc. Credential verification and issuance through credential service providers
US10783277B2 (en) * 2019-05-31 2020-09-22 Alibaba Group Holding Limited Blockchain-type data storage
US11424939B1 (en) * 2020-03-31 2022-08-23 Amazon Technologies, Inc. Privacy preserving attestation
CN111786779B (en) * 2020-06-18 2022-03-18 中国电子科技集团公司第三十研究所 Novel accountability security data sharing system and method
EP4168904A4 (en) * 2020-06-22 2023-12-20 ID Metrics Group Incorporated Generating obfuscated identification templates for transaction verification
US11087016B1 (en) 2020-08-20 2021-08-10 Spideroak, Inc. Implementation of a file system on a block chain
US11700125B2 (en) 2020-10-05 2023-07-11 Redcom Laboratories, Inc. zkMFA: zero-knowledge based multi-factor authentication system
CN112818290B (en) * 2021-01-21 2023-11-14 支付宝(杭州)信息技术有限公司 Method and device for determining object feature correlation in privacy data by multiparty combination
CN113689601B (en) * 2021-08-04 2023-10-24 支付宝(杭州)信息技术有限公司 Block chain-based pass verification method and device, electronic equipment and storage medium
US20240121081A1 (en) * 2022-10-10 2024-04-11 Microsoft Technology Licensing, Llc Access control using mediated location, attribute, policy, and purpose verification
CN116506128B (en) * 2023-03-24 2024-03-12 中国科学院信息工程研究所 Packaging zero-knowledge proof method and device, electronic equipment and storage medium
CN116614275B (en) * 2023-05-23 2024-02-20 京信数据科技有限公司 Method for entrusting acceleration of privacy computing integrated machine

Citations (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040123156A1 (en) * 2002-10-16 2004-06-24 Hammond Frank J. System and method of non-centralized zero knowledge authentication for a computer network
US6820201B1 (en) * 2000-08-04 2004-11-16 Sri International System and method using information-based indicia for securing and authenticating transactions
US20050058288A1 (en) * 2003-08-26 2005-03-17 Ravi Sundaram Low bandwidth zero knowledge authentication protocol and device
US20060195692A1 (en) * 2005-02-25 2006-08-31 Kuhlman Douglas A Method for zero-knowledge authentication of a prover by a verifier providing a user-selectable confidence level and associated application devices
US20080262969A1 (en) * 2007-04-19 2008-10-23 Gideon Samid Bit currency: transactional trust tools
US20100049875A1 (en) * 2008-08-19 2010-02-25 Feitian Technologies Co., Ltd. Method for time source calibration and system thereof
US20110072269A1 (en) * 2007-08-07 2011-03-24 Hideaki Takechi Network av contents playback system, server, program and recording medium
US20110274275A1 (en) * 2009-08-25 2011-11-10 Maria Estela Seitz Trans-Security Components System and Methods
US20120209730A1 (en) 2010-10-06 2012-08-16 Garrett James M Mobile restaurant ordering system
US8386790B2 (en) * 2010-02-25 2013-02-26 GM Global Technology Operations LLC Method of using ECDSA with winternitz one time signature
US8683605B1 (en) * 2012-03-27 2014-03-25 Adobe Systems Incorporated Long-term validation of a digital signature status indicator
US20140310162A1 (en) 2012-03-28 2014-10-16 The Travelers Indemnity Company Systems and methods for geospatial value subject analysis and management
US20160162897A1 (en) * 2014-12-03 2016-06-09 The Filing Cabinet, LLC System and method for user authentication using crypto-currency transactions as access tokens
US20160344635A1 (en) * 2015-05-21 2016-11-24 Qualcomm Incorporated Efficient policy enforcement for downlink traffic using network access tokens - control-plane approach
US20170149560A1 (en) * 2012-02-02 2017-05-25 Netspective Communications Llc Digital blockchain authentication
US20170180128A1 (en) * 2015-12-22 2017-06-22 Gemalto Inc. Method for managing a trusted identity
US20170294131A1 (en) 2014-12-16 2017-10-12 Motorola Solutions, Inc Method and apparatus for dynamic talk group formation as a function of subscriber unit movement relative to a defined incident location
US20180262493A1 (en) 2016-03-28 2018-09-13 Black Gold Coin, Inc. Systems and methods for providing block chain or distributed ledger-based entity identity and relationship verification
US20180270065A1 (en) * 2017-03-15 2018-09-20 NuID, Inc. Methods and systems for universal storage and access to user-owned credentials for trans-institutional digital authentication
US20190036932A1 (en) * 2017-07-26 2019-01-31 International Business Machines Corporation Blockchain authentication via hard/soft token verification
US20190036914A1 (en) * 2017-07-26 2019-01-31 Secret Double Octopus Ltd. System and method for temporary password management
US20190144153A1 (en) 2017-11-13 2019-05-16 Multivac Sepp Haggenmüller Se & Co. Kg Packaging machine with a protective cover, a token fastening capsule arranged thereon as well as a method
US20190259228A1 (en) 2016-06-27 2019-08-22 Live Nation Entertainment, Inc. Systems and methods for short-range communication between devices
US10448251B1 (en) * 2019-02-28 2019-10-15 At&T Mobility Ii Llc Blockchain authentication for mobile network access
US10523685B1 (en) 2018-08-22 2019-12-31 Estimote Polska Sp z o.o. System and method for verifying device security
US10693872B1 (en) 2019-05-17 2020-06-23 Q5ID, Inc. Identity verification system

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11277412B2 (en) * 2018-05-28 2022-03-15 Royal Bank Of Canada System and method for storing and distributing consumer information
US10791123B2 (en) * 2015-11-25 2020-09-29 Yaron Gvili Selectivity in privacy and verification with applications
US10263775B2 (en) * 2017-06-23 2019-04-16 Microsoft Technology Licensing, Llc Policy-based key recovery
US11356262B2 (en) * 2018-07-03 2022-06-07 Royal Bank Of Canada System and method for anonymous location verification

Patent Citations (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6820201B1 (en) * 2000-08-04 2004-11-16 Sri International System and method using information-based indicia for securing and authenticating transactions
US20040123156A1 (en) * 2002-10-16 2004-06-24 Hammond Frank J. System and method of non-centralized zero knowledge authentication for a computer network
US20050058288A1 (en) * 2003-08-26 2005-03-17 Ravi Sundaram Low bandwidth zero knowledge authentication protocol and device
US20060195692A1 (en) * 2005-02-25 2006-08-31 Kuhlman Douglas A Method for zero-knowledge authentication of a prover by a verifier providing a user-selectable confidence level and associated application devices
US20080262969A1 (en) * 2007-04-19 2008-10-23 Gideon Samid Bit currency: transactional trust tools
US20110072269A1 (en) * 2007-08-07 2011-03-24 Hideaki Takechi Network av contents playback system, server, program and recording medium
US20100049875A1 (en) * 2008-08-19 2010-02-25 Feitian Technologies Co., Ltd. Method for time source calibration and system thereof
US20110274275A1 (en) * 2009-08-25 2011-11-10 Maria Estela Seitz Trans-Security Components System and Methods
US8386790B2 (en) * 2010-02-25 2013-02-26 GM Global Technology Operations LLC Method of using ECDSA with winternitz one time signature
US20120209730A1 (en) 2010-10-06 2012-08-16 Garrett James M Mobile restaurant ordering system
US20170149560A1 (en) * 2012-02-02 2017-05-25 Netspective Communications Llc Digital blockchain authentication
US8683605B1 (en) * 2012-03-27 2014-03-25 Adobe Systems Incorporated Long-term validation of a digital signature status indicator
US20140310162A1 (en) 2012-03-28 2014-10-16 The Travelers Indemnity Company Systems and methods for geospatial value subject analysis and management
US20160162897A1 (en) * 2014-12-03 2016-06-09 The Filing Cabinet, LLC System and method for user authentication using crypto-currency transactions as access tokens
US20170294131A1 (en) 2014-12-16 2017-10-12 Motorola Solutions, Inc Method and apparatus for dynamic talk group formation as a function of subscriber unit movement relative to a defined incident location
US20160344635A1 (en) * 2015-05-21 2016-11-24 Qualcomm Incorporated Efficient policy enforcement for downlink traffic using network access tokens - control-plane approach
US20170180128A1 (en) * 2015-12-22 2017-06-22 Gemalto Inc. Method for managing a trusted identity
US20180262493A1 (en) 2016-03-28 2018-09-13 Black Gold Coin, Inc. Systems and methods for providing block chain or distributed ledger-based entity identity and relationship verification
US20190259228A1 (en) 2016-06-27 2019-08-22 Live Nation Entertainment, Inc. Systems and methods for short-range communication between devices
US20180270065A1 (en) * 2017-03-15 2018-09-20 NuID, Inc. Methods and systems for universal storage and access to user-owned credentials for trans-institutional digital authentication
US20190036932A1 (en) * 2017-07-26 2019-01-31 International Business Machines Corporation Blockchain authentication via hard/soft token verification
US20190036914A1 (en) * 2017-07-26 2019-01-31 Secret Double Octopus Ltd. System and method for temporary password management
US20190144153A1 (en) 2017-11-13 2019-05-16 Multivac Sepp Haggenmüller Se & Co. Kg Packaging machine with a protective cover, a token fastening capsule arranged thereon as well as a method
US10523685B1 (en) 2018-08-22 2019-12-31 Estimote Polska Sp z o.o. System and method for verifying device security
US10448251B1 (en) * 2019-02-28 2019-10-15 At&T Mobility Ii Llc Blockchain authentication for mobile network access
US10693872B1 (en) 2019-05-17 2020-06-23 Q5ID, Inc. Identity verification system

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
Belenkiy, M et al., "Randomizable Proofs and Delegatable Anonymous Credentials", Crypto 2009, LNCS 5677, p. 108-125, 2009.
Boneh, D. et al., "Identity-Based Encryption from the Wiel Pairing", SIAM J of Computing, vol. 32, No. 3, p. 568-615, 2003.
Camenisch, J et al., "Design and Implementation of the idemix Anonymous Credential System", IBM Research, Zurich Research Laboratory, May 2003, p. 1-27, https://www.researchgate.net/publication/2570056_Design_and_Implementation_of_the_idemix_Anonymous_Credential_System.
Groth, J et al., "Efficient Non-Interactive Proof Systems for Bilinear Groups", Eurocrypt 2008, LNCS 4965, p. 416-432, 2008.
Paquin, C. et al., "U-Prove Cryptographic Specification V1.1 Revision 3" Microsoft Corporation, p. 1-23, Dec. 2013.
Paquin, C., "U-Prove Technology Overview V1.1 Revision 2", Microsoft Corporation, p. 1-23, Apr. 2013.
U.S. Office Action issued in U.S. Appl. No. 16/750,542, dated Oct. 1, 2021.

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220021537A1 (en) * 2020-07-14 2022-01-20 Visa International Service Association Privacy-preserving identity attribute verification using policy tokens

Also Published As

Publication number Publication date
US20220045861A1 (en) 2022-02-10
CA3048425A1 (en) 2020-01-03
US20200014537A1 (en) 2020-01-09

Similar Documents

Publication Publication Date Title
US11212102B2 (en) System and method for an electronic identity brokerage
US11700257B2 (en) System and method for storing and distributing consumer information
US11558398B2 (en) Selectivity in privacy and verification with applications
US11356262B2 (en) System and method for anonymous location verification
Camenisch et al. Anonymous attestation with subverted TPMs
US20230336567A1 (en) Selectivity in privacy and verification with applications
Yeh et al. A robust mobile payment scheme with smart contract-based transaction repository
Han et al. Zero-knowledge identity authentication for internet of vehicles: Improvement and application
Marcedone et al. Minimizing trust in hardware wallets with two factor signatures
Lee et al. Privacy-preserving identity management system
Garcia-Rodriguez et al. Implementation and evaluation of a privacy-preserving distributed ABC scheme based on multi-signatures
Addobea et al. Secure multi-factor access control mechanism for pairing blockchains
Prakasha et al. Automated user authentication in wireless public key infrastructure for mobile devices using Aadhar card
CA3050487A1 (en) System and method for storing and distributing consumer information
CA3069582A1 (en) System and method for anonymous location verification
Pape Authentication in insecure environments: using visual cryptography and non-transferable credentials in practise
Liang et al. An efficient blockchain-based anonymous authentication and supervision system
Mohammadpourfard et al. A new secure Internet voting protocol using Java Card 3 technology and Java information flow concept
Soler et al. A Privacy-preserving key transmission protocol to distribute QRNG keys using zk-SNARKs
US20230040203A1 (en) Method for deriving a partial signature with partial verification
Leontiadis et al. Secure and collusion-resistant data aggregation from convertible tags
Kaptchuk New Applications of Public Ledgers
Asaar et al. A provably secure identity‐based proxy ring signature based on RSA
Cheng et al. S-Cred: An accountable anonymous credential scheme with decentralized verification and flexible revocation
Hamila et al. Enhancing security in Fiat–Shamir transformation-based non-interactive zero-knowledge protocols for IoT authentication

Legal Events

Date Code Title Description
FEPP Fee payment procedure

Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS

STPP Information on status: patent application and granting procedure in general

Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS

Free format text: AWAITING TC RESP., ISSUE FEE NOT PAID

AS Assignment

Owner name: ROYAL BANK OF CANADA, CANADA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ORTIZ, EDISON U.;POURTABATABAIE, ARYA;SALTER, MARGARET INEZ;SIGNING DATES FROM 20200716 TO 20210825;REEL/FRAME:057491/0377

STPP Information on status: patent application and granting procedure in general

Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT RECEIVED

STPP Information on status: patent application and granting procedure in general

Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED

STCF Information on status: patent grant

Free format text: PATENTED CASE

STPP Information on status: patent application and granting procedure in general

Free format text: WITHDRAW FROM ISSUE AWAITING ACTION

STPP Information on status: patent application and granting procedure in general

Free format text: AWAITING TC RESP., ISSUE FEE NOT PAID

STPP Information on status: patent application and granting procedure in general

Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED

STCF Information on status: patent grant

Free format text: PATENTED CASE