Course objectives

Learn the foundations of data encryption and become familiar with the main shared-key and public-key cryptosystems. Acquire a broad view on the various applications of cryptology and study the protocols used in each application. Acquire basic notions about cryptanalysis and cryptographic software.

Recommended previous knowledge

Even if they are not essential, previous courses on discrete mathematics, statistics, theory of computing and computer networks may be useful to the student.

Subjects which continue this course

Course evaluation:

60 %
Group implementation work
Problems, exercises and critical reading: 
20 %


  1. Introduction to cryptology (4h). Terminology. Historical evolution. Applications of cryptography. Exercises (PDF). Presentation on sniffers (PPT). Presentation on PGP (PPT).
  2. Foundations of cryptology (8h). Historical cryptosystems. Foundations of information theory. Perfect secrecy and authenticity. Elementary cryptanalysis. Exercises (PDF). Presentation on "Enigma" machines (PPT). Presentation on Huffman codes (PDF).
  3. Shared-key cryptography: stream ciphers (8h). Requirements on stream cipher sequences. Linear generators. Non-linear generators. Exercises (PDF).
  4. Shared-key cryptography: block ciphers (8h). Structure of block ciphers. Block cryptosystems. Attacks to block cryptosystems. Key management. Exercises (PDF) Presentation on AES (PPT). Animation on AES (.ZIP).
  5. Public-key cryptography (10h). Preliminary concepts. Foundations of public-key cryptosystems. Diffie-Hellman key exchange. Public-key cryptosystems. Exercises (PDF). Video on public-key cryptography.
  6. Digital signatures (6h). Concept. Digital signature schemes. Hash functions. Exercises (PDF)
  7. Applications of cryptography (16h). Identification and authentication. Secret sharing. Mutual distrust settings. Untransferable rights granting. Electronic elections. Network security. Exercises (PDF)

Basic bibliography

Extra course material