This fall, I taught my course CS 127: Cryptography, based on my lecture notes: “An intensive introduction to cryptography”. This is a course that starts with no background knowledge, and gets to advanced concepts including lattice-based (aka “post quantum”) encryption, fully homomorphic encryption, zero-knowledge proofs, multiparty secure computation, software obfuscation, quantum computing and crypto, and more.
As in previous years, I had an fantastic group of students, several of whom produced impressive course projects. These include the following:
Gavin Uberti, Kevin Luo, Oliver Cheng, and Wittmann Goh implemented Witness Encryption. Witness encryption is a cool concept whereby you can encrypt a secret X (for example the private key corresponding to a bitcoin wallet) so that people can decrypt X if and only if they can find a solution to some puzzle P. You can do this even if you don’t know a solution yourself! So for example you could use this to offer an automatically paying reward for a formal proof of the Reimann Hypothesis, or as they did, offer 2270 Satoshis to anyone solving this Soduko puzzle:
Simas Sakenis wrote a survey of proofs of stake in cryptocurrencies, providing a uniform formalizaiton of proofs of work and proofs of stake, and explaining the difference.
Michael Kiestra and Beatrice Nash proposed CLAMBAKE, a protocol that uses broadcast encryption and Yao’s garbled circuits to achieve a privacy-preserving protocol for facilitating access to controlled resources such as university buildings.
(There were more projects in the course, but some students preferred not to post these publicly since they are still working on them; I will update this post with more projects if appropriate.)