La One Time Password generata dalla precedente procedura è lunga 64 bit. Inserire un numero a 64 bit è un processo difficile e soggetto ad errori. Alcuni generatori inseriscono questa password in un flusso di input, mentre altri la rendono disponibile per sistemi “taglia e incolla”. Ancora, altre versioni richiedono che la One Time Password venga inserita manualmente. Il sistema OTP è progettato per facilitare questo inserimento manuale senza influire sui metodi automatici.
Il protocollo OTP prevede due formati per le One Time Password: Codifica a sei parole e Codifica esadecimale.
Codifica a sei parole
La One Time Password può essere convertita in una sequenza di 6 piccole parole (da 1 a 4 lettere) che usano solo caratteri del set ISO-646 e che deve essere accettata da tutti i server. Ogni parola è scelta da un dizionario di 2048 parole e viene codificata utilizzando 11 bit per un totale di 66 bit (11*6).
I
due bit extra di questa codifica sono utilizzati per memorizzare una somma
di controllo (checksum). I 64 bit della chiave sono spezzati in coppie
e successivamente sommati insieme. |
![]() |
|
Tutti
i generatori OTP devono calcolare questa somma di controllo e tutti i
server OTP devono verificarla esplicitamente come parte dell’operazione
di decodifica della rappresentazione della One Time Password. |
||
Come evidenziato dalla figura
sotto riportata, i due bit meno significativi di questa somma sono codificati
negli ultimi due bit della sequenza di 6 parole dove il bit meno significativo
della somma coincide con l’ultimo bit codificato. |
Ognuno dei blocchi da 11 bit viene utilizzato per indicizzare una parola all'interno del dizionario (standard o alternativo) come rappresentato dal seguente schema:
I generatori producono le sei
parole dell’output utilizzando lettere in maiuscolo con singoli spazi
come separatori. Tutti i server devono accettare il formato a sei parole senza
considerare la forma delle lettere (maiuscolo/minuscolo) e gli spazi bianchi
usati come separatori.
Le due linee dell’esempio seguente rappresentano la stessa One Time Password.
La prima è valida come output di un generatore e come input di un server,
la seconda è valida solo come input fornito da un operatore ad un server:
OUST COAT FOAL MUG BEAK TOTE
oust coat foal mug beak tote
Al fine di garantire l’interoperabilità, è necessario che tutti i server ed i generatori OTP usino lo stesso dizionario. Il dizionario standard fu inizialmente specificato nel sistema One Time Password "S/KEY". Tale dizionario è presente nell’appendice D.
Codifica esadecimale
Per facilitare l’implementazione
di generatori più piccoli, un’alternativa accettabile per la rappresentazione
della One Time Password è costituita da un output esadecimale.
Tutte le implementazioni del software del server devono accettare la rappresentazione
esadecimale case-insensitive
così come avviene per il formato a sei parole.
Le cifre esadecimali possono essere separate da spazi bianchi e di conseguenza,
ai server è richiesto di ignorare tali spazi. Se la rappresentazione
è partizionata da spazi bianchi, gli zero più significativi devono
essere trattenuti.
Riportiamo di seguito alcuni esempi di formato esadecimale:
Rappresentazione |
Valore |
3503785b369cda8b |
0x3503785b369cda8b |
e5cc
a1b8 7c13 096b |
0xe5cca1b87c13096b |
C7
48 90 F4 27 7B A1 CF |
0xc74890f4277ba1cf
|
47
9 A68 28 4C 9D 0 1BC |
0x479a68284c9d01bc |
Poiché vi è una
remota possibilità che una codifica esadecimale di una One Time Password
sia identica ad una codifica valida delle sei parole del dizionario standard,
tutte le implementazioni devono usare il seguente schema.
Se una One Time Password codificata nelle sei parole è valida, essa è
accettata; altrimenti, se la One Time Password può essere interpretata
come valore esadecimale, e se con tale decodifica essa è valida, viene
ancora accettata.
Dizionario alternativo
Oltre ad accettare le sei parole
prodotte dal generatore e la codifica esadecimale dei 64 bit di cui è
composta la One Time Password, i server dovrebbero accettare la codifica del
dizionario alternativo descritta nell’appendice
B. Le sei parole in tale codifica non devono sovrapporsi all’insieme
delle parole del dizionario standard. Per evitare ambiguità con la rappresentazione
esadecimale, le parole del dizionario alternativo non devono essere costituite
solamente dalle lettere che vanno dalla A alla F. La decodifica di tali parole
non richiede nessuna conoscenza del dizionario alternativo utilizzato, cosicché
l’accettazione di qualsiasi dizionario alternativo implica l’accettazione
di tutti i dizionari alternativi. Le parole nei dizionari alternativi sono case-sensitive.
I generatori ed i server devono preservare il formato delle lettere (maiuscolo
/ minuscolo) nell’elaborazione di queste parole.