Deprecazione dei certificati di firma del codice SHA1 su Windows

23

EDIT (7/7/2016) - guarda l'aggiunta alla fine del post

Ho seguito con attenzione i problemi relativi a Microsoft che deprecano l'uso dei certificati di firma del codice SHA1 per gli eseguibili di Windows ( link ).

Siamo nel 2016 e, poiché avremo bisogno di firmare e rilasciare il codice a breve, sto cercando di verificare che, in effetti, senza aggiornare il nostro certificato di firma del codice a uno SHA256, avremo problemi. Tuttavia, non riesco a dimostrare alcun problema atteso.

Ho firmato alcuni eseguibili (oggi, nel 2016) utilizzando il certificato SHA1 e configurato AppLocker per eseguire solo eseguibili firmati (l'ho verificato - non riesco a eseguire file eseguibili senza segno). Tuttavia, sono ancora libero di eseguire i miei nuovi eseguibili firmati SHA1 e, inoltre, il download di questi file da un server Web in IE non presenta alcun "avviso" (come mi aspettavo) - la scansione di sicurezza restituisce tutto va bene con i file!

Sto eseguendo i test su Windows 7.

Quali problemi reali dovrei mi aspetto di sperimentare?

(nel caso ti stia chiedendo perché non semplicemente eseguiamo semplicemente l'upgrade a SHA256 in ogni caso - ci sono diversi motivi: uno è burocratico, ma l'altro è il fatto che firmiamo anche script VBS che al momento non supportano la doppia firma) .

EDIT (7/7/2016) Bene, sembra che Microsoft abbia finalmente rilasciato un aggiornamento a IE e Edge che ti avvisa se scarichi un eseguibile firmato solo con un certificato SHA-1! Fondamentalmente, con IE 11.0.30 o successivo, se scarichi un eseguibile che è stato firmato con un certificato SHA-1 (ma non SHA-256) dopo l'1/1/2016, ne vedrai uno dei seguenti avvisi:

Suppongo che Microsoft stia finalmente entrando in azione con gli avvertimenti in preparazione del cut-off dell'1 / 1/2017. È importante notare che per il momento, a parte questi avvertimenti, non ci sono altre modifiche: i file vengono ancora eseguiti senza problemi e, naturalmente, scaricarli in altri browser non causano problemi.

    
posta Kevin 03.01.2016 - 15:41
fonte

9 risposte

11

Ora ho trovato un esempio di un download effettivo che è stato firmato utilizzando un certificato SHA-1 dopo l'1/1/2016. Ho scaricato KeePass 2.31 usando Edge su Windows 10.

Edge mi dice che "La firma di questo file è corrotta o non valida."

Sefaccioclicconilpulsantedestrodelmouseeselezioni"esegui comunque", oppure fai doppio clic sul file in Esplora risorse, SmartScreen blocca il file:

SelezionandolacaselladispuntaefacendoclicsuEseguiinognicaso,ilfilepuògirarenormalmente.L'avvisoUACmostraquindiilnomedell'editorecomefaconunfileeseguibilecorrettamentefirmato.

Facendoclicsu"Esegui comunque" quando SmartScreen blocca il file rimuove il "Segno del web" dal file. Fare doppio clic sul file una seconda volta in Esplora risorse non blocca più il file.

La finestra di dialogo Dettagli firma digitale in Esplora risorse indica anche che la firma è OK. Lo fa anche quando il file ha ancora il "marchio del web" (vale a dire prima di utilizzare il pulsante Esegui comunque nel filtro SmartScreen):

Ilfilehaeffettivamentedoppiafirma.IlprimoutilizzaSHA-1perlafirmaeilsecondoutilizzaSHA-256perlafirma.Macriticamente,entrambisonostatirealizzatiutilizzandouncertificatoSHA-1.QuestoèciòcheWindows7einseguitotrovanodaridireperifilescaricati.Inoltre,entrambelefirmesonotimestampateconSHA-1.Windows10avràunproblemaconquelloperifilescaricatiapartiredal1/1/2017.

SembrachelafinestradidialogoDettaglifirmedigitalinontengacontodelfattocheunfileabbiail"marchio del web". Dice "questa firma digitale è OK" per entrambe le firme su questo file. Quindi, per verificare realmente se i tuoi file sono firmati correttamente, devi scaricarli dal tuo sito web come farebbero i tuoi clienti.

Test dello stesso download in un'istantanea della macchina virtuale del Windows 10 originale che non è stato aggiornato da agosto e un'altra istantanea della release 1511 che non è stata aggiornata da novembre non produce avvisi. Se poi il VM 1511 verifica e installa gli aggiornamenti fino a quando non è aggiornato, allora ricevo gli avvisi mostrati sopra. Ho notato nella mia precedente risposta che la deprecazione SHA-1 è stata espulsa tramite Windows Update. Quindi sembra che questo sia un aggiornamento molto recente, forse un aggiornamento post 1/1/16. Assicurati che il PC disponga di tutti gli ultimi aggiornamenti di sicurezza prima di testare il download.

    
risposta data 15.01.2016 - 06:22
fonte
8

Si tratta più di un commento esteso / di una ricerca di fatti. Non è una risposta a pieno titolo in sé.

Anche io non capisco. È piuttosto confuso. Ma non mi sento così male a non capirlo, perché anche Eric Lawrence è confuso da questo. Era uno sviluppatore di Internet Explorer ma ora lavora su Google Chrome. E lui sa come orientarsi sui certificati. (Quindi se non lo capisce, allora sono propenso a dire che è davvero confusionario.) (E è anche su StackExchange .)

  1. Vedi i suoi commenti qui:

    link (archiviato here .)

    Degno di nota: questo gioiello qui:

    Eric Lawrence
    The KB you link says there’s no plans to deprecate MD5-based Authenticode signatures (the hash on the code, not the certificate). That seems… irresponsible.

    Spaventoso. Sfortunatamente non c'è una risposta Microsoft a quel commento.

  2. E ha lasciato un altro commento sul sito TechNet Wiki: link ( Archiviato qui .)

    EricLaw [ex-MSFT] 4 Nov 2015 9:23 AM
    This text is pretty confusing: “Code signature File Hashes: Microsoft does not require that CAs move to using SHA-2. Windows will also not enforce policies on these certificates. If pre-image attacks on SHA1 become feasible we will reevaluate how the system trusts these certificates.”

    The Authenticode file hash isn’t generated by a CA, and the signature is not a “certificate”.

    E ancora: nessuna risposta da parte di Microsoft. E il suo non è l'unico commento che dà confusione.

  3. Gioca con l'orologio di sistema? Se vuoi riprodurre un errore, puoi provare i passaggi elenchi di "Graham Bloice" sul post di TechNet :

    In testing we’ve found that existing SHA1 signed cab files used for installing an ActiveX component via IE fail to install immediately post the deprecation date (by adjusting the date forward in the registry) even though the cab signature timestamp predates the (moved) deprecation date. Win 10 doesn’t fail, but Win 7, Win 8.1, Server 2K12 and Server 2K12 R2 all fail in our tests.

    This seems at odds with the deprecation notice that says signatures timestamped before the deprecation date will be valid until 2020.

    Ancora: nessuna risposta da parte di Microsoft.

Ulteriori letture

risposta data 04.01.2016 - 13:07
fonte
5

Ci sono 3 digesti in una firma Authenticode con data e ora che hai il controllo.

  1. Il digest del tuo certificato. Un certificato acquistato di recente utilizzerà SHA-256. La maggior parte delle CA è passata all'emissione di certificati SHA-256 nel 2014. Forniscono solo certificati SHA-1 su richiesta speciale. Un modo rapido per controllare il certificato è fare clic con il pulsante destro del mouse su un file .exe con cui è stato firmato in Explorer e quindi accedere alla scheda Firme digitali, pulsante Dettagli, pulsante Visualizza certificato, scheda Dettagli. La firma ha l'algoritmo dovrebbe essere "sha256". Windows XP SP3 è la versione di Windows meno recente che supporta i certificati SHA-256. Il criterio indicato nel documento collegato è "Windows [7 e versioni successive] si fida di SHA1 (se timestamped prima di 1/1/2016) e di SHA-2 (qualsiasi timestamp) per Mark dei file Web."

  2. Il riassunto della firma stessa. È possibile controllare le firme esistenti nella scheda Firme digitali. Windows 7 e versioni successive mostrano direttamente l'algoritmo del digest. Su qualsiasi versione di Windows è possibile fare clic sul pulsante Dettagli, scheda Avanzate per controllare l'algoritmo del digest. Quando si utilizza signtool.exe, questo può essere impostato su SHA-256 con l'argomento /fd sha256 . Windows 7 è la versione più vecchia di Windows che supporta le firme SHA-256. Per questo la politica dichiarata è "Nessuna modifica fino a quando non è possibile preimage SHA-1". Anche le firme MD5 sono ancora accettate .

  3. Il digest del timestamp. Quando si utilizza signtool.exe è necessario utilizzare l'argomento /tr con l'URL di un servizio di timestamp RFC 3161 e /td sha256 per richiedere SHA-256. Windows 7 è la versione più vecchia di Windows che supporta i timestamp SHA-256. Per questo la politica dichiarata è "In Win 10 e versioni successive, bloccato il 1 °/2017 per Mark of the Web files."

Il riepilogo è che se ottieni un certificato SHA-256, una singola firma SHA-1 che utilizza quel certificato con un timestamp SHA-1 è attualmente accettata da Windows XP SP3 fino a Windows 10. Il 1 °/2017 ti verrà bisogno di doppia firma se si desidera supportare Windows 10 e Vista o XP SP3.

Il criterio di ammortamento viene applicato a Windows 7 e versioni successive tramite l'aggiornamento di Windows. Se gli aggiornamenti sono disabilitati, l'ammortamento non avverrà. Quello che dovresti provare è che Windows 7 tratti una firma con un certificato SHA-1 come non valido, il che dovrebbe comportare avvisi più gravi durante l'esecuzione di un file scaricato da Internet.

    
risposta data 12.01.2016 - 07:41
fonte
4

Solo alcune informazioni aggiuntive da me, dato che oggi ho riscontrato un problema con tutto questo, mi è costato mezza giornata.

Ho ricevuto il messaggio "La firma di questo file è corrotta o non valida". anche da Edge. Windows mi ha detto che il mio file (che era già stato firmato con SHA256), non è sicuro e non è riuscito a mostrarmi le informazioni cert corrette (solo "Publisher sconosciuto").

Utilizziamo i certificati di firma del codice StartSSL e passiamo a un nuovo certificato SHA256 a dicembre. Quello che non siamo riusciti a notare era che signtool include anche tutti i certificati intermedi (!) Durante il processo di firma. Risulta: utilizza la versione localmente memorizzata nella cache dei certificati intermedi, che erano obsoleti (utilizzando ancora SHA1), nonostante fossero disponibili nuovi. Dopo aver rimosso & aggiornando questo certificato, tutto ha funzionato come previsto.

Quindi assicurati di controllare se anche tutti i certificati nella catena sono SHA256, altrimenti tutto si interromperà, poiché gli intermediari sono inclusi durante la procedura di firma!

    
risposta data 08.02.2016 - 14:26
fonte
2

Ho appena affrontato lo stesso problema con le nostre app di Windows. Quindi ecco alcune informazioni per te:

A) Come hai sottolineato, l'hash SHA-1 viene eliminato gradualmente a causa della sua resistenza di collisione inadeguata . O, in altre parole, non produce firme di codice abbastanza potenti dai cripto-standard odierni.

