Cum se semnează driverele în Windows pas cu pas

Ultima actualizare: 17/12/2025
Autorul: Isaac
  • ferestre din Necesită semnături digitale valide pentru majoritatea driverelor pe 64 de biți, în special driverele în mod kernel, pentru a asigura integritatea și securitatea.
  • Semnătura poate fi aplicată atât fișierelor binare, cât și cataloagelor, folosind instrumente precum SignTool sau Visual Studio și certificate emise de entități de încredere.
  • Certificatele autosemnate facilitează dezvoltarea și testarea drivere nesemnat Ferestre 78.1 și 10 x64, dar nu înlocuiesc semnătura comercială pentru distribuția publică.
  • Compatibilitatea dintre versiunile de Windows depinde de utilizarea algoritmilor hash adecvați (cum ar fi SHA2) și de respectarea instrucțiunilor Microsoft și WHQL.

semnarea driverelor în Windows

Semnarea unui driver în Windows poate părea, la prima vedere, ceva ce doar dezvoltatorii foarte avansați pot face, dar dacă lucrați cu dispozitive, drivere personalizate sau medii de testareMai devreme sau mai târziu, te vei confrunta cu această cerință. În sistemele moderne, în special în cele pe 64 de biți, Windows nu mai are încredere în orice fișier binar care încearcă să se strecoare în kernel: dorește semnături digitale valide, algoritmi moderni precum SHA2 și, în multe cazuri, certificare prin Microsoft.

În rândurile următoare vom examina cu calm ce înseamnă exact să semnezi un operator, ce diferențe există între modul kernel și modul utilizatorCum afectează Windows 7, 8, 8.1 și 10 pe 64 de biți, ce rol joacă instrumente precum SignTool sau Visual Studio și ce opțiuni aveți atât pentru mediile de dezvoltare (certificate de testare sau autosemnate), cât și pentru versiunile publice cu certificate emise de o autoritate de încredere.

Ce este semnarea driverelor în Windows și de ce este obligatorie?

Semnarea driverelor în Windows implică asocierea unui semnătură digitală pentru un pachet de drivere (fișiere binare, fișiere INF, catalog etc.) pentru a garanta două lucruri: că nimeni nu a manipulat fișierele de la crearea lor și că acestea provin într-adevăr de la editorul indicat (furnizorul de software sau producătorul software-ului) hardware).

În practică, în timpul instalării unui dispozitiv Windows, aceste semnături digitale sunt folosite pentru a verifică integritatea pachetului și identitatea editorului. Dacă ceva nu se potrivește (semnătură coruptă, certificat nesigur, hash incorect etc.), sistemul va afișa avertismente, va bloca instalarea sau pur și simplu va refuza să încarce driverul.

De la Windows Vista pe 64 de biți încoace, și în special în Windows 7, 8, 8.1 și 10 x64, politica de securitate în modul kernel este clară: orice driver care va rula în kernel Trebuie să fie semnat corespunzător.Altfel, driverul nu se va încărca, dispozitivul poate deveni inoperabil și pot apărea chiar ecrane albastre dacă sunt forțate încărcarea fișierelor binare nevalide.

Când decideți să certificați driverul la Microsoft, îl puteți trimite procesului de validare Windows Hardware Quality Labs (WHQL). Dacă pachetul de drivere trece testele de certificare, Microsoft acordă certificarea. semnătură oficială WHQLAcest lucru nu numai că îmbunătățește încrederea și compatibilitatea, dar vă permite și să distribuiți driverul prin Windows Update și alte canale de distribuție acceptate de Microsoft.

Este important să rețineți că, începând cu Windows 10 versiunea 1507, toate driverele semnate prin Centrul de dezvoltare hardware Microsoft sunt semnate folosind SHA2 ca algoritm hashSHA1 a devenit învechit pentru aceste scenarii, iar combinarea certificatelor vechi poate cauza probleme, în special pe sistemele mai noi.

Explicația semnăturii driverului în Windows

Diferențe între semnarea driverelor în modul kernel și în modul utilizator

Windows acceptă drivere care rulează în modul kernel și modul utilizatorPolitica de semnare nu este exact aceeași în ambele medii, deși tinde să devină mai strictă cu fiecare versiune nouă a sistemului de operare.

  De ce computerul tău Windows devine mai lent în timp? Toate cauzele explicate

Driverele în modul kernel sunt cele mai sensibile deoarece rulează în kernelul sistemului și au acces privilegiat la memorie și hardware. În versiunile pe 64 de biți de Windows Vista și cele ulterioare, aceste drivere Acestea trebuie semnate pentru a fi încărcat. Această restricție este direct legată de stabilitatea sistemului și de protecția împotriva malware că încearcă să injecteze la un nivel scăzut.

