Quali vantaggi avrebbero i certificati lato client sull'autenticazione basata su firma come Oauth2 o HMAC per le richieste HTTP?

2

La mia applicazione attualmente supporta questi due metodi di autenticazione OAuth2 e HMAC Auth.

OAuth2 link HMAC link

Abbiamo una richiesta per supportare i certificati lato client per la nostra infrastruttura API. Al momento non vedo alcun vantaggio in termini di sicurezza per l'utilizzo dei certificati lato client su OAuth2 o HMAC.

Qualcuno sa quali sarebbero i vantaggi?

Dal mio punto di vista, i certificati lato client creano semplicemente un sovraccarico per la gestione dell'API, richiedendo l'infrastruttura PKI per emettere e revocare i certificati.

    
posta Xamus 15.03.2018 - 23:58
fonte

1 risposta

1

Windows ha una buona storia per la gestione di certificati e chiavi private con l'archivio certificati e l'archivio chiavi. Molti servizi cloud (la maggior parte?) Hanno una buona storia per il trasporto di certificati in modo che possano essere utilizzati per SSL / TLS. Non conosco nessuna gestione particolarmente valida per le chiavi HMAC (la cosa più vicina è un sistema di trasporto generale delle impostazioni).

I certificati hanno abbastanza metadati che un sistema / servizio admin / (dev) op può vedere quale viene utilizzato per aiutare a diagnosticare perché qualcosa non funziona, e può essere fatto sulla parte non sensibile dei dati ( la chiave pubblica). Una chiave HMAC, d'altra parte, deve essere rivelata nella sua interezza e confrontata byte per byte (o hex nybble per hex nybble, ecc.) O avere qualche forma di hashing applicata ad essa per offuscare il valore ma permetterne comunque il valore da confrontare su macchine.

Queste ragioni, principalmente, riguardano la "facilità di gestione" da parte del cliente. Essere in grado di essere usato correttamente è un aspetto importante per la sicurezza, ma è meno ovvio. È ancora necessario disporre di un modello di registrazione appropriato per i certificati, utilizzando la propria CA per controllare la denominazione dell'oggetto (che richiede la revoca come meccanismo di annullamento) o memorizzando il certificato (o la chiave pubblica) nello stesso modo in cui si sarebbero archiviati i propri Chiave HMAC (che può evitare la necessità di revoca) ... vuoi solo lasciare che i appropriati certificati autentichino un particolare utente.

La gestione delle chiavi private di Windows consente alle applicazioni di utilizzare la chiave senza poterla esportare, il che significa che gli operatori di sistema che hanno accesso solo alle istanze in esecuzione non possono quindi agire come il sistema a casa. Una chiave HMAC ha il problema che "usarlo" e "esfiltrarlo" sono la stessa autorizzazione. Questo è un problema di sicurezza operativa. Un'applicazione client eccessivamente loggy può facilmente mettersi nei guai con la registrazione della chiave HMAC; ma per un certificato richiederebbe a) le autorizzazioni della chiave privata per consentire l'esportazione del materiale della chiave eb) qualcuno che tenti di spostare l'oggetto chiave in una forma registrabile.

Oh, e i certificati di autenticazione client possono anche avere le loro chiavi private su un HSM, rendendo l'exfiltration ancora più difficile, e in base a ciò che la tua API consente ad alcuni dei tuoi chiamanti potrebbe ritenere di aver bisogno della sicurezza HSM.

Quindi: principalmente la facilità di gestione e un paio di motivi op-sec.

    
risposta data 16.03.2018 - 17:24
fonte

Leggi altre domande sui tag