lunedì 8 dicembre 2014

netToken - parte 1: il progetto

Questo strano progetto nasce dall'esigenza di condividere tra più persone un token crittografico. Cos'è un token crittografico si fa presto a dirlo: è un piccolo dispositivo dotato di un display numerico che in modo temporizzato offre all'utente un numero valido per pochi secondi, che deve essere utilizzato per le operazioni di internet banking (cioè una one-time-password).
E' tipicamente usati sia dai siti di onbanking che dalle molte app mobile che ormai tutte le banche mettono a disposizione ai clienti in un'ottica di multicanalità.



Tale numero è univoco e viene generato in un certo istante da quel particolare token con una validità di pochissimi secondi, il che permette alla banca di garantire che chi usa quel numero per accedere sia per forza fisicamente in possesso di quel token, che tradotto in criteri di sicurezza significa avere una certezza in più che la persona che accede è probabilmente il cliente che possiede il token crittografico.
Per chi ne volesse sapere di più, passo la palla a wikipedia, non era questo l'argomento che volevo approfondire. Sappiate solo che il token non comunica con alcunchè ed è semplicemente sincronizzato alla nascita con un server.
Completo il quadro dicendo che la mia azienda si occupa tra l'altro proprio di sviluppo di app mobile per il settore internet banking.
Ebbene, proprio per questo nel mio ufficio ci sono più programmatori che lavorano sulla stessa app contemporaneamente (su due piattaforme: iOS ed Android) e per testare quello che scrivono utilizzano un ambiente di test che la banca ha messo a disposizione con delle credenziali di prova che simulano in tutto e per tutto l'ambiente reale. E come non poteva mancare il token crittografico dato che il tutto deve essere il più realistico possibile?
Immaginate ora queste persone che devono continuamente passarsi l'un l'altro il token per fare test diversi sulla stessa utenza! Semplicemente scomodo ed inefficiente.
Come risolvere il problema? Con questo semplice "coso", che ho chiamato semplicemente netToken.


netToken serve per controllare remotamente via web il token, in modo da permettere la pressione del tastino che lo fa accendere e mostrare per qualche secondo un nuovo numero, catturandone l'immagine remota via webcam, il tutto utilizzabile sia dal un browser desktop che dal un dispositivo mobile.


Ok, non avete capito niente di quello che ho tentato di spiegare. Guardate il video e poi ne riparliamo.


Iniziamo a fare l'elenco della componentistica utilizzata:

Asis 205 Ip Camera

Per pilotare la webcam non è necessario scrivere codice: è già dotata di un webserver, per cui una volta configurata in rete (c'è una utility per windows che ne permette la preconfigurazione dell'ip) è possibile collegarsi facilmente ad essa tramite un browser e visualizzare l'immagine in tempo reale. Aggiungo che dispone di un pannello di configurazione abbastanza evoluto con cui si possono personalizzare i colori, l'eventuale messaggio-data-ora in sovraimpressione, il framerate, la risoluzione ecc. La camera non è autofocus, ma dispone di una ghiera in plastica che permette il settaggio del focus con una discreta precisione.
Per € 25 usata su ebay direi che è più che dignitosa.


Una volta configurata è quindi pronta all'uso ed è completamente autonoma rispetto all'Arduino che invece utilizzeremo per pilotare il token. Va ovviamente configurata con un indirizzo IP che sarà diverso da quello che attribuiremo successivamente ad Arduino.
L'integrazione tra i due dispositivi tuttavia la vedremo nel passaggio finale, dove avremo un'unica pagina web con il tasto di controllo remoto del token e l'immagine aggiornata in tempo reale della webcam.

miniservo SG-90 SG90 TOWER PRO 9G 

Questo miniserver è un classico servo dalle dimensioni (e anche dalla forza) veramente ridotte.


Costa mediamente sui $5 e viene fornito completo dei braccetti di vari dimensioni e delle viti necessarie. Il datasheet completo lo trovate qui.

Wiring

Passiamo ai collegamenti, veramente veramente semplici a portata di bambino.
Il miniservo dispone di 3 pin:
  • rosso: Vcc  -> al pin Vin di Arduino
  • nero: Gnd -> al pin Gnd di Arduino
  • arancione: pin di comando (pwm) -> al pin 8 di Arduino
l'alimentatore esterno è un semplice 12V stabilizzato


La struttura portante

La struttura portante è fatta con delle listelle in legno, incollate tra di loro (colla vinilica a volontà).



Il token è inserito in una "culla" di materiale plastico recuperato da imballaggi di computer.



La user interface

Semplice ed efficace: un pulsante di comando e l'immagine ripresa dalla webcam. Lo screenshot che vedete proviene da Safari per iPhone, ma ovviamente il tutto funziona anche su un browser per desktop.



Nel prossimo post vedremo nel dettaglio il poco codice necessario per far funzionare questo marchingegno.


Nessun commento:

Posta un commento