Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisione Revisione precedente
Prossima revisione
Revisione precedente
Prossima revisioneEntrambe le parti successive la revisione
progetti:keycardaccess [2018/09/22 08:29] – added some links g5pwprogetti:keycardaccess [2018/09/22 08:38] g5pw
Linea 9: Linea 9:
   * OrangePi Nano   * OrangePi Nano
  
-===== Architettura ===== +Il sistema è pensato per essere ragionevolmente: 
-Sarà presente un OrangePi per ogni porta da aprire, collegato direttamente all'attuatore via GPIO. Ogni copia di OrangePI avrà una copia di FreeIPA installata in modalità *replica*. L'autenticazione avverrà direttamente in locale.+  * Sicuro 
 +  * Non clonabile 
 +  * Robusto (resistente a perdita di rete e di corrente elettrica) 
 +  Low cost
  
-Ogni OrangePi si sincronizzerà su un server FreeIPA centrale (''ipa.hq.mittelab.org'').+===== Il sistema di apertura ===== 
 +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 utentiOgni Pi controlla il proprio motore che aprirà la portaIl sistema meccanico di apertura è stato già progettato e realizzato da [[user>wifasoi]] e [[user>glavermi]].
  
 +===== La tessera =====
 +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 [[https://github.com/nfc-tools/libnfc|libnfc]] con [[https://github.com/nfc-tools/libfreefare|libfreefare]] e [[http://liblogicalaccess.islog.com|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
  
 ===== Materiali ===== ===== Materiali =====
  • progetti/keycardaccess.txt
  • Ultima modifica: 2023/04/22 23:42
  • da 5p4k