Sto sviluppando un software che gestisce i dati sensibili della privacy in un ambiente di rete locale, utilizzando computer Mac , a cui può accedere solo un gruppo selezionato di persone.
Devo capire in che modo posso fornire un accesso sicuro e personalizzato agli (stessi) dati da ciascuna persona autorizzata.
I dati sono memorizzati in un database SQL (attualmente Sqlite ma probabilmente Postgresql) e devono essere crittografati nel file di database. Il motore DB deve essere in grado di decrittografare i dati in modo da poterli cercare facilmente, cioè non voglio crittografare i dati già sul client.
Con questo, credo che quando si apre il database, è necessario fornire una chiave di decrittografia , poiché il database non può gestirlo da solo. Il che significa che i computer che accedono al server devono conoscere la chiave. Da quanto ho imparato finora, questo è fatto in questo modo:
Ogni utente autorizzato ha una password - quella password viene utilizzata per creare un codice hash. Il codice hash viene quindi utilizzato per crittografare e decodificare i dati segreti, in questo caso la chiave per il database. Ciò significa che per ogni account utente che creo, devo crittografare la stessa chiave DB con la password dell'utente.
Inoltre, per impedire alle persone di rivelare le proprie password troppo facilmente, è necessario utilizzare una chiave fisica per autenticare ciascun utente . Qualche sistema di keycard, probabilmente.
Non conosco alcun sistema di keycard né ho mai esaminato alcun sistema di autenticazione (ad esempio, sospetto che Kerberos sia qualcosa di simile, ma non l'ho mai usato, quindi c'è il mio livello di "competenza" in quest'area) .
Le mie domande sono:
-
Come funziona l'autenticazione con una carta chiave ? Qual è l'output che ottengo dal lettore di schede in modo da poter quindi autenticare un utente con esso? Dopotutto, ho bisogno di finire con un codice hash per decifrare i dati crittografati di quell'utente, dopotutto.
-
Che tipo di keycard ci sono per i Mac che posso utilizzare per l'autenticazione utente personalizzata nel mio scenario? Suppongo di aver bisogno di qualcosa che viene fornito con una serie di schede programmabili? Nel peggiore dei casi, immagino di poter utilizzare qualsiasi sistema basato su scheda USB purché la sua API di livello USB sia pubblicamente documentata (sono riuscito a scrivere driver USB per il Mac in passato). Ma non so nemmeno cosa cercare. Quali sono i sistemi chiamati dovrei cercare? Mi sono imbattuto in RSA, ad esempio, ma non riesco nemmeno a capire se è adatto al mio scopo dal loro sito web incentrato sul marketing.
-
Ho appena saputo dei tag RFID - sono praticamente carte con un UUID fisso su di essi. Non funzionerà in quanto possono essere facilmente scansionati e replicati, credo. Quindi ho piuttosto bisogno di qualcosa che stia facendo funzionare una piccola CPU all'interno, per eseguire un processo segreto di risposta alle sfide. Come qualcuno ha sottolineato, sarebbe "smart card", suppongo ora.
Aggiornamento 1
Ho avuto alcune considerazioni aggiuntive sull'uso delle schede RFID. Mentre possono essere copiati facilmente, potrei combinarli con l'immissione di una password personale, quindi utilizzare l'ID univoco della RFID con la password per creare un codice hash che poi utilizzerò per decodificare la chiave di crittografia per il database. Un utente malintenzionato avrebbe quindi bisogno di due cose: la carta e la password dell'utente, il che è abbastanza buono nel mio caso. Questa tecnica ha senso?