Security of the Decentralized Anonymous Credentials
Authors define their system in terms of an ideal functionality implemented by a trusted party  that plays the role that system’s cryptographic constructions play in the real system. All communication takes place through this ideal trusted party. Security and correctness for the system come from a proof that this ideal model is indistinguishable from the real model provided the cryptographic assumptions hold.
- ):  logs into  with  to register a nym with organization . If she does not have an account, she first creates one. She gives  a unique random string .  checks that the string is indeed unique and if so stores  and informs .
 
- :  logs into  with . If Nym  is not  nym with  or  is wrong, reject. Otherwise,  checks that  justifies issuing a credential under  issuing policy and if so generates a unique random id  and stores . It then adds ID to its public list of issued credentials for .
 
- :  logs into  with  . If  is not  nym with  or  is not  nym with , reject. Else,  checks if the tuple  exists, if  associated with that tuple is in the set of credentials  that provided, and if the given attributes  match the attributes associated with that tuple. If all conditions hold,  informs V that  has a credential from  in the set .  then retrieves the set of credentials  issued by  from  and accepts  assertion if and only if  and  issuing policy is valid .
 
- :  retrieves the list of credentials for organization  and returns it.
 
Theorem 6.1 The basic distributed anonymous credential system described above is secure in the random oracle model under the Strong RSA and the Discrete Logarithm (DL) assumptions.
The approach is to show that for every real-world adversary  against the credential system, we can construct an ideal-world adversary  against the ideal-world system such that the transcript of  interacting with the real system is computationally indistinguishable from the transcript produced by  interacting with .
A. Description of the Simulator:
Minting a credential:
- When a user controlled by the adversary  wants a credential, she generates .
 
- When a simulator  receives the notification, verifies it and extract  from the knowledge extractor for the SoK on .  then checks if it has the record of  and extracts  (authentication key with ) . If  doesn’t hold this record, create it with  by interacting with .
 
-  runs  and then transmit to the trusted store and stores  in its list of granted credentials.
 
- When an honest user, through  , wants to establish a credential, the simulator creates a credential  (using the publicly available ) and uses the simulator for the signature of knowledge  to simulate the associated proof. It then transmits the credential information  to the trusted store.
 
Showing a credential:
The simulation works in similar to the Minting a credential, instead, the simulator  runs , where  is generated through a call to . Here,  extracts the private information from the knowledge extractor to the  created by the user (who was controlled by the adversary )
Proof (sketch) of a successful simulation:
Under the Discrete Logarithm assumption,  is a computational ZKSoK on  of the values  such that the nym  and the credential  both belong to the same master secret . An attacker might forge this message by identifying a collision on the commitments, which occurs with negligible probability under DL assumption.
Under the Strong RSA and Discrete Logarithm assumptions,  is a statistical NI-ZKPoK of the values  s.t.  is a witness that  is in the accumulator  and nym  and the credential  both belong to the same master secret . An attacker might forge this, by finding a collision on the commitment which occurs with negligible probability under DL assumption or forging the accumulator membership proof which occurs with negligible probability under the strong RSA assumption (collision-resistant property of the accumulator).
The simulator will fail at most with negligible property, as it deals with the ZKSoK and ZKPoK which have efficient extractors and simulators. The proofs  and  have knowledge extractors that succeed with probability . Since signatures and proofs are the sole point of failure for our simulator  described above, it fails with negligible probability.