CS848: Topics in Encryption in Databases, Machine Learning and Distributed Systems

Course Overview

This course is about how to operate computer programs, such as databases, machine learning algorithms and distributed systems on encrypted data. We will study the properties of cryptographic algorithms and protocols and how they can be used in these systems. This is not only an exercise in cryptography, but also needs to consider the systems aspects in order to balance performance, security and functionality. The goal is to study practical systems that run over encrypted data and leak as little information as possible.

Cryptographic techniques will include multi-party computation protocols, homomorphic, functional, searchable and property-preserving encryption schemes. We will also look at inferences from the result of the computation and consider techniques such as differential privacy. The systems we study include database management systems, machine learning algorithms and blockchains.

Prerequisites: Students should be familiar with basic crypto (public/secret key encryption, hash functions, etc.). No additional "advanced" math or crypto knowledge is required to take the course. The instructor will give an introduction to the cryptographic techniques used in the reading assignments in the first two lectures. Students should also be familiar with undergrad CS topics such as database systems, data mining, neural networks, etc.

The course is currently listed in the database area. It may be possible to count it as an algorithms course under some conditions, if desired.

Suggested Reading List

Encrypted Databases and Search over Encrypted Data Attacks on Searchable and Order-Preserving Encryption Attacks on Machine Learning Encrypted Machine Learning Privacy on the Blockchain General Encrypted Computations