Files
papers/lux-sovereign-keys/sections/03-fhe-for-private-computation.tex
zeekay abf99d05fc papers: reorganize into per-paper dirs, add Antje Worring as co-author
Restructured from flat .tex/.pdf files into per-paper subdirectories.
Added Antje Worring as co-author on all papers.
Synced PDFs to pdfs/ for download site.
2026-04-18 21:50:07 -07:00

67 lines
2.4 KiB
TeX

\section{FHE for Private Computation}
\label{sec:fhe}
\subsection{Motivation}
Some computations require operating on data from multiple parties without
revealing individual values. Examples in the securities domain:
\begin{itemize}[nosep]
\item Accreditation verification: does an investor's income exceed
a threshold without revealing the exact amount?
\item Private voting: aggregate votes without revealing individual choices.
\item Compliance checks: verify aggregate investment limits across
multiple accounts.
\end{itemize}
\subsection{Implementation}
The FHE module in \texttt{lux/transfer/pkg/crypto/fhe.go} uses lattice-based
fully homomorphic encryption from the \texttt{luxfi/fhe} library:
\begin{lstlisting}[language=Go,caption={fhe.go: parameter initialization}]
func NewFHEKey() (*FHEKey, error) {
params, err := fhe.NewParametersFromLiteral(fhe.PN10QP27)
intParams, err := fhe.NewIntegerParams(params, 2)
kg := fhe.NewKeyGenerator(params)
sk, pk := kg.GenKeyPair()
return &FHEKey{
params: params, intParams: intParams,
sk: sk, pk: pk,
}, nil
}
\end{lstlisting}
The parameter set \texttt{PN10QP27} provides approximately 128-bit security.
Integer operations support 64-bit unsigned values, sufficient for monetary
amounts and share counts.
\subsection{Encrypted Comparison}
The core operation is homomorphic comparison, enabling threshold checks
on encrypted data:
\begin{lstlisting}[language=Go,caption={fhe.go: encrypted comparison}]
func CompareEncrypted(a, b *FHECiphertext,
key *FHEEvalKey) (int, error) {
// Computed homomorphically, then single-bit
// results are decrypted.
// In production the final decryption would
// be done via MPC.
}
\end{lstlisting}
The comparison result is a single encrypted bit. In the sovereign model,
the final decryption is distributed via MPC among user-controlled signers,
so no single party learns the underlying values.
\subsection{Integration with Sovereign Keys}
FHE ciphertexts are encrypted under the vault's FHE public key (generated
alongside the ML-KEM key pair). The FHE secret key is held by the user
or split via MPC among user-designated parties. The provider stores
ciphertexts and can perform homomorphic operations, but cannot decrypt
the results.
% ======================================================================