Autenticazione utente con smart card o RFID su Mac (OS X) per l'accesso a un database crittografato

3

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?

    
posta Thomas Tempelmann 04.03.2016 - 01:08
fonte

1 risposta

2

Non sono sicuro che la tua idea sulla crittografia del database funzionerà al meglio. Ma solo per darti un'idea della tua necessità di utilizzare un secondo fattore per la crittografia.

Dispositivi o app come Google Authenticator utilizzano un algoritmo di password monouso. Questo è basato su una chiave simmetrica. Tale algoritmo e dispositivo non possono essere utilizzati per la crittografia.

Si desidera utilizzare le chiavi asimmetriche (> = RSA2048) per eseguire quanto segue. Creare una coppia di chiavi privata e pubblica sulla smartcard. La chiave privata non lascia la smartcard. La chiave pubblica lo fa. Come è pubblico. La chiave privata sarà unica nell'hardware, in quanto non lascia l'hardware.

Cripta il tuo database con un tasto AES simmetrico.

Ora è possibile crittografare la chiave simmetrica AES con la chiave pubblica. Ogni volta che l'utente desidera accedere al database, è possibile decodificare la chiave crittografata AES nella smart card (con la chiave privata) e la chiave di crittografia AES può essere utilizzata per decrittografare il database. Ovviamente è necessario assicurarsi che la chiave di crittografia AES simmetrica non sia trapelata.

Ma ora puoi aggiungere nuovi utenti con le loro coppie di chiavi asimmetriche. Per ogni utente è possibile crittografare la chiave di crittografia AES con la chiave pubblica dell'utente. Pertanto, solo questo utente può decodificare la chiave di crittografia AES con la sua chiave privata. E tu puoi gestire, quale utente sarà in grado di decifrare il database.

... se vuoi fare tutto questo hai una lunga strada da percorrere! Divertiti; -)

    
risposta data 05.03.2016 - 00:34
fonte

Leggi altre domande sui tag