A partire da questa mattina qualsiasi hash SHA-1 può essere ufficialmente scontrato per un minimo di $ 110k in GPU su Amazon.
Ovviamente questo significa che per molte applicazioni SHA-1 è completamente inutile e che nei prossimi anni avrà fatto la differenza con MD5.
Domanda:
Sembra che nel tempo decidiamo che il modo migliore per rendere le cose più sicure è solo quello di creare algoritmi che richiedono sempre più bit entropia e una potenza di elaborazione della CPU sempre maggiore che sembra una soluzione falsa.
Se 128-bit di entropia sono abbastanza entropia (vale a dire AES-128 è preferibile a AES-256), perché non abbiamo appena creato algoritmi in grado di gestire meglio i 128 bit di entropia?
Inoltre, invece di passare ad algoritmi in cui alla fine si troveranno anche difetti che aumentano drasticamente la CPU, la memoria e i requisiti di archiviazione (c'è una ENORME differenza tra MD5 e SHA-256 quando si esegue il calcolo su un telefono o un raspberry pi), perché non accoppiamo solo due algoritmi imperfetti insieme?
Ad esempio: non potremmo eseguire 512 bit attraverso l'algoritmo MD5 e quindi eseguire quegli stessi 512 bit attraverso un SHA-1 e fare un semplice mux sul risultato combinato e anche se entrambi gli algoritmi hanno attacchi noti, la coincidenza di un utente malintenzionato che trova qualsiasi insieme di bit che si allinea nelle tabelle di entrambi gli algoritmi sembra essere abbastanza sicuro. O semplicemente digerendo l'MD5 in ordine inverso ad ogni blocco e sparpagliando alcuni dei precedenti bit di origine ogni n blocchi: puoi leggere un blocco in avanti, invertire i bit, eseguirlo all'indietro, e poi continuare al blocco successivo e dopo 16 blocchi prendere l'ennesimo bit dei blocchi sorgente originali, forse ha anche una finestra a rotazione su di esso - contiene meno di 1k in memoria in un dato momento.
Sembra che stiamo cercando di trovare questa singola soluzione matematica definitiva per l'entropia di qualcosa che potrebbe essere risolto in modo molto più semplice con due o tre soluzioni matematiche più semplici che sono out-of-band l'una dall'altra e questo sarebbe più veloce, più efficiente in termini di memoria, più efficiente nell'archiviazione e più sicuro rispetto a qualsiasi singolo algoritmo.
C'è un difetto nel mio ragionamento?
Questo NON è UN DUPLICATO
Il altra domanda sta parlando di prendere il risultato finale di un hash in serie con un altro (link più debole):
f(g(x)) => y
La mia domanda riguarda l'utilizzo di più hash simultaneamente su ogni blocco per evitare punti deboli (esclusione reciproca delle vulnerabilità)
for n of x:
f(x[n]) \
(x[n]')XOR(x[n]'') => y
g(x[n]) /
Poiché la domanda è diversa, anche le risposte sono diverse.