B) Per firmare il codice del tuo eseguibile devi avere un certificato di firma del codice che supporti qualsiasi SHA-2 algoritmi di hashing, ad esempio SHA-256 . (Nel mio caso la CA , Comodo, ha aggiornato gratuitamente il nostro codice di firma del codice esistente. Dovrai chiedere alla CA però.)

C) Scarica e installa l'ultimo SDK di Windows . Quindi puoi accedere a signtool.exe in una di queste due posizioni:

For 32-bit:
%SystemDrive%\Program Files (x86)\Windows Kits\bin\x86

For 64-bit:
%SystemDrive%\Program Files (x86)\Windows Kits\bin\x64

D) La seguente tabella mostra quale percentuale di supporto del SO SHA-1 e SHA-256 di codice:

+---------------------+-------------------------------+------------------------------+
|     Windows OS      |             SHA-1             |           SHA-256            |
+---------------------+-------------------------------+------------------------------+
| XP SP3, Server 2003 | Yes                           | No (need KB968730, KB938397) |
| Vista, Server 2008  | Yes                           | No (need KB2763674)          |
| 7, Server 2008 R2   | No (if signed after 1/1/2016) | Yes (with latest updates)    |
| 8.1, Server 2012 R2 | No (if signed after 1/1/2016) | Yes                          |
| 10, Server 2016     | No (if signed after 1/1/2016) | Yes                          |
+---------------------+-------------------------------+------------------------------+