Pe de altă parte, driverele care funcționează în modul utilizator (de exemplu, multe drivere de imprimantă și componente suplimentare) nu erau inițial supuse unei astfel de obligații stricte. De fapt, în versiunile mai vechi de Windows Nu era o cerință absolută ca aceste drivere să fie semnate. Cu toate acestea, Microsoft a recomandat întotdeauna semnarea lor din motive de securitate, iar de la Windows 8 există scenarii în care semnarea este necesară pentru anumite tipuri de drivere de utilizator.

Un exemplu tipic: un driver de imprimantă instalat pe un computer x64 afișează de obicei o casetă de dialog în timpul procesului de instalare, solicitând confirmarea utilizatorului. În practică, pachetul respectiv Trebuie să fie semnat corespunzător astfel încât instalarea să poată continua fără blocaje sau alerte critice de securitate.

Ideea generală este că, deși cerința nu este universală în modul utilizator, Microsoft insistă din ce în ce mai mult ca aceasta să fie... tot software-ul legat de drivere trebuie semnatSemnarea lor permite verificarea fiabilă a creatorului, detectarea manipulării și reducerea riscului de infiltrare a componentelor rău intenționate care se deghizează în operatori legitimi.

Cerințe de semnătură și algoritmi SHA în diferite versiuni de Windows

Unul dintre cele mai problematice aspecte este compatibilitatea dintre versiunile de Windows și algoritmii hash, cum ar fi SHA1 și SHA2Mulți dezvoltatori întâlnesc drivere care funcționează pe un sistem, dar nu pe altul, iar o mare parte din vină se datorează modificărilor politicilor de semnare.

În sistemele mai vechi, cum ar fi Windows 7 sau 8 pe 64 de biți, era obișnuit să se lucreze cu certificate și semnături bazate pe SHA1, deși Microsoft a avertizat deja că SHA1 a avut probleme de securitatePe măsură ce s-au înregistrat progrese către Windows 8.1 și 10, SHA2 a devenit standardul pentru semnăturile de cod și drivere.

În practică, unii producători au ales să semneze fișiere binare în mod kernel prin încorporarea de certificate duale (SHA1 și SHA2) emise de alte entități decât Microsoft. Aceste fișiere binare cu semnătură duală, în anumite cazuri, Nu se încarcă în versiunile anterioare Windows 10iar pe unele sisteme Windows 10 pot provoca chiar blocări grave sau ecrane albastre.

Pentru a atenua aceste probleme, Microsoft a lansat anumite corecții, cum ar fi actualizarea KB 3081436. Instalarea acestei actualizări pe sistemele afectate corectează incompatibilitățile cu anumite drivere semnate SHA2 și oferă o listă de valori hash SHA de referință în secțiunea „Mai multe informații – Informații despre hash-ul fișierului” din articolul de asistență respectiv.

Dacă intenționați să distribuiți drivere care trebuie să funcționeze pe mai multe versiuni de Windows, este esențial să verificați cerințe de semnătură pentru fiecare versiune detaliat de Microsoft. Acolo se specifică ce algoritmi sunt validi, cum este gestionată compatibilitatea inversă și ce combinații de semnături (catalog, binar încorporat, certificate încrucișate etc.) sunt acceptate oficial.

  Cum să introduceți caracterele ASCII de la tastatură în Windows pas cu pas

Semnarea driverelor în modul utilizator: recomandări și resurse

Deși kernelul primește adesea cea mai mare atenție, semnarea driverelor în modul utilizator merită și ea atenție. Microsoft nu a impus-o atât de strict de la început, dar a făcut-o... recomandă insistent menținerea siguranței al sistemului și oferă încredere utilizatorului final.

Semnătura unui driver în modul utilizator îndeplinește practic aceleași funcții ca în modul kernel: identifică furnizorul controlorului (producător, ISV etc.) și confirmă că pachetul nu a fost modificat de când a fost semnat. Când un utilizator instalează, de exemplu, o imprimantă cu drivere în mod utilizator pe un computer x64, expertul de instalare poate afișa o casetă de dialog care întreabă dacă editorul este de încredere. Dacă semnătura este validă și certificatul aparține unei entități recunoscute, instalarea este mai fluidă și cu mult mai puține avertismente.

Microsoft oferă o serie de documente și tutoriale care aprofundează procesul de semnare, multe dintre ele fiind concepute inițial pentru modul kernel, dar aplicabile și modului utilizator. Articolul principal despre semnătura șoferului și subtema „Cum se semnează versiunea unui modul kernel” din tutorialul de semnare a codului în modul kernel sunt puncte de plecare bune pentru înțelegerea logicii generale a semnării codului în Windows.

În plus, instalarea Windows Driver Kit (WDK) include un fișier de ajutor numit selfsign_readme.htm, aflat în director autosemnareAcest document explică modul de generare a certificatelor de testare și cum să le utilizați în timpul dezvoltării, ceea ce este util în special atunci când nu aveți încă un certificat emis de o autoritate rădăcină de încredere.

