C++ FHE Standard

What is Fully-homomorphic Encryption (FHE)?

When processing data, it may be in one of three states: “at rest” in a storage medium like a hard drive, “in transit” over a communication link between systems, or “in use” while a CPU or other computation resource is processing it.

While encryption is commonly used for data at rest and in transit, processing data typically requires decrypting it. When the data is decrypted, it is vulnerable to theft or unauthorized access.

Fully-homomorphic encryption is a mathematical scheme that permits performing arithmetic operations on ciphertext without decrypting it.

The ability of FHE to protect data is increasingly important in a world where there is only increasing surveillance capitalism, rising authoritarianism using surveillance and censorship on citizens, and seriously destructive cybersecurity breaches by nation states and organized criminal gangs.

Why is a C++ Standard for FHE Necessary?

The computational complexity of FHE is so large that commercial viability is unlikely without hardware acceleration.

Currently, there are four classes of hardware compute resources being used with FHE:

  • CPUs
  • GPUs
  • FPGAs
  • ASICs

Each type of compute resource requires significant effort to create library or compilers to utilize. Additionally, the field is nascent, so many things are still being discovered. There’s a trade-off between accelerating commercial viability of FHE and performing the basic research necessary to discover how to accelerate FHE computation to support commercial development.

A C++ standard for FHE along with a reference implementation in LLVM will provide the most leverage at the intersection of the developing commercial market and the necessary research in schemes and hardware acceleration.

Why is the Library Programming Model Not Sufficient?

There are currently several libraries for FHE schemes:

Different language ecosystems have always been a challenge when developing software. Often when a library is written in C/C++, bindings are used to enable the functionality in another programming language. In this way, the effort to create the library can be reused across these other language ecosystems.

In the case of FHE, the inherent complexity of being a distributed system architecture with complex cryptographic requirements and significant data processing challenges, in addition to the necessary hardware acceleration described above, impose such a large cost on the ecosystem that standardization and reuse are likely critical to the development of the industry in the near and medium term.

What About Corporate Sponsorship?

Corporate sponsorship creates misaligned incentives and the possible appearance of favoritism or unequal influence. As such, this project will refuse any offers of corporate sponsorship.

However, as an economic necessity, people working hard on providing a community good, like this standard, can only contribute so much of their time and energy without receiving some sort of compensation.

As such, companies are encouraged to contribute by providing paid time to employees who are well-situated to provide their expertise to this effort.

Additionally, individual contributions are welcome and much appreciated.

How to Contribute?

The FHE C++ standardization effort is being coordinated at the std-fhe GitHub organization.