Una nota importante per gli utenti di Vista è che è necessario installare KB2763674 per poter aprire i file firmato con SHA-256 signature.

E) Quindi la soluzione per risolvere le discrepanze nella tabella sopra è quella di firmare due volte i file eseguibili. Per quanto ne so, i seguenti file supportano la doppia firma:

.cpl, .com, .dll, .exe, .scr

Quindi, per firmare il codice, firma una chiamata al file signtool due volte di seguito:

Primo SHA-1 (come fallback per i sistemi operativi meno recenti):

SignTool.exe sign /f "path_to_exported_cert.pfx" /p "pfx_file_password" /d "Your file description if you need it" /t "http://timestamp.verisign.com/scripts/timstamp.dll" /v "path_to_file_to_sign.exe"

then SHA-256 sullo stesso file per aggiungerlo (parametro /as ):

SignTool.exe sign /f "path_to_exported_cert.pfx" /fd sha256 /p "pfx_file_password" /d "Your file description if you need it" /tr "http://timestamp.geotrust.com/tsa" /td sha256 /as /v "path_to_file_to_sign.exe"

Nota che i parametri da firmare con SHA-256 sono diversi, specialmente per il server timestamp! L'utilizzo del server timestamp per SHA-1 produce risultati strani in Windows 10.

