BenchmarksStack RankingH33 FHEH33 ZKAPIsPricingPQCTokenDocsWhite PaperBlogAboutSecurity Demo

FHE Parameter Selection: Balancing Security and Performance

FHE parameter selection is both art and science. The right parameters ensure security while maximizing performance. Poor choices lead to either insecurity or impractical slowness. This guide helps you navigate the trade-offs.

Key Parameters

Most FHE schemes share core parameters:

  • Polynomial degree (N): Ring dimension, typically 2^12 to 2^16
  • Coefficient modulus (q): Bit size of ciphertext coefficients
  • Plaintext modulus (t): For BFV/BGV, determines plaintext space
  • Scale: For CKKS, determines precision
  • Security level (Ξ»): Target security in bits (128, 192, 256)

Parameter Dependencies

Parameters are interrelated:
Higher N β†’ more security and noise room, but slower
Larger q β†’ more multiplication depth, but needs larger N for security
Everything is a trade-off.

Security Level Selection

Choose security level based on your threat model:

  • 128-bit: Standard security, efficient, sufficient for most applications
  • 192-bit: Higher security margin, moderate overhead
  • 256-bit: Maximum security, significant performance cost

For post-quantum security, these levels remain validβ€”lattice problems resist quantum attacks.

Computation Depth Planning

Your computation determines parameter requirements:

  1. Map your computation to homomorphic operations
  2. Count multiplication depth
  3. Add safety margin for noise
  4. Select coefficient modulus chain accordingly
// Example: Biometric distance calculation
// d = sum((a[i] - b[i])^2) for i in 0..n

// Depth analysis:
// Subtraction: depth 0
// Square: depth 1
// Sum (via additions): depth 1
// Total multiplicative depth: 1

// We need modest parameters for this shallow computation

BFV/BGV Parameter Selection

For integer arithmetic schemes:

  • Plaintext modulus: Determines integer range; should fit your data
  • Batching: Choose N to enable desired number of slots
  • Coefficient modulus: Chain length matches computation depth

CKKS Parameter Selection

For approximate arithmetic:

  • Scale: Determines precision (typically 40-60 bits)
  • Coefficient modulus chain: Each multiplication consumes one prime
  • Rescaling: Plan scale management throughout computation

Using Parameter Generators

Modern libraries provide parameter helpers:

// SEAL library example
const parms = seal.EncryptionParameters(seal.SchemeType.bfv);

// Use standard parameters for 128-bit security
const coeffModulus = seal.CoeffModulus.BFVDefault(polyModulusDegree);
parms.setCoeffModulus(coeffModulus);

// Or create custom for specific depth
const coeffModulus = seal.CoeffModulus.Create(
  polyModulusDegree,
  [60, 40, 40, 60]  // Bit sizes for each prime
);

Validation and Testing

After selecting parameters:

  • Verify security with lattice estimator tools
  • Test computation correctness on sample data
  • Measure actual noise consumption
  • Benchmark performance under load

Common Mistakes

  • Over-provisioning: Larger parameters than needed waste performance
  • Under-provisioning: Insufficient noise budget causes failures
  • Ignoring batching: Missing SIMD opportunities
  • Wrong scheme: Using CKKS when BFV would be more efficient

Parameter selection is foundational to FHE success. Take time to understand your computation requirements and test thoroughly before production deployment.

Ready to Go Quantum-Secure?

Start protecting your users with post-quantum authentication today. 1,000 free auths, no credit card required.

Get Free API Key β†’