public class DamgardTechnique extends java.lang.Object implements SigmaProtocol
Damgard's Technique is applied on a given Sigma-Protocol. A given commitment scheme is used to achieve the security improvement by changing the original given Sigma-Protocol in the following way:
The result of Damgard's Technique is a 'Concurrent black-box zero knowledge three-way interactive argument of knowledge'.
| Modifier and Type | Field and Description |
|---|---|
protected CommitmentScheme |
commitmentScheme |
protected SigmaProtocol |
innerProtocol |
PROVER_ROLE, VERIFIER_ROLE| Constructor and Description |
|---|
DamgardTechnique(SigmaProtocol innerProtocol,
CommitmentScheme commitmentScheme) |
| Modifier and Type | Method and Description |
|---|---|
protected PlainText |
announcementToCommitmentPlaintext(Announcement innerAnnouncement) |
org.cryptimeleon.math.expressions.bool.BooleanExpression |
checkTranscriptAsExpression(CommonInput commonInput,
Announcement announcement,
Challenge challenge,
Response response)
Used by the verifier to check whether the given transcript is accepting.
|
void |
debugProof(CommonInput commonInput,
SecretInput secretInput)
Checks if commonInput and secretInput are valid inputs for this protocol.
|
Announcement |
generateAnnouncement(CommonInput commonInput,
SecretInput secretInput,
AnnouncementSecret announcementSecret)
Used by the prover to generate an announcement (the first message sent in the protocol).
|
DamgardAnnouncementSecret |
generateAnnouncementSecret(CommonInput commonInput,
SecretInput secretInput)
Used by the prover to generate a secret value that will be input for future method calls.
|
Challenge |
generateChallenge(CommonInput commonInput)
Used by the verifier to generate a challenge (the second message in the protocol).
|
static CommitmentScheme |
generateCommitmentScheme(org.cryptimeleon.math.structures.groups.Group group) |
Response |
generateResponse(CommonInput commonInput,
SecretInput secretInput,
Announcement announcement,
AnnouncementSecret announcementSecret,
Challenge challenge)
Used by the prover to generate a response (the third and last message sent in the protocol).
|
SigmaProtocolTranscript |
generateSimulatedTranscript(CommonInput commonInput,
Challenge challenge)
Generates a random transcript with the same distribution as an honestly generated one that contains the given
Challenge. |
ChallengeSpace |
getChallengeSpace(CommonInput commonInput)
Returns the challenge space used by this protocol.
|
org.cryptimeleon.craco.protocols.arguments.damgardtechnique.DamgardAnnouncement |
restoreAnnouncement(CommonInput commonInput,
org.cryptimeleon.math.serialization.Representation repr) |
Challenge |
restoreChallenge(CommonInput commonInput,
org.cryptimeleon.math.serialization.Representation repr) |
org.cryptimeleon.craco.protocols.arguments.damgardtechnique.DamgardResponse |
restoreResponse(CommonInput commonInput,
Announcement announcement,
Challenge challenge,
org.cryptimeleon.math.serialization.Representation repr) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitcheckTranscript, checkTranscript, compressTranscript, decompressTranscript, getFirstMessageRole, getProverInstance, getVerifierInstance, instantiateProtocol, restoreTranscriptgetRoleNames, instantiateProver, instantiateVerifierrunProtocolLocallyprotected SigmaProtocol innerProtocol
protected CommitmentScheme commitmentScheme
public DamgardTechnique(SigmaProtocol innerProtocol, CommitmentScheme commitmentScheme)
innerProtocol - the sigma protocol to transformcommitmentScheme - a commitment scheme for arbitrary bit strings (ByteArrayImplementation)public DamgardAnnouncementSecret generateAnnouncementSecret(CommonInput commonInput, SecretInput secretInput)
SigmaProtocolFor example, for an implementation of the original Schnorr protocol, the announcement secret would be a random exponent r.
generateAnnouncementSecret in interface SigmaProtocolcommonInput - input to the overall protocol that both prover and verifier usesecretInput - input to the overall protocol that only the prover getspublic Announcement generateAnnouncement(CommonInput commonInput, SecretInput secretInput, AnnouncementSecret announcementSecret)
SigmaProtocolgenerateAnnouncement in interface SigmaProtocolpublic Challenge generateChallenge(CommonInput commonInput)
SigmaProtocolgenerateChallenge in interface SigmaProtocolpublic Response generateResponse(CommonInput commonInput, SecretInput secretInput, Announcement announcement, AnnouncementSecret announcementSecret, Challenge challenge)
SigmaProtocolgenerateResponse in interface SigmaProtocolpublic org.cryptimeleon.math.expressions.bool.BooleanExpression checkTranscriptAsExpression(CommonInput commonInput, Announcement announcement, Challenge challenge, Response response)
SigmaProtocolcheckTranscriptAsExpression in interface SigmaProtocolpublic SigmaProtocolTranscript generateSimulatedTranscript(CommonInput commonInput, Challenge challenge)
SigmaProtocolChallenge.generateSimulatedTranscript in interface SigmaProtocolpublic org.cryptimeleon.craco.protocols.arguments.damgardtechnique.DamgardAnnouncement restoreAnnouncement(CommonInput commonInput, org.cryptimeleon.math.serialization.Representation repr)
restoreAnnouncement in interface SigmaProtocolpublic Challenge restoreChallenge(CommonInput commonInput, org.cryptimeleon.math.serialization.Representation repr)
restoreChallenge in interface SigmaProtocolpublic org.cryptimeleon.craco.protocols.arguments.damgardtechnique.DamgardResponse restoreResponse(CommonInput commonInput, Announcement announcement, Challenge challenge, org.cryptimeleon.math.serialization.Representation repr)
restoreResponse in interface SigmaProtocolpublic ChallengeSpace getChallengeSpace(CommonInput commonInput)
SigmaProtocolgetChallengeSpace in interface SigmaProtocolprotected PlainText announcementToCommitmentPlaintext(Announcement innerAnnouncement)
public static CommitmentScheme generateCommitmentScheme(org.cryptimeleon.math.structures.groups.Group group)
public void debugProof(CommonInput commonInput, SecretInput secretInput)
InteractiveArgumentdebugProof in interface InteractiveArgument