I tooted the following puzzle:

Do you teach cryptography? If yes, ask your students to design a protocol for two people to play a cards game over the internet (eg Uno, Gin Rummy, Go fish or whatever). The protocol should be trustless so the players don’t have to rely on a centralized server to deal cards and players shouldn’t be able to peek at the deck unless the game rule allows it.

Give extra points to students who come up with simpler protocols, formal proofs, or an actual implementation.

As I was preparing my writeup describing a solution to this puzzle, I discovered that this puzzle is well known under the name “mental poker”. Rivest, Shamir and Adleman wrote a paper (1979).

More recently, Nicolas Mohnblatt published an excellent post titled Mental Poker in the Age of SNARKs (2022). Instead of boring you with yet another protocol, go read Nicolas’ work and experiment with their library, written using arkworks.

Matthew Green wrote a great blog post, Poker is hard, especially for cryptographers (2012).