Multi-party oracle-aided protocols and semi-honest privacy #
This module defines the party-structured syntax and execution semantics of synchronous m-party
protocols over pairwise private authenticated point-to-point channels with k-ary ideal oracle
calls (MultiOracleSpec), together with Goldreich's joint view-and-output definition of perfect
semi-honest privacy against static coalitions (PerfectSemiHonestPrivate).
Each party's view (PartyView) is derived from the protocol execution: it records only that
party's own input x i, its own private coins r i drawn from proto.sampleCoins i, the messages
addressed to i, and the oracle answer parts for slots assigned to i. In Round.Received,
message delivery to receiver has type (i = receiver) → Msg and oracle answer delivery has
type (s : Fin (spec.arity op)) → (parties s = i) → spec.Answer op s, so parties outside the
recipient set receive functions over an empty proof domain and transport under party embeddings is
definitional function composition. Each party's output (Protocol.outputOfView) is extracted
deterministically from its own PartyView.
Main definitions #
Cslib.Crypto.Protocols.MPC.MultiOracleSpec,Cslib.Crypto.Protocols.MPC.MultiOracleSpec.toOracleSpec,Cslib.Crypto.Protocols.MPC.MultiOracleWorld,Cslib.Crypto.Protocols.MPC.MultiOracleWorld.handler,Cslib.Crypto.Protocols.MPC.noOracleSpec,Cslib.Crypto.Protocols.MPC.noOracleWorld:k-ary ideal oracle specifications and memoryless worlds.Cslib.Crypto.Protocols.MPC.Round,Cslib.Crypto.Protocols.MPC.Schedule,Cslib.Crypto.Protocols.MPC.Round.Received,Cslib.Crypto.Protocols.MPC.Schedule.Received,Cslib.Crypto.Protocols.MPC.PartyView: synchronous communication schedules and derived per-party views.Cslib.Crypto.Protocols.MPC.Steps,Cslib.Crypto.Protocols.MPC.Protocol,Cslib.Crypto.Protocols.MPC.Protocol.outputOfView,Cslib.Crypto.Protocols.MPC.Steps.mapState,Cslib.Crypto.Protocols.MPC.Steps.append,Cslib.Crypto.Protocols.MPC.Steps.run,Cslib.Crypto.Protocols.MPC.Protocol.run,Cslib.Crypto.Protocols.MPC.Protocol.evalWith,Cslib.Crypto.Protocols.MPC.Protocol.realJoint: local step-by-step party strategies and their real execution semantics.Cslib.Crypto.Protocols.MPC.Functionality,Cslib.Crypto.Protocols.MPC.Functionality.ofDeterministic,Cslib.Crypto.Protocols.MPC.CoalitionSimulator,Cslib.Crypto.Protocols.MPC.idealJoint,Cslib.Crypto.Protocols.MPC.PerfectSemiHonestPrivate,Cslib.Crypto.Protocols.MPC.PerfectSemiHonestPrivateProper: ideal joint view-and-output execution and perfect semi-honest privacy.
Main results #
Cslib.Crypto.Protocols.MPC.Schedule.Received.split_append,Cslib.Crypto.Protocols.MPC.Schedule.Received.append_split: splitting and concatenating received transcripts along concatenated schedules.Cslib.Crypto.Protocols.MPC.Protocol.evalWith_eq,Cslib.Crypto.Protocols.MPC.Steps.evalWith_done,Cslib.Crypto.Protocols.MPC.Steps.evalWith_message,Cslib.Crypto.Protocols.MPC.Steps.evalWith_oracle: structural evaluation rules for protocols and steps.Cslib.Crypto.Protocols.MPC.PerfectSemiHonestPrivate.proper: full-coalition privacy implies proper-coalition privacy.Cslib.Crypto.Protocols.MPC.perfectSemiHonestPrivate_of_deterministic: for deterministic functionalities, matching the marginal coalition view distribution (Eq. 7.39, cf. Eqs. 7.7–7.8) together with output correctness on the support yields full joint view-and-output privacy (Eq. 7.40, cf. Eqs. 7.9–7.10).
References #
- O. Goldreich, Foundations of Cryptography, Volume 2: Basic Applications, Section 7.2.2.1 (Definition 7.2.1, pp. 620–622), Section 7.5.1.2 (Definition 7.5.1, pp. 696–697), and Section 7.5.2.1 (Definitions 7.5.5–7.5.6, pp. 701–702).
Multi-party oracle specifications and worlds #
Underlying OracleSpec of a MultiOracleSpec.
Instances For
A memoryless implementation (world) of spec.
Instances For
Combined PMF handler for ProbOracleComp spec.toOracleSpec in a memoryless world W.
Instances For
The empty multi-party oracle specification (plain point-to-point channel model).
Instances For
The unique world for noOracleSpec.
Instances For
Synchronous rounds, schedules, and received transcripts #
A single synchronous step in an m-party protocol over pairwise private point-to-point
channels and k-ary oracle spec.
- message {m : ℕ} {spec : MultiOracleSpec} (sender receiver : Fin m) (Msg : Type) : Round m spec
Point-to-point private message of type
Msgfromsendertoreceiver. - oracle {m : ℕ} {spec : MultiOracleSpec} (op : spec.Op) (parties : Fin (spec.arity op) ↪ Fin m) : Round m spec
Joint
k-ary oracle invocation ofopbykdistinct partiesparties.
Instances For
A fixed-schedule m-party protocol shape over spec.
Instances For
What party i receives in round r, using proof-domain functions so transport under
party embeddings is definitional function composition without if-casts.
Instances For
Deliver a point-to-point message msg to receiver; parties i ≠ receiver have an empty
proof domain i = receiver.
Instances For
Deliver oracle answer parts ans to the participating parties; for slots s with
parties s ≠ i, the proof domain parties s = i is empty.
Instances For
For a non-recipient i ≠ receiver, any two received-message records are equal.
Two received-message records at i are equal if they agree when i = receiver.
Two received-oracle records at i are equal if they agree on every slot assigned to i.
The sequence of values received by party i across all rounds of sc.
Instances For
Concatenate received transcripts along sc₁ and sc₂ into a transcript along sc₁ ++ sc₂.
Instances For
Party i's complete view of an execution along schedule sc (Goldreich Def. 7.2.1, p. 620).
- input : In i
Party
i's input. - coins : Coins i
Party
i's private random coins. - received : sc.Received i
Messages and oracle answers received by party
ialongsc.
Instances For
Party-structured protocols and execution semantics #
Local step-by-step party computations along schedule sc, with State and Out as indices
after the colon so Lean's kernel accepts the varying state type in next.
- done {m : ℕ} {spec : MultiOracleSpec} {State Out : Fin m → Type} (output : (i : Fin m) → State i → Out i) : Steps State Out []
End of interaction: each party
ideterministically computes its output from its local state. - message {m : ℕ} {spec : MultiOracleSpec} {State Out : Fin m → Type} {sender receiver : Fin m} {Msg : Type} {sc : Schedule m spec} (send : State sender → Msg) (next : Steps (fun (i : Fin m) => State i × (Round.message sender receiver Msg).Received i) Out sc) : Steps State Out (Round.message sender receiver Msg :: sc)
Point-to-point message round:
sendercomputesMsgfrom its local state,receiverreceives it, and execution continues with each party's state augmented by itsRound.Receivedrecord. - oracle {m : ℕ} {spec : MultiOracleSpec} {State Out : Fin m → Type} {op : spec.Op} {parties : Fin (spec.arity op) ↪ Fin m} {sc : Schedule m spec} (query : (s : Fin (spec.arity op)) → State (parties s) → spec.Query op s) (next : Steps (fun (i : Fin m) => State i × (Round.oracle op parties).Received i) Out sc) : Steps State Out (Round.oracle op parties :: sc)
Joint
k-ary oracle round: each participating partyparties scomputes its query part from its own local state, the oracle returns answer parts, and execution continues with each party's state augmented by itsRound.Receivedrecord.
Instances For
An m-party protocol along schedule sc.
Independent private coin sampler for each party
i.Interactive step-by-step party computations starting from
(input, coins).
Instances For
Extract party i's output from its own current local state st_i and its own remaining
received transcript recv_i along sc.
Instances For
Deterministic extraction of party i's output from its complete PartyView.
Instances For
Execute steps in ProbOracleComp spec.toOracleSpec from current local states st,
returning each party's received transcript along sc.
Instances For
Pinned execution of proto on input tuple x in ProbOracleComp spec.toOracleSpec:
samples each party's coins independently, runs proto.steps, and sets outputs to
fun i => proto.outputOfView i (views i) by definition.
Instances For
Evaluate steps.run st against W : MultiOracleWorld spec via OracleComp.evalWith.
Instances For
Evaluate proto.run x against W : MultiOracleWorld spec via OracleComp.evalWith.
Instances For
Precompose a step-by-step protocol computation with a local state transformation f.
Instances For
Sequentially compose steps₁ : Steps State Mid sc₁ (whose .done node computes each
party's intermediate state Mid i) with steps₂ : Steps Mid Out sc₂ along sc₁ ++ sc₂.
Instances For
Unfold proto.evalWith W x into independent coin sampling followed by
proto.steps.evalWith W.
Every supported outcome of proto.evalWith W x has outputs equal to proto.outputOfView of its
views.
Real joint distribution of the coalition I's views and all m parties' outputs when running
proto in world W on inputs x (Goldreich Def. 7.5.1, Eq. 7.40, p. 696).
Instances For
Ideal functionalities, coalition simulators, and semi-honest privacy #
Lift a deterministic m-party function to a Functionality.
Instances For
A simulator for a static coalition I : Finset (Fin m) receives the coalition's inputs
(i : I) → In i and the coalition's outputs (i : I) → Out i, and samples simulated views
(i : I) → PartyView In Coins sc i.
Instances For
Ideal joint view-and-output sampler (Goldreich Def. 7.2.1 Eqs. 7.9–7.10, p. 620; Def. 7.5.1
Eq. 7.40, p. 696): samples the full functionality output y ← f x, feeds the coalition's inputs
and outputs to the simulator S, and returns (v, y).
Instances For
Perfect semi-honest privacy for all static coalitions I : Finset (Fin m)
(Goldreich Def. 7.5.1, Eq. 7.40, p. 696; cf. Def. 7.2.1, Eqs. 7.9–7.10, p. 620).
Instances For
Perfect semi-honest privacy against all proper static coalitions I ≠ Finset.univ.
Instances For
Full-coalition perfect semi-honest privacy implies proper-coalition privacy.
Bridge lemma (Goldreich Def. 7.5.1, Eqs. 7.39–7.40, p. 696; cf. Def. 7.2.1, Eqs. 7.7–7.10,
p. 620, and equivalence remark on p. 621): for a deterministic functionality f, matching the
marginal coalition view distribution (Eq. 7.39, cf. Eqs. 7.7–7.8) together with perfect output
correctness on the support yields full joint view-and-output privacy (Eq. 7.40, cf. Eqs. 7.9–7.10).