Bajki na dobranoc: certyfikaty i podpisywanie kodu

Będzie o zabawkach zwanych codesign, certyfikatach i Microsoft.

Åšrednio raz w tygodniu ktoÅ› zadaje mi pytanie z cyklu “a co siÄ™ stanie jeÅ›li” dot. podpisywania kodu certyfikatami. ZajmujÄ™ siÄ™ tym na co dzieÅ„, czasami wrÄ™cz nie wypada mi nie odpowiedzieć (a propos ewenementu odpowiedzi i chÄ™ci pomocy w mojej firmie wypada mi napisać kiedyÅ› osobnÄ… notkÄ™).

Spójrzcie drodzy mili na ten poniższy obrazek:

Co z niego wynika?

1) certyfikat niniejszy zaÅ›wiadcza, że podpisany nim program pochodzi od cytowanej w linijce “Issued to:” firmy, Microsoft Corporation
2) certyfikat niniejszy zaświadcza, że kod/program nie został zmieniony po podpisaniu
3) certyfikat został wystawiony dla firmy Microsoft Corporation przez Microsoft Code Signing PCA (Policy Certification Authority - nasza własna usługa, którą zbudowaliśmy, zarządzamy i wspieramy)
4) certyfikat jest ważny od 04/04/2006 do 04/10/2007

A teraz pytanie, które tak często jest zadawane: co się stanie z aplikacją, certyfikatem i podpisem dnia 05/10/2007, czyli dzień po wygaśnięciu certyfikatu?

Odpowiedź krótka: nic.

Odpowiedź dłuższa: najpierw zobacz ten poniższy obrazek:

Jest tutaj zawarta jedna arcyważna informacja: Signing time albo inaczej Timestamp. Jest to osobna usługa, tzw. timestamping, która nie robi nic innego jak przybija pieczątkę z datą podpisywania kodu.

JeÅ›li czas okreÅ›lony w Signing time mieÅ›ci siÄ™ w przedziale okreÅ›lonym przez Valid fromto … i certyfikat nie znajduje siÄ™ na liÅ›cie odwoÅ‚anych certyfikatów (revoked) to we wÅ‚aÅ›ciwoÅ›ciach pod Digital Signatures zawsze zobaczymy: This digital signature is OK.

Windows w certmgr.msc pokazuje całą listę certyfikatów, którymi Microsoft posługiwał się od 1998 roku. Dzięki tym informacjom system wie, który certyfikat był w dniu podpisania kodu ważny.
Nie będę się rozpisywał o tym czym jest CA, jak się certyfikaty odwołuje albo tworzy, bo to temat rzeka i można książkę napisać.

5-tego października 2007 roku nic się z certyfikatem nie stanie (jak zresztą można zobaczyć na dwóch załączonych tu obrazkach, zrzuty ekranu zrobiłem w trakcie pisania tego posta). Windows Vista nie zacznie nagle twierdzić, że program nie jest podpisany i zagraża bezpieczeństwu systemu.

To co jednak może być problemem, to aplikacje, które na podstawie daty ważności certyfikatu sprawdzają czy podpis jest prawidłowy. Technika tzw. self-check, dla aplikacji które sprawdzają same siebie w czasie uruchomienia, polegająca na porównywaniu daty systemowej z datą valid to certyfikatu, którym zostały podpisane jest błędna. 5-tego października taka aplikacja po prostu się nie uruchomi, twierdząc że certyfikat, którym została podpisana wygasł. Oczywiście jest to prawda, certyfikat wygasł, ale nie oznacza to, że jest nieważny! Tego typu błędne założenia nadają się tylko do Coding Horror. Poprawna technika opiera się na sprawdzaniu, czy dany certyfikat nie został przypadkiem odwołany. Więcej w linkach poniżej.

Tyle na dziÅ›.

Lektura do poduszki:

- Introduction to Code Signing, MSDN
- Authenticode, MSDN

0 Responses to “Bajki na dobranoc: certyfikaty i podpisywanie kodu”


  1. No Comments

Leave a Reply




Disclaimer

All postings are provided "AS IS" with no warranties, and confer no rights. This weblog does not represent the thoughts, intentions, plans or strategies of Microsoft or any other company or organization. Because a weblog is intended to provide a semi-permanent point-in-time snapshot, you should not consider out of date posts to reflect current thoughts and opinions.
All rights reserved. Quotations from this blog require author's written approval.
PL: Wszelkie prawa zastrzeżone. Cytaty z tego bloga wymagają pisemnego zezwolenia autora.

Add to Technorati Favorites