Introduction
Imagine you want to send a secret message to a friend without anyone else reading it, but you can't meet to share a secret key first. This problem needs a way to lock and unlock messages using different keys so that only the right person can read them.