SFLASH es un algoritmo de firma digital asimétrica recomendado por el proyecto europeo NESSIE en 2003. SFLASH se basa en el esquema Matsumoto-Imai( MI ), también llamado C* . El algoritmo pertenece a una familia de esquemas de clave pública multidimensional, es decir, cada firma y cada hash de mensaje está representado por elementos del campo final K. SFLASH fue diseñado para aplicaciones muy específicas donde los costos de los algoritmos clásicos ( RSA , Elliptic Curves , DSA y otros) se vuelven extremadamente altos. : son muy lentos y tienen un tamaño de firma grande. Entonces SFLASH fue creado para satisfacer las necesidades de las tarjetas inteligentes económicas.
SFLASH es mucho más rápido y sencillo que RSA, tanto a la hora de crear como de verificar (verificar) una firma.
La siguiente notación se utilizará a lo largo de este artículo:
El algoritmo SFLASH utiliza dos campos definidos:
El algoritmo SFLASH también usa dos biyecciones afines s y t de a . Cada uno de los cuales es lineal oculto (matriz 67*67) y constante (columna 67*1), respectivamente.
La clave pública reside en la función G from to definida como:
F es una función de a definida como
Deje que next_7bit_random_string sea una cadena de 7 bits, que se genera llamando a CSPRBG (Generador de bits pseudoaleatorios criptográficamente seguros) 7 veces. Primero obtenemos el primer bit de la cadena, luego el segundo, y así hasta el séptimo.
1) Generamos Se pueden utilizar dos métodos para generar una matriz invertida de 67x67 :(next_7bit_random_string)
3) Generamos Igual que la matriz . 4) Generamos Igual que la columna . 5) Generamos Usando CSPRBG (Generador de bits pseudoaleatorios criptográficamente seguros) generamos 80 bits aleatorios.Sea M nuestro mensaje para el que queremos encontrar una firma S. La creación de una firma S tiene el siguiente algoritmo:
1) Let - estas son cadenas determinadas usando el algoritmo hash criptográfico SHA-1 :
, , , ,2) Encuentre V - Cadena de 392 bits como:
3) Encuentra W - Cadena de 77 bits como:
4) Encuentra Y - una cadena de 56 K elementos como:
5) Encuentra R - una cadena de 11 K elementos como:
6) Encuentra B - elemento como:
7) Encuentra un elemento A como:
, donde F es una función de a definida como:8) Buscar - línea 67 elementos K:
9) Firma S - Cadena de 469 bits obtenida como:
Dado un mensaje M (cadena de bits) y una firma S (cadena de 256 bits). El siguiente algoritmo se utiliza para determinar la validez de la firma S del mensaje M:
1) Let - estas son cadenas determinadas usando el algoritmo hash criptográfico SHA-1 :
, , , ,2) Encuentre V - Cadena de 392 bits como:
3) Encuentra Y - una cadena de 56 K elementos como:
4) Encuentra Y' - una cadena de 56 K elementos como:
5) Compare las cadenas resultantes Y e Y'. Si son iguales, se acepta la firma, en caso contrario se rechaza.