Mój kolega z teamu i CodeSign PM na EMEA John O’Brien dołączył dzisiaj do blogsfery. To już trzecia osoba z mojego zespołu, która bloguje. Zostało mi przekonać pozostałe 3 osoby…
Tag Archive for 'codesign'
Najnowszy serwerowy system operacyjny Microsoftu ukazał się dzisiaj w wersji RTM - Release To Manufacturing. Oznacza to, że grupa produktowa zakończyła już prace i przekazała skompilowane oprogramowanie do grupy zajmującej się wypuszczeniem produktu na rynek, do mojej grupy - Release Services. Od nas, po stworzeniu tzw. master disc, produkt zostanie przekazany do firm zajmujących się tłoczeniem CD/DVD i pudełkowaniem. Stamtąd już prosto na półki sklepowe i do dystrybutorów. Proste, prawda?
Zanim jednak to nastąpiło, jeszcze w czasie pracy nad ostateczną wersją inna cześć mojej grupy - Product Launch Services (PLS) - pracował nad zebraniem w jedną całość tak istotnych materiałów jak grafika, klucze seryjne (wygenerowane przez jeszcze inną grupę), pudełka, numery produktów (te zapisane w postaci X00-000). Inny dział, Pricing, kalkulował ceny dla każdego rynku europejskiego.
Ja w tym czasie pomagałem grupie Windows podpisać ich kod certyfikatami (authenticode, niektóre także strong name dla .Net Framework), sprawdzić jak reagują na nowy kod programy antywirusowe i kiedy wszystko było OK, dać all-clear. To w miarę zautomatyzowany proces, ale i tak zabawy jest dość sporo.
Business as usual.
Btw, Windows Vista SP1 też się ukazał. Tutaj proces jest nieco odmienny, bo część release’u ląduje na Windows Update. Ale to już zupełnie inna historia …
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 from … to … 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:
==Aktualizacja (16/09/2007)==
Certyfikat tutaj opisany nie zaświadcza, że program, który został nim podpisany jest bezpieczny, jakąkolwiek definicję bezpieczeństwa przyjmiemy. Zdanie to jest zawarte w poniższym tekście, jednak nie wszyscy są w stanie wyłowić taki niuans.
==Oryginał poniżej==
Upadkiem dobrych obyczajów i utratą zaufania można nazwać ostatnie znalezisko firmy Sunbelt Software z USA: spyware podpisany cyfrowo przez Thawte.
![]()
Tutaj można znaleźć wynik skanowania podpisanego przez Thawte pliku. Jak widać, całkiem nieciekawy widok.
Problem jest całkiem złożony. Zaczyna się od tego, że każdy komputer z zainstalowanym systemem Windows (praktycznie w dowolnej wersji) ufa firmie Thawte i jej certyfikatom jako zaufanym i wszystko co jest przez ich certyfikaty podpisywane, traktowane jest jako “bezpieczne”. Jednak firma Thawte jest także zwykłą firmą, której głównym celem jest zarabianie pieniędzy. Nic zatem dziwnego, że sprzeda swoją technologię także firmom czy osobom prywatnym, których celem jest dostarczanie użytkownikom komputerów niezgodnego z prawem oprogramowania: wirusów, adware, spyware, trojanów i temu podobnych. Taki certyfikat kosztuje niemało, ale też nie jest na tyle drogi, by średnio przedsiębiorczy autor szkodnika mógł osiągnąć zyski z takiego zakupu.
Sam certyfikat dostarczany przez Thawte oczywiście nie zaświadcza, że oprogramowanie nim podpisane nie wyrządzi szkód naszemu systemowi i danych na nim zawartych. Jak można zresztą wyczytać z powyższego obrazka, certyfikat oznacza “jedynie”, że kod pochodzi od firmy, dla której certyfikat wystawiono i że oprogramowanie nie zostało zmodyfikowane po jego podpisaniu. Nie ma wzmianki o tym, że program jest “bezpieczny”. Problemem jest interpretacja, jaką zwykło się przyjmować dla kodu podpisanego przez zaufane firmy. W Windows XP, 2000, 2003 i Vista wywołując polecenie certmgr.msc można zobaczyć listę instytucji certyfikujących zakwalifikowanych do grona zaufanych. Jest tam Thawte, VeriSign czy Globalsign. Programy podpisane przez certyfikaty tych firm nie spowodują wyświetlenia ostrzeżenia o uruchamianiu programu pochodzącego z nieznanego źródła.
Czy to może oznaczać, ze Microsoft zadecyduje o wyłączeniu opcji “ufaj Thawte” w jakiejś kolejnej poprawce, SP czy kolejnej wersji systemu operacyjnego? Raczej mało prawdopodobne. Ale może to oznaczać, że Thawte będzie musiało nieco zmienić swoją politykę dostarczania technologii podpisu cyfrowego każdemu kto o to poprosi i zapłaci wystarczająco dużo. W innym przypadku będziemy świadkami dośc poważnego kryzysu zaufania do instytucji certyfikujących (którą na marginesie jest także Microsoft).
Źródło: Sunbelt Software blog

Ostatnie komentarze