Autenticazione basata su certificato con AD e 802.1x o EAP-TLS

0

Mi piace pensare di avere una migliore comprensione di PKI poi della maggior parte delle persone, ma questo problema mi ha fatto grattarmi la testa e speravo che qualcuno potesse tagliare al centro di esso.

In un sistema in cui è presente Wireless che esegue l'autenticazione tramite certificati e non nomi utente / password, sono confuso circa la condivisione della chiave privata tra i dispositivi o se utilizza addirittura la chiave privata per l'autenticazione effettiva.
Ad esempio, si dispone di un telefono Apple che si desidera autenticare tramite un certificato gestito da AD e da alcuni MDM. Quando MDM invia un certificato al telefono per l'utente, è la chiave privata dell'utente, supponendo che sia in AD, anche al telefono? Posso vedere con EAP-TLS dove è necessario crittografare i dati in modo che sia necessaria la chiave privata ma per l'autenticazione è solo una questione di convalidare che il certificato è autentico e che è il certificato dell'utente, che a mio avviso può fare un certificato o senza una chiave pubblica / privata, giusto? Sembra che il cert del client stia effettivamente facendo il doppio dovere come cert di eap-tls per la crittografia e per l'autenticazione, dal momento che questi sembrano essere legati insieme nella maggior parte delle implementazioni il pensiero si verifica che si possa avere un certificato specifico del dispositivo che ha generato una chiave privata univoca per stabilire il tunnel e un certificato utente appena usato per convalidare l'utente senza esporre la chiave privata dell'utente al dispositivo mobile. È questo il caso o è questo normalmente come è fatto e mi manca solo quella parte in alcune delle spiegazioni.

Infine, non sono un grande fan dei certificati usati per l'autenticazione in quanto sembra essere più una password memorizzata sul dispositivo che può porre molte domande di sicurezza. Se AD condivide la chiave privata per l'utente, ciò sembra esacerbare il problema di sicurezza consentendo a tutti gli utenti del traffico e dei dati di essere esposti se un singolo dispositivo viene compromesso. Mi manca qualcosa con questo che mi farebbe sentire meglio di quello che faccio per l'autenticazione basata solo su certificato?

Grazie

    
posta Brett Littrell 28.05.2017 - 17:27
fonte

1 risposta

2

Forse alcune delle seguenti affermazioni non sono accurate, ma nel complesso funziona in modo molto simile.

Dipende davvero dall'implementazione. Ma l'idea è che la chiave privata non lasci mai il dispositivo che sta usando. Se è così è design sbagliato. Non conosco alcun MDM (software di gestione dei dispositivi mobili), in quanto non ho mai lavorato in precedenza, ma funzionerà in modo molto simile mentre descrivo in seguito.

Il dispositivo mobile (iPhone nel tuo caso) genererà una chiave privata. Creerà anche il CSR (richiesta di firma del certificato - fuori da altri dati include la parte pubblica della chiave generata), si noti che il CSR può anche essere generato dall'MDM e quindi consegnato all'iPhone per la firma. Quindi iPhone lo firma (lo hashing e crittografa l'hash) utilizzando la chiave privata generata e lo invia tramite MDM a CA (autorità di certificazione) per la convalida e l'approvazione. MDM è responsabile dell'autenticazione del dispositivo prima che venga generata la prima chiave, direi che è necessario effettuare il login utilizzando il nome utente / password di AD per la prima volta dalla rete attendibile senza alcun metodo di autenticazione, come 802.1x.

Una volta che la CA garantirà la validità della CSR (questo può essere anche un processo completamente manuale) crea il certificato e firma il certificato utilizzando la sua chiave privata. Memorizza il certificato generato nell'archivio dei certificati emessi e lo restituisce all'MDM. MDM lo memorizzerà in AD (o meno) e lo rimanderà al dispositivo iPhone. Una volta che il dispositivo riceve il certificato firmato, verifica se ha una CSR appropriata memorizzata all'interno (dovrebbe come generato / firmato), accoppia le informazioni dal certificato firmato e CSR insieme e memorizza il certificato includendo le parti pubbliche e private della chiave internamente ( di solito per proteggere l'archivio dei certificati). La chiave privata può essere ulteriormente protetta utilizzando una qualche altra protezione (ad es. PIN, password, smart card, qualsiasi altra cosa) in modo che l'utente autorizzi l'uso della chiave in questo caso. In iPhone direi che è protetto e crittografato usando la password / pin / impronta digitale dell'utente, quindi una volta sbloccato il telefono può essere usato.

Per l'autenticazione (non importa se è 802.1x EAP-TLS o un altro TLS o un altro metodo che usa i certificati per l'autenticazione - tutto funziona in modo simile) usi questo certificato firmato con CA e di solito qualcosa firmato (criptato) dal tuo chiave privata relativa al certificato. Di solito è una sorta di sfida inviata dal server e viene utilizzata per dimostrare di possedere la chiave privata relativa al certificato che hai inviato al server da utilizzare per l'autenticazione e tu affermi che è tua.

Il server controlla quindi il tuo certificato (se è valido - data / ora, se non è revocato, se deve essere usato per eseguire l'azione che stai effettivamente cercando di fare e se è firmato con un'autorità di certificazione affidabile ) quindi utilizza la parte pubblica della chiave memorizzata nel certificato per decrittografare la verifica per assicurarsi di essere il proprietario del certificato (è stata utilizzata la chiave privata corretta per firmare i dati) Se la decrittografia ha esito positivo e la sfida corrisponde alla sfida inviato per la firma significa che sei il proprietario del certificato e sei proprietario della chiave privata relativa a quel certificato.

Quindi cosa deve sapere il server per autenticarti? Solo la CA radice o il certificato dell'autorità CA immediatamente utilizzato per firmare il certificato, il certificato, compresa la parte pubblica della chiave e i dati crittografati (firmati) con la chiave privata relativa al certificato. Questo è sufficiente per autenticarti e autorizzarti. Non ha mai bisogno di conoscere la tua chiave privata, quindi non c'è motivo di archiviarla in AD o in CA o in qualsiasi altro posto rispetto al tuo dispositivo.

Poche parole su AD e MS PKI (servizio CA) - le stesse di cui sopra:):

AD non memorizza mai il tuo certificato, inclusa la chiave privata. Perché? Perché semplicemente non lo sa. Non è mai successo. Se si richiede un certificato in MS PKI (gli altri funzionano nello stesso modo o molto simile - EJBCA, OpenCA ...) di solito funziona nel modo in cui si genera la chiave privata sul computer, quindi si crea la richiesta di firma del certificato. Questo può essere fatto in qualsiasi posto, in caso di MS è solitamente sul server self-service CA. CSR contiene i.e .: nome distinto (nome o email), il tuo indirizzo, a quali scopi si richiede il certificato per - vale a dire. autenticazione, firma e-mail, qualunque cosa). Quindi ottieni il CSR, e aggiungi alcune informazioni ad esso, cioè parte pubblica della chiave, impronte digitali, qualunque cosa. Infine, si firma il CSR (si hash il CSR e si cripta l'hash utilizzando la propria chiave privata) quindi lo si invia al portale del servizio CA autonomo. CA genera quindi un certificato, lo firma e lo restituisce in modo predefinito. Cioè posizionandolo sul Web o via e-mail o, probabilmente, potrebbe anche essere integrato con MDM.

In questo caso non sono sicuro al 100% che il processo descritto funzioni in questo modo in dettaglio ma sarà molto vicino ad esso.

    
risposta data 28.05.2017 - 18:52
fonte

Leggi altre domande sui tag