Snapshot: Fully homomorphic encryption with Julia
In today’s world, data security and privacy are critical, especially when sensitive information is processed on potentially insecure systems, such as in cloud computing. Fully Homomorphic Encryption (FHE) offers a promising solution by enabling secure computations on encrypted data without the need for decryption. Over the past year, Arseniy and Michael of the HPSC Lab have brought to life the idea of performing secure numerical simulations using the Julia programming language. Building upon the efficient C++ implementation of the Cheon-Kim-Kim-Song (CKKS) scheme for real-number arithmetic in the
OpenFHE library, we have created the [OpenFHE.jl](https://github.com/hpsc-lab/OpenFHE.jl) package, which allows the functionalities of OpenFHE to be used from within Julia. Our research group has also introduced the
SecureArithmetic.jl package, which provides a user-friendly interface for cryptographically secure arithmetic operations. This package includes a backend for OpenFHE-secured computations using OpenFHE.jl, as well as an unencrypted backend for fast verification of computation pipelines. Additionally, SecureArithmetic.jl has expanded the functionality of OpenFHE.jl's vector-based arithmetic operations to support some matrix-based computations. The OpenFHE.jl and SecureArithmetic.jl packages were also the focus of our talk,
Secure numerical computations using fully homomorphic encryption, at JuliaCon 2024 (a YouTube recording of the talk can be found
here). As part of the experimental segment of this talk, we implemented secure versions of well-known finite difference schemes for the linear advection equation, utilizing OpenFHE.jl and SecureArithmetic.jl. The figure below illustrates the results of the 2D linear advection secure simulations at the final time step, with periodic boundary conditions and a sine wave as the initial condition.