il Ricevitore è programmato a ricevere una stringa, cifrata secondo l'algoritmo descritto nel post Algoritmi di cifratura proprietari, di 16 byte (128 bit), con la struttura mostrata in Fig.2 del post Protocollo di trasmissione proprietario, ripartita come segue:
Indirizzo | Contenuto |
---|---|
00-03 | Progressivo di invio della chiave 00 |
04-07 | Progressivo di invio della chiave 04 |
08-0B | Progressivo di invio della chiave 08 |
0C-0F | Progressivo di invio della chiave 0C |
10-13 | Progressivo di invio della chiave 10 |
... | ... |
E0-E3 | Progressivo di invio della chiave E0 |
E4-E7 | Progressivo di invio della chiave E4 |
E8-EB | Progressivo di invio della chiave E8 |
EC-EF | Progressivo di invio della chiave EC |
F0-F3 | Progressivo di invio della chiave F0 |
F4-FE | Identificativo di serratura |
FF | byte non usato |
permettendo alla serratura la gestione contemporanea fino a un massimo di 61 chiavi (in forma di lettore RFID o telecomando).
Nella modalità di inizializzazione (ponticello del connettore di Reset posizionato fra ON e RST), al ricevimento della stringa cifrata, dopo la decodifica, se il byte di comando è h'FF'
il ricevitore memorizza gli 11 byte dell'identificativo di serratura nelle locazioni F4-FE della memoria e viene imposto il progressivo d'invio contenuto nella stringa a tutte le locazioni da 00 a F3 (imponendo h'00000001' di fatto si inizializzano i contatori a inizio conteggio).
Da adesso in poi, nella modalità di funzionamento normale (ponticello del connettore di Reset nella posizione OFF RST), il Ricevitore riconoscerà come valide (dando il consenso al suo relè) tutte le chiavi che invieranno l'identificativo di serratura memorizzato in modo non volatile.
Il progressivo di invio, lungo 4 byte, di ciascuna chiave viene memorizzato nella specifica area EEPROM (per la chiave 00 le locazioni 00-03, per la chiave 04 le locazioni 04-07, ecc.).
Se viene ricevuta una stringa di una particolare chiave, con l'identificativo di serratura valido, ma con un progressivo d'invio uguale o inferiore al valore correntemente memorizzato per quella particolare chiave, tale stringa non è considerata valida e non viene dato il consenso. Come già discusso nel post Protocollo di trasmissione proprietario, questo
accorgimento previene la possibilità per un intruso di captare il segnale inviato da un utente legittimo, registrarlo e successivamente inviarlo per scopi fraudolenti.
Se durante il funzionamento normale, viene ricevuta una stringa con l'identificativo di serratura corretto e il byte di comando uguale a h'FF', viene reinizializzato il Ricevitore, riportando i progressivi d'invio di tutte le chiavi al valore contenuto nella stringa.
Al modulo RFID è associata la chiave 00 e la modalità di programmazione della serratura. E' sufficiente disporre di due RFID card: ad una si dà la funzione di inviare il codice di programmazione (con il comando h'FF'), all'altra la funzione di utente. E' possible associare, ad altre carte utente, numeri di chiave diversi (h'08', h'0C', h'10', ecc.).
Al telecomando, nel nostro esempio, è associata la chiave h'04'. Tutti i dispositivi realizzano la cifratura/decifratura con le stesse chiavi private (generate dalla stessa password). Nell'esempio se ne adottata una casuale, generata dal simulatore del post Protocollo di trasmissione proprietario. Se si dovesse
utilizzare i dispositivi per applicazioni pratiche, si raccomanda di utilizzare il simulatore per generare chiavi private proprie, attraverso una propria password segreta.
Nell'esempio, l'identificativo di serratura è la stringa h'445566778899AABBCCDDEE', che deve essere nota sia al ricevitore, sia ai dispositivi trasmettitori.
Di seguito trovate i codici di programmazione del dispositivo lettore RFID di Fig.1, basato sul microcontrollore ATMega328P.
Nessun codice disponibile |
Qui di seguito trovate i codici di programmazione del dispositivo Ricevitore di Fig.5, basato sul microcontrollore PIC16F684.
Nessun codice disponibile |
Da ultimo i codici di programmazione del dispositivo Telecomando di Fig.9, anch'esso basato sul microcontrollore PIC16F684.
Nessun codice disponibile |