- Windows A legtöbb 64 bites illesztőprogramhoz, különösen a kernel módú illesztőprogramokhoz érvényes digitális aláírás szükséges az integritás és a biztonság biztosítása érdekében.
- Az aláírás bináris fájlokra és katalógusokra egyaránt alkalmazható olyan eszközök használatával, mint a SignTool vagy a Visual Studio, valamint megbízható entitások által kiállított tanúsítványokkal.
- Az önaláírt tanúsítványok megkönnyítik a fejlesztést és a tesztelést illesztőprogramok aláírás nélküli A windows 78.1 és 10 x64, de ezek nem helyettesítik a kereskedelmi aláírást nyilvános terjesztés esetén.
- A Windows verziók közötti kompatibilitás a megfelelő hash algoritmusok (például SHA2) használatától, valamint a Microsoft és a WHQL irányelveinek betartásától függ.
Első pillantásra úgy tűnhet, hogy egy illesztőprogram aláírása Windows rendszerben csak a leghaladóbb fejlesztők számára lehetséges, de ha valakivel együtt dolgozik... eszközök, egyéni illesztőprogramok vagy tesztkörnyezetekElőbb vagy utóbb szembesülni fogsz ezzel a követelménygel. A modern rendszerekben, különösen a 64 bites rendszerekben, a Windows már nem bízik meg akármilyen bináris fájlban, amely megpróbál bejutni a kernelbe: érvényes digitális aláírásokat, modern algoritmusokat, mint például az SHA2, és sok esetben Microsoft-tanúsítványt akar.
A következő sorokban nyugodtan megvizsgáljuk, hogy mit is jelent pontosan egy vezérlő aláírása, milyen különbségek vannak közöttük kernel mód és felhasználói módHogyan érinti ez a 64 bites Windows 7, 8, 8.1 és 10 rendszereket, milyen szerepet játszanak benne az olyan eszközök, mint a SignTool vagy a Visual Studio, és milyen lehetőségeid vannak mind a fejlesztői környezetekben (teszt vagy önaláírt tanúsítványok), mind a megbízható hatóság által kiállított tanúsítványokkal rendelkező nyilvános kiadásokban.
Mi az illesztőprogram-aláírás Windows rendszerben, és miért kötelező?
A Windows rendszerben az illesztőprogram-aláírás egy hozzárendelését jelenti digitális aláírás egy illesztőprogram-csomaghoz (bináris fájlok, INF fájlok, katalógus stb.) két dolog garantálása érdekében: hogy senki sem manipulálta a fájlokat a létrehozásuk óta, és hogy valóban a feltüntetett kiadótól (a szoftver szolgáltatójától vagy gyártójától) származnak. hardver).
A gyakorlatban egy Windows-eszköz telepítésekor ezeket a digitális aláírásokat arra használják, hogy ellenőrizze a csomag épségét és a kiadó kilétét. Ha valami nem egyezik (sérült aláírás, nem megbízható tanúsítvány, helytelen hash stb.), a rendszer figyelmeztetéseket jelenít meg, blokkolja a telepítést, vagy egyszerűen megtagadja az illesztőprogram betöltését.
A Windows Vista 64 bites verziójától kezdve, és különösen a Windows 7, 8, 8.1 és 10 x64 rendszereken, a kernel módú biztonsági szabályzat egyértelmű: minden olyan illesztőprogram, amely a kernelben futni fog Megfelelően alá kell írni.Ellenkező esetben a meghajtó nem töltődik be, az eszköz működésképtelenné válhat, és kék képernyő is előfordulhat, ha érvénytelen bináris fájlokat kényszerítenek betöltésre.
Amikor úgy dönt, hogy tanúsíttatja az illesztőprogramot a Microsofttal, benyújthatja azt a Windows Hardware Quality Labs (WHQL) érvényesítési folyamatára. Ha az illesztőprogram-csomag megfelel a tanúsítási teszteken, a Microsoft megadja a tanúsítványt. hivatalos WHQL aláírásEz nemcsak a bizalmat és a kompatibilitást javítja, hanem lehetővé teszi az illesztőprogram terjesztését is windows Update és a Microsoft által támogatott egyéb terjesztési csatornák.
Fontos megjegyezni, hogy a Windows 10 1507-es verziójától kezdődően az összes, a Microsoft Hardware Development Centeren keresztül aláírt illesztőprogram a következővel van aláírva: SHA2 mint hash algoritmusAz SHA1 elavulttá vált ezekben a forgatókönyvekben, és a régi tanúsítványok keverése problémákat okozhat, különösen az újabb rendszereken.

