Ideal $\text{OT}_1^4$, 2-Party Shared Multiplication, and Pairwise $m$-Party Reduction #
This module formalizes the shared-multiplication functionalities and oracle-aided privacy reductions from Goldreich's Foundations of Cryptography, Volume 2: Basic Applications:
- 1-out-of-4 Oblivious Transfer (
ot14Spec,ot14World): the asymmetric 2-party ideal oracle specification and world (Section 7.3.2, Eq. 7.20, print p. 640, for $k = 4$) in which slot0(sender) submits a 4-tuple of bitsFin 4 → Booland receivesUnit, while slot1(receiver) submits an indexFin 4and receives the selected bit. - $m$-Party Shared Multiplication (
sharedMulFunctionality,sharedMulSpec,sharedMulWorld): the randomized $m$-party functionality mapping $((a_1, b_1), \dots, (a_m, b_m))$ to uniform additive shares $(c_1, \dots, c_m) \in \{0, 1\}^m$ summing to $(\sum_i a_i) \cdot (\sum_i b_i)$ over $\mathrm{GF}(2)$ (BooleanRing Bool) (Section 7.3, Eqs. 7.17–7.18, print p. 635 for $m = 2$; Section 7.5.2, Eqs. 7.44–7.45, print p. 701 for general $m$). - 2-Party Shared Multiplication in the $\text{OT}_1^4$-Hybrid Model (
twoPartyMulProtocol,twoPartyMulSim,perfectSemiHonestPrivate_twoPartyMul): Construction 7.3.7 and Proposition 7.3.8 (Section 7.3.3, Eq. 7.21, print pp. 643–644), proved perfectly semi-honest private against every static coalitionI : Finset (Fin 2). - Pairwise $m$-Party Shared Multiplication Reduction (
multiPartyMulProtocol,multiPartyMulSim,perfectSemiHonestPrivate_multiPartyMul): Construction 7.5.8 and Proposition 7.5.9 (Section 7.5.2.2, Eqs. 7.46–7.47, print pp. 703–705), reducing $m$-party shared multiplication to pairwise invocations of the 2-party shared-multiplication oraclesharedMulSpec 2over all ordered pairs $i < j$, proved perfectly semi-honest private against every static coalitionI : Finset (Fin m).
Main definitions #
Cslib.Crypto.Protocols.MPC.ot14Spec,Cslib.Crypto.Protocols.MPC.ot14World: 2-party $\text{OT}_1^4$ oracle specification and ideal world.Cslib.Crypto.Protocols.MPC.sharedMulFunctionality,Cslib.Crypto.Protocols.MPC.sharedMulSpec,Cslib.Crypto.Protocols.MPC.sharedMulWorld: $m$-party shared-multiplication functionality, oracle specification, and ideal world.Cslib.Crypto.Protocols.MPC.twoPartyMulSchedule,Cslib.Crypto.Protocols.MPC.twoPartyMulProtocol,Cslib.Crypto.Protocols.MPC.twoPartyMulSim: Construction 7.3.7 and its coalition simulator.Cslib.Crypto.Protocols.MPC.multiPartyMulSchedule,Cslib.Crypto.Protocols.MPC.multiPartyMulProtocol,Cslib.Crypto.Protocols.MPC.multiPartyMulSim: Construction 7.5.8 and its coalition simulator.
Main results #
Cslib.Crypto.Protocols.MPC.perfectSemiHonestPrivate_twoPartyMul: Proposition 7.3.8 (print p. 644), perfect semi-honest privacy oftwoPartyMulProtocolinot14Worldagainst every static coalitionI : Finset (Fin 2).Cslib.Crypto.Protocols.MPC.perfectSemiHonestPrivate_multiPartyMul: Proposition 7.5.9 (print pp. 704–705), perfect semi-honest privacy ofmultiPartyMulProtocol minsharedMulWorld 2against every static coalitionI : Finset (Fin m).
References #
- O. Goldreich, Foundations of Cryptography, Volume 2: Basic Applications, Section 7.3 (Eqs. 7.17–7.18, p. 635), Section 7.3.2 (Eq. 7.20, p. 640), Section 7.3.3 (Construction 7.3.7, Eq. 7.21, Proposition 7.3.8, pp. 643–644), Section 7.5.2 (Eqs. 7.44–7.45, p. 701), and Section 7.5.2.2 (Eqs. 7.46–7.47, Construction 7.5.8, Proposition 7.5.9, pp. 703–705).
Ideal $\text{OT}_1^4$ and $m$-party shared multiplication #
Ideal memoryless world for ot14Spec (Goldreich Section 7.3.2, Eq. 7.20, p. 640): returns
() to the sender (slot 0) and (q 0) (q 1) to the receiver (slot 1).
Instances For
Construction 7.3.7 and Proposition 7.3.8: 2-party shared multiplication #
Schedule for twoPartyMulProtocol: a single joint 2-party invocation of ot14Spec with
party 0 as sender and party 1 as receiver.
Instances For
Coin sampler for twoPartyMulProtocol: party 0 samples a uniform bit; party 1 uses ().
Instances For
Output extraction function for twoPartyMulProtocol.
Instances For
Construction 7.3.7 (p. 643): 2-party shared multiplication in the ot14Spec-hybrid model.
Party 0 samples a uniform bit c₀, submits the 4-tuple of residual values
fun idx => twoPartyMulResidual (fin4ToBoolPair idx) (a₀, b₀) c₀ (Eq. 7.21, p. 643) as sender in
ot14Spec, and outputs c₀. Party 1 submits boolPairToFin4 (a₁, b₁) as receiver in
ot14Spec and outputs the received bit c₀ + (a₀ + a₁) * (b₀ + b₁).
Instances For
Received oracle record for party i in twoPartyMulProtocol when its output is yi.
Instances For
Reconstruct party i's complete PartyView in twoPartyMulProtocol deterministically from
its input xi : Bool × Bool and its output yi : Bool (Goldreich Proposition 7.3.8 Proof Sketch,
p. 644): for party 0, its coin is yi and its oracle answer is (); for party 1, its coin is
() and its oracle answer is yi.
Instances For
Coalition simulator for twoPartyMulProtocol (Goldreich Proposition 7.3.8, p. 644): each
corrupted party i ∈ I deterministically forms its view from its own input xI i and output
yI i.
Instances For
Proposition 7.3.8 (p. 644): Construction 7.3.7 is perfectly semi-honest private in ot14World
against every static coalition I : Finset (Fin 2).
Construction 7.5.8 and Proposition 7.5.9: pairwise $m$-party reduction #
Embedding of Fin 2 into Fin m sending 0 ↦ p.1.1 and 1 ↦ p.1.2 for an ordered pair
p : OrderedPair m.
Instances For
A party i that is neither p.1.1 nor p.1.2 receives a subsingleton record in
pairRound p.
Schedule of 2-party shared-multiplication oracle rounds for a list of ordered pairs L.
Instances For
Canonical list of all ordered pairs i < j in Fin m in lexicographic order.
Instances For
Schedule for multiPartyMulProtocol m: invokes sharedMulSpec 2 once for each ordered pair
i < j in orderedPairs m (Goldreich Construction 7.5.8, Step 1, p. 704).
Instances For
Step-by-step execution over a list of ordered pairs L, where each party's local state is
((a_i, b_i), acc_i) : (Bool × Bool) × Bool. In each round p ∈ L, p.1.1 and p.1.2 submit
their input pairs (a_i, b_i) to sharedMulSpec 2 and each party adds its received share
(extractPairShare p i) to acc_i.
Instances For
Construction 7.5.8 (p. 704): m-party shared multiplication in the 2-ary
sharedMulSpec 2-hybrid model, invoking sharedMulSpec 2 once for each pair i < j.
Party i initializes its accumulator to $m \cdot a_i b_i$ (m • ((x i).1 * (x i).2)), adds its
received share from every pair {i, j}, and outputs the resulting sum
$c_i = m a_i b_i + \sum_{j \neq i} c_i^{\{i, j\}}$.
Instances For
Construct party i's received transcript along pairsSchedule L from party i's row of
pairwise shares row_i : Fin m → Bool.
Instances For
Matrix of pairwise shares $C(r, x)_{i, j}$ generated by coin vector
r : OrderedPair m → Bool on input x:
- for
i < j, partyireceivesr ⟨(i, j), h⟩; - for
j < i, partyireceivesr ⟨(j, i), h⟩ + pairTarget x i j; - for
i = j,0.
Instances For
Symmetric zero-diagonal matrix associated with d : OrderedPair m → Bool.
Instances For
Output of party i in multiPartyMulProtocol m when the pairwise coin vector is r.
Instances For
Equations (7.46)–(7.47) (Goldreich Section 7.5.2.2, p. 703): for every coin vector r, the
sum of all m parties' outputs in Construction 7.5.8 equals $(\sum_i a_i) \cdot (\sum_i b_i)$.
Received transcript along pairsSchedule L generated by r : OrderedPair m → Bool.
Instances For
Coin adjustment supported on pairs incident to the pivot party ℓ : Fin m.
Instances For
Restriction-based presentation of delta ℓ depending only on Finset.univ.erase ℓ.
Instances For
Adjust coin vector r at pairs incident to ℓ so the protocol outputs equal y.
Instances For
Choose a pivot party outside I when I ≠ Finset.univ, or ⊤ when I = Finset.univ.
Instances For
Coin shift aligning matrixOfCoins x (r + sigmaShift I x) i with
matrixOfCoins (extendIn I (I.restrict x)) r i for all i ∈ I.
Instances For
Coalition simulator for multiPartyMulProtocol m (Goldreich Proposition 7.5.9, pp. 704–705).
Instances For
Proposition 7.5.9 (Goldreich Section 7.5.2.2, p. 704): multiPartyMulProtocol m privately
reduces m-party shared multiplication sharedMulFunctionality m to 2-party shared multiplication
sharedMulWorld 2 with perfect semi-honest security against all static coalitions
I : Finset (Fin m).