Cryptography is the art and science of designing encryption algorithms for the purpose of providing private and authenticated communication. Once a sub-field of military communications, cryptography has gone mainstream since 1976 with the invention of public-key cryptography which allows two parties who previously have never met to establish a secure channel between them. Techniques, mechanisms, and tools of cryptography are used today for network security, digital signatures, and privacy in computer systems ranging from tiny RFID tags to large servers.
This is a project-oriented course, to explore cryptographic methods and algorithms such as secret-key and public-key encryption algorithms, hash functions, digital signatures, deterministic and true random number generators. We are particularly interested in actual software and hardware realizations of cryptosystems and their secure implementations, rather than idealized, mathematical proofs of security.
Students taking this course will form small teams to work on their selected projects, while following the lectures given by the Instructor and at the same time scrutinizing the projects of other teams.