mirror of
https://github.com/zama-ai/tfhe-rs.git
synced 2026-01-09 14:47:56 -05:00
chore(wop): remove outdated parameters and update other parameters
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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$.
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
946
tfhe/src/shortint/parameters/parameters_wopbs_only.rs
Normal file
946
tfhe/src/shortint/parameters/parameters_wopbs_only.rs
Normal 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
@@ -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);
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user