PDA

View Full Version : [unpo'-OT] Un sistema di comunicazione cifrato


Fabio Erculiani
04-06-2004, 16:08
Ehila raga...
per il progetto di maturità, in questi 9 mesi ho creato una specie di sistema operativo in grado di ricetrasmettere via onde radio dei messaggi (tali e quali agli sms ma di lunghezza di 256 caratteri) cifrati con un algoritmo che mi sono inventato di sana pianta (a dire il vero mi sono ispirato un po' al DES).

Detto così sembra un po' una cosa del cavolo ma vi assicuro che non lo è... il sistema gira su un microcontrollore AVR Atmel ed è scritto in assembly, quindi estremamente ottimizzato.

Mi è venuta l'idea di consegnare il codice sorgente, la manualistica che ho scritto e tutta la documentazione raccolta alla comunità open source, ma non so né come né a chi.

Se a qualcuno interessa potrei pubblicare qualche fotografia e qualche schema.

Il sistema di chiama CubOS ed è arrivato alla versione 2.6, per poter essere commercializzato avrebbe bisogno di ulteriori e facili ampliamenti.

Beh per ora vi dico che il sistema di input è una comunissima tastiera PS/2 interfacciata in modalità unidirezionale.

Beh, fatemi sapere se a qualcuno interessa!! Ah, come devo fare per rilasciare il programma sotto una licenza che comunque tuteli la paternità del mio progetto?

Tanto per fare ho creato anche una applicazione di debugging e di emulazione.

Fabio Erculiani
04-06-2004, 16:22
http://www.amdplanet.it/fabio/cubos emulator 2.jpg
questo è il programma emulatore, ci sarebbero problemi a pubblicare i sorgenti di questo programma che ho fatto con delphi per motivi che ora non sto a spiegare... cmq funziona anche su wine :)

Fabio Erculiani
04-06-2004, 16:41
http://www.amdplanet.it/fabio/cubos_infrastructure.jpg

questi sono i due apparecchi...

beh fatemi sapere tramite questo thread se avete delle idee o se a qualcuno interessa la documentazione

toniocartonio
04-06-2004, 17:20
hehehe... cazzutissimo!! Bella proprio.

La cosa migliore secondo me é che apri un progetto su Sourceforge o freshmeat, che sono i grandi repository e punti di incontro per lo sviluppo di software OpenSource. Se magari metti su pure un sito di supporto dove spieghi il + chiaramente possibile gli scopi e i possibili sbocchi pratici, sono sicuro che troverai un branco di ner... ehm... programmatori :D in grado di aiutarti.

Dal punto di vista della paternitá, penso che rilasciarlo in GPL ti protegga: se non erro, chiunque utilizzi codice rilasciato solo tale licenza é libero di utilizzarlo per i propri progetti, a patto di citare la propria "fonte di ispirazione" e di rilasciare a sua volta il proprio codice sotto la medesima licenza. Allo stesso tempo una tale scelta non ti limita nel caso un giorno volessi provare a fare dei soldi sulla tua idea (a patto ovviamente di mantenere il codice sotto GPL)... insomma... in fondo é come Linux: tutti sono liberi di usarlo e migliorarlo, e tutti sanno che il papá é Thorvalds... no?

In bocca al lupo.

Fabio Erculiani
04-06-2004, 17:54
descrizione del progetto:
[..]CubOS, è un’apparecchio estremamente compatto in grado di trasmettere o ricevere informazioni testuali attraverso onde radio con modulazione FSK ad una frequenza di 433,92MHz. Il testo, o CSM (Coded Simple Message) ha il grandissimo vantaggio di poter essere cifrato tramite una password scelta dall’utilizzatore. Questo è il più grande punto di forza del sistema, il quale viene reso estremamente sicuro per qualsiasi scambio di informazioni critiche o strettamente private, attraverso un mezzo di trasporto, l’aria, intrinsecamente molto poco affidabile.[..]


...da una pagina del manuale:

CubOS viene alimentato da una batteria Transistor 9V attraverso il classico connettore standard ed è in grado di gestire:

- Microcontrollore AVR Atmel AT90S8535 con Vcc da 2,7V a 5,5V
- Tastiera PC in standard AT/PS2 di qualsiasi marca +5V – 20mA
- Display LCD 16x4 con microprocessore Hitachi HD44780
- Driver seriale MAX232 per interfacciare CubOS ad un PC
- Circuiteria di misurazione livello carica batteria


Per ora la trasmissione è unidirezionale, ma il software è lo stesso sia per il trasmettitore che per il ricevitore e si può cambiare modalità settando a 0 od a 1 uno switch e cambiando ovviamente il modulo TX o RX

toniocartonio
04-06-2004, 17:56
ecco... se ora lo fai anche in inglese magari é meglio :D
poi vai su http://sourceforge.net e apri un progetto

Fabio Erculiani
04-06-2004, 18:06
http://www.amdplanet.it/fabio/cubos_scheme.gif
questo è lo schema di funzionamento del sistema

http://www.amdplanet.it/fabio/cubos_logo_clear.gif
questo è il logo fatto da me ;)


