Juliacon 2024

Secure numerical computations using fully homomorphic encryption
2024-07-10 , REPL (2, main stage)

Homomorphic encryption allows one to perform computations on encrypted data and obtain the
same result as with the original, unencrypted data. This makes it possible to securely
process sensitive data in untrusted compute environments. In this talk, we will demonstrate
how to easily set up and run homomorphically encrypted computations in Julia and show
which kind of operations are possible. We will present examples for secure algorithms and
discuss challenges and limitations in practice.


Today's widespread availability of commercial cloud providers makes it possible for many researchers and companies to offload compute-intensive tasks to machines in the cloud. However, processing sensitive information such as engineering, financial, or medical data on cloud systems comes with an inherent risk of data exposure or theft in case the systems are compromised. Homomorphic encryption can mitigate this risk by not requiring any trust in the compute environment: Since the data is encrypted before being transferred to the cloud, the underlying raw information cannot be obtained by a malicious party as long as the decryption key is stored securely on premises.

There exist several open-source libraries for performing homomorphic encryption, most of which are implemented in compiled languages such as C/C++. They are often nontrivial to use and require a compiler (and frequent recompilation) during development. Our goal is therefore to lower the threshold for using modern, high-performance homomorphic encryption implementations and to facilitate rapid prototyping for experimentation with new applications. For this purpose, we have created two Julia packages, OpenFHE.jl and SecureArithmetic.jl. OpenFHE.jl wraps the state-of-the-art C++ library OpenFHE and provides Julia bindings via CxxWrap.jl. All required binaries are available as precompiled JLL packages and are downloaded automatically upon installation. SecureArithmetic.jl is a convenience layer on top of OpenFHE.jl, allowing one to express homomorphic encryption algorithms in a more succinct and easier-to-understand manner. The idea is that one can use SecureArithmetic.jl for initial prototyping of new ideas, and to then switch to OpenFHE.jl primitives only where more detailed control is necessary.

We will begin this talk with a brief introduction to the fundamental concepts of homomorphic encryption in general and the CKKS scheme for approximate computations with real numbers in particular. This is followed by a demonstration of how to use homomorphic encryption in Julia using OpenFHE.jl and SecureArithmetic.jl. We will present some examples for secure algorithms building upon these packages, such as the numerical simulation of partial differential equations. Finally, we will discuss some of the challenges experienced when working with homomorphic encryption and analyze practical limitations such as performance or algorithmic complexity.

The target audience for this talk is computational scientists and research software engineers interested in secure numerical computations with Julia. No prior knowledge of homomorphic encryption is required. Some familiarity with numerical methods for partial differential equations is helpful but not strictly necessary.

Repository with presentation slides and reproducibility code:
https://github.com/hpsc-lab/talk-2024-juliacon-secure_numerical_computations

I am computational scientist and professor at the Centre for Advanced Analytics and Predictive Sciences of the University of Augsburg, Germany, where I lead the High-Performance Scientific Computing Lab in the Faculty of Mathematics, Natural Sciences, and Materials Engineering. My research focus is on numerical methods for adaptive multi-physics simulations, research software engineering for high-performance computing, and scientific machine learning.

I am a student in RWTH Aachen university majoring in computational engineering science.