Oggi mi è tornata voglia di ri-metter mano alla smartcard di poste.it
Qualche tempo fa’ con l’aiuto di Antonio Iacono sono riuscito a far funzionare la smartcard. Il primo problema è stato il riconoscimento della smart-card risolto passando alla versione cvs di opensc (che include una patch Antonio appunto).
Altro problema è stato l’autenticazione. Il PIN fornito insieme alla card è infatti di 6 cifre mentre facendo un dump dell’interfaccia usb sotto windowz si vede che un PIN di 14 cifre! Purtroppo non sappiamo da dove arrivino le cifre aggiuntive. Sappiamo che non cambiano modificando PIN e che sono diversi da una card all’altra (almeno tra la card di infocamere di antonio e la mia di poste.it). Quindi o sono precablati (in base al produttore) o sono calcolati in base a qualche parametro indipendente dal pin… in ogni caso sono info *segrete*… security through obscurity.
Per aggirare il problema una piccola patch (sempre di Antonio, con i dati ricavati dal mio dump) in opensc, nel file src/libopensc/iso7816.c dopo:
static int iso7816_build_pin_apdu dopo: sc_format_apdu(card, apdu, SC_APDU_CASE_3_SHORT, ins, p1, data->pin_reference);
ho aggiunto:
if (len == 14) {
sbuf[6]= 0x27;
sbuf[7]= 0x37;
sbuf[8]= 0x17;
sbuf[9]= 0x80;
sbuf[10]= 0xf0;
sbuf[11]= 0xd1;
sbuf[12]= 0x80;
sbuf[13]= 0x06;
}
BTW, ho provato a decompilare il sw java per windows ma mi sono perso nelle centinaia di file che compongono il sw e no ho ancora trovato nulla. Non aiutano il fatto la mia scarsa conoscenza di java e il fatto che abbiano usato qualche tool per rendere un po’ più ostica la decifratura :-/
Cmq, tornando ad oggi con opensc funzionante ho configurato thunderbird per usare la smartcard: è stato sufficiente aggiungere il dispositivo specificando il modulo
/usr/local/lib/pkcs11/opensc-pkcs11.so
Ora bisognerebbe solo capire come cavolo vengono calcolate quegli 8 caratteri in più in modo da rendere la libreria funzionante con qualsiasi smart-card… e non solo con la mia :-/