MokaByte Numero  43  - Luglio Agosto 2000
 
Dallas Semiconduttor
 Java iButton
Prima parte
di 
Roberto Fabbrica
Ambiente Java Card su supporto indossabile, 
ovvero la JavaCard dell'ormai famoso anello Java

I Dallas Semiconductor Java iButton sono dispositivi miniaturizzati molto resistenti che integrano al loro interno l’ambiente JavaCard. L’involucro del dispositivo, come si può immaginare dal nome, ha il formato di un bottone ed è realizzato in acciaio: questo permette una resistenza agli urti, alle flessioni, alla polvere e all’acqua indubbiamente superiori alle normali JavaCard. Se a questo si aggiunge il basso costo, non solo dei dispositivi ma anche dei lettori che ne permettono l’interfacciamento con i dispositivi di controllo, ne risulta che questi dispositivi possono essere utilizzati con profitto per la realizzazione di una moltitudine d’applicazioni.

Introduzione

 I Dallas Semiconductor Java iButton sono un particolare tipo di JavaCard che utilizza un formato particolare (simile ad un bottone di acciaio sigillato) e soluzioni hardware all’avanguardia (fra le quali spicca la memoria RAM resa non volatile dall’utilizzo di una batteria tampone al litio). Questi dispositivi sono i discendenti dei famosi JavaRing, ostentati già da qualche anno in tutte le conferenze JavaOne promosse da SUN come supporto alla diffusione di Java.

I Dallas Semiconductor Java iButton possono essere acquistati ondine, presso il sito www.ibutton.com, insieme a tutto l’hardware necessario al loro utilizzo: Blue Dot (lettori cui è possibile collegare i Java iButton), interfacce seriali o parallele per collegare i Blue Dot al PC e porta bottoni (nella forma di semplici anelli di gomma, portachiavi, orologi, ecc.). Presso lo stesso sito è possibile acquistare anche Java iButton montati su anelli da portare al dito, in questo caso la loro denominazione cambia in Java Ring.

Per quanto riguarda il software per lo sviluppo d’applicazioni ed i driver per la connessione dei Blue Dot al PC, Dallas Semiconductor ha scelto di distribuirli gratuitamente dallo stesso sito web www.ibutton.com, nella forma di un ambiente integrato di sviluppo, denominato iB-IDE, e di una serie di classi che implementano lo standard OpenCard Nello stesso sito web è possibile reperire anche tutti gli aggiornamenti e la documentazione, oltre alle versioni precedenti degli strumenti di sviluppo. La documentazione è fornita esclusivamente dal sito web e tramite riferimento alla documentazione OpenCard, fornita dall’Open Card Foundation e da SUN (che attualmente sta sviluppando un framework OpenCard come estensione del JDK).

 In questa prima parte dell’articolo, saranno prese in considerazione solo le caratteristiche tecnologiche dei Java iButton, mentre nella seconda parte saranno presi in considerazione gli strumenti di sviluppo delle applicazioni contenuti in iB-IDE, l’ambiente integrato di sviluppo creato appositamente da Dallas Semiconductor per lo sviluppo di applicazioni Java e JavaCard Applet per Java iButton.
 
 
 

Dallas iButton
 Viste le numerose caratteristiche peculiari di questi dispositivi, ho ritenuto corretto descrivere per prime le caratteristiche tecniche dei Dallas Semiconductor Java iButton, che stravolgono molti dei concetti hardware e di interfacciamento verso i dispositivi di controllo esterni propri degli altri dispositivi JavaCard. Nella figura 1 è riportato il formato del dispositivo con le relative dimensioni. Come si può notare, si tratta di misure piuttosto compatte, ed è proprio questo che permette di montare il dispositivo su tutta una serie di supporti “indossabili” dall’utente. Fra questi, il più interessante è un anello di acciaio, che permette di avere sempre “a portata di mano” il dispositivo. Nella figura 2 è mostrato appunto un Java Ring, sinonimo con cui sono identificati questi dispositivi quando sono montati sugli anelli.


