- Windows Za večino 64-bitnih gonilnikov, zlasti gonilnike v jedrnem načinu, zahteva veljavne digitalne podpise, da se zagotovi celovitost in varnost.
- Podpis je mogoče uporabiti tako za binarne datoteke kot za kataloge z uporabo orodij, kot sta SignTool ali Visual Studio, in potrdil, ki jih izdajo zaupanja vredne entitete.
- Samopodpisana potrdila olajšajo razvoj in testiranje vozniki nepodpisano Windows 78.1 in 10 x64, vendar ne nadomeščata komercialnega podpisa za javno distribucijo.
- Združljivost med različicami sistema Windows je odvisna od uporabe ustreznih algoritmov za zgoščevanje (kot je SHA2) in upoštevanja smernic Microsofta in WHQL.
Podpisovanje gonilnika v sistemu Windows se na prvi pogled morda zdi nekaj, kar lahko počnejo le zelo napredni razvijalci, če pa delate z naprave, gonilniki po meri ali testna okoljaPrej ali slej boste naleteli na to zahtevo. V sodobnih sistemih, zlasti 64-bitnih, Windows ne zaupa več vsaki binarni datoteki, ki se poskuša prikrasti v jedro: želi veljavne digitalne podpise, sodobne algoritme, kot je SHA2, in v mnogih primerih certificiranje prek Microsofta.
V naslednjih vrsticah bomo mirno preučili, kaj točno pomeni podpisati krmilnik, kakšne so razlike med način jedra in uporabniški načinKako vpliva na 64-bitne sisteme Windows 7, 8, 8.1 in 10, kakšno vlogo imajo orodja, kot sta SignTool ali Visual Studio, in katere možnosti imate tako za razvojna okolja (testna ali samopodpisana potrdila) kot za javne izdaje s potrdili, ki jih izda zaupanja vreden organ.
Kaj je podpisovanje gonilnikov v sistemu Windows in zakaj je obvezno?
Podpisovanje gonilnikov v sistemu Windows vključuje povezovanje digitalni podpis paketa gonilnikov (binarne datoteke, INF datoteke, katalog itd.), da se zagotovita dve stvari: da datotek od njihovega nastanka nihče ni spreminjal in da resnično prihajajo od navedenega založnika (ponudnika programske opreme ali proizvajalca strojna oprema).
V praksi se med namestitvijo naprave Windows ti digitalni podpisi uporabljajo za preverite celovitost paketa in identiteto založnika. Če se nekaj ne ujema (poškodovan podpis, nezaupanja vredno potrdilo, napačna zgoščena vrednost itd.), bo sistem prikazal opozorila, blokiral namestitev ali preprosto zavrnil nalaganje gonilnika.
Od 64-bitnega sistema Windows Vista naprej, še posebej pa v sistemih Windows 7, 8, 8.1 in 10 x64, je varnostna politika v načinu jedra jasna: vsak gonilnik, ki se bo izvajal v jedru Mora biti pravilno podpisano.V nasprotnem primeru se gonilnik ne bo naložil, naprava lahko postane nedelujoča, lahko pa se pojavijo tudi modri zasloni, če se prisilno naložijo neveljavne binarne datoteke.
Ko se odločite za certificiranje gonilnika pri Microsoftu, ga lahko predložite v postopek preverjanja v laboratorijih za kakovost strojne opreme sistema Windows (WHQL). Če paket gonilnikov opravi teste certificiranja, Microsoft podeli certifikat. uradni podpis WHQLTo ne le izboljša zaupanje in združljivost, temveč vam omogoča tudi distribucijo gonilnika prek Windows Update in druge distribucijske kanale, ki jih podpira Microsoft.
Pomembno je vedeti, da so od različice 1507 sistema Windows 10 naprej vsi gonilniki, podpisani prek Microsoftovega centra za razvoj strojne opreme, podpisani z uporabo SHA2 kot algoritem za zgoščevanjeSHA1 je za te scenarije postal zastarel, mešanje starih potrdil pa lahko povzroči težave, zlasti v novejših sistemih.

