Decentralized Anonymous Credentials
Abstract | Anonymous credentials provide a powerful tool for making assertions about identity while maintaining privacy. However, a limitation of today’s anonymous credential systems is the need for a trusted credential issuer — which is both a single point of failure and a target for compromise. Furthermore, the need for such a trusted issuer can make it challenging to deploy credential systems in practice, particularly in the ad hoc network setting (e.g., anonymous peer-to-peer networks) where no single party can be trusted with this responsibility. In this work we propose a novel anonymous credential scheme that eliminates the need for a trusted credential issuer. Our approach builds on recent results in the area of electronic cash that, given a public append-only ledger, do not need a trusted credential issuer. Furthermore, given a distributed public ledger, as in, e.g., Bitcoin, our system requires no credential issuer at all and hence is decentralized. Using such a public ledger and standard cryptographic primitives, we propose and provide a proof of security for a basic anonymous credential system that allows users to make flexible identity assertions with strong privacy guarantees without relying on trusted parties. Finally, we discuss a number of practical applications for our techniques, including resource management in ad hoc networks and prevention of Sybil attacks. We implement our scheme and measure its efficiency. |
---|---|
Year | 2014 |
Link to the paper | https://www.cs.purdue.edu/homes/clg/files/NDSS14.pdf |
Relevance score | Very relevant |
Quality score | 4 |
Labels | Anonymous CredentialsDecentralized IssuerSybil resistance insights |
Introduction
Anonymous credentials provide a powerful tool for making assertions about identity while maintaining privacy. However, a limitation of anonymous credential systems is the need for a trusted credential issuer — which is both a single point of failure and a target for compromise.
In this paper, the authors propose a novel anonymous credential scheme that eliminates the need for a trusted credential issuer. Given an append-only decentralized ledger (e.g., Bitcoin), this scheme requires no credential issuer at all and hence it is decentralized.
Paper’s Contribution
- Decentralized Anonymous Credential System: Propose anonymous credential systems without needing a trusted and central credential issuer. To achieve this goal, the protocol requires the existence of a public append-only ledger.
- This ledger is maintained in a distributed manner that need not require a trusted party or parties. (Best possible implementation is blockchain)
- The identity claims used in issuing credentials must be verifiable by everyone participating in the system.
- The paper shows how to extend the proposed credential scheme to create updatable (e.g., stateful) anonymous credentials in which users obtain new credentials based on changing properties of their identity.
- The authors also show several immediate applications of Decentralized Anonymous Credentials
- Decentralized Direct Anonymous Attestation (dDAA): To decentralize the Direct Anonymous Attestation protocol, allowing individual collections of nodes in an ad hoc or distributed system to securely assert properties of their system state.
- Anonymous resource management in ad hoc networks: Peer-to-peer networks are vulnerable to impersonation attacks, where a single party simulates many different peers in order to gain an advantage against the network. The basic approach to mitigate those attacks is to construct an anonymous subscription service where parties may establish unique or costly pseudonyms (for example by submitting a valid TPM (Trusted Platform Module) credential or paying a sum of digital currency). They can then assert possession on their identity under a specific set of restrictions, e.g., a limit to the number of requests they can make in each time period (k-show credentials).
- Auditable credentials: These techniques may also be used to extend existing centralized credential systems by allowing for a public audit of issued credentials. This helps to guard against compromised credential issuers and allows the network to easily detect and revoke inappropriate credential grants. For example, in Direct Anonymous Attestation (DAA) one might want to prevent a malicious DAA authority from granting certificates to users who do not have a TPM or whose TPM did not attest.
Overview of the Construction
Issuing the credentials:
- The user establishes an identity and corresponding attributes
- The user attaches a vector commitment to her secret key , along with the identity and attribute strings contained in its identity assertion.
Example:
Identity: Validator public key or validator index
Attributes: missed_attestations, missed_blocks, etc.
Identity assertion: To show Authenticity proofs obtained from Oracles for accessing attributes
- The user includes a non-interactive proof that the credential is correctly constructed. The network will accept the identity assertion iff the assertion is considered correct and the proof is valid.
Showing Credentials:
The user proves the following statements in Zero-Knowledge -
- The user knows a commitment in the set of all credentials previously accept
- The user knows the opening (randomness) for the commitment.
- The user proves additional statements about the identity and attributes contained within the commitment .
Decentralized Anonymous Credentials
A traditional anonymous credential system has two types of participants: users and organizations.
Notations:
- User secret key:
- The pseudonym of user to organization :
- Credential:
- Set of the credentials issued by the Organization:
- The auxiliary information (for example, identity assertion, organization name, etc):
Note: In decentralized anonymous credentials no single party represents the organization. Instead, a quorum of users who enforce a specific credential-issuing policy and collaboratively maintain a list of credentials issued so far.
The distributed anonymous credentials consist of a global distributed ledger, a list of transaction semantics, and the following algorithms (possibly probabilistic) -
- : Generates the system parameters.
- : Run by a user to generate her secret key.
- : Run by a user to generate a pseudonym and an authentication key between a user U and some entity (either a user or an organization) E.
- :
- Run by a user to generate a request for a credential from the organization .
- The request consists of a candidate credential containing public attributes ; the user’s key ; auxiliary data justifying the granting of the credential (e.g., authenticity proofs from Oracles)
- a proof that (1) was issued to the same and (2) the credential embeds .
- : Run by nodes in the organization to validate a credential. Returns if is valid, otherwise.
- : Run by a user to non -interactively prove that a given set of attributes are in a credential in the set of issued credentials and that was issued to the same person who owns . Generates and returns a proof .
- : Run by a verifier to validate a shown credential. Return if is valid for , otherwise.
The description of how these algorithms are used in the decentralized anonymous credentials
A. Overview of the Protocol Semantics
In this system, authors integrate the above algorithms with a decentralized hash chain network (Blockchain) as follows.
Formulating a pseudonym: Generated by the user offline
- The user generates its secret key .
- A pseudonym for use with an organization .
Obtaining a credential:
- The user includes the public identity assertion into the
- She executes the routine to obtain a credential and a signature of knowledge (SoK) on .
- She then formulates a transaction including both the resulting credential and the auxiliary data and broadcasts it into the blockchain network.
- The network nodes verify the correctness of the credential and the identity assertion using the routine and auxiliary data.
Showing a credential:
- The user collects a set of credentials and verifies them using routine and validates auxiliary identity certification contained in (e.g., authenticity proofs from oracles for proving the performance of validator). She runs the routine.
- The Verifier also collects the set of credentials in and validates the credential using the routine.
B. Trusting the Ledger
Why is the append-only transaction ledger necessary?
If the list of valid credentials can be evaluated by a set of untrusted nodes, then a user (Prover) could simply maintain a credential list compiled from network broadcasts and provide this list to the Verifier during a credential show. Although the credentials are valid by issuing party (not broadcast to anyone else), a malicious Verifier manipulates the Prover’s view of the network to include a poisoned-pill credential. Since the distributed ledgers (e.g., Bitcoin, Namecoin, etc) provide a shared view among a large number of nodes (users) can solve the above problem.
Preliminaries
A. Complexity Assumptions
- Strong RSA Assumption: Given a randomly generated RSA modulus and a random element , it is hard to compute and , s.t. (mod ). The RSA modulus can be restricted to the form , where and are safe primes.
- Discrete Logarithmic (DL) Assumption: Let be a cyclic group with generator . Given , it is hard to compute such that .
B. Cryptographic Building Blocks
- Zero-knowledge Proofs:
- The notation denotes a non-interactive zero-knowledge proof of knowledge of the elements and that satisfy both , .
- When these proofs are used to authenticate auxiliary data, the resulting non-interactive proofs are called signatures of knowledge. The signature of knowledge on message is denoted as .
- Accumulators: The construction of these decentralized anonymous credentials uses accumulators on string RSA assumption.
- : On input a security parameter, it outputs . First samples primes (polynomial dependence on the ) and compute . Second, samples , .
- : On input and a set of prime numbers , compute the accumulator mod .
- : On input and a set of prime numbers , and a value , the witness .
- : compute mod and output iff .
Camenisch and Lysyanskaya’s https://cs.brown.edu/people/alysyans/papers/camlys02.pdf paper shows the following
- Incrementally updated: Given an existing accumulator it is possible to add an element and produce mod .
- Collision-resistance: Under strong RSA assumption, no PPT adversary can produce a pair such that and yet is satisfied.
- zero-knowledge proof of knowledge: To prove a committed value is in an accumulator (Accumulator membership proof).
- Verifiable Random Functions (VRF): A pseudorandom function (PRF) https://dl.acm.org/doi/10.1145/6490.6503 is an efficiently computable function whose output cannot be distinguished (with non-negligible advantage) from random by a computationally bounded adversary. Authors denote the pseudorandom function as , where is a randomly chosen key. VRFs possess efficient proofs that a value is the output of a VRF on a set of related public parameters.
- Pedersen Commitments: The public parameters are a group of prime order , and set of generators . In order to commit to the values , pick a random and compute
A CONCRETE INSTANTIATION
- : On input a security parameter, and generate . Next, generate primes such that for . Let be an order- subgroup of , and select random generators such that . Output .
- : On input a set of parameters , select and output a random master secret .
- : Given user’s secret key , select a random . Compute and set . Output .
- : Given a nym and its secret key ; attributes ; and auxiliary data , select a random and compute s.t. , set and output . Where is a signature of knowledge on that the nym and the credential both belong to the same master secret , i.e.:
submit to the public transaction ledger.
- : verify that is the signature of knowledge on . If the proof verifies successfully, output , otherwise output . The organization nodes should accept the credential to the ledger iff this algorithm returns .
- : Compute and . Output the following proof of knowledge:
- :
- First compute .
- Then, verify that is the aforementioned proof of knowledge on , and using the known public values. If the proof verifies successfully, output , otherwise output .
Extensions:
- k-show Credentials: In the system of https://eprint.iacr.org/2006/454.pdf, authority issues a credential on a user’s secret seed . To show a credential for the time in validity period ,
- The user generates a serial number using a verifiable random function (VRF) as along with NIZKP for the correctness of .
- Application to the above construction: The user simply generates a random seed and includes this value in the commitment to be included in the transaction ledger. For , the user provably evaluates the VRF on the seed plus a secret counter .
How does this extension reveal the user’s identity in the event of of the credential? (The intuition taken from the paper https://eprint.iacr.org/2006/454.pdf is as follows)
- In in time period , the user releases serial number , a double-show tag (for a random R supplied by the verifier).
- If a user shows e-tokens during the same time interval, then two of the e-tokens must use the same .
- The issuer (network nodes) can easily detect the violation and compute from the two double-show tags, and .
since, from the above two and
- Credentials with Hidden Attributes: The user might wish to conceal the attributes requested or shown, instead he proves statements about them, e.g. proving the knowledge of a private key or proving the attribute is within a certain range.
This can be achieved in two ways
- Use of multi-message commitments where each message is an attribute. This increases the size of the zero-knowledge proofs (linearly with the number of messages)
- To encode the attributes in one single value and then prove statements about that committed value rather than reveal it. For example, given a bit for a particular attribute is set to one, use the first bits of attribute one, use the next bits of attribute two, etc., and use range proofs for attributes.
- Stateful Credentials: A stateful anonymous credential system is a variant of an anonymous credential system where credential attributes encode some state that can be updated by issuing new credentials.
For example, an operator can update its validator performance credential based on the latest state of attributes (missed_attestation and missed_blocks, etc.).
This credential issuance is typically conditioned on the user showing a previous credential and offering proof that the new credential should be updated as a function of the original.
- : Given the previous credential information and new state , and an update relation , generate a fresh random serial number , and random value , compute the following and construct the proof
, where and
- : Given a stateful credential , a credential set , and proof , output if is correct, the proved state transition is a legal one, and the serial number was not previously used. Otherwise .
Integrating with Proof-of-work Bulletin Boards
Integration:
Namecoin provides a built-in storing of key-value pairs and scans the list of the existing list of names. Thus, we can scan credentials, validate and then accumulate them.
For Alice to obtain a credential, she:
- Purchase some name from the namespace by registering a public key
- Prepares a fresh credential with some attributes () and any supporting documentation necessary for her identity claim () and stores the private portion of the credential .
- Updates, using the public key from step 1, her registered name to contain a credential and its supporting documentation.
To show the credential to Bob, Alice:
- Scans the list of added names and retrieves all candidate credentials
- Checks the supporting documentation for each candidate and puts valid ones in .
- Runs and sends the result to Bob.
- Bob does steps and and computes .
- Bob runs on Alice’s supplied credential and to verify it
Supporting documentation and verification:
- registration fee, no verification is necessary.
- Digital signature to be verified.
- Some assertion about resource management, e.g. proof of storage/proof of retrievability to be verified in the case of TPM (Trusted Platform Module).
- Authentication proofs for accessing off-chain data from Oracles.
Operating cost:
- Fee for purchasing the names USD as on .
- A small fee for posting data on the blockchain (e.g., double spend tags and serial numbers in credentials).
Latency:
Depends on the block creation rate and the number of confirmations of the Blockchain network.
Applications
Mitigating Sybil attacks in ad hoc networks: One common approach is to require that clients solve proof-of-work (resource-consuming challenges) that typically involve either storage or computation. This allows clients to re-use the single proof-of-work in an anonymous fashion. One solution to this problem is to use anonymous credentials. This allows the peer to obtain a credential that can be used a limited number of times or a limited number of times within a given time period. When a peer exceeds the threshold (e.g., by cloning the credential for a Sybil attack), the credential can be identified and revoked. The paper https://ieeexplore.ieee.org/document/1698607 describes computational puzzles as Sybil defenses.
Performance:
There are four underlying operations:
- Minting a credential
- Verifying that the mint is correct
- Showing a credential
- Verifying that show.
Showing and verifying credentials also entails computing the accumulation of all or all but one of the current credentials. For each new credential added, the user updates both the accumulator and witness for which it intends to show the credential.
- The experiments we measured in seconds and were repeated for iterations.
- The complexity of the proof of knowledge generated during the credential show is reduced by parallelizing the independent computations.
..
References:
- Decentralized Anonymous Credentials, https://eprint.iacr.org/2013/622.pdf
- “Dynamic accumulators and application to efficient revocation of anonymous credentials,” in CRYPTO, 2002, http://cs.brown.edu/~anna/papers/camlys02.pdf.
- O. Goldreich, S. Goldwasser, and S. Micali, “How to construct random functions,” Journal of the ACM, 1986, https://dl.acm.org/doi/10.1145/6490.6503.
- Y. Dodis and A. Yampolskiy, “A verifiable random function with short proofs and keys,” ser. PKC, 2005, https://eprint.iacr.org/2004/310.pdf.