Come firmare i driver in Windows passo dopo passo

Ultimo aggiornamento: 17/12/2025
Autore: Isaac
  • Windows Richiede firme digitali valide per la maggior parte dei driver a 64 bit, in particolare per i driver in modalità kernel, per garantire integrità e sicurezza.
  • La firma può essere applicata sia ai file binari che ai cataloghi, utilizzando strumenti quali SignTool o Visual Studio e certificati emessi da entità attendibili.
  • I certificati autofirmati facilitano lo sviluppo e il test di autisti non firmato Windows 78.1 e 10 x64, ma non sostituiscono la firma commerciale per la distribuzione al pubblico.
  • La compatibilità tra le versioni di Windows dipende dall'utilizzo di algoritmi hash appropriati (come SHA2) e dal rispetto delle linee guida Microsoft e WHQL.

firma del driver in Windows

Firmare un driver in Windows potrebbe sembrare, a prima vista, qualcosa che solo gli sviluppatori altamente avanzati possono fare, ma se lavori con dispositivi, driver personalizzati o ambienti di testPrima o poi, ci si imbatterà in questo requisito. Nei sistemi moderni, soprattutto quelli a 64 bit, Windows non si fida più di qualsiasi binario che tenti di intrufolarsi nel kernel: vuole firme digitali valide, algoritmi moderni come SHA2 e, in molti casi, la certificazione Microsoft.

Nelle righe che seguono esamineremo con calma cosa significa esattamente firmare un controllore, quali differenze ci sono tra modalità kernel e modalità utenteIn che modo influisce su Windows 7, 8, 8.1 e 10 a 64 bit, quale ruolo svolgono strumenti come SignTool o Visual Studio e quali opzioni sono disponibili sia per gli ambienti di sviluppo (certificati di test o autofirmati) sia per le versioni pubbliche con certificati emessi da un'autorità attendibile.

Cos'è la firma del driver in Windows e perché è obbligatoria?

La firma del driver in Windows comporta l'associazione di un firma digitale a un pacchetto driver (file binari, file INF, catalogo, ecc.) per garantire due cose: che nessuno abbia manipolato i file da quando sono stati creati e che provengano realmente dall'editore indicato (il fornitore del software o il produttore del hardware).

In pratica, durante l'installazione di un dispositivo Windows, queste firme digitali vengono utilizzate per verificare l'integrità del pacco e l'identità dell'editore. Se qualcosa non corrisponde (firma corrotta, certificato non attendibile, hash errato, ecc.), il sistema visualizzerà avvisi, bloccherà l'installazione o semplicemente rifiuterà di caricare il driver.

Da Windows Vista a 64 bit in poi, e in particolar modo in Windows 7, 8, 8.1 e 10 x64, la politica di sicurezza in modalità kernel è chiara: qualsiasi driver che verrà eseguito nel kernel Deve essere firmato correttamente.In caso contrario, il driver non verrà caricato, il dispositivo potrebbe non funzionare e potrebbero addirittura verificarsi schermate blu se vengono forzati i file binari non validi.

Quando decidi di certificare il tuo driver con Microsoft, puoi sottoporlo al processo di convalida dei Windows Hardware Quality Labs (WHQL). Se il pacchetto driver supera i test di certificazione, Microsoft rilascia la certificazione. firma ufficiale WHQLCiò non solo migliora l'affidabilità e la compatibilità, ma consente anche di distribuire il driver tramite Windows Update e altri canali di distribuzione supportati da Microsoft.

È importante tenere presente che a partire da Windows 10 versione 1507, tutti i driver firmati tramite il Microsoft Hardware Development Center vengono firmati utilizzando SHA2 come algoritmo hashSHA1 è diventato obsoleto per questi scenari e mescolare vecchi certificati può causare problemi, soprattutto sui sistemi più recenti.

Spiegazione della firma del driver in Windows

Differenze tra la firma del driver in modalità kernel e in modalità utente

In Windows, i driver che vengono eseguiti in modalità kernel e modalità utenteLa politica di firma non è esattamente la stessa in entrambi gli ambienti, anche se tende a diventare più rigorosa con ogni nuova versione del sistema operativo.

  Perché il tuo computer Windows diventa più lento con il passare del tempo? Tutte le cause spiegate

I driver in modalità kernel sono i più sensibili perché vengono eseguiti nel kernel di sistema e hanno accesso privilegiato alla memoria e all'hardware. Nelle versioni a 64 bit di Windows Vista e successive, questi driver È necessario che siano firmati per essere addebitato. Questa restrizione è direttamente correlata alla stabilità del sistema e alla protezione contro il malware che tenta di iniettare a un livello basso.

