Six-Project Series

Learn Privacy-Enhancing Techniques with Cryptographic Games you own this product

prerequisites
basic Rust • basic IntelliJ IDEA Rust plugin
skills learned
apply various cryptographic primitives from public key cryptography and secret key cryptography in two-party protocols • design patterns for privacy preserving two-party protocols • build two party protocols
Omer Shlomovits
5 weeks · 5-6 hours per week average · BEGINNER

pro $24.99 per month

  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • choose one free eBook per month to keep
  • exclusive 50% discount on all purchases

lite $19.99 per month

  • access to all Manning books, including MEAPs!

team

5, 10 or 20 seats+ for your team - learn more


In this series of liveProjects, you’ll go hands-on with some of the advanced concepts of applied cryptography through easy-to-understand games. Don’t worry—even though you’ll be encountering complex cryptographic concepts, the games you’ll build will be simple, intuitive, and above all, fun! Each game covers both the math and cryptographic building blocks you’ll need to create it, in a way that you can easily transfer to real-world use cases.

These projects are designed for learning purposes and are not complete, production-ready applications or solutions.

here's what's included

Project 1 Dating Game

In this liveProject, you’ll use the “dark magic” of secure multiparty computation (MPC) to create a dating game app. MPC lets a group of participants run a joint computation over their inputs while keeping these inputs private, and this dating game will stand as proof-of-concept for other uses for the technique. You’ll develop a game that matches participants if they both like each other, and use privacy-enhancing cryptography to make sure sensitive information cannot leak. Your project will be created using Rust, which is a perfect choice for cryptography thanks to its guaranteed memory safety and other low-level language features.

Project 2 Secret Santa

In this liveProject, your challenge is to plan a festive Secret Santa gift exchange for your co-workers, keeping their identities private. The catch is: They’re all working remotely thanks to the COVID-19 pandemic. Luckily, you’re no stranger to providing innovative solutions to “impossible” problems. You’ll implement MPC as you program in Rust, which is well-suited for cryptography applications thanks to its guaranteed memory safety. When you’re done, you’ll have developed a private mix method and randomly assigned each “gifter” exactly one “giftee” while keeping the identity of the “Santa” a secret!

Project 3 Zero-Knowledge Sudoku

In this liveProject, you’ll use zero-knowledge proof (ZKP) to reveal that a super hard Sudoku puzzle has been solved, but without sharing the answer. To do this you’ll implement a prover and a verifier that are sharing a Sudoku board. The prover will produce a proof for knowing a solution, while the verifier will use the proof to get convinced and catch a cheating prover. You’ll build a ZKP based on the classical GMW zero-knowledge proof of 3-Colorability of a graph, using the Rust language.

Project 4 Yao’s Millionaires' Problem

In this liveProject, you’ll use secure multiparty computation to reveal which of two millionnaires is richer without exposing how much either is worth. Your program will use the two-party computation for the “greater than” operator, and be written using the Rust language. Due to its unique set of features, such as guaranteed memory safety, Rust is well suited for programming cryptography applications.

Project 5 Secure Coin Tossing

In this liveProject, you’ll use cryptography to create a fair and secure coin tossing application. This simple-sounding task is surprisingly complex, and so you’ll implement a multi-step classical protocol to create a coin flipper where neither player can cheat or bias the result. You’ll use Rust to implement the computational steps of a coin toss construction, as this powerful low-level language has great features for cryptography.

Project 6 Private Set Intersection

In this liveProject, you’ll use the private set-intersection (PSI) protocol to develop a tool which can compare cancer patients for a blind trial without revealing their private details. PSI is a two-party protocol where each party holds a private set that it inputs to the protocol, and outputs a new set that contains only the elements in the intersection. You’ll implement PSI using three different techniques: the oblivious transfer (OT) cryptographic primitive, a standard Bloom filter, and a more complex garbled version of a Bloom filter.

choose your plan

team

monthly
annual
$49.99
$499.99
only $41.67 per month
  • five seats for your team
  • access to all Manning books, MEAPs, liveVideos, liveProjects, and audiobooks!
  • choose another free product every time you renew
  • choose twelve free products per year
  • exclusive 50% discount on all purchases
  • Learn Privacy-Enhancing Techniques with Cryptographic Games project for free

project author

Omer Shlomovits
Omer Shlomovits (omershlomovits.com) is the co-founder and VP Research of ZenGo (founded 2018), a Tel-Aviv based company building products for consumers in the blockchain space. He runs ZenGo X, a 500+ members research community. He is a member of OpenMined MPC team, applying secure computation to machine learning. He codes mostly in Rust\Go and is passionate about imagining, designing, implementing and attacking complex crypto-systems. His research is aimed to tackle real world, hard problems, using novel cryptography. His focus is on threshold cryptography. In 2019 he co-founded MPC-Alliance, a consortium of 50+ companies collaborating to advance MPC technology. Currently he serve as a board-member and head of the technical committee. He co-founded Zero-Knowledge TLV, a 750+ members applied cryptography community in Israel. This is now part of ZK-Global.

Prerequisites

This liveProject series is for beginner Rust developers. To begin this series you will need to be familiar with the following:

TOOLS
  • Basic Rust
  • Basic IntelliJ IDEA Rust plugin
TECHNIQUES
  • Basic algorithms

features

Self-paced
You choose the schedule and decide how much time to invest as you build your project.
Project roadmap
Each project is divided into several achievable steps.
Get Help
While within the liveProject platform, get help from other participants and our expert mentors.
Compare with others
For each step, compare your deliverable to the solutions by the author and other participants.
book resources
Get full access to select books for 90 days. Permanent access to excerpts from Manning products are also included, as well as references to other resources.