chore(wop): remove outdated parameters and update other parameters

This commit is contained in:
Arthur Meyre
2024-03-29 12:02:33 +01:00
parent 555c984ab3
commit 691bff5970
12 changed files with 1122 additions and 2410 deletions

View File

@@ -6,8 +6,7 @@ use criterion::{criterion_group, Criterion};
use rand::Rng;
use std::env;
use tfhe::keycache::NamedParam;
use tfhe::shortint::keycache::{KEY_CACHE, KEY_CACHE_WOPBS};
use tfhe::shortint::parameters::parameters_wopbs::WOPBS_PARAM_MESSAGE_4_NORM2_6_KS_PBS;
use tfhe::shortint::keycache::KEY_CACHE;
use tfhe::shortint::parameters::*;
use tfhe::shortint::{Ciphertext, CompressedServerKey, ServerKey};
@@ -383,34 +382,6 @@ fn server_key_from_compressed_key(c: &mut Criterion) {
bench_group.finish();
}
// TODO: remove?
fn _bench_wopbs_param_message_8_norm2_5(c: &mut Criterion) {
let mut bench_group = c.benchmark_group("programmable_bootstrap");
let param = WOPBS_PARAM_MESSAGE_4_NORM2_6_KS_PBS;
let param_set: ShortintParameterSet = param.into();
let pbs_params = param_set.pbs_parameters().unwrap();
let keys = KEY_CACHE_WOPBS.get_from_param((pbs_params, param));
let (cks, _, wopbs_key) = (keys.client_key(), keys.server_key(), keys.wopbs_key());
let mut rng = rand::thread_rng();
let clear = rng.gen::<usize>() % param.message_modulus.0;
let ct = cks.encrypt_without_padding(clear as u64);
let vec_lut = wopbs_key.generate_lut_native_crt(&ct, |x| x);
let id = format!("Shortint WOPBS: {param:?}");
bench_group.bench_function(&id, |b| {
b.iter(|| {
let _ = wopbs_key.programmable_bootstrapping_native_crt(&ct, &vec_lut);
})
});
bench_group.finish();
}
macro_rules! define_server_key_unary_bench_fn (
(method_name:$server_key_method:ident, display_name:$name:ident, $params_set:expr) => {
fn $server_key_method(c: &mut Criterion) {

View File

@@ -13,14 +13,12 @@ use tfhe::shortint::parameters::coverage_parameters::{
use tfhe::shortint::parameters::key_switching::{
ShortintKeySwitchingParameters, PARAM_KEYSWITCH_1_1_KS_PBS_TO_2_2_KS_PBS,
};
use tfhe::shortint::parameters::parameters_wopbs_message_carry::{
WOPBS_PARAM_MESSAGE_1_CARRY_1_KS_PBS, WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS,
WOPBS_PARAM_MESSAGE_3_CARRY_3_KS_PBS, WOPBS_PARAM_MESSAGE_4_CARRY_4_KS_PBS,
};
use tfhe::shortint::parameters::{
ClassicPBSParameters, WopbsParameters, ALL_MULTI_BIT_PARAMETER_VEC, ALL_PARAMETER_VEC,
PARAM_MESSAGE_1_CARRY_1_KS_PBS, PARAM_MESSAGE_2_CARRY_2_KS_PBS, PARAM_MESSAGE_3_CARRY_3_KS_PBS,
PARAM_MESSAGE_4_CARRY_4_KS_PBS,
PARAM_MESSAGE_4_CARRY_4_KS_PBS, WOPBS_PARAM_MESSAGE_1_CARRY_1_KS_PBS,
WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS, WOPBS_PARAM_MESSAGE_3_CARRY_3_KS_PBS,
WOPBS_PARAM_MESSAGE_4_CARRY_4_KS_PBS,
};
use tfhe::shortint::MultiBitPBSParameters;

View File

@@ -349,11 +349,11 @@ impl WopbsKey {
/// ```rust
/// use tfhe::integer::gen_keys_radix;
/// use tfhe::integer::wopbs::WopbsKey;
/// use tfhe::shortint::parameters::parameters_wopbs_message_carry::WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS;
/// use tfhe::shortint::parameters::parameters_wopbs_only::WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_2_CARRY_2_KS_PBS;
///
/// let nb_block = 3;
/// //Generate the client key and the server key:
/// let (cks, sks) = gen_keys_radix(WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS, nb_block);
/// let (cks, sks) = gen_keys_radix(WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_2_CARRY_2_KS_PBS, nb_block);
/// let wopbs_key = WopbsKey::new_wopbs_key_only_for_wopbs(&cks, &sks);
/// let mut moduli = 1_u64;
/// for _ in 0..nb_block {

View File

@@ -6,7 +6,6 @@ use crate::integer::wopbs::{encode_radix, WopbsKey};
use crate::integer::{gen_keys, IntegerKeyKind};
use crate::shortint::ciphertext::Degree;
use crate::shortint::parameters::parameters_wopbs::*;
use crate::shortint::parameters::parameters_wopbs_message_carry::*;
use crate::shortint::parameters::*;
use paste::paste;
use rand::Rng;

View File

@@ -6,8 +6,6 @@ use crate::shortint::parameters::key_switching::*;
use crate::shortint::parameters::multi_bit::*;
use crate::shortint::parameters::parameters_compact_pk::*;
use crate::shortint::parameters::parameters_wopbs::*;
use crate::shortint::parameters::parameters_wopbs_message_carry::*;
use crate::shortint::parameters::parameters_wopbs_prime_moduli::*;
use crate::shortint::parameters::*;
use crate::shortint::wopbs::WopbsKey;
use crate::shortint::{ClientKey, KeySwitchingKey, ServerKey};
@@ -123,38 +121,6 @@ named_params_impl!( ShortintParameterSet =>
PARAM_MESSAGE_6_CARRY_2_COMPACT_PK_PBS_KS,
PARAM_MESSAGE_7_CARRY_1_COMPACT_PK_PBS_KS,
// Wopbs
WOPBS_PARAM_MESSAGE_1_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_1_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_1_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_1_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_2_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_2_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_2_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_2_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_3_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_3_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_3_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_3_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_4_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_4_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_4_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_4_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_5_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_5_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_5_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_5_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_6_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_6_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_6_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_6_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_7_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_7_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_7_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_7_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_8_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_8_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_8_NORM2_6_KS_PBS,
//WOPBS_PARAM_MESSAGE_8_NORM2_5_KS_PBS,
WOPBS_PARAM_MESSAGE_1_CARRY_0_KS_PBS,
WOPBS_PARAM_MESSAGE_1_CARRY_1_KS_PBS,
WOPBS_PARAM_MESSAGE_1_CARRY_2_KS_PBS,
@@ -191,55 +157,43 @@ named_params_impl!( ShortintParameterSet =>
WOPBS_PARAM_MESSAGE_7_CARRY_0_KS_PBS,
WOPBS_PARAM_MESSAGE_7_CARRY_1_KS_PBS,
WOPBS_PARAM_MESSAGE_8_CARRY_0_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_2_NORM2_2_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_2_NORM2_3_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_2_NORM2_4_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_2_NORM2_5_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_2_NORM2_6_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_2_NORM2_7_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_2_NORM2_8_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_3_NORM2_2_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_3_NORM2_3_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_3_NORM2_4_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_3_NORM2_5_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_3_NORM2_6_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_3_NORM2_7_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_3_NORM2_8_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_4_NORM2_2_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_4_NORM2_3_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_4_NORM2_4_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_4_NORM2_5_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_4_NORM2_6_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_4_NORM2_7_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_4_NORM2_8_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_5_NORM2_2_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_5_NORM2_3_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_5_NORM2_4_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_5_NORM2_5_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_5_NORM2_6_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_5_NORM2_7_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_5_NORM2_8_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_6_NORM2_2_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_6_NORM2_3_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_6_NORM2_4_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_6_NORM2_5_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_6_NORM2_6_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_6_NORM2_7_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_6_NORM2_8_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_7_NORM2_2_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_7_NORM2_3_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_7_NORM2_4_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_7_NORM2_5_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_7_NORM2_6_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_7_NORM2_7_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_7_NORM2_8_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_8_NORM2_2_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_8_NORM2_3_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_8_NORM2_4_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_8_NORM2_5_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_8_NORM2_6_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_8_NORM2_7_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_8_NORM2_8_KS_PBS,
// Wopbs only
WOPBS_ONLY_8_BLOCKS_PARAM_MESSAGE_1_CARRY_0_KS_PBS,
WOPBS_ONLY_8_BLOCKS_PARAM_MESSAGE_1_CARRY_1_KS_PBS,
WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_1_CARRY_2_KS_PBS,
WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_1_CARRY_3_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_1_CARRY_4_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_1_CARRY_5_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_1_CARRY_6_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_1_CARRY_7_KS_PBS,
WOPBS_ONLY_8_BLOCKS_PARAM_MESSAGE_2_CARRY_0_KS_PBS,
WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_2_CARRY_1_KS_PBS,
WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_2_CARRY_2_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_2_CARRY_3_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_2_CARRY_4_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_2_CARRY_5_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_2_CARRY_6_KS_PBS,
WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_3_CARRY_0_KS_PBS,
WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_3_CARRY_1_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_3_CARRY_2_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_3_CARRY_3_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_3_CARRY_4_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_3_CARRY_5_KS_PBS,
WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_4_CARRY_0_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_4_CARRY_1_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_4_CARRY_2_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_4_CARRY_3_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_4_CARRY_4_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_5_CARRY_0_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_5_CARRY_1_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_5_CARRY_2_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_5_CARRY_3_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_6_CARRY_0_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_6_CARRY_1_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_6_CARRY_2_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_7_CARRY_0_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_7_CARRY_1_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_8_CARRY_0_KS_PBS,
// Coverage
#[cfg(tarpaulin)]
COVERAGE_PARAM_MESSAGE_2_CARRY_2_KS_PBS,

View File

@@ -21,7 +21,7 @@ pub mod multi_bit;
pub mod parameters_compact_pk;
pub mod parameters_wopbs;
pub mod parameters_wopbs_message_carry;
pub(crate) mod parameters_wopbs_prime_moduli;
pub mod parameters_wopbs_only;
use super::ciphertext::{Degree, NoiseLevel};
use super::PBSOrder;
@@ -29,7 +29,7 @@ pub use crate::core_crypto::commons::parameters::EncryptionKeyChoice;
pub use key_switching::ShortintKeySwitchingParameters;
pub use multi_bit::*;
pub use parameters_compact_pk::*;
pub use parameters_wopbs::WopbsParameters;
pub use parameters_wopbs::*;
/// The modulus of the message space. For a given plaintext $p$ we have the message $m$ defined as
/// $m = p\bmod{MessageModulus}$ and so $0 <= m < MessageModulus$.

View File

@@ -1,5 +1,7 @@
//! #Warning experimental
pub use super::parameters_wopbs_message_carry::*;
pub use super::parameters_wopbs_only::*;
pub use crate::core_crypto::commons::dispersion::StandardDev;
pub use crate::core_crypto::commons::parameters::{
DecompositionBaseLog, DecompositionLevelCount, DynamicDistribution, GlweDimension,
@@ -34,843 +36,77 @@ pub struct WopbsParameters {
pub encryption_key_choice: EncryptionKeyChoice,
}
pub const ALL_PARAMETER_VEC_WOPBS_NORM2: [WopbsParameters; 31] = [
WOPBS_PARAM_MESSAGE_1_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_1_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_1_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_1_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_2_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_2_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_2_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_2_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_3_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_3_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_3_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_3_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_4_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_4_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_4_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_4_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_5_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_5_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_5_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_5_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_6_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_6_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_6_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_6_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_7_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_7_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_7_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_7_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_8_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_8_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_8_NORM2_6_KS_PBS,
pub const ALL_PARAMETER_VEC_WOPBS: [WopbsParameters; 72] = [
WOPBS_PARAM_MESSAGE_1_CARRY_0_KS_PBS,
WOPBS_PARAM_MESSAGE_1_CARRY_1_KS_PBS,
WOPBS_PARAM_MESSAGE_1_CARRY_2_KS_PBS,
WOPBS_PARAM_MESSAGE_1_CARRY_3_KS_PBS,
WOPBS_PARAM_MESSAGE_1_CARRY_4_KS_PBS,
WOPBS_PARAM_MESSAGE_1_CARRY_5_KS_PBS,
WOPBS_PARAM_MESSAGE_1_CARRY_6_KS_PBS,
WOPBS_PARAM_MESSAGE_1_CARRY_7_KS_PBS,
WOPBS_PARAM_MESSAGE_2_CARRY_0_KS_PBS,
WOPBS_PARAM_MESSAGE_2_CARRY_1_KS_PBS,
WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS,
WOPBS_PARAM_MESSAGE_2_CARRY_3_KS_PBS,
WOPBS_PARAM_MESSAGE_2_CARRY_4_KS_PBS,
WOPBS_PARAM_MESSAGE_2_CARRY_5_KS_PBS,
WOPBS_PARAM_MESSAGE_2_CARRY_6_KS_PBS,
WOPBS_PARAM_MESSAGE_3_CARRY_0_KS_PBS,
WOPBS_PARAM_MESSAGE_3_CARRY_1_KS_PBS,
WOPBS_PARAM_MESSAGE_3_CARRY_2_KS_PBS,
WOPBS_PARAM_MESSAGE_3_CARRY_3_KS_PBS,
WOPBS_PARAM_MESSAGE_3_CARRY_4_KS_PBS,
WOPBS_PARAM_MESSAGE_3_CARRY_5_KS_PBS,
WOPBS_PARAM_MESSAGE_4_CARRY_0_KS_PBS,
WOPBS_PARAM_MESSAGE_4_CARRY_1_KS_PBS,
WOPBS_PARAM_MESSAGE_4_CARRY_2_KS_PBS,
WOPBS_PARAM_MESSAGE_4_CARRY_3_KS_PBS,
WOPBS_PARAM_MESSAGE_4_CARRY_4_KS_PBS,
WOPBS_PARAM_MESSAGE_5_CARRY_0_KS_PBS,
WOPBS_PARAM_MESSAGE_5_CARRY_1_KS_PBS,
WOPBS_PARAM_MESSAGE_5_CARRY_2_KS_PBS,
WOPBS_PARAM_MESSAGE_5_CARRY_3_KS_PBS,
WOPBS_PARAM_MESSAGE_6_CARRY_0_KS_PBS,
WOPBS_PARAM_MESSAGE_6_CARRY_1_KS_PBS,
WOPBS_PARAM_MESSAGE_6_CARRY_2_KS_PBS,
WOPBS_PARAM_MESSAGE_7_CARRY_0_KS_PBS,
WOPBS_PARAM_MESSAGE_7_CARRY_1_KS_PBS,
WOPBS_PARAM_MESSAGE_8_CARRY_0_KS_PBS,
WOPBS_ONLY_8_BLOCKS_PARAM_MESSAGE_1_CARRY_0_KS_PBS,
WOPBS_ONLY_8_BLOCKS_PARAM_MESSAGE_1_CARRY_1_KS_PBS,
WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_1_CARRY_2_KS_PBS,
WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_1_CARRY_3_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_1_CARRY_4_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_1_CARRY_5_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_1_CARRY_6_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_1_CARRY_7_KS_PBS,
WOPBS_ONLY_8_BLOCKS_PARAM_MESSAGE_2_CARRY_0_KS_PBS,
WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_2_CARRY_1_KS_PBS,
WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_2_CARRY_2_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_2_CARRY_3_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_2_CARRY_4_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_2_CARRY_5_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_2_CARRY_6_KS_PBS,
WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_3_CARRY_0_KS_PBS,
WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_3_CARRY_1_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_3_CARRY_2_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_3_CARRY_3_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_3_CARRY_4_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_3_CARRY_5_KS_PBS,
WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_4_CARRY_0_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_4_CARRY_1_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_4_CARRY_2_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_4_CARRY_3_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_4_CARRY_4_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_5_CARRY_0_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_5_CARRY_1_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_5_CARRY_2_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_5_CARRY_3_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_6_CARRY_0_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_6_CARRY_1_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_6_CARRY_2_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_7_CARRY_0_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_7_CARRY_1_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_8_CARRY_0_KS_PBS,
];
pub const WOPBS_PARAM_MESSAGE_1_NORM2_2_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(512),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.0003472352121441949901,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(24),
pbs_level: DecompositionLevelCount(1),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(1),
pfks_base_log: DecompositionBaseLog(24),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(5),
cbs_base_log: DecompositionBaseLog(2),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_1_NORM2_4_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(502),
glwe_dimension: GlweDimension(3),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00041688866384199045524,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.000000000002573000821792597679153983627,
)),
pbs_base_log: DecompositionBaseLog(12),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(12),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.000000000002573000821792597679153983627,
)),
cbs_level: DecompositionLevelCount(4),
cbs_base_log: DecompositionBaseLog(3),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_1_NORM2_6_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(499),
glwe_dimension: GlweDimension(3),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.0004403915565001254653,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.000000000002573000821792597679153983627,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(3),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(3),
pfks_base_log: DecompositionBaseLog(9),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.000000000002573000821792597679153983627,
)),
cbs_level: DecompositionLevelCount(5),
cbs_base_log: DecompositionBaseLog(3),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_1_NORM2_8_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(500),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00043241360644590172285,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(16),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(16),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(6),
cbs_base_log: DecompositionBaseLog(3),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_2_NORM2_2_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(488),
glwe_dimension: GlweDimension(3),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.0005384866525630595423,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.000000000002573000821792597679153983627,
)),
pbs_base_log: DecompositionBaseLog(12),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(4),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(12),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.000000000002573000821792597679153983627,
)),
cbs_level: DecompositionLevelCount(4),
cbs_base_log: DecompositionBaseLog(3),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_2_NORM2_4_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(488),
glwe_dimension: GlweDimension(3),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.0005384866525630595423,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.000000000002573000821792597679153983627,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(3),
ks_level: DecompositionLevelCount(4),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(3),
pfks_base_log: DecompositionBaseLog(9),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.000000000002573000821792597679153983627,
)),
cbs_level: DecompositionLevelCount(5),
cbs_base_log: DecompositionBaseLog(3),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_2_NORM2_6_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(493),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00049144710341316649172,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(16),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(16),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(6),
cbs_base_log: DecompositionBaseLog(3),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_2_NORM2_8_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(497),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00045679174732062467505,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(16),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(16),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(5),
cbs_base_log: DecompositionBaseLog(4),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_3_NORM2_2_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(488),
glwe_dimension: GlweDimension(3),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.0005384866525630595423,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.000000000002573000821792597679153983627,
)),
pbs_base_log: DecompositionBaseLog(12),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(4),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(12),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.000000000002573000821792597679153983627,
)),
cbs_level: DecompositionLevelCount(3),
cbs_base_log: DecompositionBaseLog(4),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_3_NORM2_4_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(497),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00045679174732062467505,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(4),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(15),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(6),
cbs_base_log: DecompositionBaseLog(3),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_3_NORM2_6_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(494),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00048254425233109359873,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(16),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(16),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(6),
cbs_base_log: DecompositionBaseLog(3),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_3_NORM2_8_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(494),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00048254425233109359873,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(3),
pfks_base_log: DecompositionBaseLog(11),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(6),
cbs_base_log: DecompositionBaseLog(3),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_4_NORM2_2_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(486),
glwe_dimension: GlweDimension(3),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00055853990682276860028,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.000000000002573000821792597679153983627,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(3),
ks_level: DecompositionLevelCount(4),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(3),
pfks_base_log: DecompositionBaseLog(9),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.000000000002573000821792597679153983627,
)),
cbs_level: DecompositionLevelCount(5),
cbs_base_log: DecompositionBaseLog(3),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_4_NORM2_4_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(497),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00045679174732062467505,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(4),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(15),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(6),
cbs_base_log: DecompositionBaseLog(3),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_4_NORM2_6_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(493),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00049144710341316649172,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(3),
pfks_base_log: DecompositionBaseLog(11),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(6),
cbs_base_log: DecompositionBaseLog(3),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_4_NORM2_8_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(481),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00061200133780220371345,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_level: DecompositionLevelCount(9),
ks_base_log: DecompositionBaseLog(1),
pfks_level: DecompositionLevelCount(3),
pfks_base_log: DecompositionBaseLog(11),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(5),
cbs_base_log: DecompositionBaseLog(4),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_5_NORM2_2_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(497),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00045679174732062467505,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(4),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(15),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(5),
cbs_base_log: DecompositionBaseLog(3),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_5_NORM2_4_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(493),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00049144710341316649172,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(15),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(5),
cbs_base_log: DecompositionBaseLog(4),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_5_NORM2_6_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(493),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00049144710341316649172,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(12),
pbs_level: DecompositionLevelCount(3),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(3),
pfks_base_log: DecompositionBaseLog(12),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(6),
cbs_base_log: DecompositionBaseLog(3),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_5_NORM2_8_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(481),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00061200133780220371345,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(12),
pbs_level: DecompositionLevelCount(3),
ks_level: DecompositionLevelCount(9),
ks_base_log: DecompositionBaseLog(1),
pfks_level: DecompositionLevelCount(3),
pfks_base_log: DecompositionBaseLog(12),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(4),
cbs_base_log: DecompositionBaseLog(5),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_6_NORM2_2_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(497),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00045679174732062467505,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(4),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(15),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(6),
cbs_base_log: DecompositionBaseLog(3),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_6_NORM2_4_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(493),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00049144710341316649172,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(3),
pfks_base_log: DecompositionBaseLog(11),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(6),
cbs_base_log: DecompositionBaseLog(3),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_6_NORM2_6_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(481),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00061200133780220371345,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(12),
pbs_level: DecompositionLevelCount(3),
ks_level: DecompositionLevelCount(9),
ks_base_log: DecompositionBaseLog(1),
pfks_level: DecompositionLevelCount(3),
pfks_base_log: DecompositionBaseLog(12),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(5),
cbs_base_log: DecompositionBaseLog(4),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_6_NORM2_8_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(481),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00061200133780220371345,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(12),
pbs_level: DecompositionLevelCount(3),
ks_level: DecompositionLevelCount(9),
ks_base_log: DecompositionBaseLog(1),
pfks_level: DecompositionLevelCount(3),
pfks_base_log: DecompositionBaseLog(12),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(4),
cbs_base_log: DecompositionBaseLog(6),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_7_NORM2_2_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(493),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00049144710341316649172,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(16),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(16),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(5),
cbs_base_log: DecompositionBaseLog(4),
message_modulus: MessageModulus(128),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_7_NORM2_4_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(481),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00061200133780220371345,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_level: DecompositionLevelCount(9),
ks_base_log: DecompositionBaseLog(1),
pfks_level: DecompositionLevelCount(3),
pfks_base_log: DecompositionBaseLog(11),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(5),
cbs_base_log: DecompositionBaseLog(4),
message_modulus: MessageModulus(128),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_7_NORM2_6_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(481),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00061200133780220371345,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(12),
pbs_level: DecompositionLevelCount(3),
ks_level: DecompositionLevelCount(9),
ks_base_log: DecompositionBaseLog(1),
pfks_level: DecompositionLevelCount(3),
pfks_base_log: DecompositionBaseLog(12),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(4),
cbs_base_log: DecompositionBaseLog(6),
message_modulus: MessageModulus(128),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_7_NORM2_8_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(481),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00061200133780220371345,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(9),
ks_base_log: DecompositionBaseLog(1),
pfks_level: DecompositionLevelCount(4),
pfks_base_log: DecompositionBaseLog(9),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(4),
cbs_base_log: DecompositionBaseLog(6),
message_modulus: MessageModulus(128),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_8_NORM2_2_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(493),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00049144710341316649172,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(11),
pbs_level: DecompositionLevelCount(3),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(3),
pfks_base_log: DecompositionBaseLog(11),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(6),
cbs_base_log: DecompositionBaseLog(3),
message_modulus: MessageModulus(256),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_8_NORM2_4_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(481),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00061200133780220371345,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(12),
pbs_level: DecompositionLevelCount(3),
ks_level: DecompositionLevelCount(9),
ks_base_log: DecompositionBaseLog(1),
pfks_level: DecompositionLevelCount(3),
pfks_base_log: DecompositionBaseLog(12),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(5),
cbs_base_log: DecompositionBaseLog(4),
message_modulus: MessageModulus(256),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_8_NORM2_6_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(481),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00061200133780220371345,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(9),
ks_base_log: DecompositionBaseLog(1),
pfks_level: DecompositionLevelCount(4),
pfks_base_log: DecompositionBaseLog(9),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(4),
cbs_base_log: DecompositionBaseLog(6),
message_modulus: MessageModulus(256),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};

