SNOVA is een algoritme voor digitale handtekeningen dat is geselecteerd voor de derde ronde van het NIST-project voor post-quantumcryptografie. De huidige versie dateert van augustus 2026.
SNOVA is een variant van de Unbalanced Oil and Vinegar (UOV)-handtekeningenfamilie en is ontworpen om over niet-commutatieve ringen te werken teneinde een hogere efficiëntie en een kleinere omvang van de publieke sleutel te bereiken. Traditionele UOV-schema's hebben te kampen hebben met zeer grote publieke sleutels. Dit wordt door SNOVA effectief opgelost.
Naar aanleiding van de cryptanalyse tijdens rondes 1 en 2 is het SNOVA-schema voor de ronde 3 inzending opnieuw geformuleerd om tot een flexibeler raamwerk te komen. Recent onderzoek laat zien dat SNOVA kan worden gekarakteriseerd als het toepassen van een whipping-transformatie, vergelijkbaar met die van MAYO, op een gestructureerde publieke UOV-sleutel die gebruikmaakt van de F_q[S]-structuur. Omdat de ring F_q[S] isomorf is met het uitbreidingslichaam F_(q^l), is dit ontwerp te vergelijken met de techniek van polynoommatrices die in QR-UOV wordt toegepast.
De herformulering voor ronde 3 breidt de handtekening uit naar rechthoekige matrices. Dit levert een schema op dat door zeven parameters wordt gedefinieerd: (v, o, q, l, r, m_1, m_2). Hierdoor kan de whipping-dimensie r een onafhankelijke parameter zijn die losstaat van l, en kan het aantal vergelijkingen m_2 onafhankelijk van het aantal matrices van de publieke sleutel m_1 worden gekozen. Deze herformulering biedt veiligheidsvoordelen en veel meer flexibiliteit bij de parameterkeuze, maar is wel volledig compatibel met de ronde 2 versie.
De volgende tabel toont de prestaties van de voorgestelde SNOVA-instanties. De omvang is uitgedrukt in bytes en de prestaties in klokcycli, gemeten op een modern desktopsysteem met ondersteuning voor AVX2 en GFNI (Intel Core Ultra 7 265K).
| Variant | pk | sk | sig | KeyGen | Sign | Verify |
|---|---|---|---|---|---|---|
| SNOVA_I_K | 376 | 96 | 528 | 159,618 | 584,188 | 166,666 |
| SNOVA_I_K_AES | 376 | 96 | 528 | 87,169 | 512,004 | 94,164 |
| SNOVA_I_B | 656 | 96 | 388 | 170,468 | 557,746 | 141,919 |
| SNOVA_I_B_AES | 656 | 96 | 388 | 102,661 | 489,983 | 74,376 |
| SNOVA_I_S | 1016 | 96 | 272 | 204,195 | 397,921 | 149,024 |
| SNOVA_I_S_AES | 1016 | 96 | 272 | 132,758 | 325,418 | 78,305 |
| Variant | pk | sk | sig | KeyGen | Sign | Verify |
|---|---|---|---|---|---|---|
| SNOVA_III_K | 912 | 96 | 688 | 416,490 | 1,240,034 | 349,462 |
| SNOVA_III_K_AES | 912 | 96 | 688 | 243,311 | 1,061,262 | 175,688 |
| SNOVA_III_B | 1416 | 96 | 532 | 484,626 | 1,226,638 | 335,912 |
| SNOVA_III_B_AES | 1416 | 96 | 532 | 303,622 | 1,045,116 | 156,118 |
| SNOVA_III_S | 2032 | 96 | 456 | 562,069 | 1,333,170 | 356,953 |
| SNOVA_III_S_AES | 2032 | 96 | 456 | 372,165 | 1,141,612 | 167,684 |
| Variant | pk | sk | sig | KeyGen | Sign | Verify |
|---|---|---|---|---|---|---|
| SNOVA_V_K | 1216 | 96 | 896 | 811,680 | 2,573,021 | 684,735 |
| SNOVA_V_K_AES | 1216 | 96 | 896 | 548,998 | 2,301,728 | 424,527 |
| SNOVA_V_B | 1891 | 96 | 691 | 955,444 | 2,470,611 | 679,221 |
| SNOVA_V_B_AES | 1891 | 96 | 691 | 682,823 | 2,192,284 | 409,444 |
| SNOVA_V_S | 2716 | 96 | 591 | 1,101,953 | 2,619,986 | 749,582 |
| SNOVA_V_S_AES | 2716 | 96 | 591 | 823,154 | 2,341,503 | 465,939 |