Project description:
The acronym CubOS means Cub(e) Operating System, that is an Operating System of a cube, a tridimensional geometric shape. In this manual the term CubOS refers both to the hardware and the operating system in it.
Then CubOS is an extremely compact device that is able to transmit or receive textual information via radio wave using FSK modulation at a certain frequency of 433,92MHz. This text or CSM (Coded Simple Message) has the big advantage of being encrypted using a password that you can choose any time. That’s the biggest advantage that we offer with this device that make it possible to exchange basic and vital information in a very safe way through a very unsafe means of communication, like the air.
This system, differently from other similar commercial devices, has a further advantage of being very economical and easy to produce, thanks to the best general purpose microcontroller unit, the AVR Atmel. PCB, layout and part costs, have been dramatically reduced. Thanks to its flexibility, CubOS can be used in mission critical environments such as amatorial o home ones. In this last case, it can be an economical and free substitute of bleepers. The encryption system is able to protect all transmitted data from prying eyes by using an alphabetical password and a master key armoured protected from the reading of the microcontroller EEPROM.


Technical specifications

CubOS is powered by a 9V Transistor battery via its standard connector and it’s able to control:

- AT90S8535 AVR Atmel Microcontroller Unit – Vcc from 2,7V to 5,5V
- PC AT/PS2 standard keyboard of every brand - +5V – 20mA
- 16x4 LCD Display with Hitachi HD44780 microprocessor
- MAX232 serial line driver for CubOS to PC interfacing
- Battery status checking circuit

Battery duration can vary from 8 to 10 hours of activity with LCD display on.

Fabio Erculiani
04-06-2004, 18:09
Originariamente inviato da toniocartonio
ecco... se ora lo fai anche in inglese magari é meglio :D
poi vai su http://sourceforge.net e apri un progetto
che dici, ne vale la pena?
Non ho tantissime conoscenze e non vorrei sobbarcarmi tutto il lavoro, soprattutto ora che sono preso con la maturità ;) cmq se pensi che non siano questi i veri problemi, beh posso farlo :)

beh provo a sentire il parere del resto della gente che scriverà :) vorrei andare coi piedi di piombo

_YTS_
04-06-2004, 19:36
ti regalo un up perche te lo meriti!
per ora non posso altro che farti i complimenti, visto anche la tua
età.
continua lo sviluppo del progetto e tienici informati.
ciao

_YTS_

ps: studia che altrimenti ti bocciano!!! ;)

toniocartonio
04-06-2004, 19:54
Originariamente inviato da Fabio Erculiani
che dici, ne vale la pena?
Non ho tantissime conoscenze e non vorrei sobbarcarmi tutto il lavoro, soprattutto ora che sono preso con la maturità ;) cmq se pensi che non siano questi i veri problemi, beh posso farlo :)

beh provo a sentire il parere del resto della gente che scriverà :) vorrei andare coi piedi di piombo

Beh... aprire il progetto non costa niente... lo apri e vedi il feedback... se non ti caga nessuno lasci perdere...

in culo alla balena (per tutto!)

carlton80
04-06-2004, 20:22
Up!
Te lo meriti davvero!

Complimentoni....:sofico: :sofico:

Fabio Erculiani
04-06-2004, 21:32
bene allora verso luglio proverò a pubblicare tutto il programma sotto GPL su sourceforge. Purtroppo all'inizio ho scelto l'assembly come linguaggio perché altrimenti in 8kb di eeprom non sarei mai riuscito a farci stare così tanta roba... infatti, il programma, occupa tutta la poca memoria dell'8535, 4000 word.

Il codice devo dire che fa un uso intenso di procedure basilari ed è abbastanza commentato e facile da capire.

Fra poco posto lo schema dell'algoritmo di cifratura, ditemi che ne pensate ;)

Fabio Erculiani
04-06-2004, 21:41
http://www.amdplanet.it/fabio/cifratura_cubos.jpg

Prima di essere utilizzata, la Password viene cifrata tramite la master key attraverso una somma byte a byte, dopo di che è pronta per l’uso. A questo punto, il testo del messaggio viene vettorizzato con la password usando l’operatore somma come in precedenza e successivamente con la master key. Il risultato ottenuto è il testo criptato pronto per essere trasmesso: infatti l’algoritmo viene eseguito solo al momento dell’invio del messaggio.