View File

@@ -1,132 +1,14 @@
//! #Warning experimental
pub use super::parameters_wopbs::WopbsParameters;
pub use crate::core_crypto::commons::dispersion::StandardDev;
pub use crate::core_crypto::commons::parameters::{
CiphertextModulus, DecompositionBaseLog, DecompositionLevelCount, DynamicDistribution,
GlweDimension, LweDimension, PolynomialSize,
DecompositionBaseLog, DecompositionLevelCount, DynamicDistribution, GlweDimension,
LweDimension, PolynomialSize,
};
use crate::shortint::parameters::{
CarryModulus, CiphertextModulus, EncryptionKeyChoice, MessageModulus,
};
use crate::shortint::parameters::parameters_wopbs::*;
use crate::shortint::parameters::parameters_wopbs_prime_moduli::*;
use crate::shortint::parameters::{CarryModulus, EncryptionKeyChoice, MessageModulus};
pub const ALL_PARAMETER_VEC_WOPBS: [WopbsParameters; 116] = [
WOPBS_PARAM_MESSAGE_1_CARRY_0_KS_PBS,
WOPBS_PARAM_MESSAGE_1_CARRY_1_KS_PBS,
WOPBS_PARAM_MESSAGE_1_CARRY_2_KS_PBS,
WOPBS_PARAM_MESSAGE_1_CARRY_3_KS_PBS,
WOPBS_PARAM_MESSAGE_1_CARRY_4_KS_PBS,
WOPBS_PARAM_MESSAGE_1_CARRY_5_KS_PBS,
WOPBS_PARAM_MESSAGE_1_CARRY_6_KS_PBS,
WOPBS_PARAM_MESSAGE_1_CARRY_7_KS_PBS,
WOPBS_PARAM_MESSAGE_2_CARRY_0_KS_PBS,
WOPBS_PARAM_MESSAGE_2_CARRY_1_KS_PBS,
WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS,
WOPBS_PARAM_MESSAGE_2_CARRY_3_KS_PBS,
WOPBS_PARAM_MESSAGE_2_CARRY_4_KS_PBS,
WOPBS_PARAM_MESSAGE_2_CARRY_5_KS_PBS,
WOPBS_PARAM_MESSAGE_2_CARRY_6_KS_PBS,
WOPBS_PARAM_MESSAGE_3_CARRY_0_KS_PBS,
WOPBS_PARAM_MESSAGE_3_CARRY_1_KS_PBS,
WOPBS_PARAM_MESSAGE_3_CARRY_2_KS_PBS,
WOPBS_PARAM_MESSAGE_3_CARRY_3_KS_PBS,
WOPBS_PARAM_MESSAGE_3_CARRY_4_KS_PBS,
WOPBS_PARAM_MESSAGE_3_CARRY_5_KS_PBS,
WOPBS_PARAM_MESSAGE_4_CARRY_0_KS_PBS,
WOPBS_PARAM_MESSAGE_4_CARRY_1_KS_PBS,
WOPBS_PARAM_MESSAGE_4_CARRY_2_KS_PBS,
WOPBS_PARAM_MESSAGE_4_CARRY_3_KS_PBS,
WOPBS_PARAM_MESSAGE_4_CARRY_4_KS_PBS,
WOPBS_PARAM_MESSAGE_5_CARRY_0_KS_PBS,
WOPBS_PARAM_MESSAGE_5_CARRY_1_KS_PBS,
WOPBS_PARAM_MESSAGE_5_CARRY_2_KS_PBS,
WOPBS_PARAM_MESSAGE_5_CARRY_3_KS_PBS,
WOPBS_PARAM_MESSAGE_6_CARRY_0_KS_PBS,
WOPBS_PARAM_MESSAGE_6_CARRY_1_KS_PBS,
WOPBS_PARAM_MESSAGE_6_CARRY_2_KS_PBS,
WOPBS_PARAM_MESSAGE_7_CARRY_0_KS_PBS,
WOPBS_PARAM_MESSAGE_7_CARRY_1_KS_PBS,
WOPBS_PARAM_MESSAGE_8_CARRY_0_KS_PBS,
WOPBS_PARAM_MESSAGE_1_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_1_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_1_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_1_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_2_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_2_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_2_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_2_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_3_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_3_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_3_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_3_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_4_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_4_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_4_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_4_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_5_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_5_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_5_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_5_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_6_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_6_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_6_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_6_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_7_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_7_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_7_NORM2_6_KS_PBS,
WOPBS_PARAM_MESSAGE_7_NORM2_8_KS_PBS,
WOPBS_PARAM_MESSAGE_8_NORM2_2_KS_PBS,
WOPBS_PARAM_MESSAGE_8_NORM2_4_KS_PBS,
WOPBS_PARAM_MESSAGE_8_NORM2_6_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_2_NORM2_2_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_2_NORM2_3_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_2_NORM2_4_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_2_NORM2_5_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_2_NORM2_6_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_2_NORM2_7_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_2_NORM2_8_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_3_NORM2_2_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_3_NORM2_3_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_3_NORM2_4_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_3_NORM2_5_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_3_NORM2_6_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_3_NORM2_7_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_3_NORM2_8_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_4_NORM2_2_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_4_NORM2_3_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_4_NORM2_4_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_4_NORM2_5_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_4_NORM2_6_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_4_NORM2_7_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_4_NORM2_8_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_5_NORM2_2_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_5_NORM2_3_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_5_NORM2_4_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_5_NORM2_5_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_5_NORM2_6_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_5_NORM2_7_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_5_NORM2_8_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_6_NORM2_2_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_6_NORM2_3_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_6_NORM2_4_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_6_NORM2_5_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_6_NORM2_6_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_6_NORM2_7_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_6_NORM2_8_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_7_NORM2_2_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_7_NORM2_3_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_7_NORM2_4_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_7_NORM2_5_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_7_NORM2_6_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_7_NORM2_7_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_7_NORM2_8_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_8_NORM2_2_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_8_NORM2_3_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_8_NORM2_4_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_8_NORM2_5_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_8_NORM2_6_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_8_NORM2_7_KS_PBS,
WOPBS_PRIME_PARAM_MESSAGE_8_NORM2_8_KS_PBS,
];
// These parameters have security between 123 and 128 bits
pub const WOPBS_PARAM_MESSAGE_1_CARRY_5_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(481),
@@ -1272,29 +1154,3 @@ pub const WOPBS_PARAM_MESSAGE_8_CARRY_0_KS_PBS: WopbsParameters = WopbsParameter
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_PARAM_MESSAGE_9_CARRY_0_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(493),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00049144710341316649172,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
pbs_base_log: DecompositionBaseLog(16),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(16),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00000000000000022148688116005568513645324585951,
)),
cbs_level: DecompositionLevelCount(5),
cbs_base_log: DecompositionBaseLog(4),
message_modulus: MessageModulus(512),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};

