I assumed the total entropy of one query to be about 232, which is only 529
Il calcolo è corretto ma quello che mostri è il numero di varianti che non è uguale all'entropia o alla forza della password. Questo sarebbe invece di circa 9 dal 2 9 = 512.
Is this enough for a secondary factor?
Probabilmente no, ma dipende molto da come viene utilizzato questo secondo fattore. Se l'attaccante può fare supposizioni illimitate in breve tempo senza effetti collaterali, questo non è sicuramente sufficiente. Se invece il primo tentativo sbagliato provocherà la morte immediata dell'aggressore, anche questo semplice schema di forza bruta potrebbe essere troppo rischioso per iniziare anche con la forza bruta.
If not, how can its security be improved?
I modi ovvi sono di aumentare il numero di varianti, cioè inserire più lettere in ogni griglia, scegliere tra più simboli (ad esempio usare anche lettere minuscole), chiedere più di una sola cella della griglia ...
Oltre a tale limite, il numero di possibili tentativi di rallentare la forzatura bruta. Questo potrebbe essere un tempo di attesa crescente dopo ogni ipotesi errata o persino un blocco permanente dopo un numero specifico di tentativi errati. O aumentare i costi di ogni ipotesi sbagliata, in realtà richiede sempre più soldi per avere un'altra ipotesi :)
Quale di queste e simili proposte è effettivamente fattibile dipende molto dell'ambiente in cui viene utilizzato questo schema. Dipende anche dal valore delle attività che dovrebbero essere protette da questo schema, cioè i costi per rompere questo schema dovrebbero essere superiori a quelli che si possono ottenere come risultato in modo che la rottura del programma non sia attraente. Ciò significa che un altro modo di affrontare il problema è limitare ciò che l'attaccante può ottenere con una singola ipotesi corretta.