mirror of
https://github.com/lux-apps/papers.git
synced 2026-10-30 18:15:21 +00:00
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.
52 lines
1.4 KiB
TeX
52 lines
1.4 KiB
TeX
\section{Key Lifecycle}
|
|
|
|
|
|
\subsection{Generation}
|
|
|
|
Key generation produces three artifacts: a secret key, a public evaluation key (bootstrap key), and optionally a key-switching key:
|
|
|
|
\begin{lstlisting}[language=Go]
|
|
sk, bsk, err := fhe.GenerateKeys(params)
|
|
if err != nil {
|
|
return fmt.Errorf("keygen: %w", err)
|
|
}
|
|
enc := fhe.NewEncryptor(params, sk)
|
|
eval := fhe.NewEvaluator(params, bsk)
|
|
dec := fhe.NewDecryptor(params, sk)
|
|
\end{lstlisting}
|
|
|
|
The evaluator does not require the secret key. This separation is the fundamental safety property: the entity performing computation never sees plaintext.
|
|
|
|
\subsection{Serialization}
|
|
|
|
All key types implement \texttt{encoding.BinaryMarshaler} and \texttt{encoding.BinaryUnmarshaler}:
|
|
|
|
\begin{lstlisting}[language=Go]
|
|
data, err := sk.MarshalBinary()
|
|
// store securely via KMS
|
|
|
|
var sk2 fhe.SecretKey
|
|
err = sk2.UnmarshalBinary(data)
|
|
\end{lstlisting}
|
|
|
|
\subsection{Threshold Key Distribution}
|
|
|
|
For threshold mode ($t$-of-$n$), key generation uses LSSS (Linear Secret Sharing Scheme):
|
|
|
|
\begin{lstlisting}[language=Go]
|
|
shares, bsk, err := fhe.GenerateThresholdKeys(
|
|
params, t, n,
|
|
)
|
|
// Distribute shares[i] to party i
|
|
// bsk (bootstrap key) is public
|
|
\end{lstlisting}
|
|
|
|
Resharing to a new $(t', n')$ configuration does not require reconstructing the original secret key:
|
|
|
|
\begin{lstlisting}[language=Go]
|
|
newShares, err := fhe.Reshare(
|
|
shares, newT, newN,
|
|
)
|
|
\end{lstlisting}
|
|
|