Implementation

We provide the reference and optimized implementations of EMBLEM and R.EMBLEM (download the source code here). The latest implementation results of EMBLEM and R.EMBLEM are shown below:

EMBLEM

  • [I] EMBLEM
    • Choose each element of the secret key from [-1,1] uniformly at random
    • Encode 8 bits at a time (t=8)
  • [II] EMBLEM
    • Choose each element of the secret key from [-1,1] uniformly at random
    • Encode 4 bits at a time (t=4)
  • [III] EMBLEM
    • Choose each element of the secret key from [-2,2] uniformly at random
    • Encode 8 bits at a time (t=8)
  • [IV] EMBLEM
    • Choose each element of the secret key from [-2,2] uniformly at random
    • Encode 4 bits at a time (t=4)

R.EMBLEM

  • [i] R.EMBLEM 
    • Choose each element of the secret key from [-1,1] uniformly at random
    • Encode 1 bit or 2 bits at a time (t=1 or 2)
    • Use the Number Theoretic Transform (NTT)
  • [ii] R.EMBLEM 
    • Choose each element of the secret key from [-2,2] uniformly at random
    • Encode 1 bit or 2 bits at a time (t=1 or 2)
    • Use the Number Theoretic Transform (NTT)