mirror of
https://github.com/zama-ai/tfhe-rs.git
synced 2026-01-09 14:47:56 -05:00
chore(shortint): remove compact pk t-uniform parameters set
Add new TUniform under classic/ that is not compact public key.
This commit is contained in:
@@ -8,7 +8,7 @@ int main(void) {
|
||||
|
||||
// Note that simply changing parameters like this does not yield secure parameters
|
||||
// Its only done for the example / tests
|
||||
ShortintPBSParameters params = SHORTINT_PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
|
||||
ShortintPBSParameters params = SHORTINT_PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64;
|
||||
assert(params.encryption_key_choice == ShortintEncryptionKeyChoiceBig);
|
||||
|
||||
int status;
|
||||
|
||||
@@ -20,7 +20,7 @@ pub fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let mut rng = thread_rng();
|
||||
|
||||
let params =
|
||||
tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
|
||||
tfhe::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64;
|
||||
let config = tfhe::ConfigBuilder::with_custom_parameters(params, None);
|
||||
|
||||
let client_key = tfhe::ClientKey::generate(config.clone());
|
||||
|
||||
@@ -456,7 +456,7 @@ test('hlapi_compact_ciphertext_list', (t) => {
|
||||
});
|
||||
|
||||
test('hlapi_compact_ciphertext_list_with_proof', (t) => {
|
||||
const block_params = new ShortintParameters(ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64);
|
||||
const block_params = new ShortintParameters(ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64);
|
||||
let config = TfheConfigBuilder.default()
|
||||
.use_custom_parameters(block_params)
|
||||
.build();
|
||||
|
||||
@@ -235,34 +235,34 @@ expose_as_shortint_pbs_parameters!(
|
||||
PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS,
|
||||
PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS,
|
||||
PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS,
|
||||
// CPK TUniform
|
||||
PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
// TUniform
|
||||
PARAM_MESSAGE_1_CARRY_2_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_3_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_4_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_5_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_6_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_7_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_1_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_3_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_4_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_5_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_6_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_1_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_2_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_4_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_5_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_4_CARRY_1_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_4_CARRY_2_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_4_CARRY_3_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_5_CARRY_1_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_5_CARRY_2_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_5_CARRY_3_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_6_CARRY_1_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_6_CARRY_2_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_7_CARRY_1_KS_PBS_TUNIFORM_2M64,
|
||||
// Aliases to remove eventually
|
||||
PARAM_MESSAGE_1_CARRY_0,
|
||||
PARAM_MESSAGE_1_CARRY_1,
|
||||
|
||||
@@ -372,7 +372,7 @@ mod tests {
|
||||
use super::*;
|
||||
use crate::prelude::*;
|
||||
#[cfg(feature = "zk-pok-experimental")]
|
||||
use crate::shortint::parameters::tuniform::p_fail_2_minus_64::ks_pbs::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
|
||||
use crate::shortint::parameters::test_parameters::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
|
||||
#[cfg(feature = "zk-pok-experimental")]
|
||||
use crate::zk::CompactPkeCrs;
|
||||
use crate::{set_server_key, FheInt64, FheUint16, FheUint2, FheUint32};
|
||||
|
||||
@@ -545,7 +545,7 @@ impl ProvenCompactCiphertextList {
|
||||
mod tests {
|
||||
use crate::integer::ciphertext::CompactCiphertextList;
|
||||
use crate::integer::{ClientKey, CompactPublicKey, RadixCiphertext, ServerKey};
|
||||
use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
|
||||
use crate::shortint::parameters::test_parameters::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
|
||||
use crate::zk::{CompactPkeCrs, ZkComputeLoad};
|
||||
use rand::random;
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ use crate::core_crypto::commons::generators::DeterministicSeeder;
|
||||
use crate::core_crypto::commons::math::random::Seed;
|
||||
use crate::core_crypto::prelude::ActivatedRandomGenerator;
|
||||
use crate::shortint::parameters::classic::compact_pk::*;
|
||||
use crate::shortint::parameters::classic::tuniform::p_fail_2_minus_64::ks_pbs::*;
|
||||
use crate::shortint::parameters::*;
|
||||
use std::panic::set_hook;
|
||||
use wasm_bindgen::prelude::*;
|
||||
@@ -288,34 +289,34 @@ expose_predefined_parameters! {
|
||||
PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS,
|
||||
PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS,
|
||||
PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS,
|
||||
// CPK TUniform
|
||||
PARAM_MESSAGE_1_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_7_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_6_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_5_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_4_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_4_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_4_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_5_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_5_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_5_CARRY_3_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_6_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
// TUniform
|
||||
PARAM_MESSAGE_1_CARRY_2_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_3_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_4_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_5_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_6_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_1_CARRY_7_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_1_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_2_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_3_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_4_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_5_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_2_CARRY_6_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_1_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_2_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_3_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_4_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_3_CARRY_5_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_4_CARRY_1_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_4_CARRY_2_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_4_CARRY_3_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_4_CARRY_4_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_5_CARRY_1_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_5_CARRY_2_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_5_CARRY_3_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_6_CARRY_1_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_6_CARRY_2_KS_PBS_TUNIFORM_2M64,
|
||||
PARAM_MESSAGE_7_CARRY_1_KS_PBS_TUNIFORM_2M64,
|
||||
// Aliases to remove eventually
|
||||
PARAM_MESSAGE_1_CARRY_0,
|
||||
PARAM_MESSAGE_1_CARRY_1,
|
||||
|
||||
@@ -138,7 +138,7 @@ impl ProvenCompactCiphertextList {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::shortint::parameters::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
|
||||
use crate::shortint::parameters::test_parameters::PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64;
|
||||
use crate::shortint::{ClientKey, CompactPublicKey};
|
||||
use crate::zk::{CompactPkeCrs, ZkComputeLoad};
|
||||
use rand::random;
|
||||
|
||||
@@ -2,10 +2,8 @@ use crate::shortint::parameters::classic::compact_pk::gaussian::p_fail_2_minus_6
|
||||
ks_pbs, pbs_ks,
|
||||
};
|
||||
use crate::shortint::ClassicPBSParameters;
|
||||
pub use tuniform::p_fail_2_minus_64::ks_pbs::*;
|
||||
|
||||
pub mod gaussian;
|
||||
pub mod tuniform;
|
||||
|
||||
pub const ALL_PARAMETER_VEC_COMPACT_PK: [ClassicPBSParameters; 32] = [
|
||||
PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_KS_PBS,
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
pub mod compact_pk;
|
||||
pub mod p_fail_2_minus_64;
|
||||
pub mod gaussian;
|
||||
pub mod tuniform;
|
||||
|
||||
1
tfhe/src/shortint/parameters/classic/tuniform/mod.rs
Normal file
1
tfhe/src/shortint/parameters/classic/tuniform/mod.rs
Normal file
@@ -0,0 +1 @@
|
||||
pub mod p_fail_2_minus_64;
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,79 +1,80 @@
|
||||
// p-fail = 2^-67.379, algorithmic cost ~ 74, 2-norm = 3
|
||||
pub const PARAM_MESSAGE_1_CARRY_1_COMPACT_PK_PBS_KS_TUNIFORM_2M64: ClassicPBSParameters =
|
||||
// security = 132 bits, p-fail = 2^-64.301, algorithmic cost ~ 78, 2-norm = 3
|
||||
pub const PARAM_MESSAGE_1_CARRY_1_PBS_KS_TUNIFORM_2M64: ClassicPBSParameters =
|
||||
ClassicPBSParameters {
|
||||
lwe_dimension: LweDimension(1024),
|
||||
glwe_dimension: GlweDimension(4),
|
||||
polynomial_size: PolynomialSize(512),
|
||||
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
|
||||
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
|
||||
pbs_base_log: DecompositionBaseLog(22),
|
||||
lwe_noise_distribution: DynamicDistribution::new_t_uniform(42),
|
||||
glwe_noise_distribution: DynamicDistribution::new_t_uniform(15),
|
||||
pbs_base_log: DecompositionBaseLog(25),
|
||||
pbs_level: DecompositionLevelCount(1),
|
||||
ks_base_log: DecompositionBaseLog(7),
|
||||
ks_level: DecompositionLevelCount(2),
|
||||
ks_level: DecompositionLevelCount(3),
|
||||
message_modulus: MessageModulus(2),
|
||||
carry_modulus: CarryModulus(2),
|
||||
max_noise_level: MaxNoiseLevel::new(3),
|
||||
log2_p_fail: -67.379,
|
||||
log2_p_fail: -64.301,
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
encryption_key_choice: EncryptionKeyChoice::Small,
|
||||
};
|
||||
// p-fail = 2^-66.873, algorithmic cost ~ 126, 2-norm = 5
|
||||
pub const PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_PBS_KS_TUNIFORM_2M64: ClassicPBSParameters =
|
||||
// security = 132 bits, p-fail = 2^-66.624, algorithmic cost ~ 134, 2-norm = 5
|
||||
pub const PARAM_MESSAGE_2_CARRY_2_PBS_KS_TUNIFORM_2M64: ClassicPBSParameters =
|
||||
ClassicPBSParameters {
|
||||
lwe_dimension: LweDimension(1024),
|
||||
glwe_dimension: GlweDimension(1),
|
||||
polynomial_size: PolynomialSize(2048),
|
||||
lwe_noise_distribution: DynamicDistribution::new_t_uniform(41),
|
||||
glwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
|
||||
lwe_noise_distribution: DynamicDistribution::new_t_uniform(42),
|
||||
glwe_noise_distribution: DynamicDistribution::new_t_uniform(15),
|
||||
pbs_base_log: DecompositionBaseLog(23),
|
||||
pbs_level: DecompositionLevelCount(1),
|
||||
ks_base_log: DecompositionBaseLog(5),
|
||||
ks_level: DecompositionLevelCount(4),
|
||||
ks_base_log: DecompositionBaseLog(3),
|
||||
ks_level: DecompositionLevelCount(6),
|
||||
message_modulus: MessageModulus(4),
|
||||
carry_modulus: CarryModulus(4),
|
||||
max_noise_level: MaxNoiseLevel::new(5),
|
||||
log2_p_fail: -66.873,
|
||||
log2_p_fail: -66.624,
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
encryption_key_choice: EncryptionKeyChoice::Small,
|
||||
};
|
||||
// p-fail = 2^-97.6, algorithmic cost ~ 3355, 2-norm = 9
|
||||
pub const PARAM_MESSAGE_3_CARRY_3_COMPACT_PK_PBS_KS_TUNIFORM_2M64: ClassicPBSParameters =
|
||||
// security = 132 bits, p-fail = 2^-64.112, algorithmic cost ~ 3355, 2-norm = 9
|
||||
pub const PARAM_MESSAGE_3_CARRY_3_PBS_KS_TUNIFORM_2M64: ClassicPBSParameters =
|
||||
ClassicPBSParameters {
|
||||
lwe_dimension: LweDimension(2048),
|
||||
glwe_dimension: GlweDimension(1),
|
||||
polynomial_size: PolynomialSize(16384),
|
||||
lwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
|
||||
lwe_noise_distribution: DynamicDistribution::new_t_uniform(15),
|
||||
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
|
||||
pbs_base_log: DecompositionBaseLog(18),
|
||||
pbs_base_log: DecompositionBaseLog(19),
|
||||
pbs_level: DecompositionLevelCount(2),
|
||||
ks_base_log: DecompositionBaseLog(21),
|
||||
ks_base_log: DecompositionBaseLog(23),
|
||||
ks_level: DecompositionLevelCount(1),
|
||||
message_modulus: MessageModulus(8),
|
||||
carry_modulus: CarryModulus(8),
|
||||
max_noise_level: MaxNoiseLevel::new(9),
|
||||
log2_p_fail: -97.6,
|
||||
log2_p_fail: -64.112,
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
encryption_key_choice: EncryptionKeyChoice::Small,
|
||||
};
|
||||
// p-fail = 2^-84.86, algorithmic cost ~ 20133, 2-norm = 17
|
||||
pub const PARAM_MESSAGE_4_CARRY_4_COMPACT_PK_PBS_KS_TUNIFORM_2M64: ClassicPBSParameters =
|
||||
// security = 132 bits, p-fail = 2^-73.197, algorithmic cost ~ 20401, 2-norm = 17
|
||||
pub const PARAM_MESSAGE_4_CARRY_4_PBS_KS_TUNIFORM_2M64: ClassicPBSParameters =
|
||||
ClassicPBSParameters {
|
||||
lwe_dimension: LweDimension(2048),
|
||||
glwe_dimension: GlweDimension(1),
|
||||
polynomial_size: PolynomialSize(65536),
|
||||
lwe_noise_distribution: DynamicDistribution::new_t_uniform(14),
|
||||
lwe_noise_distribution: DynamicDistribution::new_t_uniform(15),
|
||||
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
|
||||
pbs_base_log: DecompositionBaseLog(12),
|
||||
pbs_base_log: DecompositionBaseLog(13),
|
||||
pbs_level: DecompositionLevelCount(3),
|
||||
ks_base_log: DecompositionBaseLog(24),
|
||||
ks_level: DecompositionLevelCount(1),
|
||||
ks_base_log: DecompositionBaseLog(12),
|
||||
ks_level: DecompositionLevelCount(2),
|
||||
message_modulus: MessageModulus(16),
|
||||
carry_modulus: CarryModulus(16),
|
||||
max_noise_level: MaxNoiseLevel::new(17),
|
||||
log2_p_fail: -84.86,
|
||||
log2_p_fail: -73.197,
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
encryption_key_choice: EncryptionKeyChoice::Small,
|
||||
};
|
||||
|
||||
use crate::core_crypto::prelude::*;
|
||||
use crate::shortint::ciphertext::MaxNoiseLevel;
|
||||
use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus};
|
||||
@@ -25,12 +25,17 @@ pub mod multi_bit;
|
||||
pub mod parameters_wopbs;
|
||||
pub mod parameters_wopbs_message_carry;
|
||||
pub mod parameters_wopbs_only;
|
||||
#[cfg(test)]
|
||||
pub mod test_parameters;
|
||||
|
||||
pub use super::ciphertext::{Degree, MaxNoiseLevel, NoiseLevel};
|
||||
pub use super::PBSOrder;
|
||||
pub use crate::core_crypto::commons::parameters::EncryptionKeyChoice;
|
||||
pub use crate::shortint::parameters::classic::compact_pk::*;
|
||||
use crate::shortint::parameters::classic::p_fail_2_minus_64::{ks_pbs, pbs_ks};
|
||||
pub use crate::shortint::parameters::classic::gaussian::p_fail_2_minus_64::ks_pbs::*;
|
||||
pub use crate::shortint::parameters::classic::gaussian::p_fail_2_minus_64::pbs_ks::*;
|
||||
pub use crate::shortint::parameters::classic::tuniform::p_fail_2_minus_64::ks_pbs::*;
|
||||
pub use crate::shortint::parameters::classic::tuniform::p_fail_2_minus_64::pbs_ks::*;
|
||||
pub use compact_public_key_only::CompactCiphertextListExpansionKind;
|
||||
#[cfg(tarpaulin)]
|
||||
pub use coverage_parameters::*;
|
||||
@@ -698,85 +703,85 @@ pub fn get_parameters_from_message_and_carry(
|
||||
|
||||
// Aliases, to be deprecated in subsequent versions once we e.g. have the "parameter builder"
|
||||
pub const PARAM_MESSAGE_1_CARRY_0_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_1_CARRY_0_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_1_CARRY_1_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_1_CARRY_1_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_1_CARRY_2_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_1_CARRY_2_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_1_CARRY_3_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_1_CARRY_3_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_1_CARRY_4_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_1_CARRY_4_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_1_CARRY_5_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_1_CARRY_5_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_1_CARRY_6_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_1_CARRY_6_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_1_CARRY_7_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_1_CARRY_7_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_2_CARRY_0_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_2_CARRY_0_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_2_CARRY_1_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_2_CARRY_1_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_2_CARRY_2_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_2_CARRY_2_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_2_CARRY_3_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_2_CARRY_3_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_2_CARRY_4_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_2_CARRY_4_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_2_CARRY_5_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_2_CARRY_5_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_2_CARRY_6_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_2_CARRY_6_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_3_CARRY_0_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_3_CARRY_0_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_3_CARRY_1_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_3_CARRY_1_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_3_CARRY_2_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_3_CARRY_2_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_3_CARRY_3_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_3_CARRY_3_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_3_CARRY_4_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_3_CARRY_4_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_3_CARRY_5_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_3_CARRY_5_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_4_CARRY_0_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_4_CARRY_0_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_4_CARRY_1_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_4_CARRY_1_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_4_CARRY_2_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_4_CARRY_2_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_4_CARRY_3_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_4_CARRY_3_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_4_CARRY_4_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_4_CARRY_4_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_5_CARRY_0_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_5_CARRY_0_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_5_CARRY_1_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_5_CARRY_1_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_5_CARRY_2_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_5_CARRY_2_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_5_CARRY_3_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_5_CARRY_3_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_6_CARRY_0_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_6_CARRY_0_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_6_CARRY_1_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_6_CARRY_1_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_6_CARRY_2_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_6_CARRY_2_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_7_CARRY_0_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_7_CARRY_0_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_7_CARRY_1_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_7_CARRY_1_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_8_CARRY_0_KS_PBS: ClassicPBSParameters =
|
||||
ks_pbs::PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_8_CARRY_0_KS_PBS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_1_CARRY_1_PBS_KS: ClassicPBSParameters =
|
||||
pbs_ks::PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_1_CARRY_1_PBS_KS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_2_CARRY_2_PBS_KS: ClassicPBSParameters =
|
||||
pbs_ks::PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_2_CARRY_2_PBS_KS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_3_CARRY_3_PBS_KS: ClassicPBSParameters =
|
||||
pbs_ks::PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_3_CARRY_3_PBS_KS_GAUSSIAN_2M64;
|
||||
pub const PARAM_MESSAGE_4_CARRY_4_PBS_KS: ClassicPBSParameters =
|
||||
pbs_ks::PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M64;
|
||||
PARAM_MESSAGE_4_CARRY_4_PBS_KS_GAUSSIAN_2M64;
|
||||
|
||||
pub const PARAM_MESSAGE_1_CARRY_0: ClassicPBSParameters = PARAM_MESSAGE_1_CARRY_0_KS_PBS;
|
||||
pub const PARAM_MESSAGE_1_CARRY_1: ClassicPBSParameters = PARAM_MESSAGE_1_CARRY_1_KS_PBS;
|
||||
|
||||
27
tfhe/src/shortint/parameters/test_parameters.rs
Normal file
27
tfhe/src/shortint/parameters/test_parameters.rs
Normal file
@@ -0,0 +1,27 @@
|
||||
//! #Warning test-only
|
||||
//!
|
||||
//! This module provides the structure containing the cryptographic parameters only intended to be
|
||||
//! used to test some operations.
|
||||
//! These parameters are *NOT guaranteed to be safe*.
|
||||
use crate::core_crypto::prelude::*;
|
||||
use crate::shortint::ciphertext::MaxNoiseLevel;
|
||||
use crate::shortint::parameters::{CarryModulus, ClassicPBSParameters, MessageModulus};
|
||||
|
||||
pub const PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64: ClassicPBSParameters =
|
||||
ClassicPBSParameters {
|
||||
lwe_dimension: LweDimension(888),
|
||||
glwe_dimension: GlweDimension(2),
|
||||
polynomial_size: PolynomialSize(2048),
|
||||
lwe_noise_distribution: DynamicDistribution::new_t_uniform(45),
|
||||
glwe_noise_distribution: DynamicDistribution::new_t_uniform(3),
|
||||
pbs_base_log: DecompositionBaseLog(23),
|
||||
pbs_level: DecompositionLevelCount(1),
|
||||
ks_base_log: DecompositionBaseLog(4),
|
||||
ks_level: DecompositionLevelCount(4),
|
||||
message_modulus: MessageModulus(4),
|
||||
carry_modulus: CarryModulus(4),
|
||||
max_noise_level: MaxNoiseLevel::new(5),
|
||||
log2_p_fail: -64.105,
|
||||
ciphertext_modulus: CiphertextModulus::new_native(),
|
||||
encryption_key_choice: EncryptionKeyChoice::Big,
|
||||
};
|
||||
@@ -17,6 +17,7 @@ import init, {
|
||||
CompactCiphertextList,
|
||||
ProvenCompactCiphertextList,
|
||||
Shortint,
|
||||
ShortintEncryptionKeyChoice,
|
||||
} from "./pkg/tfhe.js";
|
||||
|
||||
const U32_MAX = 4294967295;
|
||||
@@ -239,8 +240,22 @@ async function compressedCompactPublicKeyTest256BitOnConfig(config) {
|
||||
}
|
||||
|
||||
async function compactPublicKeyZeroKnowledge() {
|
||||
let block_params = new ShortintParameters(
|
||||
ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
let block_params = Shortint.new_parameters(
|
||||
888,
|
||||
2,
|
||||
2048,
|
||||
Shortint.try_new_t_uniform(45),
|
||||
Shortint.try_new_t_uniform(3),
|
||||
23,
|
||||
1,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
5,
|
||||
-64.105,
|
||||
64,
|
||||
ShortintEncryptionKeyChoice.Big,
|
||||
);
|
||||
|
||||
let config = TfheConfigBuilder.default()
|
||||
@@ -491,8 +506,23 @@ async function compressedServerKeyBenchMessage2Carry2() {
|
||||
}
|
||||
|
||||
async function compactPublicKeyZeroKnowledgeBench() {
|
||||
let block_params = new ShortintParameters(
|
||||
ShortintParametersName.PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64,
|
||||
// This parameters set reproduce PARAM_MESSAGE_2_CARRY_2_COMPACT_PK_KS_PBS_TUNIFORM_2M64
|
||||
let block_params = Shortint.new_parameters(
|
||||
888,
|
||||
2,
|
||||
2048,
|
||||
Shortint.try_new_t_uniform(45),
|
||||
Shortint.try_new_t_uniform(3),
|
||||
23,
|
||||
1,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
4,
|
||||
5,
|
||||
-64.105,
|
||||
64,
|
||||
ShortintEncryptionKeyChoice.Big,
|
||||
);
|
||||
|
||||
let config = TfheConfigBuilder.default()
|
||||
|
||||
Reference in New Issue
Block a user