Parameters:


Our current parameters are (note that this might change):


We select and implement four parameter sets: For NIST security level 1, we select two parameter sets: MAYO_one and MAYO_two, where MAYO_one has smaller public keys but larger signatures and conversely MAYO_two has smaller signatures but larger public keys. For NIST security level 3 and NIST security level 5, we select one parameter set each, which we refer to as MAYO_three and MAYO_five, respectively. The parameter sets and the corresponding key and signature sizes are displayed below.


Parameter set MAYO_one MAYO_two MAYO_three MAYO_five
security level 1 1 3 5
secret key size 24 B 24 B 32 B 40 B
public key size 1168 B 5488 B 2656 B 5008 B
signature size 321 B 180 B 577 B 838 B

Cycle counts for our reference implementation (using AES-NI, but no AVX2):


Scheme KeyGen Sign Verify
MAYO_one 369,358 1,507,684 285,744
MAYO_two 1,086,330 1,897,138 168,686
MAYO_three 4,245,918 13,684,206 1,758,830
MAYO_five 5,928,022 18,990,710 2,329,306

We ran the performance evaluation on an Intel Core i7-9750H CPU (Coffee Lake) with 2.6 GHz on macOS 13.1. The library was compiled with Apple Clang version 14.0.0. Both builds use -O3 compiler optimization level and -march=native build architecture. Turbo Boost was deactivated to achieve consistent timings.

The table above shows MAYO performance in CPU cycles on an Intel Core i7-9750H CPU (Coffee Lake) with 2.6 GHz. Results are the median of 1000 benchmark runs.