mirror of
https://github.com/luxfi/threshold.git
synced 2026-10-30 15:15:53 +00:00
A committee of n members at threshold t decrypts without any member holding the key. Keygen is dealerless: each member samples its own contribution and publishes a share of the collective public key. Decrypt combines masked partial decryptions, bound by digest to the ciphertext, and never reconstructs the key. Recombination uses the integer Lagrange coefficients directly and clears no denominator, so quorums whose coefficients are not integers are refused rather than answered wrongly. Decrypt searches the contributions on hand for one that recombines exactly; the largest positions always do. Custody and correctness are proved in lux/proofs/fhe/threshold-custody.tex. Co-authored-by: Hanzo Dev <[email protected]>
16 lines
719 B
Go
16 lines
719 B
Go
// Copyright (C) 2025-2026, Lux Industries Inc. All rights reserved.
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
// Package tfhe is threshold fully-homomorphic encryption: a committee of n
|
|
// members at threshold t decrypts without any member holding the key.
|
|
//
|
|
// pub, shares := Keygen(params, t, n, seed)
|
|
// ct := Encrypt(params, pub, v, fhe.FheUint8)
|
|
// d := member.Decrypt(ct, prng)
|
|
// bits := Decrypt(ct, []Decryption{d, ...}, params, t)
|
|
//
|
|
// Key generation is in keygen.go, the decryption kernel in partial.go, and the
|
|
// committee layer a networked caller needs in committee.go and decrypt.go.
|
|
// Custody and correctness are proved in lux/proofs/fhe/threshold-custody.tex.
|
|
package tfhe
|