jeffmur / fhel

Fully Homomorphic Encryption Library
https://pub.dev/packages/fhel
MIT License
2 stars 0 forks source link

Levels - SEAL Basics #49

Closed jeffmur closed 9 months ago

jeffmur commented 9 months ago

https://github.com/microsoft/SEAL/blob/main/native/examples/3_levels.cpp


[ RUN      ] Basics.Levels
/
| Encryption parameters:
|   scheme: BFV
|   poly_modulus_degree: 8192
|   coeff_modulus size: 5 (43 + 43 + 44 + 44 + 44) bits
|   plain_modulus: 1032193
\
Line  94 --> Print the modulus switching chain.
----> Level (chain index): 4 ...... key_context_data()
      parms_id: f9ece899e98dc76c 461b0a7748fa8c61 88e468603ecbbd8e 75feb3e1288c08b8 
      coeff_modulus primes: 7fffffd8001 7fffffc8001 fffffffc001 ffffff6c001 fffffebc001 
\
 \--> Level (chain index): 3 ...... first_context_data()
      parms_id: 23ae23fc1ed2a1b6 90ae48e187641b71 d7611ddf0056f6a7 d4ce43eef038575f 
      coeff_modulus primes: 7fffffd8001 7fffffc8001 fffffffc001 ffffff6c001 
\
 \--> Level (chain index): 2
      parms_id: 783297d2e7d9b749 80e40178a3bd9991 e84fed758f28b19a 2192abbc157b996a 
      coeff_modulus primes: 7fffffd8001 7fffffc8001 fffffffc001 
\
 \--> Level (chain index): 1
      parms_id: 748291d211394e8e 28b3a2963de475b0 382acfd0e00205b5 bab66082d91dc08a 
      coeff_modulus primes: 7fffffd8001 7fffffc8001 
\
 \--> Level (chain index): 0 ...... last_context_data()
      parms_id: 8b59c1c982f0a72d bce1ddc82ae8dc9f 68952fcaa638d78a b80046009fe3e881 
      coeff_modulus primes: 7fffffd8001 
\
 \--> End of chain reached

Line 171 --> Print the parameter IDs of generated elements.
    + public_key:  f9ece899e98dc76c 461b0a7748fa8c61 88e468603ecbbd8e 75feb3e1288c08b8 
    + secret_key:  f9ece899e98dc76c 461b0a7748fa8c61 88e468603ecbbd8e 75feb3e1288c08b8 
    + relin_keys:  f9ece899e98dc76c 461b0a7748fa8c61 88e468603ecbbd8e 75feb3e1288c08b8 

    + plain:       0 0 0 0  (not set in BFV)
    + encrypted:   23ae23fc1ed2a1b6 90ae48e187641b71 d7611ddf0056f6a7 d4ce43eef038575f 

Line 219 --> Perform modulus switching on encrypted and print.
----> Level (chain index): 3
      parms_id of encrypted: 23ae23fc1ed2a1b6 90ae48e187641b71 d7611ddf0056f6a7 d4ce43eef038575f 
      Noise budget at this level: 146 bits
\
 \--> Level (chain index): 2
      parms_id of encrypted: 783297d2e7d9b749 80e40178a3bd9991 e84fed758f28b19a 2192abbc157b996a 
      Noise budget at this level: 102 bits
\
 \--> Level (chain index): 1
      parms_id of encrypted: 748291d211394e8e 28b3a2963de475b0 382acfd0e00205b5 bab66082d91dc08a 
      Noise budget at this level: 58 bits
\
 \--> Level (chain index): 0
      parms_id of encrypted: 8b59c1c982f0a72d bce1ddc82ae8dc9f 68952fcaa638d78a b80046009fe3e881 
      Noise budget at this level: 15 bits
\
 \--> End of chain reached

Line 255 --> Decrypt still works after modulus switching.
    + Decryption of encrypted: 1x^3 + 2x^2 + 3x^1 + 4 ...... Correct.

Computation is more efficient with modulus switching.
Line 276 --> Compute the 8th power.
    + Noise budget fresh:                    146 bits
    + Noise budget of the 2nd power:         114 bits
    + Noise budget of the 4th power:         81 bits
    + Noise budget after modulus switching:  81 bits
    + Noise budget of the 8th power:         48 bits
    + Noise budget after modulus switching:  48 bits
    + Decryption of the 8th power (hexadecimal)
    1x^24 + 10x^23 + 88x^22 + 330x^21 + EFCx^20 + 3A30x^19 + C0B8x^18 + 22BB0x^17 + 58666x^16 + C88D0x^15 + 9C377x^14 + F4C0Ex^13 + E8B38x^12 + 5EE89x^11 + F8BFFx^10 + 30304x^9 + 5B9D4x^8 + 12653x^7 + 4DFB5x^6 + 879F8x^5 + 825FBx^4 + F1FFEx^3 + 3FFFFx^2 + 60000x^1 + 10000 ...... Correct.

Line 332 --> Disable modulus switching chain.
Optionally disable modulus switching chain expansion.
----> Level (chain index): 1
      parms_id: f9ece899e98dc76c 461b0a7748fa8c61 88e468603ecbbd8e 75feb3e1288c08b8 
      coeff_modulus primes: 7fffffd8001 7fffffc8001 fffffffc001 ffffff6c001 fffffebc001 
\
 \--> Level (chain index): 0
      parms_id: 23ae23fc1ed2a1b6 90ae48e187641b71 d7611ddf0056f6a7 d4ce43eef038575f 
      coeff_modulus primes: 7fffffd8001 7fffffc8001 fffffffc001 ffffff6c001 
\
 \--> End of chain reached

[       OK ] Basics.Levels (1891 ms)