Vista l'importanza di avere una passphrase o una password forte come protezione di "secondo livello" al seed, esiste questo grazioso tool che forse non tutti conoscono:
https://lowe.github.io/tryzxcvbn/zxcvbn serve per testare l'effettiva entropia della vs parola d'ordine, simulando l'ordine esatto con cui i software di cracking moderni (come Hashcat o John the Ripper) esplorano lo spazio delle combinazioni.
Ovviamente inserire la pw in un sito internet non è mai cosa buona, per cui consiglio di usarlo offline e di inserire una password simile, come struttura, alla vostra.
Per far capire quanto la mente umana sia pessima nel generare entropia, ho inserito una sequenza per me veramente "a caso" di 12 caratteri ed ho ottenuto questi risultati
guesses_log10: 12
score: 4 / 4
function runtime (ms): 1
guess times:
100 / hour: centuries (throttled online attack)
10 / second: centuries (unthrottled online attack)
10k / second: 3 years (offline attack, slow hash, many cores)
10B / second: 2 minutes (offline attack, fast hash, many cores) Nonostante il punteggio massimo (4/4) quello che preoccupa è la prima riga. Significa che un attaccante dovrebbe fare 10^12 tentativi per indovinarla o, in altri termini, che la mia entropia reale è log_2(10^12)~40 bit
quando invece l'entropia massima di una stringa di 12 caratteri su un insieme possibile di ~94 simboli dovrebbe essere 12*log_2(94)=78 bit, corrispondente a 94^12 possibilità
Per far capire quanto quel 10^12 sia un gioco da ragazzi per i sistemi di calcolo moderni, ho chiesto all'IA di farmi una simulazione: un cluster di 600 GPU Nvidia H100 impiegherebbe circa 24 ore a violarla e un attaccante potrebbe noleggiare questo cluster in cloud ad un prezzo di circa 30.000 dollari.
Se invece lo spazio di ricerca fosse quello massimo (94^12), allo stesso cluster servirebbero dai 650 ai 1300 anni (

) rendendo l'attacco completamente antieconomico.
In altre parole: l'entropia è la vs amica, non affidatevi MAI alla pseudocasualità del vs cervelloPer la generazione di password casuali esiste il metodo analogico (dadi) e quello digitale.
Nel secondo caso NON usate sistemi di casualità posticci come la funzione random di excel ( qualcuno in giro ha fatto anche questo) ma utilizzate il CSPRNG del vs PC, simulando quello che fanno (o dovrebbero fare nel caso Coldcard

) gli hw wallet.
Per usare il CSPRNG a mano da Windows aprite la Powershell (tasto windows e scrivete powershell). Al prompt copiate questo comando:
-join ((33..126) | Get-Random -Count 12 | ForEach-Object {[char]$_})
che vi restituirà una password di 12 caratteri veramente casuali
Esempio

Su Linux potete fare la stessa cosa da bash con il comando:
tr -dc 'A-Za-z0-9!@#$%^&*()_+-=[]{}|;:,.<>?' < /dev/urandom | head -c 16; echo
Visto che la password viene mostrata a schermo sarebbe buona norma generarla con queste accortezze:
-Avviare il computer da una chiavetta USB con un sistema operativo Live che risiede esclusivamente nella memoria RAM e non tocca il disco rigido (es. Tails o Ubuntu Live).
-Mantenere il pc offline con Wi-Fi e Bluetooth fisicamente disattivati (o scollegati).
-Generare la password da terminale.
-Trascriverla a mano su carta (non usare ctrl+c)
Mi sono anche fatto fare dall'IA uno script per Powershell che genera la password in modo casuale e calcola l'entropia massima. Il comando, per sequenze super robuste di 16 caratteri, è questo:
$l=16; $b=New-Object Byte[] $l; [System.Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($b); $c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+-=[]{}|;:,.<>?'; $p=-join ($b | % { $c[$_ % $c.Length] }); $e=[Math]::Round($l * ([Math]::Log($c.Length, 2)), 2); Write-Host "Password: " -NoNewline; Write-Host $p -ForegroundColor Green; Write-Host "Entropia: " -NoNewline; Write-Host "$e bit" -ForegroundColor Cyan
e l'output questo
