|Flow||L - Computer Software|
|Category||Obligatory by selection|
|Class Hours - Lab Hours||3 - 1|
|Lecturers||Aris Pagourtzis, Petros Potikas (T & R Associates)|
Classical cryptography: Substitution cryptosystems, Caesar, Vigenere, cryptanalysis methods. Perfect secrecy (Shannon), one-time pad. Semantic security, CPA, CCA, PCPA. Symmetric cryptography. Pseudorandomness, stream cryptosystems. Block cryptosystems: Feistel circuits, DES, AES, operation modes. Message authentication codes (MACs). Hash functions, salt, Merkle trees.
Elements of number theory: divisibility, residue arithmetic, quadratic residues, Chinese remainder theorem. Elements of group theory: groups, rings, Legendre theorem. Euler's φ function. Prime number tests. Public key cryptography. RSA and Rabin cryptosystems, relation to factoring problem. The discrete logarithm problem, ElGamal cryptosystem. Diffie-Hellman key exchange. Digital signatures: RSA, DSS, blind signatures. Cryptographic protocols: secret sharing, zero knowledge proofs, identification. Elements of complexity theory: one-way functions. Applications: encrypted communications, electronic voting, attacks, crypto-currencies (bitcoin).
The course contains (in addition to exercises) a project with a written report and presentation.