Illesztőprogram-aláírás közötti különbségek kernel módban és felhasználói módban
Windows rendszerben a következő illesztőprogramok futnak: kernel mód és felhasználói módAz aláírási szabályzat nem teljesen ugyanaz a két környezetben, bár az operációs rendszer minden új verziójával szigorúbbá válik.
A kernel módú illesztőprogramok a legérzékenyebbek, mivel a rendszermagban futnak, és privilegizált hozzáféréssel rendelkeznek a memóriához és a hardverhez. A Windows Vista 64 bites és újabb verzióiban ezek az illesztőprogramok... Kötelező aláírni őket hogy fel lehessen tölteni. Ez a korlátozás közvetlenül kapcsolódik a rendszer stabilitásához és a védelemhez a malware hogy alacsony szinten próbál befecskendezni.
Másrészt a felhasználói módban működő illesztőprogramokra (például számos nyomtató-illesztőprogramra és további összetevőkre) eredetileg nem vonatkozott ilyen szigorú kötelezettség. Valójában a Windows régebbi verzióiban Nem volt abszolút követelmény hogy ezek az illesztőprogramok alá legyenek írva. A Microsoft azonban biztonsági okokból mindig is javasolta az aláírásukat, és a Windows 8 óta vannak olyan esetek, amikor bizonyos típusú felhasználói illesztőprogramokhoz aláírás szükséges.
Egy tipikus példa: egy x64-es számítógépre telepített nyomtatóillesztőprogram telepítése során általában egy párbeszédpanel jelenik meg, amely a felhasználó megerősítését kéri. A gyakorlatban ez a csomag Megfelelően alá kell írni hogy a telepítés akadályok vagy kritikus biztonsági riasztások nélkül folytatódhasson.
Az általános elképzelés az, hogy bár a követelmény felhasználói módban nem univerzális, a Microsoft egyre inkább szorgalmazza annak megvalósítását. minden illesztőprogrammal kapcsolatos szoftvert alá kell írniAz aláírás lehetővé teszi a létrehozásuk megbízható ellenőrzését, a manipuláció észlelését, és csökkenti annak kockázatát, hogy rosszindulatú komponensek kerüljenek be, miközben legitim vezérlőknek álcázzák magukat.
Aláírási követelmények és SHA algoritmusok a Windows különböző verzióiban
Az egyik legproblémásabb szempont a Windows verziók és a hash algoritmusok közötti kompatibilitás, mint például SHA1 és SHA2Sok fejlesztő találkozik olyan illesztőprogramokkal, amelyek az egyik rendszeren működnek, a másikon viszont nem, és a hiba nagy része az aláírási szabályzatok változásainak tudható be.
Régebbi rendszerekben, például a 64 bites Windows 7 vagy 8 rendszerben, gyakori volt az SHA1 alapú tanúsítványokkal és aláírásokkal való munka, bár a Microsoft már korábban figyelmeztetett, hogy Az SHA1 biztonsági szempontból gyengén teljesítettAhogy a Windows 8.1 és 10 felé haladtak az előrelépések, az SHA2 vált a kód- és illesztőprogram-aláírások szabványává.
A gyakorlatban egyes gyártók úgy döntöttek, hogy a kernel módú bináris fájlokat kettős tanúsítványok (SHA1 és SHA2) beágyazásával írják alá, amelyeket a Microsofttól eltérő szervezetek bocsátottak ki. Ezek a kettős aláírású bináris fájlok bizonyos esetekben A Windows 10 előtti verziókban nem töltődnek be.és egyes Windows 10 rendszereken akár súlyos összeomlásokat vagy kék képernyőket is okozhatnak.
Ezen problémák enyhítésére a Microsoft kiadott speciális javításokat, például a KB 3081436 frissítést. A frissítés telepítése az érintett rendszerekre kijavítja az inkompatibilitásokat bizonyos SHA2 aláírású illesztőprogramokkal, és listát biztosít a következőkről: referencia SHA hash értékek a támogatási cikk „További információk – Fájl hash-információk” című részében.
Ha olyan illesztőprogramokat kíván terjeszteni, amelyeknek a Windows több verzióján is működniük kell, elengedhetetlen a következők áttekintése: aláírási követelmények verziónként a Microsoft részletezi. Ott van meghatározva, hogy mely algoritmusok érvényesek, hogyan kezeli a visszafelé kompatibilitást, és mely aláírás-kombinációk (katalógus, beágyazott bináris, kereszttanúsítványok stb.) elfogadottak hivatalosan.
Felhasználói módú illesztőprogram-aláírás: ajánlások és források
Bár a kernel gyakran kapja a legtöbb figyelmet, a felhasználói módú illesztőprogram-aláírás is figyelmet érdemel. A Microsoft nem érvényesítette ezt olyan szigorúan a kezdetektől fogva, de... határozottan ajánlja a biztonság megőrzését a rendszerből, és bizalmat nyújt a végfelhasználónak.
A felhasználói módú illesztőprogram aláírása alapvetően ugyanazokat a funkciókat látja el, mint kernel módban: azonosítja az adatkezelő szolgáltatót (gyártó, ISV stb.), és megerősíti, hogy a csomagot nem módosították az aláírása óta. Amikor egy felhasználó például egy felhasználói módú illesztőprogramokkal rendelkező nyomtatót telepít egy x64-es számítógépre, a telepítővarázsló megjeleníthet egy párbeszédpanelt, amely megkérdezi, hogy megbízható-e a közzétevő. Ha az aláírás érvényes, és a tanúsítvány egy elismert entitáshoz tartozik, a telepítés zökkenőmentesebb és sokkal kevesebb figyelmeztetéssel jár.
A Microsoft számos dokumentumot és oktatóanyagot kínál, amelyek mélyebben belemerülnek az aláírási folyamatba, ezek közül sokat eredetileg kernel módra terveztek, de felhasználói módban is alkalmazhatók. A fő cikk a következőről szól: sofőr aláírása és a kernel módú kódaláírási útmutatón belüli „Kernelmodul verzióaláírása” altéma jó kiindulópontot jelent a Windows kódaláírásának általános logikájának megértéséhez.
Ezenkívül a Windows Driver Kit (WDK) telepítése tartalmaz egy súgófájlt, amelynek neve selfsign_readme.htm, amely a könyvtárban található önaláírásEz a dokumentum ismerteti, hogyan lehet teszttanúsítványokat generálni és azokat fejlesztés közben használni, ami különösen hasznos, ha még nem rendelkezik megbízható legfelső szintű hatóság által kiállított tanúsítvánnyal.
Összefoglalva, bár egy felhasználói módú illesztőprogram technikailag bizonyos esetekben aláírás nélkül is működhet, mégis úgy kell kezelni, mintha kötelező lenne. Ez biztonsági, márkaimázs- és a Windows telepítővarázslókkal való kompatibilitási okokból van így. A sofőr aláírása a legésszerűbb dolog..
Kernel módú illesztőprogramok aláírása Windows 7 és 8 rendszerben a SignTool használatával
64 bites Windows 7 és 8 használata esetén a kernel módú illesztőprogramok aláírásának egyik leggyakoribb módja a parancssori eszköz használata. parancsok SignToolA Windows SDK részét képező segédprogram lehetővé teszi fájlok aláírását és meglévő aláírások ellenőrzését, és számos lehetőséget kínál a különböző forgatókönyvekhez igazodva.
Néhány a legfontosabb lehetőségek közül A SignTool funkciói a következők:
- /ac: egy további tanúsítványt határoz meg, például egy kereszttanúsítványt, amely a tanúsítványt egy megbízható legfelső szintű hatósághoz kapcsolja.
- /f: az aláíró tanúsítványt tartalmazó fájlt jelöli (általában .pfx).
- /p: a .pfx fájlban tárolt aláíró tanúsítványhoz társított jelszót adja meg.
- /fd: meghatározza a fájl aláírásának létrehozásakor használt hash algoritmust, például: /fd sha256 SHA256 alapú aláírás generálásához (ha nincs semmi megadva, az SHA1 általában az alapértelmezett érték a régebbi verziókban).
- /n «A tanúsítvány általános neve»: lehetővé teszi egy adott tanúsítvány kiválasztását a Windows tanúsítványtárából a köznapi neve (CN) alapján.
- /t: egy Microsoft Authenticode sémával kompatibilis időbélyegző-kiszolgálót határoz meg.
- / tr: egy RFC 3161-nek megfelelő időbélyeg-kiszolgálót jelöl, amely modernebb és az új implementációkhoz ajánlott.
Amikor az illesztőprogram-projekten dolgozol, fontos tudni, hogy mely fájlokat kell aláírni. Ahhoz, hogy egy illesztőprogram megfelelően települjön Windows 7 vagy 8 rendszeren, alá kell írnia. a projekt összes releváns bináris fájlja (például .sys fájlok), valamint a katalógusfájl (.cat), amely a csomagban található fájlokat csoportosítja.
Két fő lehetőséged van: átmásolhatod ezeket a fájlokat egy olyan munkakönyvtárba, ahol elérhető a SignTool, vagy közvetlenül helyezze át őket a Windows SDK bin mappájába és onnan futtassa az eszközt. A lényeg, hogy mind a bináris fájlok, mind a tanúsítványok kéznél legyenek, amelyeket az aláíráshoz használni fog.
Egy tipikus forgatókönyv a megfelelő kódaláíró tanúsítvány beszerzését foglalja magában, például egy „Microsoft kereszttanúsítvány” tanúsítvány A GlobalSign vagy más megbízható hatóság által kiállított kereszthitelesítést (CrossCert.crt) a munkakönyvtárba kell helyezni a fő kódaláíró tanúsítvánnyal (például CodeSign.pfx) együtt, és egy ehhez hasonló parancsot kell futtatni:
signtool sign /ac CrossCert.crt /f CodeSign.pfx /p password1234 /tr http://timestamp.globalsign.com/tsa/r6advanced1 filter.sys
Ez a parancs egy aláírást generál, amely magában foglalja a kereszthitelesítést és időbélyeget kap a GlobalSign RFC 3161 szerveréről. Az időbélyeg kulcsfontosságú, mert bizonyítja, hogy a fájlt olyan dátumon írták alá, amikor a tanúsítvány érvényes volt, még akkor is, ha az később lejár.
A fájl aláírása után ellenőrizni kell, hogy minden rendben van-e. Ezt általában egy ellenőrző paranccsal lehet megtenni, például:
signtool verify -v -kp fájlnév.sys
A választás -v Részletes kimenetet kényszerít ki, amely részletes információkat mutat a tanúsítványláncról és a beállításról. -kp A kernel módú illesztőprogram specifikus kódaláírási kritériumai szerint ellenőrzi az aláírást. Ha minden jól megy, egy eredmény jelenik meg, amely jelzi, hogy az aláírás és a tanúsítványlánc helyes.
Végül ajánlott Ismételje meg ugyanazt az aláírási és ellenőrzési folyamatot a .cat fájllal. a csomagból. Miután mind a bináris fájlok, mind a katalógus megfelelően alá van írva, az illesztőprogram biztonsági problémák nélkül telepíthető Windows 7 és 8 x64 rendszerre, és a telepítővarázsló során megjelennek a megbízható közzétevő adatai és a szokásos rendszerablakok.
Az eszköz összes változatának mélyebb megismeréséhez a Microsoft egy átfogó SignTool parancsreferenciát, valamint egy Konkrét oktatóanyag a kód aláírásához kernel módban és a Windows kernel modulok digitális aláírásaival foglalkozó dokumentáció. Ezek az erőforrások a speciális eseteket, a speciális paramétereket és az egyes rendszerverziók sajátosságait ismertetik.
Szenvedélyes író a bájtok és általában a technológia világáról. Szeretem megosztani tudásomat írásban, és ezt fogom tenni ebben a blogban, megmutatom a legérdekesebb dolgokat a kütyükről, szoftverekről, hardverekről, technológiai trendekről stb. Célom, hogy egyszerű és szórakoztató módon segítsek eligazodni a digitális világban.