D'altro canto, i driver che operano in modalità utente (ad esempio, molti driver di stampante e componenti aggiuntivi) non erano originariamente soggetti a un obbligo così rigoroso. Infatti, nelle versioni precedenti di Windows Non era un requisito assoluto che questi driver siano firmati. Tuttavia, Microsoft ha sempre raccomandato di firmarli per motivi di sicurezza e, a partire da Windows 8, esistono scenari in cui la firma è richiesta per determinati tipi di driver utente.

Un esempio tipico: un driver di stampante installato su un computer x64 di solito visualizza una finestra di dialogo durante il processo di installazione che chiede conferma all'utente. In pratica, quel pacchetto Deve essere firmato correttamente in modo che l'installazione possa proseguire senza blocchi o avvisi di sicurezza critici.

L'idea generale è che, sebbene il requisito non sia universale in modalità utente, Microsoft sta spingendo sempre di più affinché sia tutto il software correlato al driver deve essere firmatoFirmandoli è possibile verificare in modo affidabile chi li ha creati, rilevare eventuali manomissioni e ridurre il rischio che componenti dannosi si intrufolino mascherandosi da controllori legittimi.

Requisiti di firma e algoritmi SHA nelle diverse versioni di Windows

Uno degli aspetti più problematici è la compatibilità tra le versioni di Windows e gli algoritmi hash come SHA1 e SHA2Molti sviluppatori si imbattono in driver che funzionano su un sistema ma non su un altro, e gran parte della colpa è da attribuire alle modifiche apportate alle policy di firma.

Nei sistemi più vecchi, come Windows 7 o 8 a 64 bit, era comune lavorare con certificati e firme basati su SHA1, sebbene Microsoft avesse già avvisato che SHA1 non è sicuroCon i progressi compiuti verso Windows 8.1 e 10, SHA2 è diventato lo standard per le firme di codice e driver.

In pratica, alcuni produttori hanno scelto di firmare i file binari in modalità kernel incorporando certificati doppi (SHA1 e SHA2) emessi da entità diverse da Microsoft. Questi file binari con doppia firma, in alcuni casi, Non riescono a caricarsi nelle versioni precedenti a Windows 10e su alcuni sistemi Windows 10 possono addirittura causare gravi arresti anomali o schermate blu.

Per mitigare questi problemi, Microsoft ha rilasciato patch specifiche, come l'aggiornamento KB 3081436. L'installazione di questo aggiornamento sui sistemi interessati corregge le incompatibilità con alcuni driver firmati SHA2 e fornisce un elenco di valori hash SHA di riferimento nella sezione “Ulteriori informazioni – Informazioni sull’hash del file” di quell’articolo di supporto.

Se si intende distribuire driver che devono funzionare su più versioni di Windows, è essenziale rivedere il requisiti di firma per versione dettagliato da Microsoft. Lì vengono specificati quali algoritmi sono validi, come viene gestita la compatibilità con le versioni precedenti e quali combinazioni di firme (catalogo, binario incorporato, certificati incrociati, ecc.) sono ufficialmente accettate.

  Come inserire i caratteri ASCII dalla tastiera in Windows passo dopo passo

Firma del driver in modalità utente: raccomandazioni e risorse

Sebbene il kernel riceva spesso la massima attenzione, anche la firma dei driver in modalità utente merita attenzione. Microsoft non l'ha imposta in modo così rigoroso fin dall'inizio, ma... raccomanda vivamente di preservare la sicurezza del sistema e offrire fiducia all'utente finale.

La firma di un driver in modalità utente esegue sostanzialmente le stesse funzioni della modalità kernel: identifica il fornitore del controllore (produttore, ISV, ecc.) e conferma che il pacchetto non è stato modificato da quando è stato firmato. Quando un utente installa, ad esempio, una stampante con driver in modalità utente su un computer x64, la procedura guidata di installazione potrebbe visualizzare una finestra di dialogo che chiede se l'editore è attendibile. Se la firma è valida e il certificato appartiene a un'entità riconosciuta, l'installazione risulta più fluida e con molti meno avvisi.

Microsoft fornisce una serie di documenti e tutorial che approfondiscono il processo di firma, molti dei quali originariamente progettati per la modalità kernel ma applicabili anche alla modalità utente. L'articolo principale su firma del conducente e il sottoargomento "Come firmare la versione di un modulo del kernel" all'interno del tutorial sulla firma del codice in modalità kernel sono buoni punti di partenza per comprendere la logica generale della firma del codice in Windows.

Inoltre, l'installazione di Windows Driver Kit (WDK) include un file di aiuto denominato selfsign_readme.htm, situato nella directory autofirmaQuesto documento spiega come generare certificati di prova e come utilizzarli durante lo sviluppo, il che è particolarmente utile quando non si dispone ancora di un certificato rilasciato da un'autorità radice attendibile.

