Serratura OTP

luca 14/09/2013 8

Oggi voglio spiegarvi come realizzare con Arduino una serratura che venga aperta utilizzando un codice OTP generato dal vostro cellulare.

Video

Per prima cosa un breve filmato che illustra il progetto:

OTP

OTP (one-time password) è un codice di accesso utilizzabile una sola volta: il suo principale vantaggio è che – se anche viene rubata – non può essere successivamente utilizzata per un accesso abusivo.

Normalmente i codici OTP hanno anche una validità temporale: possono cioè essere utilizzati per un breve periodo (tipicamente 30 secondi); in tal caso si parla di TOTP (time-based one-time password). Questi codici sono molto utilizzati per accessi sicuri ad home-banking, connessioni remote (VPN)…

In passato i codici TOTP venivano normalmente generati da token hardware

recentemente invece si stanno diffondendo i token software, ovvero delle applicazioni per smartphones

OATH e Google Authenticator

Open Authentication (OATH) è un ente che ha come obiettivo la definizione di standard aperti per implementare modalità di strong authentication. Uno di questi standard (RFC 6238) definisce un algoritmo per la generazione di codici TOTP.

L’algoritmo parte da una chiave segreta (shared secret) e dal valore di timestamp (il numero di secondi trascorsi dal giorno 01/01/1970). Applicando alla coppia chiave-timestamp una funzione di hash (HMAC-SHA-1) e una funzione di troncamento, si ottiene un codice di 6 numeri:

Questo algoritmo prevede quindi che il token (che genera i codici) e il server (che li valida)

  • conoscano la stessa chiave privata
  • siano sincronizzati come orario

Google Authenticator è una applicazione opensource che può essere utilizzata per generare codici TOTP secondo l’algoritmo sopra descritto.

L’applicazione è disponibile per smartphones Android, iOS e Blackberry:

Google Authenticator è in grado di generare codici OTP con validità di 30 secondi partendo da una chiave privata lunga 10 caratteri.

Nella prossima pagina, vedremo come gestire codici TOTP con Arduino…

Pagine: 1 2

8 Comments »

  1. Ivan 19/09/2013 at 12:25 - Reply

    # 1!!!!

  2. Burke 01/11/2013 at 21:08 - Reply

    Great article.

  3. customdev 05/03/2014 at 23:13 - Reply

    I have the sketch up and running. Everything compiles and uploads beautifully.

    However I am having synchronization problems. Which time zone are we to use? I cannot tell rather my phone simply uses the GMT as its system clock or rather it is GMT adjusted with an offset for my time zone.

    I have tried using both GMT and GMT adjusted for my time zone with less than 5 seconds of difference between the Arduino’s time and the phone’s time. Either way the codes generated never match up.

    • luca 15/03/2014 at 10:46 - Reply

      Hi! Google Authenticator uses GMT even if your phone displays time in your timezone, so you have to configure arduino with the same timezone.

  4. Chrisitan 15/05/2014 at 12:12 - Reply

    Ottimo articolo fa venir voglia di utilizzare questa serratura….

  5. customdev 26/11/2014 at 06:03 - Reply

    hi,i have configured arduino with the same timezone as GMT,but the codes generated never match up

    • luca 26/11/2014 at 11:06 - Reply

      Hi! make sure you’re using the same shared secret, it must work

Leave A Response »