Figura 1 – Formato e misure del Java iButton.
 
 


Figura 2 – JavaRing di Dallas Semiconductor.

 Viste le loro particolarità in fatto di formato, anche i lettori di questi dispositivi, utilizzati per la connessione con i dispositivi esterni di controllo, sono del tutto particolari. La figura 3 mostra la struttura del più semplice dei lettori possibili, che è definito da Dallas Semiconductor Press Dot. Nella figura 4 è invece mostrato un Blue Dot, cioè l’interfaccia normalmente acquistabile presso il sito web di Dallas Semiconductor, composta, in pratica, da due Press Dot utilizzabili per due Java iButton singolarmente o contemporaneamente.
 
 


Figura 3 – Press Dot, schema del 
lettore per Java iButton.
 
 


Figura 4 – Blue Dot, il lettore normalmente 
utilizzato per i Java iButton.

In questa breve introduzione tecnica, vale la pena spendere qualche parola anche sulla resistenza strutturale del dispositivo: i Java iButton sono contenuti all’interno di una struttura impermeabile in acciaio. Questo gli permette di essere resistenti alle polveri, alle tensioni statiche, al calore, agli urti e alle effrazioni più di qualsiasi altra JavaCard classica. Questo permette di indossare i Java iButton come normali accessori di abbigliamento, senza cioè richiedere particolari cure (per confronto si pensi che una JavaCard classica, proprio come una qualsiasi SmartCard, si può rovinare semplicemente mantenendola in un comune portafoglio).

I Java iButton e tutto l’hardware e software di supporto forniti da Dallas Semiconductor rappresentano senza dubbio un’implementazione perlomeno originale dell’API JavaCard 2.0. La sostanziale differenza dalle JavaCard classiche, oltre naturalmente al formato del dispositivo appena discusso, è la mancanza della EEPROM. Questa viene, infatti, sostituita da 6 KByte di RAM, resa non volatile dalla presenza di una batteria al litio. Questa memoria è destinata ad ospitare sia le JavaCard Applet, sia l’heap e lo stack durante l’esecuzione. Tutto ciò permette di rendere le operazioni di scrittura su memoria non volatile estremamente veloci, in pratica un ordine di grandezza rispetto alla scrittura su EEPROM, tecnologia utilizzata dalle altre JavaCard come supporto per la memoria non volatile. Questa organizzazione della memoria ha però due svantaggi: in primo luogo, 6 KByte disponibili per le JavaCard Applet e ambiente di esecuzione significano circa 5 KByte effettivamente utilizzabili per le JavaCard Applet, valore piuttosto basso rispetto ai 16 KByte ormai disponibili sulla maggioranza delle JavaCard; in secondo luogo, il tempo di vita di un Java iButton è di soli tre – cinque anni a causa dell’inevitabile esaurimento della batteria al litio. L’hardware del Java iButton mette anche a disposizione un processore a 32 bit e 32 KByte di ROM per ospitare il framework. In questo caso si tratta di valori allineati con l’attuale disponibilità di mercato.

Per quanto riguarda le estensioni alla JavaCard API 2.0 troviamo praticamente tutto quello che viene indicato da SUN, in particolare il supporto per i numeri interi a 32 bit (senza penalizzazioni di sorta, vista la presenza di un processore a 32 bit) e l’implementazione di un garbage collector. In effetti, le funzionalità di garbage collecting sono svolte da due garbage collector indipendenti: uno definito Applet GC e uno definito Ephemeral GC. Il primo di questi si occupa di recuperare lo spazio occupato dagli oggetti i cui riferimenti sono stati spostati ad altri oggetti o cui sono stati assegnati valori null, mentre il secondo si occupa di recuperare lo spazio occupato dagli oggetti i cui riferimenti sono andati fuori scope. Ognuno di questi è attivabile indipendentemente dall’altro, secondo le necessità imposte dagli sviluppatori delle JavaCard Applet attualmente caricate sul dispositivo.