View File

@@ -0,0 +1,946 @@
pub use super::parameters_wopbs::WopbsParameters;
pub use crate::core_crypto::commons::dispersion::StandardDev;
pub use crate::core_crypto::commons::parameters::{
DecompositionBaseLog, DecompositionLevelCount, DynamicDistribution, GlweDimension,
LweDimension, PolynomialSize,
};
use crate::shortint::parameters::{
CarryModulus, CiphertextModulus, EncryptionKeyChoice, MessageModulus,
};
pub const WOPBS_ONLY_8_BLOCKS_PARAM_MESSAGE_1_CARRY_0_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(637),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.27510880527384e-05,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(16),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(6),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(1),
cbs_base_log: DecompositionBaseLog(11),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_8_BLOCKS_PARAM_MESSAGE_1_CARRY_1_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(637),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.27510880527384e-05,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(16),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(6),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(1),
cbs_base_log: DecompositionBaseLog(11),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(2),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_1_CARRY_2_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(589),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00015133150634020836,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(1),
pfks_base_log: DecompositionBaseLog(25),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(7),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(4),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_1_CARRY_3_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(589),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00015133150634020836,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(1),
pfks_base_log: DecompositionBaseLog(25),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(7),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(8),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_1_CARRY_4_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(16),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_1_CARRY_5_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(32),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_1_CARRY_6_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(64),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_1_CARRY_7_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(2),
carry_modulus: CarryModulus(128),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_8_BLOCKS_PARAM_MESSAGE_2_CARRY_0_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(637),
glwe_dimension: GlweDimension(4),
polynomial_size: PolynomialSize(512),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
6.27510880527384e-05,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(16),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(6),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(1),
cbs_base_log: DecompositionBaseLog(11),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_2_CARRY_1_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(589),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00015133150634020836,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(1),
pfks_base_log: DecompositionBaseLog(25),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(7),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(2),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_2_CARRY_2_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(589),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00015133150634020836,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(1),
pfks_base_log: DecompositionBaseLog(25),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(7),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(4),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_2_CARRY_3_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(8),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_2_CARRY_4_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(16),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_2_CARRY_5_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(32),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_2_CARRY_6_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(4),
carry_modulus: CarryModulus(64),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_3_CARRY_0_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(589),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00015133150634020836,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(1),
pfks_base_log: DecompositionBaseLog(25),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(7),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_3_CARRY_1_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(589),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00015133150634020836,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(1),
pfks_base_log: DecompositionBaseLog(25),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(7),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(2),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_3_CARRY_2_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(4),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_3_CARRY_3_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(8),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_3_CARRY_4_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(16),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_3_CARRY_5_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(8),
carry_modulus: CarryModulus(32),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_4_CARRY_0_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(589),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00015133150634020836,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(15),
pbs_level: DecompositionLevelCount(2),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(1),
pfks_base_log: DecompositionBaseLog(25),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(7),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_4_CARRY_1_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(2),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_4_CARRY_2_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(4),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_4_CARRY_3_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(8),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_4_CARRY_4_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(16),
carry_modulus: CarryModulus(16),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_5_CARRY_0_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_5_CARRY_1_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(2),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_5_CARRY_2_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(4),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_5_CARRY_3_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(32),
carry_modulus: CarryModulus(8),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_6_CARRY_0_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_6_CARRY_1_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(2),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_6_CARRY_2_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(64),
carry_modulus: CarryModulus(4),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_7_CARRY_0_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(128),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_7_CARRY_1_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(128),
carry_modulus: CarryModulus(2),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};
pub const WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_8_CARRY_0_KS_PBS: WopbsParameters = WopbsParameters {
lwe_dimension: LweDimension(568),
glwe_dimension: GlweDimension(2),
polynomial_size: PolynomialSize(1024),
lwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
0.00022310338140366212,
)),
glwe_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
pbs_base_log: DecompositionBaseLog(9),
pbs_level: DecompositionLevelCount(4),
ks_level: DecompositionLevelCount(5),
ks_base_log: DecompositionBaseLog(2),
pfks_level: DecompositionLevelCount(2),
pfks_base_log: DecompositionBaseLog(17),
pfks_noise_distribution: DynamicDistribution::new_gaussian_from_std_dev(StandardDev(
3.162026630747649e-16,
)),
cbs_level: DecompositionLevelCount(2),
cbs_base_log: DecompositionBaseLog(9),
message_modulus: MessageModulus(256),
carry_modulus: CarryModulus(1),
ciphertext_modulus: CiphertextModulus::new_native(),
encryption_key_choice: EncryptionKeyChoice::Big,
};

