Why compute MaxPlaintextSpace in this way?

/**

  • Getter for maximum plaintext modulus
  • @return
    */
    NativeInteger GetMaxPlaintextSpace() const {
    return m_params->GetLWEParams()->Getq() / (this->GetBeta() << 1);
    }

/**

  • Getter for the beta security parameter
  • @return
    */
    constexpr NativeInteger GetBeta() const {
    return NativeInteger(128);
    }

What is the relationship between the plaintext space and the security parameter?

Please read Sections 6.3, 6.4, and 7.1 of Large-Precision Homomorphic Sign Evaluation using FHEW/TFHE Bootstrapping for details. These sections explain why \beta was chosen as 128 and p was set to q/(2\beta) in the parameters used for the OpenFHE scheme switching functionality.

1 Like