Genera las funciones necesarias para crear claves, firmar y verificar, dada una lista de parámetros (bits=256, largo=28 y tipo='a' en el ejemplo).
La lista de valores bits, largo y tipo disponibles se puede obtener usando...
Todo algoritmo OTS (one-time signature) permite firmar un sólo mensaje por clave. Firmar más de un mensaje con la misma clave rompería la seguridad.
Se debe crear una clave nueva por cada mensaje a firmar.
Permiten ajustar el tamaño de la firma, el tiempo de verificación o firmado, y comprimir las claves. Se pueden elegir libremente, son independientes del nivel de seguridad.
largo: Entero que determina el tamaño de la firma, en cantidad de hashes (!outputs). Ejemplo, si largo=28 y el tamaño de un hash es de 256 bits, la firma ocupa 28 * 256 bits = 7168 bits.
Los valores disponibles dependen de los parámetros tipo y bits, y son un subconjunto de la secuencia...
tipo: Tipo de constantes (N, zeta). Permite ajustar el algoritmo entre constantes óptimas para firmar rápido y constantes óptimas para verificar rapido. Valores:
'v' o 'ver': Constantes óptimas para verificar rápido, a expensas del tiempo necesario para firmar.
'a' o 'aprox': Constantes que aproximan los tiempos óptimos para verificar (dentro de un umbral del 1.5%), pero son bastante más rápidas para firmar.
's' o 'sig': Constantes óptimas para firmar rápido, a expensas del tiempo de verificación (en inglés, sign=firmar).
comprimido Si comprimido=True (verdadero), reduce el tamaño necesario para almacenar las firmas privada y pública, a expensas de un pequeño incremento del costo computational. (!overhead) La clave privada se deriva de una semilla privada (seed) usando una función hash en modo contador, y la clave pública se comprime en un check público usando otra función hash.
Modifican distintos aspectos del nivel de seguridad del algoritmo. Ante la duda, dejar los valores por defecto.
bits: Cantidad de bits usados para representar el mensaje que se va a firmar. Por ejemplo, con bits=256 se pueden representar hasta 2256 mensajes distintos. Valores disponibles:
consal: Si consal=True (verdadero), usa una sal para aleatorizar las funciones hash. Aumenta la seguridad contra ataques basados en la paradoja del cumpleaños (en inglés, 'birthday attacks') y contra ataques a objetivos múltiples. La sal se genera al momento de crear las claves y se publica junto con la firma.
upbits: Tamaño de salida de la función hashUp, usada para aplicar ups desde el nivel bajo (clave privada) hasta el nivel alto (clave pública).
cbits: Tamaño de salida de la función hash usada para comprimir la clave pública.