Autenticazione Smart Card locale

3

Ho una smart card con PKCS # 11 o altra interfaccia simile e contiene certificato e chiave privata.

Mi piacerebbe fare un'autenticazione locale (senza rete) dell'utente che utilizza la smart card e i dati su di essa protetti da PIN.

Che cosa è un buon schema / algoritmo per farlo e fidarsi?

La mia prima idea è di fare quanto segue:

  1. Inserisci nome utente / PIN
  2. Accedi come utente alla smart card (se fallisce, restituisci false)
  3. Verifica la validità del certificato (se non valido, restituisci falso)
  4. Controlla se il nome utente è uguale a CN nel certificato (se non lo è, restituisci falso)
  5. Genera dati casuali e firmalo utilizzando la chiave privata su smart card
  6. Verifica se la firma è valida (in caso contrario, restituisci false)
  7. Restituisce vero

Ha senso? O ci sono degli standard in merito?

    
posta user1563721 17.03.2017 - 15:25
fonte

2 risposte

0

Suggerisco le seguenti modifiche

  1. Enter username/PIN
  2. Log in as user to smart card (if fails, return false)

Di solito le smartcard con certificati digitali non hanno un "nome utente". Il pin è necessario per sbloccare la chiave privata del certificato selezionato

  1. Check the validity of certificate (if not valid, return false)

corretto, questo è necessario per filtrare i certificati disponibili. Puoi avere diversi (non so se questo è il tuo scenario)

  1. Check if username equals CN in certificate (if not, return false) This step is usually done after digital signature, because you do not what certificate the user is going to select.

Si suppone anche che l'utente sia registrato e che CN contenga il nome utente. Quando si utilizzano le smart card per autenticare il processo, di solito avviene il contrario: l'utente seleziona il certificato e il nome utente viene estratto da un attributo del certificato (CN, SERIALNUMBER o personalizzato)

  1. Generate random data and sign it using private key on smart card
  2. Check if the signature is valid (if not, return false)
  1. Verifica revoca del certificato utilizzato
  2. Estrai nome utente dal certificato e controlla se è autorizzato
  1. Return true
    
risposta data 18.03.2017 - 15:33
fonte
0

poiché questa è una domanda piuttosto teorica e non hai specificato la piattaforma - Windows / Linux / Mac e l'infrastruttura AD / standalone / gruppo di lavoro. Schema / requisiti di implementazione ecc. E poiché senza l'infrastruttura di rete non è possibile eseguire un'autorità di certificazione per emettere certificati.

Il mio suggerimento per semplificare il tuo approccio:

  1. Utilizza la funzione PKCS # 11 per i dati personalizzati.
  2. Elaborare il formato dei dati per salvare UserLogin / Password / WorkstationName sulla scheda
  3. Salva il numero di serie della smartcard in un elenco di schede consentite.

Per autenticare:

  1. Inserisci scheda utente e Inserisci PIN. Verifica PIN. Accedi alla carta.
  2. Dati Reader da PKCS # 11.
  3. Controlla se nome utente / nome workstation / Seriale scheda sono OK - questa sarà l'autenticazione Factor 2
  4. passa il nome utente / password (dalla scheda) al sistema locale Authenticaton (Windows / Mac / Windows)
  5. gestisce l'errore e visualizza l'interfaccia utente

Il numero di serie di smart card per lo spoofing è un attacco piuttosto complesso e improbabile che accada.

    
risposta data 21.04.2018 - 11:48
fonte