La master key è una chiave composta da 20 byte che si trova nella eeprom del microcontrollore il quale è protetto da lettura (read protected). La password è lunga massimo 10byte, per scopi più seri non sarebbe un problema incrementarla, ovviamente ;)

Fabio Erculiani
04-06-2004, 21:54
Questa è la schermata iniziale di scelta della password... beh, domani è l'ultimo giorno di scuola quindi vado a dormire...

In alto si può notare il livello di carica della batteria, in questo caso è al massimo, più a dx lo stato della cifratura (abilitata e non) e per finire il numero di pagine (massimo 6).

http://www.amdplanet.it/fabio/schermata_pwd.jpg

Oggi ho fatto dei test sulla distanza, senza antenne i due riescono a comunicare fino a 60 metri di distanza. ;)

_YTS_
05-06-2004, 09:01
ottimo.
con le antenne a quanto pensi che potrebbero arrivare?
in ogni caso amplificando non ci dovrebbero essere limiti, giusto?
teoricamente potresti cifrare una connessione modulata via modem?
altro che wep..... :sofico:
ciao

_YTS_

Fabio Erculiani
05-06-2004, 10:48
beh ovviamente con antenne, grosso modo non c'è limite, è una stupidata inserire un amplificatore operazionale e successivamente una antenna a lambda quarti... circa 16,5cm se non sbaglio (non vorrei fare confusione fra i due tipi di connessione di una antenna...:oink: ).

Si si potrebbe adattare per una trasmissione modulata via modem, voglio dire, il modulatore ed il demodulatore sono dei (...) moduli a parte... La scuola mi ha fornito un trasmettitore ed un ricevitore FSK della aurel, non valgono molto sinceramente... Così come te lo danno non riesci a trasmettere a più di 2400bps, mentre se utilizzando il piedino di test point, ci inserisci uno squadratore operazionale (LF356) riesci ad arrivare a 28800bps...
La cosa estremamente positiva è che la velocità di trasmissione non dipende tanto dal dispositivo ma dal modulatore/demodulatore impiegato.

fra poco pubblico altre foto ed informazioni interessanti ;)
...come per esempio il protocollo di trasmissione... ;)

Fabio Erculiani
05-06-2004, 11:23
http://www.amdplanet.it/fabio/starting.jpg
dispositivo in fase di avvio (durata 3 secondi), il tempo necessario per permettere alla tastiera di ripulire il suo canale seriale.

http://www.amdplanet.it/fabio/testo_da_inv.jpg
scrittura del testo... con cifratura abilitata e password "ciao"


http://www.amdplanet.it/fabio/ricez_no_dec.jpg
Testo arrivato a destinazione! (illeggibile perché cifrato)... mmh... la foto è un po' sfuocata

http://www.amdplanet.it/fabio/menu_rx.jpg
Menu accessibile tramite il tasto F1,dove fra le voci c'è quella che permette la decifratura e quella che permette di impostare una password.

http://www.amdplanet.it/fabio/ricez_decod_ok.jpg
messaggio decifrato correttamente ;)

http://www.amdplanet.it/fabio/dentro_cubos.jpg
dentro CubOS... si nota sulla destra il ricevitore FSK schermato con un po' di carta stagnola...:p

Fabio Erculiani
05-06-2004, 14:32
Dato che nell'ultima versione, la 2.6, il protocollo di comunicazione è totalmente cambiato, al momento non ho a disposizione schemi esaustivi, ma posso sempre spiegare il tutto "a voce" ;)

Bene, quando CubOS ha bisogno di inviare del testo esegue le seguenti operazioni:

1. Se la modalità di cifratura è abilitata, cifra il testo con la password e la master key presente nel micro.
2. Invia il byte di start al ricevente: 0x01 nel caso di comunicazione cifrata, 0x02 nel caso di comunicazione non cifrata
3. Successivamente, invia il byte che indica la lunghezza in caratteri del testo che si invierà, ovvero, per la parola "ciao", questo byte avrà valore 0x04.
4. A questo punto, invia tutto il testo.

Il ricevitore immagazzina il secondo byte ricevuto e fa un conto alla rovescia sui successivi ricevuti finché non arriva a zero, in questo caso capisce che la comunicazione è terminata. In questo modo è possibile,con ampliamenti futuri, inviare messaggi concatenati senza particolari difficoltà.

Se per caso il byte di conteggio è superiore al numero effettivo di caratteri, un watchdog timer interviene dopo 2 secondi (sempre sul ricevitore) per troncare la ricezione ed in questo caso, il suono di "messaggio ricevuto" non sarà bitonale ma monotono.

Per finire, ogni byte viene spedito 3 volte per permettere al ricevitore, tramite l'utilizzo di un algoritmo di rilevazione e correzzione d'errore, di poter ovviare a qualche inconveniente nella trasmissione.