2014-12-31 14 views
19

Oto wspaniała odpowiedź SO, która obejmuje tworzenie samopodpisanego urzędu certyfikacji, a następnie podpisywanie plików wykonywalnych z uzyskanymi certyfikatami: How do I create a self-signed certificate for code signing on Windows?.Czy mogę zainstalować samopodpisane sterowniki w 64-bitowym systemie Windows bez trybu testowego, jeśli samopodpisany certyfikat główny CA jest importowany do magazynu maszynowego?

Przeczytałem wiele dyskusji online na temat tego, jak działa podpisywanie sterowników, a odpowiedź wydaje się być prawie jednoznaczna, że ​​nie można załadować niepodpisanych lub samopodpisanych sterowników bez włączonego trybu testowego. Jednak odpowiedź ja związana, a zwłaszcza jeden komentarz Roger Lipscombe wydaje się zapewnienie widoczności sprzeczne:

Jeśli chcesz użyć tego do podpisywania sterowników, należy zaimportować certyfikat CA w sklepie maszyny. Mój przykład importuje go do sklepu użytkownika , który jest odpowiedni dla większości oprogramowania, do testów/wewnętrznych celów .

Dla mnie to wygląda jak będę mógł zainstalować sterowniki z certyfikatów z podpisem własnym (wydawanych przez siebie podpisane CA) tak długo, jak cert CA został przywieziony do sklepu maszynowego. Nie będę musiał wprowadzać żadnych innych zmian w systemie (wyłączanie trybu testowego przez naciśnięcie F8 w menu startowym, komunikowanie się z flagami konfiguracji rozruchu, takimi jak TESTSIGNING lub NOINTEGRITYCHECKS).

Czy mam rację? Jakie są przeszkody, jeśli takie istnieją, że metoda ta nie jest stosowana szerzej, gdy ludzie potrzebują załadować sterowniki, które nie mają odpowiednich podpisów cyfrowych (takich jak stare sterowniki drukarek itp.). Zamiast tego ludzie polegają na uruchamianiu systemu w trybie testowym lub oprogramowaniu innej firmy (DSEO), które narusza pliki systemowe, aby uruchomić takie sterowniki.

Jakie są wady tej metody? Proces opisany w powyższym pytaniu dotyczącym SO wymaga uprawnień administratora, ale instalowanie sterowników powinno i tak ich wymagać. Zaufanie do samopodpisanego urzędu certyfikacji może stanowić zagrożenie dla bezpieczeństwa - ale czy wyłączenie wszystkich sprawdzeń podpisu nie spowoduje jeszcze większego zagrożenia bezpieczeństwa?

+2

dobre pytanie. MSDN [Kroki do podpisania pakietu sterowników urządzeń] (http://technet.microsoft.com/en-us/library/dd919238%28v=ws.10%29.aspx) również stwierdza, że ​​można zainstalować sterowniki z własnym podpisem sposób, o ile są one opatrzone znacznikiem czasu. – hvd

+1

@hvd Dzięki za link. Mówi "Certyfikat stworzony i użyty w tej sekcji może być użyty tylko z 32-bitowymi sterownikami w 32-bitowych wersjach Windows". Co więcej, zawiera łącze, które zawiera następującą instrukcję: "64-bitowe wersje systemów Windows 7 i Windows Server 2008 R2 mają specjalne wymagania dotyczące podpisu dla sterowników urządzeń trybu jądra. Jeśli używasz 64-bitowej wersji systemu Windows, to nie można utworzyć własnego certyfikatu do podpisywania, a zamiast tego należy użyć certyfikatu publikowania oprogramowania, który łączy się z łańcuchem do zatwierdzonego urzędu certyfikacji (CA) ". Być może nie jest to możliwe? – user130496

+3

W wersji 64-bitowej musisz przekroczyć znak kierowcy, więc samodzielne podpisywanie nie jest możliwe. – Luke

Odpowiedz

-2

masz rację, jeśli tworzysz własny podpisany certyfikat i zapisać go w pamięci użytkownika (lub machien sklepie) jako zaufanych CA, będzie pracować dla Ciebie ... ale należy pamiętać, że:

  1. Bezpieczne ładowanie nie będzie działać.
  2. To jest naruszenie bezpieczeństwa, jeśli ktoś dostanie certyfikat, będzie musiał uruchomić kod trybu jądra w systemie.

Inną opcją jest kupić certyfikat Trusted podpisywania kodu z GoDaddy :)

18

Nie, nie jest to niestety możliwe, począwszy od Windows Vista i Windows Server 2008.

Kierowca musi być z podpisem krzyżowym. Utworzenie własnego urzędu certyfikacji i dodanie go do magazynu maszyny nie wystarczy, ponieważ nowo utworzony urząd certyfikacji nie będzie zaufany łańcuchem zaufania systemu Windows.

Driver Signing Requirements for Windows

W systemie Windows Vista i Windows Server 2008, nowe funkcje skorzystać z technologii podpisywania kodu oraz nowe wymagania dotyczące bezpieczeństwa w systemie operacyjnym egzekwować stosowanie podpisów cyfrowych dla niektórych rodzajów kodu.

Komponenty muszą być podpisane zaświadczeniem, że system Windows "ufa" zgodnie z opisem zamieszczonym w broszurze na tej stronie.

Jeden z białych ksiąg, o których mowa jest Digital Signatures for Kernel Modules on Windows który opisuje proces ładowania i wyjaśnia dlaczego self-podpisu nie będzie wystarczająca:

Gdy kierowca jest ładowany do pamięci jądra, Windows Vista weryfikuje podpis cyfrowy pliku obrazu sterownika. W zależności od typu sterownika może to być albo podpisana wartość mieszania w pliku katalogu, albo osadzona sygnatura w samym pliku obrazu. Certyfikaty krzyżowe używane podczas podpisywania pakietu sterowników jądra służą do weryfikacji podpisu w czasie wczytywania; każdy certyfikat na ścieżce jest sprawdzany aż do zaufanego katalogu głównego w jądrze. Sprawdzanie podpisu czasu wczytywania nie ma dostępu do bazy certyfikatów Zaufane główne urzędy certyfikacji. Zamiast tego musi zależeć od uprawnień administratora, które są wbudowane w jądro systemu Windows Vista.

Jak wspomniano wcześniej, jest to również przedstawione na stronie Requirements for Device Driver Signing and Staging:

Wersje 64-bitowe systemu Windows 7 i Windows Server 2008 R2 mają specjalne wymagania podpisów dla sterowników trybie jądra. Jeśli używasz 64-bitowej wersji systemu Windows, nie możesz utworzyć własnego certyfikatu do podpisania. Zamiast tego należy użyć certyfikatu publikowania oprogramowania, który łączy się z łańcuchem do zatwierdzonego urzędu certyfikacji (CA).

Poprawne CAS podpisywania sterowników trybu jądra można znaleźć na następującej stronie:

Cross-Certificates for Kernel Mode Code Signing

+0

W rzeczywistości działają, możesz sprawdź libusb-win32, robią dokładnie to, a auto-podpisy działają bez problemu ... – Gusman

Powiązane problemy