Home
Accesso / Registrazione
 di 

Serratura elettronica con chipcard. Prima parte

Serratura elettronica con chipcard

Presentiamo il progetto di una serratura elettronica con chipcard. Chiave di sicurezza con uscita a relè, adatta per comandare elettroserrature o altri dispositivi di segnalazione presenza, oppure sistemi d’allarme: per accedere occorre introdurre nell’apposito connettore una chipcard opportunamente programmata.

Già qualche mese fa abbiamo parlato delle tessere a microchip, le note chipcard che vengono impiegate nei servizi a denaro di banche ed altri istituti, nonché per utilizzare i diffusissimi telefoni cellulari GSM; ci siamo soffermati sulle caratteristiche di un modello in particolare, quello basato sulla memoria SLE4404 della Siemens contenente 416 bit, realizzando per esso un completo sistema di sviluppo funzionante in abbinamento ad un Personal Computer oltre ad una chiave di sicurezza per PC.

Ora, dopo questi progetti, vogliamo proporre ancora un dispositivo fatto per le tessere a base SLE4404, che permetterà di attivare o disattivare un relè con cui comandare elettroserrature di porte, cancelli e tornelli, oppure l’attivazione di sistemi d’allarme o rivelatori di presenza. In sostanza si tratta di una chiave codificata attivabile solamente introducendo nell’apposito lettore una chipcard preventivamente programmata: la programmazione si effettuerà partendo da una tessera vuota che abbia uno User Code predefinito (AAAA esadecimale) e memorizzato nella EEPROM del circuito prima dell’uso; esamineremo più avanti le relative procedure. Quanto all’uscita di controllo, è realizzata con un semplice relè che viene eccitato -una volta inserita la carta giusta- per un tempo facilmente impostabile con un trimmer, dopodiché ricade tornando a riposo.

Entriamo nel vivo dell’argomento andando subito a guardare lo schema elettrico di queste pagine, che ci mostra il dispositivo al completo, ovvero l’unità di base ed il lettore vero e proprio. Vista la complessità delle funzioni da svolgere abbiamo affidato la gestione del tutto ad un microcontrollore PIC16C56, che provvede sia alle fasi di programmazione delle chipcard, sia alle letture ed al funzionamento del timer per il relè di uscita. La scheda di base è interfacciata con quella, più piccola, che supporta il lettore di tessere mediante un connettore maschio a 10 poli di tipo AMP MODU-II a passo 2,54 mm. Analizziamo dunque la disposizione dei pin di tale connettore ed il significato delle linee di controllo: 1 e 2 sono i contatti per il rilevamento della presenza di una chipcard, ovvero quando vengono aperti attivano il sistema; il lettore standard deve avere perciò un contatto normalmente chiuso che si apre inserendovi la carta.

circuito controllo serratura elettronica

L’apertura dei contatti 1 e 2 determina sia l’alimentazione del regolatore di tensione U5, che fornisce i 5 volt stabilizzati al lettore stesso (tramite R15), sia l’applicazione del livello logico alto al pin 18 (RA1) del microcontrollore: in tal modo U4 rileva la presenza della chipcard e si attiva, eseguendo la programmazione del codice o la lettura ed il confronto, a seconda che sia stato impostato il modo “program” o il normale funzionamento.

A tal proposito si noti che la prima modalità si ottiene chiudendo il jumper J1, che deve invece rimanere aperto nell’uso normale. Il contatto 4 del connettore porta la linea di massa al lettore e quindi alla chipcard; il contatto 5 (linea RB6 del micro) risulta connesso al pin di reset (RST) della chip-card; il 6 (RB1) non viene utilizzato; il 7 (RB4) coincide con la linea di clock (CLK) della tessera; il contatto 8 (RB2) è collegato alla linea di I/O della tessera; infine il 9 (RB3) e il 10 (RB5) sono connessi rispettivamente alle linee T (ingresso di test) e P (ingresso di controllo) della tessera. Questo è quanto riguarda il bus di interconnessione tra il microcontrollore ed il chip presente nelle tessere che via-via verranno inserite nel lettore.

prototipo serratura elettronica

Serratura elettronica con chipcard - funzionamento

Vediamo ora come avvengono le due fasi principali di funzionamento, ovvero la lettura e la programmazione delle “chiavi”; per logica preoccupiamoci prima di quest’ultima, indispensabile per preparare una card ad essere usata per il controllo della nostra serratura elettronica. La fase si avvia chiudendo il ponticello J1 ed accendendo il circuito: il led LD1 deve accendersi indicando la presenza della chipcard. Va notato che nel nostro caso il codice chiave è composto essenzialmente da due parti, che sono lo User Code ed una stringa memorizzata nella Frame Memory: la prima comprende 16 bit, ovvero quattro gruppi di 4 bit che vengono rappresentati ciascuno sotto forma esadecimale, e la seconda è pure di 16 bit, cioè 4 gruppi rappresentati al solito da cifre esadecimali.

Il vero e proprio codice di accesso alla serratura elettronica è un insieme di 16 bit registrati nella Frame Memory: tuttavia con le chipcard basate sulla SLE4404 Siemens l’accesso in lettura a tale parte di memoria è consentito solamente dopo aver introdotto e confrontato lo User Code, ed ecco che perciò i codici-chiave sono sostanzialmente due. Questo garantisce un’elevatissima sicurezza contro le effrazioni da parte di chi volesse accedere al comando del relè senza conoscere il doppio codice: infatti la sola Frame Memory contiene ben 16 bit binari, il che significa 2 alla 16 (addirittura 65.536) combinazioni; senza contare i 16 dello User Code, che fanno in totale 2 alla 32a, ovvero 4.294.967.296 combinazioni possibili. Oltre tutto va considerato che sbagliando più di tre volte l’introduzione dello stesso User Code la chipcard diviene inutilizzabile, dato che viene azzerato l’Error Counter.

