# About

## Table of contents

## About CS 171

Cryptography or cryptology is the science of designing algorithms and protocols for enabling parties to communicate and compute securely in an untrusted environment (e.g. secure communication, digital signature, etc.) Over the last four decades, cryptography has transformed from an ad hoc collection of mysterious tricks into a rigorous science based on firm complexity-theoretic foundations. This modern complexity-theoretic approach to cryptography will be the focus. E.g., in the context of encryption we will begin by giving a precise mathematical definition for what it means to be a secure encryption scheme and then give a construction (realizing this security notion) assuming various computational hardness assumptions (e.g. factoring).

## Books

The prescribed textbook for this course is Katz and Lindell’s text Introduction to Modern Cryptography (not free, some copies available in the library). Any edition is fine for this class. Here are some other excellent (and mostly free) resources:

- Boneh and Shoup’s upcoming book: A Graduate Course in Applied Cryptography
- Lecture notes by Pass-Shelat, Bellare-Goldwasser and Bellare-Rogway
- Goldreich’s book: Foundations of Cryptography Vol. 1 and Vol. 2 (some fragments are freely available)
- Nigel Smart’s book: Cryptography, An Introduction
- Menezes, Oorschot, and Vanstone’s book: Handbook of Applied Cryptography
- Rosulek’s book: The Joy of Cryptography
- Ostrovsky: http://web.cs.ucla.edu/~rafail/PUBLIC/OstrovskyDraftLecNotes2010.pdf

## Prerequisites

The only formal prerequisite is a course on discrete mathematics (CS70). Specifically, we will assume familiarity with basic (discrete) probability and modular arithmetic. Students enrolled are also expected to have had some exposure to algorithms, mainly to be comfortable reading pseudocode and to be familiar with big-O notation.