I Java iButton presentano anche una serie di funzionalità proprietarie accessibili da API proprietarie, cioè non previste, neanche come estensione, dall’API JavaCard 2.0. Le principali funzionalità di questo tipo sono tre, cioè l’orologio a tempo reale, l’acceleratore matematico per gli esponenziali modulari e l’identificatore univoco del Java iButton. L’orologio a tempo reale, implementato tramite un contatore aggiornato ogni secondo e azzerato in fase di connessione della batteria al litio interna del Java iButton, permette di rendere il dispositivo consapevole dello scorrere del tempo. Tramite la semplice implementazione di una JavaCard Applet contenente semplici funzioni di conversione ed offset è poi possibile prevedere metodi per il reperimento e il salvataggio di informazioni temporali nel formato ora, minuto, secondo, giorno, mese, anno. L’acceleratore matematico, implementato tramite un coprocessore apposito, permette di svolgere molto efficientemente e velocemente tutto l’insieme di operazioni necessarie al calcolo di esponenziali modulari. Questo permette di implementare algoritmi di codifica/decodifica RSA molto efficienti per la codifica/decodifica di dati e per la firma/verifica di documenti. L’identificatore univoco, implementato tramite un numero a 64 bit cablato sul silicio, è un numero identificatore univoco per ogni Java iButton prodotto da Dallas. L’azienda stessa garantisce l’univocità dell’identificatore di un Java iButton rispetto a tutti gli altri. Questo permette di utilizzare tale identificatore come ID per buona parte delle applicazioni che necessitano di un identificatore unico del dispositivo. Si noti che la procedura per accedere a queste funzionalità dal codice delle JavaCard Applet è unica per le tre estensioni: Dallas Semiconductor provvede a caricare su ogni Java iButton un package denominato com.dalsemi.system contenente le classi che forniscono l’accesso.

Notevole è anche il supporto per lo standard OpenCard, veramente molto comodo per lo sviluppatore, che vede notevolmente alleggerito il lavoro di automazione delle procedure di gestione dei dispositivi. Questo permette di sviluppare agevolmente e velocemente applicazioni esterne di controllo indipendenti dal dispositivo. Naturalmente, Dallas Semiconductor fornisce anche le classi di interfacciamento del framework OpenCard con il Press Dot.

 Particolarmente interessante è anche la gestione dei lettori implementata da Dallas Semiconductor, in grado di accettare diversi Java iButton contemporaneamente, su un unico bus unifilare collegato ad un’unica porta. Questa interfaccia è denominata MicroLAN ed è in grado di gestire diversi Java iButton in maniera asincrona. Per mantenere distinti i Java iButton inseriti sulla MicroLAN, ad ognuno di essi viene assegnato, in fase di inizializzazione del collegamento, un identificatore univoco che ha durata pari alla sessione di comunicazione, cioè fino a quando il Java iButton rimane collegato alla MicroLAN. Questo identificatore univoco viene generalmente denominato SlotID e ha come dominio i numeri interi positivi. Grazie a questa tecnologia i Blue Dot, i CAD per Java iButton distribuiti da Dallas Semiconductor, permettono la gestione di due dispositivi contemporaneamente, caratteristica molto utile se si intende realizzare applicazioni che richiedono l’intervento di più persone (la firma di un contratto o un’operazione guidata da un supervisore, per esempio). La caratteristica peculiare della MicroLAN è la semplicità. Una MicroLAN è, infatti, implementata fisicamente tramite un semplice collegamento unifilare (bipolare con un polo in comune). Questo garantisce costi ridotti di installazione, manutenzione ed espansione. Particolarmente rilevante è anche la tecnologia implementata per l’interfaccia fra MicroLAN e OpenCard, realizzata, per i collegamenti su porta seriale, completamente in Java. Per quanto riguarda invece i collegamenti su porta parallela vengono utilizzati driver appositi, soprattutto per lasciare comunque disponibile la porta parallela per la connessione di altre periferiche. Purtroppo però il funzionamento della MicroLAN è tutt’altro che eccepibile: durante il normale uso del Java iButton può accadere di ricevere eccezioni relative alla mancanza del collegamento con il Java iButton, anche se quest’ultimo è saldamente inserito nel Blue Dot. Più raramente, può anche accadere che l’inserimento di un nuovo Java iButton sulla MicroLAN provochi un riassegnamento degli SlotID assegnati ai Java iButton già collegati, con risultati non piacevoli per l’applicazione di controllo.

 Per finire, i prezzi dei dispositivi e del software sono effettivamente estremamente vantaggiosi: un Java iButton costa poco più di una ventina di dollari, un Press Dot (lettore) a due posti, utilizzabile anche per servizi di firma congiunta supervisore / utente, costa circa quindici dollari, mentre tutto il software e i driver sono forniti gratuitamente. Per consultare il listino, nonché per acquistare questi prodotti online, è sufficiente consultare il sito web www.ibutton.com.
 
 
 

