System Windows chronił ten komputer

Zmora każdego programisty-amatora: użytkownik pobiera aplikację, uruchamia, a tu ekran monitora przyciemnia się i pojawia się wielki napis:

System Windows chronił ten komputer

Filtr Windows SmartScreen uniemożliwił uruchomienie nierozpoznanej aplikacji. Uruchomienie tej aplikacji może narazić komputer na zagrożenie.

I co takiego pomyśli sobie przeciętny internauta? Ten zły programista napisał wirusa, na szczęście system Windows mnie chroni. Jest tylko jeden przycisk – „Nie uruchamiaj” – więc klika.

Zauważyłem dość dużo wejść na moją stronę właśnie po wyszukaniu tego hasła w google, czyli jednak ludzie uruchamiają takie programy i mają obawy, co ten komunikat oznacza (stąd ten wpis).

Oczywiście, jeśli jesteś pewien źródła programu, trzeba po prostu kliknąć „więcej informacji” i „Uruchom mimo to”. Na przykład moje programy są podpisane cyfrowo i pokażą się nawet moje dane, które zostały sprawdzone przez wystawcę certyfikatu. Czyli – jak najbardziej odpowiadam za swoje programy.

Każdy pobrany z internetu plik wykonywalny zostaje oznaczony przez SmartScreen jako „pobrany” i pokazywane jest ostrzeżenie. Z pewnymi wyjątkami, o czym poniżej.

Na szczęście raczej nie dotyczy mnie to – nie zarabiam na tym, nie zależy mi na tym, żeby ktoś z moich programów korzystał, a z mojego najbardziej znanego programu (launcher Minecrafta) korzystało może kilkaset osób. To właśnie wtedy ludzie (przeważnie młodzi) zaczęli mnie podejrzewać, że wciskam im jakiegoś trojana. Wiele razy musiałem tłumaczyć, co to oznacza. A wszystko przez jeden komunikat, który łatwo źle zinterpretować.

Rozumiem jak najbardziej potrzebę chronienia użytkowników przed pobieranymi z sieci programami, ale czy nie można by sformułować ostrzeżenia w inny sposób?

Oczywiście, można kliknąć mały napis „Więcej informacji„, który niezgodnie z logiką powoduje pokazanie się przycisku „Uruchom mimo to”. Bardziej zaawansowani użytkownicy Windowsa po prostu wyłączają filtr SmartScreen i sami pilnują co pobierają.

Co programista możne zrobić? Właściwie niewiele.

  • Kupić certyfikat EV (Extended Validation Certificate) – kosztuje on kilkaset USD rocznie. Podpisanie kodu takim kluczem powoduje zlikwidowanie ostrzeżeń. Niestety, poza barierą finansową, jest jeszcze inna: taki certyfikat może uzyskać jedynie organizacja lub firma – czyli nie osoba fizyczna.
  • Zostać partnerem Microsoft – niestety Microsoft, z tego co wiem, nie jest nawet zainteresowany współpracą z niewielkimi firmami, a co dopiero z pojedynczymi osobami.
  • Liczyć na to, że program pobierze i uruchomi odpowiednia ilość osób – prawdopodobnie powyżej tysiąca/kilku tysięcy – jaka jest procedura wie tylko Microsoft. Wtedy także ostrzeżenie zniknie. To również nie jest rozwiązanie dla zwykłego niszowego programu.

Podpisanie programu zwykłym kluczem – takim wystawionym przez CA (Certificate Authority) uznanych przez Microsoft, Google i wszystkie inne liczące się firmy także niewiele daje. Ja jako posiadacz takiego certyfikatu zostałem sprawdzony według odpowiedniej procedury. Firma nadająca mi certyfikat sprawdziła moją tożsamość i miejsce zamieszkania, mogę dzięki temu podpisywać cyfrowo swoje programy. Pobierając taki program użytkownik widzi, że jestem jego wydawcą, a certyfikat jest prawidłowy. Niezbyt wiele to jednak daje – wyświetla się ten sam komunikat, choć czytałem, że podpisane cyfrowo  programy trochę szybciej zostają zatwierdzone i ostrzeżenie znika.

Prościej mówiąc, każdy system operacyjny ma „wbudowaną” pulę wystawców, którym system ufa – to firmy takie jak Comodo, Certum, StartSSL (to od nich mam swój certyfikat) – stąd uruchamiając mój program użytkownik widzi, że tożsamość autora jest sprawdzona. Widać też, że program nie został zmodyfikowany. Zmiana jednego znaku unieważnienie podpis. To i tak nie pomaga i system „chroni ten komputer”.

Program można też podpisać kluczem wystawionym przez siebie (lub nieautoryzowanego wystawcę) – „self signed certificate” – to jednak nie znaczy zupełnie nic. Jedyna korzyść jaka z tego płynie to fakt, że użytkownik, który już raz „zaufał” danej osobie, ma pewność, że inne programy podpisane tym samym kluczem pochodzą od niej. Tak samo ma pewność, że nikt inny ich nie modyfikował. Można sobie taki certyfikat ręcznie dodać do systemowej puli kluczy jako zaufany.

Podobna zasada obowiązuje przy certyfikatach SSL – czyli fakt, że strona internetowa jest „bezpieczna” – nie chodzi tu tylko o to, że ruch jest zaszyfrowany i nikt inny go nie przechwyci. Ważne jest też to, że np. strona banku należy rzeczywiście do banku, za co poświadcza wystawca certyfikatu. Można jednak samemu „podpisać” swoją stronę – tylko dlatego, żeby uniemożliwić podglądanie ruchu sieciowego i zagwarantować, że po drodze nikt niczego nie podmieni/przechwyci.

Na szczęście jednak żadna przeglądarka nie wyświetla ostrzeżenia o niebezpieczeństwie po wejściu na niepodpsaną cyfrowo, lub co gorsza, nieautoryzowaną przez Microsoft stronę. To chyba oznaczałoby koniec wolnego internetu.

Może taki właśnie komunikat ma zniechęcić autorów do pisania niejako „wolnych” i niezależnych aplikacji win32 i przejścia pod „opiekę” Microsoft Store?

Napisz odpowiedź

Twój adres e-mail nie zostanie opublikowany.