Razlike med podpisi gonilnikov v načinu jedra in uporabniškem načinu
Windows podpira gonilnike, ki se izvajajo v način jedra in uporabniški načinPolitika podpisovanja v obeh okoljih ni povsem enaka, čeprav z vsako novo različico operacijskega sistema postane strožja.
Gonilniki v jedrnem načinu so najbolj občutljivi, ker se izvajajo v sistemskem jedru in imajo privilegiran dostop do pomnilnika in strojne opreme. V 64-bitnih različicah sistema Windows Vista in novejših različicah ti gonilniki Podpisani morajo biti da bi se zaračunalo. Ta omejitev je neposredno povezana s stabilnostjo sistema in zaščito pred zlonamerna programska oprema da poskuša vbrizgati pri nizki ravni.
Po drugi strani pa gonilniki, ki delujejo v uporabniškem načinu (na primer številni gonilniki tiskalnikov in dodatne komponente), prvotno niso bili predmet tako stroge obveznosti. Pravzaprav so v starejših različicah sistema Windows Ni bila absolutna zahteva da so ti gonilniki podpisani. Vendar pa je Microsoft vedno priporočal njihovo podpisovanje iz varnostnih razlogov, od sistema Windows 8 dalje pa obstajajo scenariji, v katerih je podpisovanje potrebno za določene vrste uporabniških gonilnikov.
Tipičen primer: gonilnik tiskalnika, nameščen v računalniku x64, med namestitvijo običajno prikaže pogovorno okno, ki uporabnika pozove k potrditvi. V praksi ta paket Mora biti pravilno podpisano da se namestitev lahko nadaljuje brez blokad ali kritičnih varnostnih opozoril.
Splošna ideja je, da čeprav zahteva ni univerzalna v uporabniškem načinu, si Microsoft vse bolj prizadeva za njeno uvedbo. vsa programska oprema, povezana z gonilniki, mora biti podpisanaPodpisovanje omogoča zanesljivo preverjanje, kdo jih je ustvaril, odkrivanje nedovoljenih posegov in zmanjšanje tveganja, da bi se zlonamerne komponente vtaknile, medtem ko se pretvarjajo, da so legitimni upravljavci.
Zahteve za podpis in algoritmi SHA v različnih različicah sistema Windows
Eden najbolj problematičnih vidikov je združljivost med različicami sistema Windows in algoritmi za zgoščevanje, kot je SHA1 in SHA2Mnogi razvijalci naletijo na gonilnike, ki delujejo na enem sistemu, na drugem pa ne, velik del krivde pa je v spremembah pravilnikov podpisovanja.
V starejših sistemih, kot sta 64-bitni Windows 7 ali 8, je bilo običajno delo s certifikati in podpisi, ki temeljijo na SHA1, čeprav je Microsoft že opozoril, da SHA1 ni imel dovolj varnostiZ napredkom pri razvoju sistemov Windows 8.1 in 10 je SHA2 postal standard za podpise kode in gonilnikov.
V praksi so se nekateri proizvajalci odločili za podpisovanje binarnih datotek v jedrnem načinu z vdelavo dvojnih potrdil (SHA1 in SHA2), ki so jih izdali drugi subjekti kot Microsoft. Te dvojno podpisane binarne datoteke v nekaterih primerih V različicah pred sistemom Windows 10 se ne naložijoin v nekaterih sistemih Windows 10 lahko celo povzročijo resne zrušitve ali modre zaslone.
Za ublažitev teh težav je Microsoft izdal posebne popravke, kot je posodobitev KB 3081436. Namestitev te posodobitve v prizadete sisteme odpravlja nezdružljivosti z nekaterimi gonilniki, podpisanimi s SHA2, in zagotavlja seznam referenčne vrednosti zgoščevanja SHA v razdelku »Več informacij – Informacije o zgoščeni vrednosti datoteke« v tem podpornem članku.
Če boste distribuirali gonilnike, ki morajo delovati v več različicah sistema Windows, je nujno pregledati zahteve za podpis glede na različico podrobno opisal Microsoft. Tam je določeno, kateri algoritmi so veljavni, kako se obravnava povratna združljivost in katere kombinacije podpisov (katalog, vdelana binarna datoteka, navzkrižna potrdila itd.) so uradno sprejete.
Podpisovanje gonilnikov v uporabniškem načinu: priporočila in viri
Čeprav jedro pogosto deležno največ pozornosti, si pozornost zasluži tudi podpisovanje gonilnikov v uporabniškem načinu. Microsoft tega od začetka ni tako strogo uveljavljal, je pa ... toplo priporoča ohranjanje varnosti sistema in končnemu uporabniku vzbuja zaupanje.
Podpis gonilnika uporabniškega načina v osnovi opravlja enake funkcije kot v načinu jedra: identificira ponudnika krmilnika (proizvajalec, neodvisni ponudnik programske opreme itd.) in potrdi, da paket ni bil spremenjen od podpisa. Ko uporabnik na primer namesti tiskalnik z gonilniki uporabniškega načina v računalnik x64, lahko čarovnik za namestitev prikaže pogovorno okno z vprašanjem, ali je založnik vreden zaupanja. Če je podpis veljaven in potrdilo pripada prepoznani entiteti, je namestitev bolj gladka in z veliko manj opozorili.
Microsoft ponuja vrsto dokumentov in vadnic, ki podrobneje obravnavajo postopek podpisovanja, mnogi od njih so bili prvotno zasnovani za način jedra, vendar so uporabni tudi za uporabniški način. Glavni članek o podpis voznika in podtema »Kako podpisati različico modula jedra« v vadnici o podpisovanju kode v načinu jedra sta dobri izhodišči za razumevanje splošne logike podpisovanja kode v sistemu Windows.
Poleg tega namestitev kompleta gonilnikov Windows (WDK) vključuje datoteko s pomočjo z imenom selfsign_readme.htm, ki se nahaja v imeniku samopodpisTa dokument pojasnjuje, kako ustvariti testna potrdila in kako jih uporabiti med razvojem, kar je še posebej uporabno, če še nimate potrdila, ki ga je izdal zaupanja vreden korenski overitelj.
Skratka, čeprav lahko gonilnik uporabniškega načina v nekaterih primerih tehnično deluje brez podpisa, ga je treba obravnavati, kot da bi bil obvezen. To je zaradi varnosti, podobe blagovne znamke in združljivosti s čarovniki za namestitev sistema Windows. Podpis voznika je najbolj smiselna stvar..
Podpisovanje gonilnikov v jedrnem načinu v sistemih Windows 7 in 8 z uporabo orodja SignTool
Pri delu s 64-bitnimi sistemi Windows 7 in 8 je eden najpogostejših pristopov k podpisovanju gonilnikov v jedrnem načinu uporaba orodja ukazne vrstice. ukazi Orodje za podpiseTa pripomoček, ki je vključen v komplet za razvoj programske opreme za Windows, omogoča podpisovanje datotek in preverjanje obstoječih podpisov ter ponuja široko paleto možnosti za različne scenarije.
Nekaj najpomembnejših možnosti Značilnosti SignToola so naslednje:
- /ac: določa dodatno potrdilo, na primer navzkrižno potrdilo, ki vaše potrdilo poveže z zaupanja vrednim korenskim overiteljem.
- /f: označuje datoteko, ki vsebuje potrdilo za podpis (običajno .pfx).
- /p: poda geslo, povezano s podpisnim potrdilom, shranjenim v datoteki .pfx.
- /fd: določa algoritem zgoščevanja, ki se uporablja pri ustvarjanju podpisa datoteke, na primer, /fd sha256 za generiranje podpisa na podlagi SHA256 (če ni nič določeno, je v starejših različicah običajno privzeta vrednost SHA1).
- /n «Splošno ime potrdila»: omogoča izbiro določenega potrdila iz shrambe potrdil sistema Windows na podlagi njegovega običajnega imena (CN).
- /t: določa strežnik za časovno žigosanje, ki je združljiv s shemo Microsoft Authenticode.
- /tr: označuje strežnik časovnih žigov, ki je skladen z RFC 3161, sodobnejši in priporočen za nove implementacije.
Pri delu na projektu gonilnika je pomembno vedeti, katere datoteke je treba podpisati. Da se gonilnik pravilno namesti v sistem Windows 7 ali 8, mora biti podpisan. vse ustrezne binarne datoteke projekta (na primer datoteke .sys) in tudi datoteko kataloga (.cat), ki združuje nabor datotek v paketu.
Imate dve glavni možnosti: te datoteke lahko kopirate v delovni imenik, kjer imate na voljo SignTool, ali pa neposredno premaknite jih v mapo "bin" v paketu Windows SDK in od tam zaženite orodje. Pomembno je, da imate pri roki tako binarne datoteke kot potrdila, ki jih boste uporabljali za podpisovanje.
Tipičen scenarij vključuje pridobitev ustreznega potrdila za podpisovanje kode, na primer Potrdilo »Microsoft Cross Certificate« izdal GlobalSign ali drug zaupanja vreden organ. To navzkrižno potrdilo (CrossCert.crt) postavite v svoj delovni imenik skupaj z glavnim potrdilom za podpisovanje kode (na primer CodeSign.pfx) in zaženete ukaz, podoben temu:
orodje za podpisovanje /ac CrossCert.crt /f CodeSign.pfx /p password1234 /tr http://timestamp.globalsign.com/tsa/r6advanced1 filter.sys
Ta ukaz ustvari podpis, ki vključuje navzkrižno certificiranje in pridobi časovni žig od strežnika RFC 3161 podjetja GlobalSign. Časovni žig je ključen, ker dokazuje, da je bila datoteka podpisana na datum, ko je bilo potrdilo veljavno, tudi če kasneje poteče.
Po podpisu datoteke je čas, da preverite, ali je vse pravilno. To se običajno stori z ukazom za preverjanje, kot je:
signtool preveri -v -kp ime_datoteke.sys
Možnost -v Vsili podroben izpis, ki prikazuje podrobne informacije o verigi potrdil in možnosti -kp Preveri podpis v skladu s specifičnimi merili za podpisovanje kode gonilnika jedrnega načina. Če gre vse v redu, boste videli rezultat, ki kaže, da sta podpis in veriga potrdil pravilna.
Končno je priporočljivo Ponovite isti postopek podpisovanja in preverjanja z datoteko .cat. paketa. Ko so binarne datoteke in katalog pravilno podpisani, je mogoče gonilnik namestiti v sisteme Windows 7 in 8 x64 brez varnostnih težav, med čarovnikom za namestitev pa se morajo prikazati okna z informacijami o zaupanja vrednem založniku in standardna sistemska okna.
Za globlji pregled vseh različic orodja Microsoft vzdržuje obsežen priročnik o ukazih SignTool, pa tudi Poseben vodnik za podpisovanje kode v načinu jedra in dokumentacijo, namenjeno digitalnim podpisom modulov jedra v sistemu Windows. Ti viri pojasnjujejo posebne primere, napredne parametre in posebnosti posamezne različice sistema.
Strasten pisec o svetu bajtov in tehnologije nasploh. Rad delim svoje znanje s pisanjem in to je tisto, kar bom počel v tem blogu, saj vam bom pokazal vse najbolj zanimive stvari o pripomočkih, programski opremi, strojni opremi, tehnoloških trendih in še več. Moj cilj je, da vam pomagam krmariti po digitalnem svetu na preprost in zabaven način.