Quali sono le possibili misure di difesa che possono essere applicate a una semplice PKI (nessuna CA intermedia, ecc.) utilizzata per autenticare i client e server su TLS solo su una rete interna?
I certificati rilasciati a client / server dovranno utilizzare il set di utilizzo della chiave estesa dell'autenticazione TLS appropriato.
Poiché la CA sarà affidabile su tutti i dispositivi, voglio essere sicuro che anche se la chiave privata della nostra CA è compromessa, l'utente malintenzionato non sarebbe in grado di creare certificati per Siti Web Internet o creare binari firmati attendibili. In altre parole, cerco di ridurre al minimo le vulnerabilità aperte dallo schema di autenticazione.
È possibile utilizzare i vincoli X.509?
Finora ho pensato di impostare pathLenConstraint
su 0 e di utilizzare nameConstraints
in modo da accettare solo i certificati emessi per gli indirizzi IP privati.
Sembra che queste misure prevengano molti abusi, ma consentono comunque all'attore di emettere un certificato per es. google.com , quindi, utilizzando MITM, impersonare il server DNS e rispondere con un indirizzo IP interno ( pathLenConstraint
✓, nameConstraints
✓, utilizzo previsto ✘). Questo scenario funzionerebbe anche con nameConstraints
impostato sul suffisso DNS locale, poiché la maggior parte dei client invia semplicemente un'altra query con il suffisso incluso, se la risposta non è stata trovata.
Per non parlare del fatto che non ho trovato alcun modo per evitare che una CA (usando vincoli X.509) abbia mai emesso certificati usati per la firma del codice o il timestamping.
C'è qualche opzione che mi è sfuggita?