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.