FHERMA is a platform dedicated to Fully Homomorphic Encryption (FHE) challenges.
Follow the links provided below to find more details about the platform, participant guides and supported libraries:
- About FHERMA — Information about FHERMA, the challenge committee, and contact details.
- FHERMA participation guide — Details on FHERMA challenges and requirements.
- OpenFHE — Repository, README, and installation guide.
- OpenFHE Python — Repository, README, and installation guide.
- OpenFHE-rs — Rust wrapper, a walk-through tutorial and documentation.
- Apple Swift-Homomorphic-Encryption — Repository, README, and installation guide.
- FHE Resources — A vast collection of resources, including tutorials and walk-throughs, use-cases and demos.
- Polycircuit — FHE Components Library
The templates
folder contains starter templates for your project. While some challenge folders may also include specific templates, this folder provides the most generic templates, which must be adjusted before submission.
Available templates:
openfhe
: template for a C++ OpenFHE-based solution.openfhe-python
: template for an OpenFHE-Python-based solution.
FHERMA offers two types of challenges: white box and black box. You can learn more by following FHERMA participation guide
You can validate your solution locally using the fherma-validator docker image for white box challenges validation. To pull the image, run the following comand:
docker pull yashalabinc/fherma-validator
If your local folder containing the solution is located at ~/user/tmp/fherma-challenge/app
, use the following command to run the validator:
docker run -ti -v ~/user/tmp/fherma-challenge:/fherma yashalabinc/fherma-validator --project-folder=/fherma/app --testcase=/fherma/tests/test_case.json
Here is a breakdown of the command:
-v ~/user/tmp/fherma-challenge:/fherma
: maps your local directory to the /fherma directory in the Docker container.--project-folder=/fherma/app
: specifies the folder where your solution is located.--testcase=/fherma/tests/test_case.json
: points to the JSON file containing the test case for validation. Ensuretest_case.json
is added to your directory and the correct path is used in the command. Test cases can be found in the corresponding challenge folders.
After validation, a result.json
file will be generated in your project folder.
For black box challenges, you can find test cases on the Play tab and validate the results yourself before submission. The evaluation metric may vary by challenge, but usually, the primary metric for black box challenges is accuracy.