F) Per qualsiasi altro file, inclusi: .msi , .msp , .js , .vbs , .jse , .vbe , .ps1 , .ps1xm , .psm1 , .ps1xml , .wsf dovrai scegliere l'uno o l'altro, poiché non supportano la doppia firma. Quindi, sfortunatamente dovremo firmarli in modo specifico per il sistema operativo su cui sono destinati a essere distribuiti.

    
risposta data 28.01.2016 - 05:31
fonte
2

Ho usato osslsigncode (uno strumento linux) per firmare l'installer exe con SHA1 e SHA256. Per gli utenti di Windows ho letto su un fork di Windows di osslsigncode. Il mio attuale certificato di firma del comodo 2016 è dotato di doppio digest SHA1 e SHA256, quindi ho bisogno di un solo certificato per entrambe le firme.

Per prima cosa devi utilizzare la firma compatibile con XP:

osslsigncode sign -pkcs12 comodo-signing-2016.p12 -askpass \
-n "My-program installer" \
-i http://www.my-site.com/my-program \
-t http://timestamp.comodoca.com \
-h sha1 \
my-installer.exe my-installer-signed.exe

Quindi quello compatibile con Win7 / 8/10:

osslsigncode sign -pkcs12 comodo-signing-2016.p12 -askpass \
-n "My-program installer" \
-i http://www.my-site.com/my-program \
-ts http://timestamp.comodoca.com \
-nest -h sha256 \
my-installer-signed.exe my-installer-dual-signed.exe

Si noti che utilizzo il timestamp Authenticode ( -t ) per la prima firma e il timestamp RFC 3161 ( -ts ) per il secondo. Non sono sicuro di quanto sia utile, ma Authenticode è più vecchio e probabilmente più compatibile con le versioni precedenti. Il riepilogo del timestamp dell'autenticode è sha1 per impostazione predefinita e RFC 3161 viene impostato automaticamente su sha256 come menzionato qui .