lettura in pratica serratura elettronica

Insomma, è praticamente impossibile attivare la nostra chiave elettronica senza conoscere i codici d’accesso o introducendo una tessera qualunque. Vediamo dunque come avviene la programmazione delle card che diventeranno le chiavi del sistema e che inizialmente dovranno essere tutte uguali, vergini e con memorizzato uno User Code uguale a AAAA in esadecimale. Cominciamo col dire che dopo l’introduzione nel lettore bisogna provvedere innanzitutto alla comparazione dello User Code, altrimenti non è possibile accedere alla Frame Memory per scrivervi il nuovo codice chiave: allo scopo il micro U4 legge lo User Code che si trova nella memoria EEPROM e lo invia alla chipcard per effettuare la comparazione.

Riguardo a ciò va detto che il codice di default è AAAA, cioè questo viene caricato in fase di programmazione dei nostri PIC16C56: di conseguenza è evidente che occorre usare sempre tessere il cui User Code iniziale sia AAAA (1010 1010 1010 1010) o in alternativa bisogna disporre di un programmatore come quello proposto nel fascicolo n. 19 di Elettronica In e, noto lo User Code originario, impostare da computer il nuovo AAAA. Se si introduce una card con User Code diverso il sistema non potrà programmarla e dopo tre tentativi la renderà inutilizzabile.

serratura elettronica

Bene, fatta la comparazione il microcontrollore svolge quell’indispensabile operazione di routine che è l’azzeramento dell’Error Counter, ovvero riporta ad 1 tutti i suoi tre bit in modo da evitare che ai successivi accessi e confronti dello User Code la chipcard divenga inaccessibile. Successivamente cancella anche lo User Code attuale, ovvero programma nella chip-card uno User Code uguale a FFFF esadecimale. A questo punto, viene letto l’User Code disponibile nella EEPROM e trasferito nella tessera. Viene poi letto, in un’altra area della EEPROM, il codice vero e proprio e trasferito nella Frame Memory della chip-card. I due codici, User Code personale e codice chiave, sono disponibili in due diverse aree della memoria EEPROM 24C08 implementata sulla scheda.

Questa memoria si trova già programmata (così come il micro) nel kit del dispositivo che può essere richiesto alla ditta Futura Elettronica di Rescaldina; i 16 bit contenuti nelle locazioni specificate verranno poi convertiti e “passati” alla chipcard in luogo del nuovo User Code e una seconda stringa da 16 bit che verrà sempre letta dal micro e trasferita nella Frame Memory della tessera. Evidentemente in sede di programmazione delle EEPROM ciascuna verrà caratterizzata da una diversa combinazione.

In ogni caso, poiché i due codici risultano memorizzati su una normalissima memoria 24C08 ogni lettore se lo desidera potrà provvedere personalmente all’inserimento dei codici. In questo caso, occorre disporre di un programmatore di memorie I2C-Bus (come quello proposto in questo stesso fascicolo) e di una memoria 24C08. Con l’ausilio del programmatore dovremo inserire nella memoria, in locazioni precise, due numeri a 16 bit di cui il primo verrà considerato come User Code ed il secondo come il codice da inserire nella Frame Memory. Va ora notato un dettaglio molto importante: la procedura reale di scrittura nella Frame Memory è alquanto complicata perché richiederebbe l’introduzione e la comparazione del Frame Code per poter cancellarne il contenuto e riscrivere nuovi dati.

Per evitare questo passaggio ed un software che potrebbe risultare inaffidabile, partiamo dal presupposto che la chipcard utilizzata sia “vergine”, cioè che la sua Frame Memory presenti tutti i bit a 1 logico. In tal modo si verificano due condizioni determinanti per la buona riuscita delle procedure: prima di tutto i bit 112 e 113 sono entrambi a livello alto, il che configura la Frame Memory come PROM leggibile sempre e scrivibile semplicemente dopo la comparazione dello User Code. La seconda condizione è che avendo tutti i bit a 1 logico si può caricare il nuovo codice semplicemente abbassando a zero alcuni di essi, senza procedere alla cancellazione che risulterebbe alquanto laboriosa.

Per capire quanto stiamo dicendo va considerato che per scrivere un codice nella Frame Memory, se questa non è vuota, occorrerebbe prima azzerarne il contenuto e poi introdurre i dati voluti; come anzidetto tale procedura è limitativa perché comporta il passaggio attraverso il Frame Counter e perciò l’abbiamo esclusa a priori, il che significa che il microcontrollore non la prevede. Viene quindi eseguita la sola scrittura della Frame Memory, fermo restando che per scrittura nelle chipcard si intende porre a zero un bit inizialmente ad 1, ovvero lasciarlo a 0 se già vi si trova. Per questa ragione se la Frame Memory non ha tutti i bit ad 1 diventa impossibile memorizzare codici che vogliono l’1 logico dove invece c’è lo zero. Oltre a quanto detto rammentiamo un dettaglio particolarmente importante: una volta scritto il codice-chiave in Frame Memory è evidentemente impossibile riprogrammare la carta, perché non presenta più tutti i bit ad 1 logico; pertanto l’unica possibilità è disporre del programmatore/ lettore pubblicato nel fascicolo numero 19 della rivista, che consente la cancellazione della predetta parte di memoria.

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 7 utenti e 41 visitatori collegati.

Ultimi Commenti