次の方法で共有


Podpisywanie sterowników

Czasem zdarzy sie, ze ktos ma system w wersji x64. Jezeli to serwer Windows 2008R2, to nie bardzo mial wybór, a jezeli to inny system – prawdowpodobnie ktos swiadomie sie na 64 bity zdecydowal. I bardzo dobrze, obiema rekami popieram taka decyzje. Slyszy sie jednak czesto (a w zasadzie, czyta na forach), ze 64 bity to same klopoty. Aplikacje jakos dadza sobie rade, ale bedzie ogromny problem ze sterownikami. W praktyce ten problem wcale nie okazuje sie taki wielki, co nie oznacza jednak, ze nie istnieje. I staje taki odwazny i glodny nowosci uzytkownik wersji x64 przed sytuacja: system x64, sterownik udalo sie znalezc (Microsoft uzywa zwykle wdziecznego przykladu sterownika do tostera) tyle, ze wbudowane w systemy x64 mechanizmy nie pozwalaja na uzycie sterownika, który nie jest podpisany.

_sign2a

Typowa rada na wszelkich forach brzmi: wylacz weryfikacje podpisywania sterowników.

Chcac taka rade szczerze skomentowac, musialbym ograniczyc siedo zdania "ta rada jest glupia". Tak jak glupia rada jest sugestia, zeby zrezygnowac z zamykania drzwi od mieszkania, gdy mamy tylko dwa klucze a z wejscia potrzebuja skorzystac trzy osoby. Nie rozwalajmy systemowych mechanizmów zabezpieczen, tylko dlatego ze sterownik nie spelnia ich wymagan. Nie rezygnujmy z systemu przepustek dlatego, ze do firmy przyszedl nowy pracownik, który przepustki nie ma! Przeciez w takiej sytuacji, w normalnym zyciu pierwszym odruchem jest wystawienie przepustki dla nowego. A nie "równianie w dól". Jezeli trzy osoby musza skorzystac z drzwi – dorobimy trzeciej klucz. Normalne, naturalne i zwykle calkiem proste.

W systemach x64 nie jest wcale trudniej. Mamy kilkadziesiat podpisanych cyfrowo sterowników i jeden, który podpisany nie jest. Skad bierze sie w takiej sytuacji chory pomysl, zeby wylaczyc kontrole podpisów!? Nie prosciej podpisac ten jeden sterownik i nadal cieszyc sie bezpiecznym systemem?

Wbrew obiegowej opinii, podpisanie sterownika nie jest wcale trudne i moze to zrobic kazdy, a nie tylko jego twórca. Majac pobrany sterownik, wystarczy:

  • Utworzyc certyfikat. Na przyklad narzedziem makecert z parametrami –r –pe –ss –n
  • Dodac certyfikat. Do root i do trustedpublisher. Certmgr z parametrami –add –s –r zrobi to idealnie.
  • Utworzyc plik *.cat dla sterownika. Mozna uzyc do tego narzedzia Inf2cat. Jezeli sterownik ma dzialac w systemie Windows 7, jako parametr trzeba podac /os:7_X64. Operacja ta moze wymagac pooszukiwania z data w pliku inf, ale inf2cat wyraznie o tym napisze.
  • Podpisac plik *.cat. Tutaj najlepiej sprawdzi sie signtool.exe w polaczeniu z certyfikatem wygenerowanym na poczatku prac. Udane podpisanie sprawi, ze we wlasciwosciach pliku *.cat pojawi sie dodatkowa zakladka z informacjami na temat podpisu.

 _sign1

Gotowe! Sterownik zostal podpisany cyfrowo i w tym momencie, jakakolwiek próba jego podmienienia zostanie natychmiast przez system wykryta i zasygnalizowana.
Wszystkie uzyte narzedzia sa w systemie albo w bezplatnym pakiecie WinDDK. Nic tylko uzywac.

Oczywiscie instalacja tak podpisanego sterownika przebiega bez zadnego problemu i po zainstalowaniu widac, ze jest on podpisany.

_sign4

A tak swoja droga, do szanownych programistów mam dwie uwagi:

  1. Powinniscie nauczyc sie uzywac UMDF, zamiast z kazdym drobiazgiem pchac sie do jadra systemu. Prosciej, bezpieczniej, klienci beda szczesliwsi a problem podpisywania przestanie byc tak dotkliwy.
  2. Jezeli juz musicie do jadra, to podpisujcie swoje sterowniki, zamiast kazac robic to userom, albo sugerowac im, ze powinni wylaczyc kontrole podpisów w calym systemie.

Autor: Grzegorz Tworek [MVP]

PS. Powyzszy przepis powinien byc nieco inny dla sterowników ustawionych na start w trybie boot (Start Type = 0) ale to tylko formalna uwaga, bo nie takich przypadków dotycza troski typowego uzytkownika.

Comments

  • Anonymous
    January 01, 2003
    @mgrzeg: Nie znam... brzmi ciekawie, ale:
  1. chętnie usłyszałbym jak to działa... bo z opisu wcale nie brzmi jak grzeczna aplikacja.
  2. ostatnie zdanie na stronie dyskwalifikuje dla mnie ten produkt.
  • Anonymous
    January 01, 2003
    Nauczą się... I nawet nie chodzi mi o userów, tylko o programistów. Gdyby niektórzy programiści nie zatrzymali się w rozwoju na etapie Win95, zwykły user nawet nie widziałby, że ma UAC, nie mówiąc już o tym, że odczuwałby z tego powodu jakiś dyskomfort.

  • Anonymous
    April 22, 2010
    Dobry post, najwyższy czas rozwiać wątpliwości ZU związane ze sterwnikami. Jakby jeszcze tak wpoić, że UAC to nie jest zuo:)

  • Anonymous
    April 22, 2010
    A znasz to: http://www.ngohq.com/home.php?page=dseo Nie uzywalem, ale wiele osob to poleca...

  • Anonymous
    October 07, 2010
    nigdzie nie mogę znaleźć WinDKK do pobrania... czego certyfikat trzeba zrobić? Jakiego pliku??

  • Anonymous
    September 19, 2011
    Zrobiłem jak piszesz i niestety sterownik nie jest podpisany. Próbowałem na XP jak i WIN7 x64. W siódemce wyskakuje ze to podpisany sterownik ale nie można potwierdzić jego autentyczności czy zweryfikować - nie jest zaufany. I co teraz?

  • Anonymous
    December 14, 2011
    i pewnie teraz trzeba dodac CA który podpisywałeś do magazynu zaufanych certyfikatów CA i powinien być zaufany.

  • Anonymous
    January 05, 2012
    W tekście brak istotnej informacji - sterowniki podpisane testowo ładowane są przez system w trybie testsigining, który można włączyć korzystając z bcdedit: bcdedit /set TESTSIGNING ON Po włączeniu tego trybu, restarcie systemu i ponownym zalogowaniu, w prawym dolnym rogu pulpitu wyświetlać się będzie odpowiednia informacja