Cryptography aims at securing communications against malicious parties. This field enjoys numerous links with theoretical computer science (complexity theory, security proofs) but has also a very rich practical counterpart: Cryptographic protocols are part of every-day life (electronic commerce, payment cards, electronic voting, etc).
This course is an introduction to the different facets of modern cryptography. The following topics will be addressed:
- Symmetric encryption
- Asymmetric encryption
- Cryptographic hashing
- Pseudo-random number generators
- Zero-knowledge proofs
- Public-key infrastructure
- Provable security
- Secret sharing
We will also describe several practical applications, such as PGP, TLS/SSL and electronic voting.