Nota anche che il secondo comando include il flag -nest per aggiungere la nuova firma invece di sostituire il primo.

    
risposta data 27.07.2016 - 21:36
fonte
2

Sembra che Microsoft abbia cambiato in modo significativo la sua politica sulla deprecazione di SHA-1 per la firma del codice, a partire dal 19 ottobre 2016 alle 11:15. Prima di quel momento, hanno detto che SHA-1 sarebbe stato deprecato per la firma del codice ( 11:14 ); dopo quel tempo, dicono che la firma del codice SHA-1 non è stata modificata per ora, senza una data di chiusura specificata per il futuro ( 11:16 ).

Ecco i dettagli di oggi, 25 febbraio 2017 ( link alla versione corrente ):

TLS Server-Authentication Certificates
   Today:      No lock icon Microsoft Edge and Internet Explorer 11
   Mid-2017:   Invalid Certificate
Code Signing Certificates
   Today:      Unaffected
   Mid-2017:   Unaffected
Timestamping Certificates
   Today:      Unaffected
   Mid-2017:   Unaffected

A lungo termine, ovviamente, SHA-1 è un rischio; questa domanda riguarda tuttavia la deprecazione dei certificati di firma del codice su Windows e la modifica di Microsoft a ottobre 2016 è significativa rispetto ai piani precedentemente rilasciati. Attualmente dicono "A lungo termine, Microsoft intende diffidare di SHA-1 in tutto Windows in tutti i contesti" e il piano per questo è in "Fase 3", "dopo il 2017".

    
risposta data 20.12.2016 - 19:07
fonte
1

Mentre il certificato non restituirà i segnali di avvertimento su piattaforme e browser precedenti, verranno visualizzati segnali di avvertimento su tutti i sistemi aggiornati. L'esempio migliore per darti è Windows 10. Windows 10 mostrerà un avviso per QUALSIASI certificato di firma del codice che NON sia un certificato EV-SHA-256.

Se la piattaforma è stata aggiornata ai nuovi consigli delle linee guida del forum CA / B, il certificato non eliminerà i segnali di pericolo.

Se vuoi parlare con qualcuno in modo più dettagliato fammelo sapere e ti metterò in contatto con qualcuno di GlobalSign che può rilasciare un nuovo certificato o semplicemente parlarti in modo più dettagliato sulla compatibilità. In caso contrario, questo articolo potrebbe effettivamente aiutare: link

    
risposta data 09.02.2016 - 10:41
fonte
0

Non come risposta completa, ma per alcune informazioni di panoramica aggiuntive, incluse le linee di esempio di signtool per la doppia firma (compatibilità XP / Vista)

Sono riuscito a passare piacevolmente alla doppia firma nella mia catena di creazione in base a questo ottimo post di blog da ksoftware.net , il nostro fornitore di certificati.

Ho scritto un piccolo file batch per firmare due volte un file con i due certificati e chiamarlo dallo script di distribuzione:

set SIGNTOOL_CMD=F:\FuH\dev\Docklight1\Installer\signtool\signtool.exe
set DL_WWW=http://docklight.de
set DL_PROJ_NAME=Docklight
set TIMESERVER_SHA1=http://timestamp.comodoca.com
set TIMESERVER_SHA256=http://timestamp.comodoca.com/?td=sha256

"%SIGNTOOL_CMD%" sign /v /sha1 D35C... /t %TIMESERVER_SHA1% /du %DL_WWW% /d "%DL_PROJ_NAME%" "%1"
"%SIGNTOOL_CMD%" sign /v /sha1 7FD7... /as /fd sha256 /tr %TIMESERVER_SHA256% /td sha256 /du %DL_WWW% /d "%DL_PROJ_NAME%" "%1"

Invece di scaricare l'SDK completo di Windows per un signtool aggiornato, ho appena afferrato il link per il download di strumenti di firma dal blog di KSoftware

L'ho provato su Windows 10 x64 / Edge e sembra tutto ok.

    
risposta data 28.01.2016 - 11:15
fonte

Leggi altre domande sui tag