Ho letto certe bo**te in questo thread, e non potevo non intervenire

La O-key, la chiavetta della Unicredit, le chiavette della maggiorparte delle banche, implementato tutte lo stesso algoritmo: rsa. Che e' un algoritmo asimmetrico, cioe basato su una copia di chiavi privata/pubblica.

Oggi sul mercato, ci sono principalmente 3 tipi di chiavette:
1. Quella sviluppata dalla RSA Security che fa parte della EMC2, e viene chiamata RSA SecurID, e si stima occupi ~70% del mercato dell'autenticazione a due fattori. In Italia viene usata ad esempio dalla Unicredit.
2. Quella sviluppata dalla Vasco, chiamata Digipass. In Italia viene usata ad esempio dalla Intesa San Paolo.
3. Altri sconosciuti alla scienza

Il funzionamente di base non cambia, si tratta sempre dell'algoritmo rsa.

Il tutto funziona cosi: Sulla chiavetta c'e' una chiave (seed), detta pubblica. Sul server di autenticazione c'e' un altra, privata, assegnata all'account dell'utente.
Sulle chiavette, ogni 15, 30, 60 secondi (e altre variazioni, puo cambiare di banca in banca), o alla pressione del pulsante, viene generato un nuovo numero. Naturalmente si tratta del datetime corrente crittato con la chiave pubblica. Il risultato ottenuto si chiama token, ed e' quello che vediamo sul display della chiavetta. Se usiamo il token che vediamo per autenticarci, il server remoto, lo decodifica usando la sua chiave privata. Poi confronta il risultato con il suo datetime, tenendo anche contro dell'intervallo di cui sopra. In questo modo riesce a verificare la correttezza di un token.

Per quanto riguarda la sincronizzazione delle ore: Il server ovviamente sara' sempre sincronizzato con l'orologio atomico. Sulla chiavetta e' probabile che sia stato usato un meccanismo abbastanza affidabile che non si desincronizzi troppo durante i 3 anni della durata della chiavetta. Poi, se va avanti/rimane indietro di qualche secondo, non importa. Come dicevo sopra, la chiave viene generata non sul datetime comprendente il secondo corrente, ma sull'intervallo corrente. Spesso molti server mantengono la validita' di un token anche un paio di secondi dopo la scandeza.

Il fatto che le banche usino la stessa chiave publica/privata per diversi account (e non l'algoritmo, quello ovviamente e' sempre unico, quello adottato dalla banca) e' una leggenda metropolitana. La copia delle chiavi viene generata non solo in base ai dati del cliente, ma anche ad altre chiavi, progressivi etc, per garantire l'univocita'.