In che modo le grandi aziende proteggono le loro chiavi private (code-signing)?

14

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.

    
posta SEJPM 07.03.2016 - 13:15
fonte

2 risposte

2

Un sacco di processi possono essere chiamati "code signing", qualsiasi cosa dalla pubblicazione di un file tar con un hash pgp firmato e fino.

Per il tipo di azienda di grandi dimensioni di cui parli, in ultima analisi, sono coinvolti HSM (più di uno, ovviamente, nel caso in cui un data center venga superato da zombi o qualcosa del genere). La parte più difficile non è dove vengono archiviate le chiavi effettive, ma l'intero processo di Release Engineering che garantisce che i binari firmati spediti provengano effettivamente dal codice sorgente nei repository.

    
risposta data 23.04.2016 - 20:43
fonte
0

È molto diverso. Alcuni modi in cui l'ho visto sono. Softkey su postazioni di lavoro di sviluppo, non così sicuro. Smart card chiuse in cassastrong, sicure ma ingombranti. Server di firma codice centrale, con hsm per la protezione della chiave privata, abbastanza sicuro e controllabile.

Forum CA / Browser, che crea le specifiche a cui tutte le CA pubbliche devono attenersi, hanno pubblicato le linee guida per le CA che rilasciano i certificati di firma del codice. È una risorsa preziosa in questo contesto IMHO. link (Non ho alcuna affiliazione con questa specifica, ma è importante per i certificati di firma del codice pubblico)

La protezione della chiave privata della chiave del sottoscrittore (firma del codice) non è dettagliata, ma descritta nella sezione 10.3.2.

    
risposta data 13.03.2016 - 19:33
fonte

Leggi altre domande sui tag