Come implementare l'autenticazione con smart card con un client Fat .NET?

5

Conosco molto poco sull'autenticazione delle smart card in generale quindi ti preghiamo di segnalarmi o correggermi se qualcosa di seguito non ha senso.

Diciamo che ho:

  • Una smart card "X" dell'autorità di certificazione (chiave privata non esportabile)
  • Driver per quella smart card scritta in C
  • Un lettore di smart card
  • Autenticazione del servizio Web OCSP di CA-s
  • Un requisito per implementare l'autenticazione utente in un'applicazione Fat Client .NET tramite una smart card, fornita dalla CA "X".

Ho provato a cercare informazioni sul Web ma non a prevalere. Quali sarebbero i passaggi? Il mio primo pensiero fu:

Imposta un servizio web, che consentirebbe di salvare (per esempio) i punteggi di un gioco di ping pong per ogni utente. Ogni volta che qualcuno tenta di inviare un punteggio tramite l'applicazione client, può farlo solo inserendo la smart card nel lettore.

Quindi la chiave pubblica viene letta dalla smart card tramite chiamate native c tramite .NET e inviata al mio servizio web personalizzato, che in cambio utilizza il servizio Web di autenticazione OCSP di CA per dimostrare la validità della chiave pubblica / pubblica certificato (?). Se la chiave pubblica è valida e valida, crittografare una sequenza casuale di byte con la chiave pubblica e inviarla all'applicazione client. Se l'applicazione client restituisce la sequenza casuale di byte correttamente decrittografata insieme al punteggio del gioco del ping pong, il punteggio viene salvato nel database per l'utente specificato.

La mia domanda è, è questo il modo corretto per farlo? Che altro dovrei sapere sull'autenticazione delle smart card?

    
posta Dante 19.02.2012 - 20:03
fonte

2 risposte

0

Sembra troppo complesso, e va nella direzione sbagliata.

Per i principianti, "Un requisito per implementare l'autenticazione dell'utente in un'applicazione client .NET". Le applicazioni .NET vengono eseguite nelle sessioni utente, il che implica che l'autenticazione dell'utente sia già avvenuta. È troppo tardi.

Tuttavia, gli accessi alla Smart Card sono già supportati immediatamente. Questo è fatto da SCardSvr.exe (Smart Card Service) in collaborazione con WinLogon. Come servizio, non è limitato in questo modo. Ma WinLogon non collaborerà al tuo servizio in questo modo, ovviamente. Non sarebbe esattamente sicuro.

La soluzione corretta è implementare un "provider di servizi di crittografia di smart card" (CSP). Questa è una soluzione altamente banale, se ti trovi di fronte a requisiti così impossibili come quello che hai.

    
risposta data 20.02.2012 - 10:50
fonte
0

Invece di affidarti al sistema operativo se vuoi fare l'autenticazione da solo, sì, sei nella giusta direzione.

AFAIK che utilizza smart card a livello di OS richiede l'autenticazione del dominio. Se non tutti i tuoi utenti utilizzano il dominio devi autenticarti. (es: utente internet)

Il modo più pratico è;

  • [client] ottiene l'hash del punto di punteggio (sha1, sha2 ecc.)
  • [client] crittografa l'hash (in realtà è chiamato firma)
  • [client] invia la firma + certificato pubblico dell'utente al servizio web
  • [server] Convalida il certificato dell'utente (ocsp)
  • [server] ottiene l'hash del punteggio (di nuovo)
  • [server] decrypt ha inviato hash
  • [server] confronta l'hash calcolato con l'hash inviato (verifica della firma)

in questo modo è meno loquace e meno dati trasferiti.

puoi calcolare l'hash con l'API .net o puoi usare la smart card in sé, ma le smart car in genere rallentano, consiglio l'uso dell'API .net se la sicurezza non è troppo stretta.

    
risposta data 13.04.2012 - 00:02
fonte

Leggi altre domande sui tag