ECE/CS 598 AM: Cryptography with Ideal Functionalities

Spring 2021
Times: Tu Th 9:00am
Location: TBD
Instructor: Andrew Miller        Office hours: TBD
Teaching Assistant (unofficial): Surya Bakshi    Office hours: TBD

The Ideal Functionalities model (or “Universal Composability” (UC)) is considered the gold standard for defining security in many cryptographic tasks, such as multiparty computation and zero knowledge proofs. It can be considered a unification of property-based definition styles, where instead of describing one property at a time (i.e., one game for confidentiality, one game for integrity, and so on), we give a concrete instance of an idealized program that exhibits all these properties at once. While UC is broadly adopted in cryptography, it has yet to gain traction elsewhere in software engineering and in distributed systems. 

The aim of this course is to explore the connections between UC in cryptography versus in other domains like fault tolerant systems, and to see what UC can offer to software engineers concerned with implementing large systems and not just modelling small primitives. 

The course will give a self contained introduction to UC, making use of our research software prototypes, Haskell-SaUCy and Python-SaUCy, which are programming frameworks that implement UC. We’ll then survey the UC-based cryptography literature for a range of cryptographic tasks, including well known applications like key exchange and multiparty computation, as well as more challenging cases like non-interactive primitives and smart contract blockchain protocols. Using the software frameworks as a secret weapon, we’ll try to improve on and simplify prior UC proofs.

The course is built on recent research efforts to provide software tools for UC, ILC (PLDI’19) and is supported by NSF grants #1801321 “Automated Support for Writing High-Assurance Smart Contracts” and #1943499 “CAREER: Composable Programming Abstractions for Secure Distributed Computing and Blockchain Applications.”


It is not necessary to have background knowledge of Ideal Functionalities and UC. However, some mathematical maturity and familiarity with cryptography is expected, such as experience writing traditional game-based security proofs.

Tentative Schedule:

Week 1: 

– Intro

– Interactive Turing Machines

Reading: Haskell-SaUCy or Python-SaUCy

Week 2: 

– The UC Emulation definition

Reading: Canetti UC

– Modelling protocols with functionalities: Commitments using Random Oracles

Week  3: 

– More examples: an MPC protocol with preprocessing

Reading: Shreyas Gandlur bsc thesis

– More examples: commitments based on trapdoor cryptography

Week 4: 

– Impossibility proofs: No commitments in the plain model

Reading: Paper

– In rigorous detail: Import and polynomial runtime


Week 5: 

– Student presentation 1

– Extensions: Asynchronous channels

Reading: Bracha broadcast

Week 6:

– Student presentation 2

– Real world application: Blockchain smart contracts and payment channels

Week 7:

Student presentations 3-4

Week 8:

Student presentations 5-6

Week 9:

– Guest Lecture

– Student presentations 7

Week 10:

– Student presentations 8

– Guest lecture

Week 11:

Student presentations 9-10

Week 12:

Wrap up

Week 13:

Project presentations

Week 14:

Project presentations



40%: The course will include a combination of instructor lectures and student presentations of papers from the UC reading list. Students will also contribute scribe notes that may be included in future versions of this course.
Presentation: 25%
Scribe notes: 5%
Paper reviews: 10%

20%: Programming projects based on Python-SaUCy or Haskell-SaUCy intended to find new ways to understand UC proofs, to simplify UC proofs, and to test UC proofs
Implement an ideal functionality model from a reading list paper: 10%
Implement a simulator and test from a paper: 10%

40%: Final project centered around creating a UC model and proof for an existing (or new) cryptographic protocol, including a software artifact based on the UC model. (Note: It is not necessary to create a new research contribution for this project, a new proof of an existing protocol is fine)
– Project Proposal:  10%
– Project Checkpoints (2x) 30%
– Written report 30%
– Presentation 30%

Textbooks / references:
– Programmer’s Guide to Universal Composability (the documentation for Haskell-SaUCy and Python-SaUCy, developed along the way as course notes).
– The 7th version of the Universal Composability paper by Ran Centti is an authoritative reference for the underlying theoretical framework
    Canetti 2000
– Existing introductions to UC include a video lecture series Canetti’s video lecture series

Detailed Topics and Tentative Reading list

Introduction to Universal Composability
– Interactive Turing Machines model
– Universal Composability with static corruptions
– Dummy Lemma
– Composition Theorem
– Random Oracle model and folklore commitment
– Impossibility of Commitments in the Plain Model
– CRS model and commitments another way
– JointUC and GlobalUC
– Most Functionalities are complete or nothing


Applications I
– Multiparty Computation / Secure Function Evaluation
– Key Exchange Needham-Schroeder-Lowe
– Rational Protocol Design
– Blockchain application models
Lotteries, Channels
– Voting
– Symmetric Encryption

Formal Models of UC

– Polynomial runtime and Import Tokens

– EasyUC


– Symbolic UC


– Abstract Cryptography

– NomosUC 

– Probabilistic Termination

– Reentrant functionalities 


Applications II

– Bounded delay channels and eventual delivery guarantees

– Synchronous protocols and F_clock

– Broadcast protocols

– Blockchain backbone models

– Trusted hardware enclaves


Universal Composability and Smart Contract Protocols

– Hawk and the smart contract model

– General state channels

– Perun

– Bitcoin model

– Financially Fair MPC

– Instantaneous Poker