Files
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

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}