The purpose of this course is to give insight into the principles of security and trust. We focus on fundamental ideas and techniques to design and analyze mechanisms allowing mutually suspicious parties to interact and collaborate through distributed systems. The course will divide into four main parts.
First, we will examine cryptographic protocols, which are the main mechanism for achieving confidentiality and authentication (and many related goals) in distributed systems. Important protocols include SSL/TLS, SSH, IPSec and IKE. We will focus on how protocols break and why; how to analyze them to determine what security goals they achieve, using tools such as CPSA and ProVerif; and how to design new ones. In this part, we treat cryptography as a black box and focus on structural or symbolic analysis methods.
Second, we will study the foundations of cryptography. We will examine foundational aspects of block ciphers, cryptographic hashes, public key cryptography, digital signatures, zero-knowledge proofs, and secure multiparty computation. We will consider definitions of security for cryptographic primitives. We will identify key assumptions that justify primitives, and general constructions that can be used to build cryptographic operations from suitable building blocks. ...