Un grupo de Schnorr , propuesto por Claus P. Schnorr , es un gran subgrupo de orden primario de, el grupo multiplicativo de números enteros módulopor alguna prima . Para generar tal grupo, genere, , tal que
con , principal. Entonces elige cualquiera en el rango hasta que encuentres uno tal que
- .
Este valor
es un generador de un subgrupo de de orden .
Los grupos de Schnorr son útiles en criptosistemas basados en registros discretos, incluidas firmas de Schnorr y DSA . En tales aplicaciones, normalmentese elige para que sea lo suficientemente grande como para resistir el cálculo de índices y los métodos relacionados para resolver el problema del registro discreto (quizás de 1024 a 3072 bits), mientras quees lo suficientemente grande para resistir el ataque de cumpleaños en problemas de registro discretos, que funciona en cualquier grupo (quizás de 160 a 256 bits). Debido a que el grupo de Schnorr es de primer orden, no tiene subgrupos propios no triviales, lo que frustra los ataques de confinamiento debido a subgrupos pequeños. Las implementaciones de protocolos que utilizan grupos de Schnorr deben verificar, cuando corresponda, que los números enteros proporcionados por otras partes sean de hecho miembros del grupo de Schnorr; es miembro del grupo si y . Cualquier miembro del grupo excepto el elemento también es un generador del grupo.