A couple of years ago, I was at a cryptography conference for work. There were
folks working on all kinds of exciting things, but I found myself in a long
conversation with a fellow compiler engineer that happened to be working on
systems for fully homomorphic encryption (FHE). While the term is rather fancy,
the idea is pretty simple to understand, which is why it’s one of those things
that I turn over and over again in my head from time to time. Typically when
using encryption, one can translate data to and from an encrypted form, so that
it’s hard for somebody else to learn what the original data is just by looking
at its encrypted version. Unfortunately, because the encryption obscures the
data, you can’t use that data in any way without first decrypting it. The whole
idea of homomorphic encryption is to be able to do computations on this data in
its encrypted form, with the idea being that even somebody you want to keep a
secret from can do computations for you on your private data, and learn nothing
about your secrets, or even the results of the computations they’re doing for
you in the process. Seems like a neat idea, but it feels a bit far-fetched,
right? Well, this is possible today, and its getting more and more practical
all the time thanks to hard-working cryptographers and compiler engineers.