Warning: include(/home/sw/ziembor/public_html/include/headtmpl.php) [function.include]: failed to open stream: No such file or directory in /Windows_NT/authenticode.php on line 1

Warning: include() [function.include]: Failed opening '/home/sw/ziembor/public_html/include/headtmpl.php' for inclusion (include_path='.:/:/usr/local/php/pear5') in /Windows_NT/authenticode.php on line 1
Podpisywanie programów Win32

Podpisywanie programów Win32 -- technologia Authenticode

Ziemek Borowski http://ziembor.waw.pl/zmb/

Założenia

W wypadku dystrybucji programu (czy to przez Internet czy też przy pomocy bardziej tradycyjnych metod, np. płyta dołączona do pisma) istotne staje się zagwarantowanie obu stronom kontraktu (tj. producentowi oprogramowania oraz jego użytkownikowi końcowemu) nienaruszalności programu w czasie transportu oraz przekonanie użytkownika końcowego że oprogramowanie które otrzymuje jest rzeczywiście wyprodukowane przez określonego wytwórcę. Ma to szczególne znaczenie w wypadku np. dystrybucji poprawek do systemu. Problem ten ma niestety kilka sugerowanych rozwiązań, zależnych od systemu operacyjnego oraz stosowanych technologii. W środowiskach Unixowych popularne stało się podpisywanie pakietów (np. w formacie RPM lub DEB) podpisami PGP, lub, z czasem OpenPGP (przy pomocy programu Gnu Privacy Guard). Sun Microsystem dla środowiska Java opracował (i stosuje) specyfikację Java Code Signing. Poza wspominanymi istnieją także odrębne formaty podpisów storzonych przez Netscape, Mariba, Apple i wreszcie Microsoft (w dwóch różnych odmianach: Authenticode, oraz Office 2000 VBA signing).

Podstawowym formatem podpisu dla aplikacji Win32 jest Autheniticode (nie pozwala na podpisywanie aplikacji szesnastobitowych). Pozwala na podpisywanie plików *.exe, *.dll oraz *.cab. (nie do końca wiem jak przestawia się sprawa z Windows Installer, *.msi). W momencie gdy przez Internet Explorera ładowany jest plik wykonywalny tudzież (co o wiele istotniejsze) ActiveX sprawdzane jest czy jest on podpisany. W wypadku gdy nie jest podpisany wyświetlane jest ostrzeżenie (lub gdy ustawiony jest domyślny poziom zabezpieczeń w IE ActiveX nie jest uruchamiany).

Pozyskanie certyfikatu

Standardową metodą na uzyskanie możliwości podpisywania naszych programów przy pomocy authenticode jest wystąpienie o przyznanie takiego podpisu do jednego z Centrów Certyfikacji (ich lista znajduje się w punkcie Patrz też). Ważny (choć nie kluczowy) jest przy tym fakt rozpoznawania certyfikatu CA dla tego centrum przez MS Windows/Internet Explorera. W pierwszej kolejności wystawiane jest żądanie przyznania certyfikatu (CRS) zazwyczaj wykonywane przy pomocy stron WWW CC, choć zdarza się że generowane po stronie klienta, np. przy pomocy pakietu OpenSSL.   CRS opatrywany jest hasłem hasło to będzie wymagane przy podpisywaniu plików, istotne jest więc aby zostało utworzone zgodnie z regułami sztuki, i było przechowywane w bezpieczny sposób. Po wygenerowaniu CRS należy dostarczyć do Centrum Certyfikacji odpowiednie dokumenty (różne w zależności od centrum).  Po przeprowadzeniu procedur weryfikacyjnych podpisany CRS zostaje zwrócony jako certyfikat (istotne jest, że CC nie posiada jego działającej kopii). Również on powinien zostać stosownie zabezpieczony, np. przez nagranie na CD-ROM i złożenie w sejfie lub innym bezpiecznym miejscu.

Podpisywanie

Samo podpisywanie programów, po uzyskaniu certyfikatu jest czynnością prostą. Należy je przeprowadzać na zabezpieczonym komputerze, z zainstalowanym Internet Client SDK (tutaj jest pewien problem. Teoretycznie dostępne są zestawy dla IE 4.0 i 5.0 nie zaobserwowałem wersji dla 6.0. Tym nie mniej zainstalowana przed uaktualnieniem do IE 6.0 wersja dla IE 5.0 nadal działa).

Uwagi

Dosyć istotnym problemem jest wybór Centrum Certyfikacyjnego. Przede wszystkim z powodów księgowych. Dla większości działów finansowych niedopuszczalną metodą płatności jest płatność kartą płatniczą/kredytową. A firmy takie jak Thawte nie wystawiają poprawnych polskich faktur ;-(. Pat. (co prawda Thawte ma polskie przedstawicielstwo firmę Optimus-Bis, ale nie działa ono najlepiej). Dlatego warto czasem, kosztem nieco większego wysiłku administracyjnego sięgnąć do jednego z polskich Centrów Certyfikacyjnych zwłaszcza, że po ustawie o podpisie elektronicznym będą one odgrywać co raz większą rolę (m.in. szansa na fakt zainstalowania ich certyfikatu root CA wzrasta ;-). Oczywiście może też samemu wygenerować własne Centrum Certyfikacji, i tworzyć certyfikaty również dla Authenticode, ba, nawet InetSDK zawiera podstawowe narzędzia   służące do tego celu, programy MakeCert.exe i Cert2SPC.exe.

Patrz też


Ziemek Borowski

Warning: include(/home/sw/ziembor/public_html/include/bottomtmpl.php) [function.include]: failed to open stream: No such file or directory in /Windows_NT/authenticode.php on line 176

Warning: include() [function.include]: Failed opening '/home/sw/ziembor/public_html/include/bottomtmpl.php' for inclusion (include_path='.:/:/usr/local/php/pear5') in /Windows_NT/authenticode.php on line 176