Estaba pensando en un esquema de hashing de contraseña que funcionaría aproximadamente de la siguiente manera.
for i:=0 to n do
password = HASH(password)
private_key = GenerateRandomKey(ED448)
public_key = GetPublicKey(ED448, private_key)
signature = Sign(private_key, password)
secure_zero(private_key)
hash = "$"+n+"$" + Base64(public_key) + "$" + Base64(signature) + "$"
Al verificar la contraseña, el verificador repetiría el paso de hashing de la contraseña y vería si la firma verifica los datos proporcionados.
Editar: Acabo de darme cuenta de que esto mismo podría lograrse con solo usar la salida PBKDF2 (salteado y contraseña aleatorios fuertes) como clave privada, multiplicarla y publicar sal y la clave pública como hash de contraseña.
¿Hay algunos problemas con este esquema? En la práctica, estaba pensando en usar algo como PBKDF2-HMAC-SHA256 como hash e incluir sal con esto también.