File diff suppressed because it is too large Load Diff

View File

@@ -224,12 +224,11 @@ impl WopbsKey {
///
/// ```rust
/// use tfhe::shortint::gen_keys;
/// use tfhe::shortint::parameters::parameters_wopbs_message_carry::WOPBS_PARAM_MESSAGE_1_CARRY_1_KS_PBS;
/// use tfhe::shortint::parameters::PARAM_MESSAGE_1_CARRY_1_KS_PBS;
/// use tfhe::shortint::parameters::parameters_wopbs_only::WOPBS_ONLY_8_BLOCKS_PARAM_MESSAGE_1_CARRY_1_KS_PBS;
/// use tfhe::shortint::wopbs::*;
///
/// // Generate the client key and the server key:
/// let (cks, sks) = gen_keys(WOPBS_PARAM_MESSAGE_1_CARRY_1_KS_PBS);
/// let (cks, sks) = gen_keys(WOPBS_ONLY_8_BLOCKS_PARAM_MESSAGE_1_CARRY_1_KS_PBS);
/// let mut wopbs_key = WopbsKey::new_wopbs_key_only_for_wopbs(&cks, &sks);
/// ```
pub fn new_wopbs_key_only_for_wopbs(cks: &ClientKey, sks: &ServerKey) -> Self {
@@ -363,13 +362,13 @@ impl WopbsKey {
/// ```rust
/// use rand::Rng;
/// use tfhe::shortint::gen_keys;
/// use tfhe::shortint::parameters::parameters_wopbs_message_carry::WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS;
/// use tfhe::shortint::parameters::parameters_wopbs_only::WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_2_CARRY_2_KS_PBS;
/// use tfhe::shortint::wopbs::WopbsKey;
///
/// // Generate the client key and the server key:
/// let (cks, sks) = gen_keys(WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS);
/// let (cks, sks) = gen_keys(WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_2_CARRY_2_KS_PBS);
/// let mut wopbs_key = WopbsKey::new_wopbs_key_only_for_wopbs(&cks, &sks);
/// let message_modulus = WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS.message_modulus.0 as u64;
/// let message_modulus = WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_2_CARRY_2_KS_PBS.message_modulus.0 as u64;
/// let m = 2;
/// let ct = cks.encrypt_without_padding(m);
/// let lut = wopbs_key.generate_lut(&ct, |x| x * x % message_modulus);
@@ -477,14 +476,14 @@ impl WopbsKey {
/// ```rust
/// use rand::Rng;
/// use tfhe::shortint::gen_keys;
/// use tfhe::shortint::parameters::parameters_wopbs_message_carry::WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS;
/// use tfhe::shortint::parameters::parameters_wopbs_only::WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_2_CARRY_2_KS_PBS;
/// use tfhe::shortint::wopbs::*;
///
/// // Generate the client key and the server key:
/// let (cks, sks) = gen_keys(WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS);
/// let (cks, sks) = gen_keys(WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_2_CARRY_2_KS_PBS);
/// let wopbs_key = WopbsKey::new_wopbs_key_only_for_wopbs(&cks, &sks);
/// let mut rng = rand::thread_rng();
/// let message_modulus = WOPBS_PARAM_MESSAGE_2_CARRY_2_KS_PBS.message_modulus.0;
/// let message_modulus = WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_2_CARRY_2_KS_PBS.message_modulus.0;
/// let ct = cks.encrypt(rng.gen::<u64>() % message_modulus as u64);
/// let lut = vec![(1_u64 << 59); wopbs_key.param.polynomial_size.0].into();
/// let ct_res = wopbs_key.wopbs(&ct, &lut);
@@ -517,10 +516,13 @@ impl WopbsKey {
/// ```rust
/// use rand::Rng;
/// use tfhe::shortint::gen_keys;
/// use tfhe::shortint::parameters::parameters_wopbs::WOPBS_PARAM_MESSAGE_1_NORM2_2_KS_PBS;
/// use tfhe::shortint::parameters::parameters_wopbs::WOPBS_ONLY_8_BLOCKS_PARAM_MESSAGE_1_CARRY_1_KS_PBS;
/// use tfhe::shortint::parameters::CarryModulus;
/// use tfhe::shortint::wopbs::*;
///
/// let (cks, sks) = gen_keys(WOPBS_PARAM_MESSAGE_1_NORM2_2_KS_PBS);
/// let mut msg_1_carry_0_params = WOPBS_ONLY_8_BLOCKS_PARAM_MESSAGE_1_CARRY_1_KS_PBS;
/// msg_1_carry_0_params.carry_modulus = CarryModulus(1);
/// let (cks, sks) = gen_keys(msg_1_carry_0_params);
/// let wopbs_key = WopbsKey::new_wopbs_key_only_for_wopbs(&cks, &sks);
/// let mut rng = rand::thread_rng();
/// let ct = cks.encrypt_without_padding(rng.gen::<u64>() % 2);

View File

@@ -1,11 +1,11 @@
use crate::shortint::keycache::KEY_CACHE_WOPBS;
use crate::shortint::parameters::parameters_wopbs_message_carry::*;
use crate::shortint::parameters::parameters_wopbs::*;
use crate::shortint::parameters::{
MessageModulus, PARAM_MESSAGE_1_CARRY_1_KS_PBS, PARAM_MESSAGE_2_CARRY_2_KS_PBS,
PARAM_MESSAGE_3_CARRY_3_KS_PBS, PARAM_MESSAGE_4_CARRY_4_KS_PBS,
};
use crate::shortint::wopbs::WopbsKey;
use crate::shortint::{gen_keys, ClassicPBSParameters, WopbsParameters};
use crate::shortint::{gen_keys, ClassicPBSParameters};
use rand::Rng;
const NB_TESTS: usize = 1;
@@ -101,6 +101,13 @@ create_parametrized_test!(generate_lut);
create_parametrized_test!(generate_lut_modulus);
#[cfg(not(tarpaulin))]
create_parametrized_wopbs_only_test!(generate_lut_modulus_not_power_of_two);
#[cfg(not(tarpaulin))]
create_parametrized_wopbs_only_test!(generate_lut_wop_only {
WOPBS_ONLY_8_BLOCKS_PARAM_MESSAGE_1_CARRY_1_KS_PBS,
WOPBS_ONLY_4_BLOCKS_PARAM_MESSAGE_2_CARRY_2_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_3_CARRY_3_KS_PBS,
WOPBS_ONLY_2_BLOCKS_PARAM_MESSAGE_4_CARRY_4_KS_PBS
});
fn generate_lut(params: (ClassicPBSParameters, WopbsParameters)) {
let keys = KEY_CACHE_WOPBS.get_from_param(params);
@@ -128,6 +135,33 @@ fn generate_lut(params: (ClassicPBSParameters, WopbsParameters)) {
assert_eq!(0, tmp);
}
#[cfg(not(tarpaulin))]
fn generate_lut_wop_only(params: WopbsParameters) {
let (cks, sks) = gen_keys(params);
let wopbs_key = WopbsKey::new_wopbs_key_only_for_wopbs(&cks, &sks);
let mut rng = rand::thread_rng();
let mut tmp = 0;
for _ in 0..NB_TESTS {
let message_modulus = params.message_modulus.0;
let m = rng.gen::<usize>() % message_modulus;
let ct = cks.encrypt(m as u64);
let lut = wopbs_key.generate_lut(&ct, |x| x % message_modulus as u64);
let ct_res = wopbs_key.wopbs(&ct, &lut);
let res = cks.decrypt(&ct_res);
if res != (m % message_modulus) as u64 {
tmp += 1;
}
}
if 0 != tmp {
println!("______");
println!("failure rate {tmp:?}/{NB_TESTS:?}");
println!("______");
}
assert_eq!(0, tmp);
}
fn generate_lut_modulus(params: (ClassicPBSParameters, WopbsParameters)) {
let keys = KEY_CACHE_WOPBS.get_from_param(params);
let (cks, sks, wopbs_key) = (keys.client_key(), keys.server_key(), keys.wopbs_key());