Textbook UC vocabulary over the abstract open-system theory #
This file gives a thin, presentation-layer reading of the abstract
OpenTheory / execution infrastructure in the standard Canetti-style UC
vocabulary: Protocol, Functionality, Adversary, Environment,
Simulator, and an explicit execution experiment EXEC.
The point of this file is faithfulness. The contextual-equivalence
form ObservedCompEmulates sem ε π F quantifies uniformly over arbitrary plugs
K : T.Plug Δ under a user-chosen observation semantics. That is
mathematically useful, but it is not by itself the textbook execution
experiment. The paper-level form UCSecure exec ε π F fixes that by taking
an explicit Execution T and using ∀ A. ∃ S. ∀ Z-quantification over
real-world adversaries A, simulators S, and environments Z.
The bridge observedCompEmulates_toUCSecure_id (this file) shows that
semantic emulation implies textbook UC security with the identity
simulator S := A, exposing a single plug
K(A, Z) : T.Plug Δ.toPort via OpenTheory.plug_wire_left and then
applying ObservedCompEmulates at that plug.
The converse direction (textbook UC implies plug-level
ObservedCompUCSecure) goes through Canetti's dummy-adversary theorem and is
packaged as the reusable capability HasDummyAdversaryFactor.
Main definitions #
ProtocolBoundary: a pair of port boundaries(main, adv)for the environment-facing and adversary-facing sides of a protocol.ProtocolBoundary.toPort: the combinedmain ⊗ advport boundary.Protocol T Δ,Functionality T Δ: open systems exposingΔ.toPort.Adversary T Δ back: an open system atswap Δ.adv ⊗ back; the back-channelbackcarries communication between the adversary and the environment.Environment T Δ back: an open system atswap Δ.main ⊗ swap back, which is definitionally aT.Plug (Δ.main ⊗ back).Simulator T Δ back: a function from real-world adversaries to ideal-world adversaries on the same back-channel.dummyAdversary: the canonical bidirectional relayidWire Δ.adv : Adversary T Δ Δ.advfromHasIdWire.EXEC π A Z: the closed systemT.close (T.wire π A) Z.Execution T: a concrete distributional interpretation of closed systems as UC execution outputs.UCSecure exec ε π F: textbook computational UC security∀ back A. ∃ S. ∀ Z. exec.distAdvantage (EXEC π A Z) (EXEC F S Z) ≤ ε.
Main results #
observedCompEmulates_toUCSecure_id:ObservedCompEmulates sem ε π FimpliesUCSecure (Execution.ofSemantics sem) ε π Fwith the identity simulatorS := A.
Standard UC roles #
A protocol's boundary signature: a pair of port boundaries recording the two directed interfaces a protocol exposes.
mainis the interface to the environment / honest parties (inputs in, outputs out).advis the interface to the adversary / network (network packets, scheduling tokens, leakage, etc.).
Both sides are full PortBoundarys rather than bare Interfaces
because each direction generally carries traffic in both directions.
- main : PortBoundary
Interface to the environment / honest parties.
- adv : PortBoundary
Interface to the adversary / network.
Instances For
A protocol is an open system exposing its full
(main ⊗ adv) boundary.
Instances For
A functionality is the ideal-world counterpart of a protocol; the same type, used as the trusted reference object.
Instances For
An adversary speaks to the protocol over the swapped adv side
and to the environment over a back-channel back.
Instances For
An environment speaks to the protocol over the swapped main
side and to the adversary over the swapped back-channel. By
definitional equality of swap and tensor, this is exactly a
T.Plug (PortBoundary.tensor Δ.main back).
Instances For
A simulator maps a real-world adversary to an ideal-world adversary on the same back-channel.
This is the lightweight presentation form. A more structural variant
keeps the simulator as an open system on
Δ.adv ⊗ swap Δ.adv and applies it via wire; both variants are
interconvertible in any compact-closed OpenTheory.
Instances For
The dummy adversary: the canonical bidirectional relay between
the adversary's view of the protocol (swap Δ.adv) and the
environment's view of that same channel (Δ.adv on the back-channel).
It is the coevaluation idWire Δ.adv provided by HasIdWire.
Instances For
The execution experiment #
EXEC π A Z is the closed-system execution obtained by wiring the
protocol π to the adversary A along their shared adv boundary,
and then closing the result against the environment Z.
By definitional equality of swap (X ⊗ Y) with swap X ⊗ swap Y,
the type of Z is exactly the T.Plug of the wired result, so no
explicit boundary transport is needed.
Instances For
Textbook UC security #
UCSecure exec ε π F is the textbook computational UC security
statement: for every adversary A, there exists a simulator S such
that no environment Z can distinguish the real-world execution
EXEC π A Z from the ideal-world execution EXEC F S Z with
advantage greater than ε.
The quantifier structure ∀ back A. ∃ S. ∀ Z is exactly Canetti's
formulation; in particular, the simulator may depend on the adversary
but not on the environment. The back-channel back is universally
quantified to allow the environment-adversary side-channel to be
arbitrary.
Instances For
Bridge from observed emulation #
Computational emulation ObservedCompEmulates sem ε π F implies textbook UC
security for the observation-induced execution
Execution.ofSemantics sem, with the identity simulator S := A.
The existential simulator is witnessed by the real-world adversary itself.
The proof rewrites both EXEC π A Z and EXEC F A Z via
OpenTheory.plug_wire_left, exposing the same plug
K(A, Z) : T.Plug Δ.toPort on both sides, and then applies the
ObservedCompEmulates hypothesis at that single plug.
Structural capability for Canetti's dummy-adversary factorization.
Compact closure gives the wiring primitives, but the textbook-to-plug UC direction also needs a decomposition principle for arbitrary plugs into an adversary/environment pair. The concrete syntax models can provide that principle as an instance of this class.
- par_comm {Δ₁ Δ₂ : PortBoundary} (W₁ : T.Obj Δ₁) (W₂ : T.Obj Δ₂) : T.map (PortBoundary.Equiv.tensorComm Δ₁ Δ₂).toHom (T.par W₁ W₂) = T.par W₂ W₁
- par_leftUnit {Δ : PortBoundary} (W : T.Obj Δ) : T.map (PortBoundary.Equiv.tensorEmptyLeft Δ).toHom (T.par HasUnit.unit W) = W
- par_rightUnit {Δ : PortBoundary} (W : T.Obj Δ) : T.map (PortBoundary.Equiv.tensorEmptyRight Δ).toHom (T.par W HasUnit.unit) = W
- wire_comm {Δ₁ Γ Δ₂ : PortBoundary} (W₁ : T.Obj (Δ₁.tensor Γ)) (W₂ : T.Obj (Γ.swap.tensor Δ₂)) : T.wire W₁ W₂ = T.map (PortBoundary.Equiv.tensorComm Δ₂ Δ₁).toHom (T.wire (T.map (PortBoundary.Equiv.tensorComm Γ.swap Δ₂).toHom W₂) (T.map (PortBoundary.Equiv.tensorComm Δ₁ Γ).toHom W₁))
- wire_idWire (Γ : PortBoundary) {Δ₂ : PortBoundary} (W₂ : T.Obj (Γ.swap.tensor Δ₂)) : T.wire (HasIdWire.idWire Γ) W₂ = W₂
- wire_idWire_right (Γ : PortBoundary) {Δ₁ : PortBoundary} (W₁ : T.Obj (Δ₁.tensor Γ)) : T.wire W₁ (HasIdWire.idWire Γ) = W₁
- toObservedCompUCSecure_dummy {sem : Semantics T} {ε : ℝ} {Δ : ProtocolBoundary} {π F : Protocol T Δ} : UCSecure (Execution.ofSemantics sem) ε π F → ∃ (SimSpace : Type u) (simulate : SimSpace → T.Plug Δ.toPort → T.Plug Δ.toPort), ObservedCompUCSecure sem ε π F SimSpace simulate
Instances
Dummy-adversary direction.
Textbook UC security UCSecure exec ε π F implies the plug-level
simulator-based form ObservedCompUCSecure: given the existential simulator
from UCSecure instantiated at the dummy adversary, one constructs
a T.Plug Δ.toPort-level simulator by repackaging the
adversary-environment pair through the zig-zag identity
wire_idWire_right.
This is the content of Canetti's dummy-adversary theorem (cf. Canetti
'01, Thm 4.16). The non-formalized structural decomposition is now an
explicit reusable assumption, HasDummyAdversaryFactor, rather than a
local proof hole.