The course covers
– the reasons for using cryptography in computer systems
– what basic classes of algorithms there are, how they differ and how they should be used in different situations
– the basic criteria for each algorithm class
– how to find the characteristics of given pseudorandom number generators and how to construct generators with given characteristics
– the limitations of stream ciphers and modern directions in the efforts to overcome these
– the principles behind block ciphers and their inherent weaknesses
– feedback modes for block ciphers
– the principles behind DES, its structure, Feistel networks
– alternative structures, especially AES
– principles and basic characteristics of public key technology
– the necessary basic mathematics behind public keys
– the Diffie-Hellman key distribution algorithm
– principles and details for the RSA algorithm
– principles and basic mathematics for elliptic curves
– the principles of authentication, message authentication codes and digital signatures
– the difference between message authentication with symmetric algorithms and with digital signatures
– requirements for cryptographic hash functions
– secret sharing principles
– zero knowledge
– quantum cryptography
– how to choose cryptographic protection that fits given requirements