Stavo pensando a uno schema di hashing delle password che avrebbe funzionato in modo approssimativo come segue.
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) + "$"
Durante la verifica della password, il verificatore ripeterà il passaggio di hashing della password e verificherà se la firma verifica i dati forniti.
Modifica: mi sono appena reso conto che la stessa cosa poteva essere ottenuta semplicemente usando l'output PBKDF2 (strong salt salt e password) come chiave privata, moltiplicandolo e pubblicando salt e public key come hash della password.
Ci sono dei problemi con questo schema? In pratica, stavo pensando di usare qualcosa come PBKDF2-HMAC-SHA256 come hash e includendo anche salt con questo.