Uniform digital signature schemes and existential unforgeability #
A uniform digital signature scheme (SignatureScheme) consists of a strict probabilistic
polynomial-time key generator keyGen, a strict probabilistic polynomial-time signing algorithm
sign, and a deterministic polynomial-time verification algorithm verify that accepts every
signature produced by sign on an n-bit message under a key pair sampled at security parameter
n. The message space at parameter n is exactly the n-bit words; this module does not
claim security for arbitrary polynomial-length message families.
We formalize two adaptive chosen-message security notions against uniform strict oracle-PPT forgers
(IsOraclePPT):
- Existential unforgeability under adaptive chosen-message attack (
eufCmaGame,EUFCMA): the forger receives the unary security parameternand public verification keypk, has adaptive oracle access tosigningOracle skon arbitrary messages, and wins by outputting a valid(msg, sig)pair withmsg.length = nsuch thatmsgwas never queried to the signing oracle. - Existential unforgeability under one-time adaptive chosen-message attack (
eufOneTimeGame,OneTimeEUFCMA): the signing oracleoneTimeSigningOracle skanswers at most the first signing query and returns the empty word on any subsequent query. EveryEUFCMA-secure scheme is a fortioriOneTimeEUFCMA-secure (SignatureScheme.EUFCMA.oneTimeEUFCMA).
Main definitions #
Cslib.Crypto.Forger: adaptive oracle adversary outputting a(message, signature)pair.Cslib.Crypto.SignatureScheme: uniform digital signature scheme onn-bit messages.Cslib.Crypto.SignatureScheme.signingOracle,eufCmaGame,EUFCMA: full adaptive EUF-CMA experiment and security predicate.Cslib.Crypto.SignatureScheme.oneTimeSigningOracle,eufOneTimeGame,OneTimeEUFCMA: one-time adaptive EUF-CMA experiment and security predicate.
Main results #
Cslib.Crypto.SignatureScheme.isPPTOn_eufCmaGame,isPPT_eufCmaGame: strict PPT certificates for the full EUF-CMA experiment.Cslib.Crypto.SignatureScheme.isPPTOn_eufOneTimeGame,isPPT_eufOneTimeGame: strict PPT certificates for the one-time EUF-CMA experiment.Cslib.Crypto.SignatureScheme.EUFCMA.oneTimeEUFCMA: full EUF-CMA security implies one-time EUF-CMA security.
References #
An adaptive forger receives a unary security parameter and a public verification key, queries a
signing oracle on chosen messages, and outputs a candidate (message, signature) pair.
Instances For
A uniform digital signature scheme on n-bit messages at security parameter n, with strict
polynomial-time key generation and signing, deterministic polynomial-time verification, and perfect
completeness on supported key pairs, n-bit messages, and signatures.
Sample a public verification key and secret signing key
(pk, sk)at unary parametern.Sign a message
msgusing the secret signing keysk.Deterministically verify a candidate signature
sigonmsgunder public keypk.- keyGen_ppt : Probability.IsPPTOn Turing.MultiTapeTM.encUnary (Turing.MultiTapeTM.encPair Turing.MultiTapeTM.encBits Turing.MultiTapeTM.encBits) self.keyGen
Key generation is uniformly strict PPT in the unary security parameter.
- sign_ppt : Probability.IsPPTOn (Turing.MultiTapeTM.encPair Turing.MultiTapeTM.encBits Turing.MultiTapeTM.encBits) Turing.MultiTapeTM.encBits fun (p : List Bool × List Bool) => self.sign p.1 p.2
Signing is uniformly strict PPT in the encoded secret key and message.
- verify_polyTime : Turing.MultiTapeTM.ComputableInPolyTime (fun (p : List Bool × List Bool × List Bool) => self.verify p.1 p.2.1 p.2.2) (Turing.MultiTapeTM.encPair Turing.MultiTapeTM.encBits (Turing.MultiTapeTM.encPair Turing.MultiTapeTM.encBits Turing.MultiTapeTM.encBits)) Turing.MultiTapeTM.encBool
Verification is computable in plain polynomial time on
(pk, msg, sig).
Instances For
The equivalent tidy contract used internally by compositional proofs.
Stateful signing oracle that signs the requested message under sk and prepends the message to
the list of queried messages.
Instances For
The EUF-CMA experiment: sample (pk, sk) ← S.keyGen n, run the adaptive forger on (n, pk)
with oracle access to S.signingOracle sk, and accept when the forger outputs a valid signature on
an n-bit message that was never queried to the signing oracle.
Instances For
Run the complete EUF-CMA experiment on its unary security parameter for any oracle-PPT forger.
The EUF-CMA experiment is uniformly strict PPT, independently of unused auxiliary input.
Existential unforgeability under adaptive chosen-message attack (EUF-CMA) against uniform strict oracle-PPT adversaries.
Instances For
Full EUF-CMA security gives negligible forgery probability for every oracle-PPT forger.
Establish EUF-CMA security by bounding every oracle-PPT forger's success probability.
One-time adaptive chosen-message security (OneTimeEUFCMA) #
One-time signing oracle that answers at most the first signing query using S.sign sk and
returns the empty word without signing on any subsequent query.
Instances For
The one-time EUF-CMA experiment: sample (pk, sk) ← S.keyGen n, run the adaptive forger on
(n, pk) with oracle access to S.oneTimeSigningOracle sk (which answers at most one signing
query), and accept when the forger outputs a valid signature on an n-bit message distinct from
the queried message (if any).
Instances For
Running an oracle-PPT forger against oneTimeSigningOracle is uniformly strict PPT in the
unary security parameter, public key, and secret key.
Run the complete one-time EUF-CMA experiment on its unary security parameter for any oracle-PPT forger.
The one-time EUF-CMA experiment is uniformly strict PPT, independently of unused auxiliary input.
Existential unforgeability under one-time adaptive chosen-message attack against uniform strict oracle-PPT adversaries.
Instances For
One-time EUF-CMA security gives negligible forgery probability for every oracle-PPT forger.
Establish one-time EUF-CMA security by bounding every oracle-PPT forger's success probability.
Starting from the empty query log, oneTimeSigningOracle records at most one queried
message.
If S.sign sk₁ and S.sign sk₂ agree on all requests satisfying agree, then running any
adaptive program against oneTimeSigningOracle under sk₁ and sk₂ assigns the same probability
to every outcome (a, queried') whose recorded query log satisfies agree.
Reduction from one-time EUF-CMA to full EUF-CMA #
Open stateful handler that forwards at most the first signing request to the external signing
oracle (truncating the reply to bound n msg.length) and answers subsequent requests with [].
Instances For
Full EUF-CMA security implies one-time EUF-CMA security.