Esperimento 02
rust-attack
Portare in Rust alcuni attacchi di fattorizzazione di RsaCtfTool per misurare un’ipotesi, non per confermarla.
Esperimento conclusoL’ipotesi
Volevo imparare Rust attraverso un problema concreto e verificare una supposizione apparentemente ragionevole: una versione nativa degli attacchi di fattorizzazione di RsaCtfTool sarebbe stata più veloce dell’implementazione Python.
Ho quindi portato una parte degli algoritmi, mantenendo esplicito il credito al progetto originale, e ho confrontato le due versioni.
Python vinse
Nel primo confronto sull’algoritmo di Shor, Python risultò più veloce. Il test non è un verdetto generale sui linguaggi e non dimostra che Rust sia lento: dimostra che l’ipotesi, in quella implementazione e in quel benchmark, non era confermata.
È precisamente il genere di risultato per cui esistono i Labs. Se un esperimento può soltanto darti ragione, non sta misurando molto.
Il risultato inatteso
Leggendo da vicino l’implementazione originale emerse però un errore nella condizione usata dall’algoritmo classico di Shor. Il codice controllava il valore di gcd(n, a) come booleano, quando avrebbe dovuto verificare che fosse uguale a uno.
Segnalai il problema nella issue 424 di RsaCtfTool; l’autore confermò la condizione mancante e la corresse upstream. L’ipotesi sulle prestazioni non sopravvisse, ma il porting produsse comunque qualcosa di utile.
Esplora rust-attack su GitHub Leggi la segnalazione upstream