Un certificato di firma del codice valido significa che un programma di installazione non è stato manomesso durante il transito?

3

Diversi fornitori di software dominanti distribuiscono gli aggiornamenti su HTTP o su HTTPS con certificati errati . In generale, non mi sembra di poter contare su un canale sicuro per garantire che un programma di installazione non venga manomesso durante il trasporto.

Sembra che tutti gli installatori abbiano firme valide. Questa è una tipica schermata quando controllo le proprietà di un file di installazione:

Laparteoperativadellafinestradidialogoè"Questa firma digitale è OK." Ciò che non è chiaro è quale parte del file sta attestando la firma. Ci si aspetterebbe che questo sia tutto del file, ma non ho trovato alcuna dichiarazione da parte di Microsoft a conferma di ciò. Ricordo anche vagamente un tweet che dice che solo le parti di un file sono attestate da una firma di firma del codice.

  1. Quali parti di un file vengono controllate da Windows quando si controlla se una firma di firma del codice è "OK"?

  2. Esistono attacchi di terze parti noti che utilizzano programmi di installazione firmati correttamente da una seconda parte attendibile come vettore?

posta alx9r 11.02.2015 - 16:33
fonte

2 risposte

4

La firma è un hash della parte dell'eseguibile prima del blocco di firma del codice. La procedura migliore è firmare sia l'installer che l'applicazione.

Puoi studiare alcuni dettagli osservando questo:
link

EDIT: OK, ora che sono fuori dal dispositivo mobile e su una tastiera reale, posso elaborare.

Come notato nel documento a cui ti ho riferito, l'hash che viene firmato viene generato come per l'intero file eseguibile ad eccezione di due parti escluse (a) il totale del checksum del file; e (b) le tabelle dei certificati. Questi non possono essere incorporati nell'hashing a causa del problema dell'uovo o della gallina (ad esempio, questi campi dipendono dal contenuto della tabella dei certificati degli attributi, e quindi i loro valori non sono fissi finché i certificati / le firme non vengono preparati e aggiunti). p>

Per quanto riguarda la superficie di attacco / scenari, vediamo ancora una volta perché è così importante avere buone primitive di crittografia e ANCHE usare le migliori pratiche. Suppongo che in teoria un utente malintenzionato possa creare una versione malevola di un'applicazione software e quindi inserirla in un programma di installazione e includere alcuni dati accuratamente calcolati per generare una collisione hash con un certificato MD5 reale esistente dal fornitore dell'applicazione, allegando tale certificato esistente / firma per l'eseguibile compromesso. Se hai controllato solo l'installer potresti essere ingannato. Questo è il motivo per cui MD5 non può più essere considerato attendibile per questo tipo di applicazione. È anche il motivo per cui, oltre a controllare l'installer, è necessario controllare il programma applicativo stesso.

Windows 7 ha accettato gli hash MD5 per la firma del codice, mentre Windows 8 e versioni successive richiede SHA1 o versioni successive. (Per quello che vale, ho scavato intorno ai miei file di programma e ai vecchi programmi di installazione solo ora e ne ho trovato uno solo dal 2008 o giù di lì che ha usato MD5 per l'hash della firma 2a modifica: riprendo quello, ho trovato anche una versione relativamente recente di Winzip usando MD5).

    
risposta data 11.02.2015 - 17:43
fonte
0

C'è una differenza tra la firma del certificato e la firma effettuata con il certificato.

Il primo, che è valido, significa che l'autorità di certificazione afferma che il certificato che si possiede è un certificato legittimo che ha controllato e l'integrità della firma della CA consente di controllare che il certificato non sia stato manomesso. Pertanto, se ti fidi della CA, puoi fidarti del certificato del sito.

Quest'ultimo viene utilizzato per avviare le transazioni TLS e scambiare una chiave condivisa per la crittografia simmetrica della sessione corrente. Se l'handshake è in grado di completare, significa che il sito con cui stai comunicando possiede una copia della chiave privata relativa al certificato. Ma, se c'è una mancata corrispondenza tra il nome del dominio sul certificato e l'indirizzo a cui ti stai connettendo, potrebbe significare:

  • che il sito Web è una filiale del proprietario del certificato e non si è preso la briga di avere un certificato per il nuovo dominio
  • che il sito web ha rubato la chiave privata del legittimo proprietario

In conclusione, tale discrepanza dovrebbe portare al rifiuto della comunicazione in quanto non hai i mezzi per garantire a chi stai parlando.

    
risposta data 11.02.2015 - 16:48
fonte

Leggi altre domande sui tag