Impersonare l'autenticazione del certificato client con lo stesso nome soggetto

1

Sto esaminando la sicurezza di un servizio che utilizza i certificati client per autenticare solo i chiamanti conosciuti. Eseguiamo un servizio API Web C # che controlla ogni soggetto del certificato di richiesta se è elencato in bianco. Inoltre verifica che il certificato sia valido (convalida della catena di certificazione).

Ma se un utente malintenzionato ottiene un certificato con lo stesso nome soggetto emesso da un'autorità di certificazione, può attaccare il nostro servizio, giusto? Questo mi sembra meno sicuro. I certificati SSL del server sono sicuri perché gli utenti raggiungono un dominio esplicitamente e il certificato SSL utilizzato dal server contiene il nome del dominio convalidato dall'autorità cert. A meno che il certificato del server e alcuni come il dominio che l'utente sta tentando di raggiungere sia compromesso, il server è sicuro e il client può fidarsi del server.

Ma fidarsi di un cliente mi sembra meno sicuro. La mia comprensione è giusta o mi manca qualcosa?

    
posta rboorgapally 08.02.2018 - 20:27
fonte

1 risposta

4

Buona domanda. Con C # e .NET è difficile limitare un numero di CA radice affidabili tramite la classe X509Chain che verrà utilizzata per convalidare le catene. Questa classe non offre tale funzionalità (sebbene la funzione nativa CertCreateCertificateChainEngine sottostante consenta questo tramite CERT_CHAIN_ENGINE_CONFIG.hRestrictedRoot , bit è una lunga storia).

In Active Directory, ad esempio, questa domanda viene risolta introducendo un record NTAuthCertificates in CN=Public Key Services, CN=Services, CN=Configuration, {ConfigurationNamingContext} che memorizza i certificati CA (emittenti diretti) a cui è consentito emettere certificati di autenticazione e accesso smart card. Il controller di dominio durante l'accesso con smart card esegue la generazione e la convalida generali del percorso, quindi riceve l'emittente (dalla catena convalidata) e verifica se è elencato in NTAuthCertificates . Se tutto è a posto, l'accesso al certificato continua, altrimenti fallisce.

Suggerirei di andare nello stesso modo. Mantenere una raccolta di CA (di nuovo, emittenti diretti, non root) approvate dalla propria politica per emettere certificati di autenticazione. Puoi memorizzare interi certificati, le loro impronte digitali, le tue chiavi pubbliche o qualsiasi altra cosa ti aiuti a identificarli con forza.

    
risposta data 08.02.2018 - 21:43
fonte

Leggi altre domande sui tag