Conclusioni
I Dallas Semiconductor Java iButton sono, come risulta dall’analisi svolta in questo articolo, degli strumenti piuttosto innovativi, soprattutto se confrontati con i dispositivi JavaCard classici attualmente disponibili. I loro punti di forza sono essenzialmente i seguenti:
 

  • Formato ridotto e solidità: questo permette di indossarli come normali accessori senza problemi;
  • Possibilità di collegare diversi lettori su un unico bus unifilare: questo permette di distribuire numerosi lettori su ampie aree senza la necessità di realizzare reti complesse ed utilizzare sistemi di interfacciamento particolari;
  • Costo ridotto dei dispositivi e del software: questo permette a qualsiasi utente di utilizzare questa tecnologia. In particolare, il costo del lettore e del software di interfaccia con un comune personal computer è di oltre un ordine di grandezza inferiore rispetto alle offerte di altri fornitori di JavaCard.


A mio giudizio, il più importante fra i tre punti elencati è l’ultimo: la possibilità da parte di qualsiasi utente, anche privato, di poter utilizzare questa tecnologia potrebbe permettere di utilizzarla come strumento standard di accesso a servizi in rete. In questo periodo, contraddistinto dal proliferare di servizi avanzati su Internet quali il commercio elettronico, si sta, infatti, facendo pressante la necessità di identificare con sicurezza i richiedenti tali servizi.

D’altra parte, i Java iButton sono prodotti non ancora sufficientemente maturi per essere utilizzati su ampia scala, soprattutto a causa della non perfetta affidabilità delle applicazioni ottenibili e a causa della limitata durata della batteria interna al litio. Si tratta comunque di semplici problemi di gioventù, a cui Dallas Semiconductor sta già lavorando e per cui, almeno in certi casi, sono già disponibili risoluzioni accettabili.
 
 
 

Bibliografia
Chi intendesse approfondire i temi trattati in questo articolo, può trovare documenti ai seguenti indirizzi:
 

  • www.ibutton.com: il sito web di Dallas Semiconductor dedicato ai Java iButton e agli altri dispositivi della stessa azienda, denominati genericamente iButton;
  • www.opencard.org: il sito web della Fondazione OpenCard, da cui è possibili reperire tutte le informazioni sul framework OpenCard utilizzato dai Java iButton per l’interfacciamento con l’entità esterna di controllo;
  • www.javasoft.com: il sito web di SUN dedicato alla tecnologia Java, dove è possibile reperire informazioni sulle estensioni relative ad OpenCard e per le specifiche relative alla tecnologia JavaCard.




Roberto Fabbrica, nato a Ravenna il 28 dicembre 1972, è laureato in Ingegneria Informatica alla Facoltà di Ingegneria dell’Università di Bologna dal 1999. Attualmente lavora come libero professionista, fornendo consulenze come analista programmatore in Visual Basic ed esperto SQL ad una software house bolognese e collaborando al progetto e all’implementazione di applicazioni Java web oriented presso il DEIS (Dipartimento di Elettronica, Informatica e Sistemistica) della Facoltà di Ingegneria dell’Università di Bologna, sede di Cesena.
Chi volesse mettersi in contatto con la redazione può farlo scrivendo a mokainfo@mokabyte.it