Qual è la funzione di derivazione della chiave DUKPT?

13

Ho il compito di decodificare il testo cifrato acquisito da un lettore di schede crittografato. Il lettore di carte utilizza lo schema DUKPT (derivato chiave unica per transazione) e la crittografia 3DES. Non ho alcun problema con la crittografia 3DES in quanto è un algoritmo comune implementato da librerie note come BouncyCastle e Java JCE.

Prima di questo incarico, non ho avuto nessun incontro con DUKPT, quindi sono un novizio completo a questo.

Da quanto ho letto finora, DUKPT utilizza un meccanismo di derivazione chiave basato su una Base Derivation Key (BDK) che è fondamentalmente una chiave segreta condivisa e numeri di serie chiave per la particolare transazione. Nel caso del lettore di schede, ogni volta che faccio scorrere (anche con la stessa scheda), il testo cifrato sarebbe diverso e il KSN sarebbe diverso. Conoscendo il BDK, il KSN, l'algoritmo di crittografia (che in questo caso è 3DES) e il testo cifrato, come faccio a ricavare la chiave per la transazione sulla base di queste informazioni? Immagino che ci sia una sorta di funzione di derivazione della chiave, giusto?

    
posta Hyangelo 30.03.2012 - 21:47
fonte

3 risposte

15

Funziona fondamentalmente in questo modo: il server ha una chiave master (il BDK) e ogni dispositivo client ha un numero seriale univoco e un contatore (che quando combinato è il KSN).

Per configurare un nuovo dispositivo, crittografare il KSN utilizzando la chiave master (il BDK, la procedura descritta nel collegamento nella risposta di Yoav) e si ottiene una nuova chiave (l'IPEK). È come se fossero necessarie due persone (il server e il client) con due chiavi (BDK e KSN) per aprire un vault che contiene un'altra chiave. L'altra chiave è l'IPEK ed è ciò che si installa sul dispositivo stesso.

Il dispositivo client utilizza l'IPEK per creare una tabella di Future Keys e quindi elimina l'IPEK. Quindi il dispositivo client ora ha il suo numero di serie originale, un contatore (combinato KSN) e un elenco di Future Keys.

Per crittografare i dati, il dispositivo client afferra la prima chiave futura dall'elenco e la utilizza come chiave di crittografia. Invia quindi i dati crittografati ed è KSN (che contiene il contatore) al server.

Sul server, il server conosce il proprio segreto (il BDK) e ora ha il KSN del dispositivo clent. Il server utilizza queste due chiavi per produrre l'IPEK (riaprire quel vault). Con IPEK il server può ricreare la tabella di Future Keys e conoscendo il contatore fornito dal client (gli ultimi 5 caratteri del KSN) sa quale chiave utilizzare dalla tabella.

Come per tutti i dettagli tecnici suggerirei di guardare intorno al blog di Andy Orrock (collegato alla risposta di Yoav) e magari ottenere una copia di ANSI X9.24 che ha le specifiche complete.

    
risposta data 31.03.2012 - 05:54
fonte
10

Non ho trovato molte risorse online, ma immagino che questo dovrebbe essere specificato in modo abbastanza completo da qualche parte. Quello che ho scoperto è tuttavia questa descrizione del processo di derivazione .

Se ho capito bene, la funzione di derivazione funziona in modo approssimativo come segue:

  1. Il KSN è normalizzato usando una qualche forma di padding
  2. Il KSN normalizzato è quindi crittografato con BDK
  3. L'output di questo processo è la chiave derivata per la transazione

Spero di non ingannarti. Questo probabilmente merita una risposta da parte di qualcuno che abbia più familiarità con le specifiche attuali.

    
risposta data 30.03.2012 - 23:01
fonte
5

I dettagli su come creare le future chiavi sono abbastanza orribili ma sono contenuti nelle specifiche ANSI. Le specifiche non sono ufficialmente disponibili online, ma se cerchi su Google "Baidu ansi x9.24" riceverai un link alla versione 2004 (l'attuale è il 2009). Leggendolo sul sito web di Baidu (la risposta cinese a Google) è spiacevole ma i $ 140 che ANSI vuole addebitare sono ancora più sgradevoli. Avendo investito i soldi nella versione corrente delle specifiche (dopo aver giocato con Baidu per alcuni giorni), posso attestare che il processo è tutt'altro che ovvio.

    
risposta data 19.04.2012 - 07:30
fonte