Documentation

VCVio.Interaction.UC.Standard

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 #

Main results #

Standard UC roles #

A protocol's boundary signature: a pair of port boundaries recording the two directed interfaces a protocol exposes.

  • main is the interface to the environment / honest parties (inputs in, outputs out).
  • adv is 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.

  • Interface to the environment / honest parties.

  • Interface to the adversary / network.

Instances For
    @[reducible, inline]

    The combined mainadv port boundary of a protocol.

    Instances For
      @[reducible, inline]

      A protocol is an open system exposing its full (main ⊗ adv) boundary.

      Instances For
        @[reducible, inline]

        A functionality is the ideal-world counterpart of a protocol; the same type, used as the trusted reference object.

        Instances For
          @[reducible, inline]

          An adversary speaks to the protocol over the swapped adv side and to the environment over a back-channel back.

          Instances For
            @[reducible, inline]

            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
              @[reducible, inline]

              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 #

                  def Interaction.UC.Standard.EXEC {T : OpenTheory} {Δ : ProtocolBoundary} {back : PortBoundary} (π : Protocol T Δ) (A : Adversary T Δ back) (Z : Environment T Δ back) :

                  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 #

                    def Interaction.UC.Standard.UCSecure {T : OpenTheory} (exec : Execution T) (ε : ) {Δ : ProtocolBoundary} (π F : Protocol T Δ) :

                    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.

                      Instances
                        theorem Interaction.UC.Standard.ucSecure_toObservedCompUCSecure_dummy {T : OpenTheory} [HasDummyAdversaryFactor T] {sem : Semantics T} {ε : } {Δ : ProtocolBoundary} {π F : Protocol T Δ} (h : UCSecure (Execution.ofSemantics sem) ε π F) :
                        ∃ (SimSpace : Type u) (simulate : SimSpaceT.Plug Δ.toPortT.Plug Δ.toPort), ObservedCompUCSecure sem ε π F SimSpace simulate

                        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.