Set dei comandi APDU di eToken R2
Come abbiamo già detto, eToken R2 opera mediante un file system definito dallo standard ISO 7816-4 (per informazioni dettagliate su questo standard vedi Riferimenti). Per comprendere il funzionamento di eToken, è necessario definire i tipi di file gestiti dal suo file system:
DF: Directory File. In pratica è una directory, ovvero un file che contiene altri file.
MF: Main File. È l'analogo della directory / di linux, cioè è la root directory.
EF: Elementary File. File normale che contiene dati binari.
KF: Key File. File che contiene la chiave DES usata da eToken.
I file di tipo KF sono lunghi esattamente 24 byte, di cui 16
byte rappresentano la chiave, e i rimanenti 8 byte vengono usati internamente
da eToken per il MAC della chiave a scopi di sicurezza.
Questo file system deve sottostare ad alcune restrizioni: una è che
se la lunghezza dei file è stimata come maggiore di 64 Kb allora deve
essere specificata al momento della creazione del file e non può essere
cambiata, cioè, ad esempio, se dobbiamo scrivere un file la cui lunghezza
finale sarà di 100 Kb, ma che inizialmente è di 10 Kb, allora
siamo costretti a farci allocare sin dall'inizio tutti e 100 i Kb. Un'altra
caratteristica saliente di questo file system è che in ogni istante
vengono mantenute tre informazioni: file correntemente selezionato, directory
corrente e chiave usata, cioè, per leggere un file dobbiamo prima selezionare
la directory in cui si trova, poi il file stesso e infine specificare la chiave; solo
allora potremo tentare la lettura. Talvolta un'ulteriore informazione che
viene mantenuta è la chiave di sessione usata nel protocollo di trasferimento
da/verso l'host.
Le operazioni definite sui tipi di file enunciati sono riassunti nella seguente
tabella:
È interessante notare che i file di tipo KF non possono essere letti, infatti il loro destino è di essere usati nella gestione della sicurezza del sistema.
La tabella che segue contiene una panoramica sui comandi di eToken R2:
Comando |
Descrizione |
CHANGE CODE |
Cambia la password di login |
CREATE FILE |
Crea un DF, EF, o KF sotto il DF corrente |
DELETE FILE |
Cancella il corrente DF, EF o KF |
DESX_OPERATION |
Effettua un'operazione di tipo DES con il KF corrente |
DIRECTORY |
Legge il contenuto del DF corrente |
GET_CONFIG |
Restituisce informazioni sulla configurazione corrente dell'eToken |
GET_CONFIG2 |
Restituisce il più grande blocco libero nell'eToken configuration |
READ BINARY |
Legge dall'EF corrente |
SELECT FILE |
Seleziona il corrente DF, EF o KF |
VERIFY |
Effettua il login in modalità sicura |
WRITE BINARY |
Scrive sull'EF corrente |
WRITE KEY |
Scrive sul KF corrente |
Il funzionamento di quasi tutte le operazioni suddette è piuttosto
intuitivo. La descrizione di CHANGE CODE, DESX_OPERATION e VERIFY,
invece, richiede un grado
più elevato di approfondimento, quindi ne enunceremo la semantica:
dopo una chiamata a CHANGE CODE la password è trasformata in un valore a 16 byte, cifrata con una chiave di sessione e inviata all'eToken;
DESX_OPERATION effettua un'operazione DES con il KF corrente, e, se i parametri del comando prevedono dati sensibili e l'eToken sta in modalità sicura, allora anche in questo caso la transazione viene effettuata cifrando con una chiave di sessione.
Quando si effettua VERIFY, la password viene trasformata in una
chiave DESX a 128 bit usando una funzione hash. Dopo un'analisi della password,
se quest'ultima è corretta, allora si entra in modalità sicura
e si setta la chiave di sessione come specificato dal comando. Se la password
risultasse non corretta, allora il login avverrebbe in modalità non
sicura con una chiave di sessione di default.