In sintesi, sebbene un driver in modalità utente possa tecnicamente funzionare senza firma in alcuni scenari, dovrebbe essere trattato come se fosse obbligatorio. Ciò è dovuto a motivi di sicurezza, immagine del marchio e compatibilità con le procedure guidate di installazione di Windows. Firmare il contratto con l'autista è la cosa più sensata da fare..

Firma dei driver in modalità kernel in Windows 7 e 8 tramite SignTool

Quando si lavora con Windows 7 e 8 a 64 bit, uno degli approcci più comuni per firmare i driver in modalità kernel è quello di utilizzare lo strumento da riga di comando. comandi SignToolInclusa nel Windows SDK, questa utility consente di firmare i file e verificare le firme esistenti, offrendo un'ampia gamma di opzioni adatte a diversi scenari.

Alcune delle opzioni più importanti Le caratteristiche di SignTool sono le seguenti:

  • /ac: specifica un certificato aggiuntivo, ad esempio un certificato incrociato che collega il certificato a un'autorità radice attendibile.
  • /f: indica il file che contiene il certificato di firma (solitamente un .pfx).
  • /p: fornisce la password associata al certificato di firma memorizzato nel file .pfx.
  • /fd: definisce l'algoritmo hash utilizzato durante la creazione della firma del file, ad esempio, /fdsha256 per generare una firma basata su SHA256 (se non viene specificato nulla, nelle versioni precedenti il ​​valore predefinito è solitamente SHA1).
  • /n «Nome comune del certificato»: consente di selezionare un certificato specifico dall'archivio certificati di Windows in base al suo nome comune (CN).
  • /t: specifica un server di marcatura temporale compatibile con lo schema Microsoft Authenticode.
  • / tr: indica un server di timestamp conforme a RFC 3161, più moderno e consigliato per le nuove implementazioni.
  Come attivare e convalidare una licenza in Windows Server passo dopo passo

Quando si lavora al progetto del driver, è importante sapere quali file devono essere firmati. Affinché un driver venga installato correttamente su Windows 7 o 8, deve essere firmato. tutti i binari rilevanti del progetto (ad esempio, file .sys) e anche il file catalogo (.cat) che raggruppa l'insieme di file nel pacchetto.

Hai due opzioni principali: puoi copiare quei file in una directory di lavoro in cui hai SignTool disponibile, oppure direttamente spostarli nella cartella bin di Windows SDK ed esegui lo strumento da lì. L'importante è avere a portata di mano sia i file binari che i certificati che utilizzerai per la firma.

Uno scenario tipico prevede l'acquisizione del certificato di firma del codice appropriato, ad esempio, un Certificato “Microsoft Cross Certificate” rilasciato da GlobalSign o da un'altra autorità attendibile. Inserisci il certificato incrociato (CrossCert.crt) nella tua directory di lavoro insieme al certificato di firma del codice principale (ad esempio, CodeSign.pfx) ed esegui un comando simile a questo:

signtool sign /ac CrossCert.crt /f CodeSign.pfx /p password1234 /tr http://timestamp.globalsign.com/tsa/r6advanced1 filter.sys

Questo comando genera una firma che include la certificazione incrociata e ottiene un timestamp dal server RFC 3161 di GlobalSign. Il timestamp è fondamentale perché dimostra che il file è stato firmato in una data in cui il certificato era valido, anche se scade in seguito.

Dopo aver firmato il file, è il momento di verificare che tutto sia corretto. Di solito, questo viene fatto utilizzando un comando di verifica come:

signtool verify -v -kp filename.sys

l'opzione -v Forza un output dettagliato, mostrando informazioni dettagliate sulla catena di certificati e l'opzione -kp Verifica la firma in base ai criteri di firma del codice specifici del driver in modalità kernel. Se tutto va bene, verrà visualizzato un risultato che indica che la firma e la catena del certificato sono corrette.

Infine, è consigliato Ripetere lo stesso processo di firma e verifica con il file .cat del pacchetto. Una volta che sia i file binari che il catalogo sono stati firmati correttamente, il driver può essere installato su Windows 7 e 8 x64 senza problemi di sicurezza e, durante la procedura guidata di installazione, dovrebbero apparire le informazioni sull'editore attendibile e le finestre di sistema standard.

Per approfondire tutte le varianti dello strumento, Microsoft mantiene un riferimento completo ai comandi SignTool, nonché un Tutorial specifico per la firma del codice in modalità kernel e documentazione dedicata alle firme digitali dei moduli del kernel in Windows. Queste risorse spiegano casi speciali, parametri avanzati e particolarità di ciascuna versione del sistema.