KeycardAccess

KeycardAccess è il sistema di apertura porte / autenticazione di Mittelab. È basato sulle seguenti tecnologie:

  • FreeIPA (per Identity management)
  • MIFARE DESfire EV1 (per le card NFC)
  • PN532 (Lettore RFID/NFC)
  • OrangePi Nano

Il sistema è pensato per essere ragionevolmente:

  • Sicuro
  • Non clonabile
  • Robusto (resistente a perdita di rete e di corrente elettrica)
  • Low cost

Ogni porta avrà una OrangePi Zero con lettore basato sull'integrato PN532. Ogni Pi avrà una replica di FreeIPA (il nostro sistema di autenticazione centrale) e quindi una copia completa del database di utenti. Ogni Pi controlla il proprio motore che aprirà la porta. Il sistema meccanico di apertura è stato già progettato e realizzato da wifasoi e glavermi.

La tessera socio è già stata realizzata, e si basa sul sistema MIFARE DESfire EV2. Queste tessere sono equiparate a smart card, e possono utilizzare gli stessi protocolli delle carte contactless.

Come funziona la DESfire?

La carta è divisa in applicazioni, che corrispondono vagamente a cartelle di un file system. Ogni applicazione può contenere file e chiavi. I file possono essere di vari tipi, tra i quali:

  • File standard
  • File standard con backup (mantiene n copie)
  • File strutturato (record) ciclico
  • File strutturato (record) lineare
  • File di valore (supporta operazioni di credito/debito)

Le chiavi specificano permessi per leggere determinati file.

Come gestiamo autenticazione e autorizzazione

Le idee di base sono due, una più facile e una più difficile (ma più sicura)

1. Ogni tessera ha un file con dentro scritto il nome utente e una stringa segreta. Il lettore legge il file in questione e controlla nel database utenti se l'utente è autorizzato ad aprire. Questo sistema dovrebbe essere molto semplice da implementare, ma non è molto sicuro, infatti se qualcuno ottiene il file, può autenticarsi come quell'utente.

2. Ogni tessera genera una coppia di chiavi asimmetriche, e la chiave pubblica viene trasferita nel sistema di autenticazione. Il lettore quindi chiede alla tessera di firmare una stringa di challenge e poi verifica da chi è stata firmata. Questo sistema è molto più sicuro in quanto la chiave privata non lascia mai la tessera (è letteralmente impossibile trasferirla mediante il protocollo) ma è un po' più complesso da fare.

Software

Esistono già librerie FOSS per parlare con le tessere, principalmente libnfc con libfreefare e liblogicalaccess. Le prime due sono documentate un po' male, ma le ho testate e funzionano con il nostro lettore e la tessera. La seconda è da testare.

Sarebbero quindi da sviluppare due software:

  • Uno che parte da una tessera vuota, e imposta la chiave master (PICC key), crea l'applicazione e il layout necessario
  • Una che legge la tessera e fa l'autenticazione

Librerie utilizzate:

Laser cutter:

  • TODO link a git → disegni
  • TODO note aggiuntive

Progetti simili

Link utili

* https://www.olimex.com/Products/Modules/RFID/MOD-RFID1356MIFARE/

KeycardAccess

  • Responsabile: g5pw
  • Membri: g5pw, wifasoi, glavermi
  • Data inizio: 1/1/2017
  • Data fine: in corso
  • progetti/keycardaccess.txt
  • Ultima modifica: 2018/09/22 08:38
  • da g5pw