Work of Camenisch and Lysyanskaya on Anonymous Credentials
Abstract | [From the paper “Signature Schemes with Efficient Protocols” by Camenisch and Lysyanskaya] Digital signature schemes are a fundamental cryptographic primitive, of use both in its own right, and as a building block in cryptographic protocol design. In this paper, we propose a practical and provably secure signature scheme and show protocols (1) for issuing a signature on a committed value (so the signer has no information about the signed value), and (2) for proving knowledge of a signature on a committed value. This signature scheme and corresponding protocols are a building block for the design of anonymity-enhancing cryptographic systems, such as electronic cash, group signatures, and anonymous credential systems. The security of our signature scheme and protocols relies on the Strong RSA assumption. These results are a generalization of the anonymous credential system of Camenisch and Lysyanskaya. |
---|---|
Year | 2000-2005 |
Link to the paper | https://link.springer.com/chapter/10.1007/978-3-540-28628-8_4 |
Relevance score | Relevant |
Quality score | 5 |
Labels | Anonymous CredentialsClassic referenceGood reference sourceSignature schemeVerifiable Credentials |
In this note we provide a brief overview of some classical work on Anonymous Credentials (AC). The motivation for doing so is due to:
- Some of these works are used as primitives in some bigger projects.
- For completeness and academic purposes.
- The papers are heavily cited (some have over 1000 citations).
Introduction
Camenisch and Lysyanskaya are central authors in the Anonymous Credential (AC) literature published around 2000-2005.
Their methods for constructing ACs have appeared as a primitive in some other papers and projects we have reviewed (see below). Additionally, they are heavily cited.
Their schemes are sometimes referred to as “classical Anonymous Credential systems” (see, e.g. the paper from Zero-knowledge credentials with deferred revocation checks)
Next, we list some papers by these two authors. We also mention other projects where such references have been used.
- A signature Scheme with Efficient Protocols (2002): A small variation of the AC scheme presented there is used in Towards Smart Contract-based Verification of Anonymous Credentials. It is also natively supported in Hyperledger Indy.
The primitives are based on the strong RSA assumption.
The scheme variation appears in Efficient Attributes for Anonymous Credentials (2010) (Camenisch and Gross).
- An Efficient System for Non-transferable Anonymous Credentials with Optional Anonymity Revocation (2001), used (a variation) in Zero-knowledge credentials with deferred revocation checks (Microsoft’s paper)
- Signature Schemes and Anonymous Credentials from Bilinear Maps (2004). Primitives are based on a variation of the Discrete Log assumption. This variation holds generically in the plain model
- Dynamic Accumulators and Application to Efficient Revocation of Anonymous Credentials (2002). See our note on this paper here.
- Signature schemes and applications to cryptographic protocol design (2002). Lysyanskaya’s thesis.
- Anonymous Credentials Light (2013). This note is interesting due to the light cryptography it relies on (which would make an on-chain implementation cheaper than, say, the more basic approach presented in this note). See our note on this paper here.
Abstract primitives
The authors define an AC to be an Issuer’s signature on the Holder’s private key and perhaps some further attributes.
To create and use such ACs, they build the following primitives:
- A signature scheme.
- A Protocol A that allows a party H (the holder, in our case) to commit to a value , and another party S (the issuer) to sign . This must occur without S learning anything about .
- Another Protocol B that allows to prove knowledge of a signature on a committed value.
With these, the Holder can obtain a signature on its secret key , with the Issuer never learning . This allows the Holder to remain anonymous.
Additionally, the Holder can now prove to a Verifier that it knows a signature from the Issuer on . Again, no private data is leaked.
Remark 1 — Strong privacy goals
This emphasis on the Holder remaining anonymous to the Issuer is stronger than in other projects we have reviewed, such as W3C’s specification (where it is not discouraged nor recommended, and it is barely discussed).
Remark 2 — Why sign the secret key
Why sign and not the Holder’s public key ? Because if the AC was a signature on, say, , anyone could impersonate the Holder.
Remark 3 — Efficiency constraints
In principle, Protocol A could be realized by a 2-party computation protocol; and Protocol B could be realized by a ZK proof of knowledge.
However, around 2000-2005 these primitives were not efficient enough. As a result, part of the two author’s work is motivated by the need of circumventing these two technical limitations.
Anonymous Credential system from the paper “A signature scheme with efficient protocols”
In this section, we describe a variation of the AC scheme presented in the paper “A signature scheme with efficient protocols” by Camenisch and Lysyanskaya.
The variation appears in the paper “Efficient Attributes for Anonymous Credentials” by Camenisch and Gross. It is the scheme used in the paper Towards Smart Contract-based Verification of Anonymous Credentials and it is natively supported in Hyperledger Indy.
The variation defines an AC as an Issuer’s signature on the Holder’s secret key , together with some attributes . The scheme allows for efficient selective disclosure of attributes during verification time.
The original scheme of Camenisch and Lysyanskaya did not support the usage of attributes.
Strong RSA assumption
The security of the scheme relies on the following assumption:
Strong RSA assumption Given an RSA modulus (with being “safe primes”) and a random element , it is hard to compute and an integer such that ,
It differs from the usual RSA assumption in that the adversary is able to choose the exponent .
It holds “generically” in the plain model.
- Plain model: Does not assume the existence of random oracles.
- Genericity: Roughly, this is a scenario where algorithms are only allowed to use group operations and equality checks.
Camenisch-Lysyanskaya (CL)-signatures
Parameters: . The parameter is the security parameter.
Key generation: Choose an -bit RSA modulus . Choose uniformly random , where denotes the set of quadratic residues of , i.e. the set of squares of .
The public key is .
The secret key is .
Message space:
Here denotes the set of all positive integers of up to bits, together with all their additive inverses.
In the AC scheme, is the Holder’s secret key, and are the Holder’s attributes.
Signing algorithm:
On input , choose a random prime and a random integer of sufficient bit length ( and .
Compute
(this is done by finding such that and taking )
The signature is .
Verification algorithm
To verify that is a signature on , one checks that Equation (1) holds by asserting:
Additionally one also checks that for all (i.e. the message has the correct shape) and that (i.e. is in the correct range).
Theorem [Camenisch and Lysyanskaya] Under the strong RSA assumption, this signature scheme is secure against an attacker with adaptive chosen messages
(i.e., that’s an attacker that has an oracle for generating signatures on messages of ’s choice, and its goal is to create valid signatures without the use of the oracle (I don’t know if it is secure for existential forgeries or selective forgeries)).
Protocol B: Proving ownership of a CL signature
The goal is to allow a signature holder to prove it has a valid signature from the signature issuer without revealing the message signed, nor the signature (this is for unlinkability purposes).
We will use zero-knowledge proofs of knowledge of discrete logarithms. I.e. a protocol that allows to, given , prove in ZK that one knows such that
.
With such a proof of knowledge, the signature holder could reveal , and then prove in ZK that it knows such that
Recall that in our AC scheme the signature is treated as an Anonymous Credential. The protocol just described would be used to verify a credential without revealing its contents (= the signed message).
However, as is, each time the same credential is verified, the same value is revealed. This makes the verification of credentials linkable.
Below we see how to avoid revealing .
(Note: For simplicity, we omit some technicalities, such as the fact that the elements and need to be “range-checked”)
Other than that, it can be seen that proving knowledge of such tuple essentially implies that someone who knows the secret key has provided the holder with
How to avoid revealing ?
Notice that if is a valid signature on , then for any integer ,
is also a valid signature. Indeed:
Hence, instead of revealing , the signature holder can choose a random , reveal , and follow the strategy outlined previously to prove that it knows such that .
In this case, the information revealed will be different each time this subprotocol is executed, making credential verification unlinkable.
Note: to switch on linkability, simply stop sampling reveal during verification.
This can be interesting to prevent double usage of the same credential.
Protocol A: Signing a committed message with the signer not learning the message
Let be a message held by the Holder.
Commitment
To commit we use a Pedersen-type commitment. Namely, we take parameters be random elements. Then, to commit , the Holder chooses a random integer and sets
(Note: This commitment scheme is normally used in groups where the Discrete Log is hard, and not in RSA groups, but Damgard and Fujisaki showed that it can be used on an RSA group to commit integers of arbitrary size).
Signing on the committed message
Suppose the Holder has published a commitment to its message .
Then the Holder chooses a random integer and publishes
Next, the Holder proves in zero-knowledge that and are Pedersen commitments to the same message using a dedicated subprotocol.
Now the Signer proceeds as in the original signing algorithm, computing
for some random , , and publishing as the signature.