În concluzie, deși un driver în mod utilizator poate funcționa din punct de vedere tehnic fără semnătură în anumite scenarii, acesta ar trebui tratat ca și cum ar fi obligatoriu. Acest lucru se datorează securității, imaginii de marcă și compatibilității cu experții de instalare Windows. A semna contractul cu șoferul este cel mai înțelept lucru de făcut..

Semnarea driverelor în mod kernel în Windows 7 și 8 folosind SignTool

Când lucrați cu Windows 7 și 8 pe 64 de biți, una dintre cele mai comune abordări pentru semnarea driverelor în mod kernel este utilizarea instrumentului din linia de comandă. comenzi Instrument de semnareInclus în SDK-ul Windows, acest utilitar vă permite atât să semnați fișiere, cât și să verificați semnăturile existente și oferă o gamă largă de opțiuni pentru a se potrivi diferitelor scenarii.

Unele dintre cele mai importante opțiuni Caracteristicile SignTool sunt următoarele:

  • /ac: specifică un certificat suplimentar, de exemplu, un certificat încrucișat care leagă certificatul dvs. de o autoritate rădăcină de încredere.
  • /f: indică fișierul care conține certificatul de semnătură (de obicei, un fișier .pfx).
  • /p: furnizează parola asociată cu certificatul de semnare stocat în fișierul .pfx.
  • /fd: definește algoritmul hash utilizat la crearea semnăturii fișierului, de exemplu, /fd sha256 pentru a genera o semnătură bazată pe SHA256 (dacă nu se specifică nimic, SHA1 este de obicei valoarea implicită în versiunile mai vechi).
  • /n «Numele comun al certificatului»: vă permite să selectați un anumit certificat din depozitul de certificate Windows pe baza numelui său comun (CN).
  • /t: specifică un server de marcare temporală compatibil cu schema Microsoft Authenticode.
  • /tr: indică un server de timestamp compatibil cu RFC 3161, mai modern și recomandat pentru noile implementări.
  Cum se activează și se validează o licență în Windows Server pas cu pas

Când lucrați la proiectul driverului, este important să știți ce fișiere trebuie semnate. Pentru ca un driver să se instaleze corect pe Windows 7 sau 8, acesta trebuie să fie semnat. toate fișierele binare relevante ale proiectului (de exemplu, fișiere .sys) și, de asemenea, fișierul catalog (.cat) care grupează setul de fișiere din pachet.

Aveți două opțiuni principale: puteți copia acele fișiere într-un director de lucru unde aveți disponibil SignTool sau direct mutați-le în folderul bin al SDK-ului Windows și rulați instrumentul de acolo. Important este să aveți la îndemână atât fișierele binare, cât și certificatele pe care le veți folosi pentru semnare.

Un scenariu tipic implică achiziționarea certificatului de semnare a codului corespunzător, de exemplu, un Certificat „Certificat Microsoft Cross” emis de GlobalSign sau de o altă autoritate de încredere. Plasați acel certificat încrucișat (CrossCert.crt) în directorul de lucru împreună cu certificatul principal de semnare a codului (de exemplu, CodeSign.pfx) și executați o comandă similară cu aceasta:

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

Această comandă generează o semnătură care include certificarea încrucișată și obține o marcă temporală de la serverul RFC 3161 al GlobalSign. Marca temporală este esențială deoarece dovedește că fișierul a fost semnat la o dată la care certificatul era valabil, chiar dacă acesta expiră ulterior.

După semnarea fișierului, este timpul să verificați dacă totul este corect. Acest lucru se face de obicei folosind o comandă de verificare, cum ar fi:

signtool verify -v -kp nume_fișier.sys

Opțiunea -v Forțează o ieșire detaliată, afișând informații detaliate despre lanțul de certificate și opțiunea -kp Verifică semnătura conform criteriilor de semnare a codului specifice driverului de mod kernel. Dacă totul merge bine, veți vedea un rezultat care indică faptul că semnătura și lanțul de certificate sunt corecte.

În cele din urmă, este recomandat Repetați același proces de semnare și verificare cu fișierul .cat al pachetului. Odată ce atât fișierele binare, cât și catalogul sunt semnate corect, driverul poate fi instalat pe Windows 7 și 8 x64 fără probleme de securitate, iar în timpul expertului de instalare ar trebui să apară informațiile despre editorul de încredere și ferestrele standard ale sistemului.

Pentru a aprofunda toate variantele instrumentului, Microsoft menține o referință cuprinzătoare a comenzilor SignTool, precum și o Tutorial specific pentru semnarea codului în modul kernel și documentație dedicată semnăturilor digitale ale modulelor kernel în Windows. Aceste resurse explică cazuri speciale, parametri avansați și particularitățile fiecărei versiuni de sistem.