Qualche tempo fa ho letto la risposta canonica della nostra overine signore riguardante CA e le loro chiavi private (root) .
Più di recente mi sono imbattuto nella domanda sulla domanda su come gestire le chiavi di firma del codice per iOS e Android.
Fondamentalmente come follow-up ho dovuto chiedermi:
In che modo le grandi aziende (come Apple, Microsoft, Google, Intel, ...) proteggono le loro chiavi di firma del codice di valore?
In particolare questa domanda può essere suddivisa in: In che modo queste aziende assicurano che vengano firmati solo i build validi (ad esempio la gestione degli accessi) e che cosa fanno fisicamente per proteggere le chiavi private? In particolare, il confronto tra le misure di sicurezza che le CA di root utilizzano e che le aziende utilizzano può essere interessante.
Questa domanda è motivata anche dal mio precedente " In che modo le grandi aziende proteggono il loro codice sorgente? ", dove Ho ricevuto interessanti , risposte inaspettate come " usano solo repository GitHub privati ". In particolare si può sospettare che la macchina di compilazione abbia solo una chiave software che firma tutte le build prodotte e spero di chiarire questo (tra l'apprendimento delle protezioni effettive).
Come per "perché" proteggere le chiavi è importante:
- Se le chiavi di Apple si perderanno (silenziosamente?) chiunque potrebbe firmare build o app iOS o Mac OS X, il che minerebbe grandi porzioni delle misure di sicurezza di Apple.
- Se le chiavi di Microsoft venissero divulgate, lo stesso errore di app per Apple rimarrebbe valido e inoltre gli aggressori potrebbero essere in grado di inviare aggiornamenti dannosi di Windows a macchine mirate.
- Se le chiavi di Intel fossero trapelate, sarebbe possibile firmare gli aggiornamenti del codice del processore Intel e firmare il software arbitrario SGX consentendo una profonda implementazione del malware in un sistema di destinazione che è impossibile eliminare senza cambiare l'hardware.
- Se le chiavi di Google sono trapelate, si potrebbero falsare arbitrariamente le app di Google (probabilmente lo scenario di attacco più debole fuori dal dato)
Come al solito, non voglio risposte che dicano "è illegale rubare / abusare di tali chiavi", poiché la legge potrebbe non essere un modo efficace per fermare le agenzie che possono semplicemente dichiarare la loro violazione "top secret" o fermarsi criminali che non si preoccupano comunque della legge.
Inoltre, voglio chiarire rapidamente, perché escludo la "revoca" come soluzione: a) Questo non è sempre possibile, specialmente per i produttori di hardware, se la chiave pubblica è effettivamente codificata (per motivi di sicurezza) in l'hardware. b) Il danno all'immagine dell'azienda sarebbe gigantesco se dovessero revocare una chiave. Pertanto, sebbene la revoca possa funzioni in determinate circostanze (ad esempio per gli sviluppatori di piccole app), non è una buona opzione per le grandi aziende.