Un po 'di background. La nostra organizzazione sta lavorando su un formato di documento che verrà ingerito dal nostro software. Stiamo utilizzando il formato CMS per verificare l'integrità (convalidando la firma). Il formato del messaggio CMS conterrà la catena del firmatario e quindi lo useremo anche per verificare la fiducia rispetto al portachiavi di sistema predefinito (i cacerts di Java nel nostro caso).
Per la nostra prima versione vorremmo verificare che la nostra organizzazione sia colui che ha firmato il documento. Il nostro team ha esaminato blocco dei certificati . In questo caso includiamo una copia del certificato x509 che ci aspettiamo essere il cantante e confermiamo (dopo aver effettuato la convalida della firma e la valutazione di attendibilità) che il firmatario è uguale al previsto. Abbiamo deciso di non farlo per un paio di motivi. La ragione principale è che se una chiave è stata compromessa o un certificato scaduto dovremmo rispedire il nostro software o fare in modo che i nostri utenti apportino una modifica alla configurazione (cambia il vecchio certificato per un nuovo). Preferiamo lasciare che un CRL delle CA pubbliche si prenda cura della revoca per noi.
Un'idea a cui ci stiamo impegnando è verificare che l'"organizzazione" dei soggetti firmatari (verificati) x509 sia la nostra organizzazione. Questo sembrava un buon compromesso tra il blocco dei certificati e la fiducia in chiunque avesse un certificato pre-attendibile.
In generale, è giusto fidarsi delle informazioni fornite nell'oggetto del certificato se ci si fida dell'emittente del certificato? OSSIA Posso essere sicuro che ogni Certificate Authority inclusa in un trust store predefinito non compromesso (di nuovo, i cacerts di Java per noi) avrà verificato che l'organizzazione elencata nell'oggetto è l'organizzazione attuale? Si estende ad altri campi tematici come stato, locale, email, ecc.? Al di fuori del pinning del certificato, c'è un paradigma che mi manca per realizzare questo genere di cose?