Miał być szampan, czyli dlaczego nie przechowujemy ważnych danych w Windows 10

Na czym to skończyliśmy? Ach tak. Miałem otwierać szampana, bo certyfikat podpisu elektronicznego właśnie został wydany…

No nie… to by było zbyt proste!

Boje z kartą kryptograficzną, czyli jak sprzedać półprodukt w cenie całego produktu

W pierwszej kolejności trzeba było wygenerować klucze – tutaj dołączona (trochę toporna) aplikacja od Unizeto w pierwszym przypadku miała problem z zapisem klucza, dopiero drugie podejście było udane. Miałem więc pseudo-pendrive z zapisanymi kluczami, które w teorii mają umożliwić cyfrowy podpis aplikacji.

Przyznam, że moje założenie było takie: trzeba opracować procedurę podpisu, w nowej sytuacji i jeśli to możliwe – wyciągnąć klucze kryptograficzne, aby móc podpisywać przy pomocy dotychczasowego kodu (bez modyfikacji dotychczasowej procedury).

Dlaczego?

Cóż..odpowiedź jest trywialna.. problemem było to, że standardowy kod podpisujący program (ten zautomatyzowany) nie działał! Skoro nie działał, trzeba było to robić ręcznie – owszem, udało się podpisać testową aplikację, ale w przypadku naszych programów, ręczne podpisywanie przy testowaniu aplikacji nie jest wykorzystywane – zabiera zbyt dużo czasu.

Stary kod wymaga dwóch kluczowych rzeczy: klucza prywatnego i publicznego (to jest jasne). Więc założyłem – wyciągnę te informację z karty kryptograficznej, automat podpisujący aplikacje ruszy i wszystko załatwione!

Niestety, spędziłem wiele godzin na próbie wykonania tej czynności oraz jeszcze więcej czasu na szukanie po internecie podobnych przypadków.

Finalnie okazało się to niemożliwe.

Czyli reasumując: wydane kilkaset zł, i zamiast tradycyjnej pary kluczy (do których mam wgląd), poprzez bezsensowną decyzję Microsoftu, nie mam dostępu do danych za które zapłaciłem! Mam tylko pendrive wyglądający tak, jak gdyby był zakupiony w sklepie „wszystko za 5zł” , który wymaga ode mnie: podpięcia pendrive na czas podpisywania (nieważne, że mogę mieć inne urządzenia podpięte do portów USB, które muszę wypiąć), przy każdym podpisie muszę wpisać PIN, procesu nie mogę zautomatyzować, bo jak wspomniałem – z jakiegoś względu (zapewne: pseudo bezpieczeństwa) zabroniono eksportu klucza z karty, więc nie mając go, dotychczasowy sposób nie zafunkcjonuje.

Ale ok … podpisuję aplikację ręcznie, uruchamiamy… i co się okazuje?

Wyskakuje komunikat, jak dla aplikacji niezaufanej.

Kurtyna!

Tak proszę Was wygląda postęp*! Wtedy przyznam, kompletnie mnie to zdołowało i miałem ochotę rzucić to wszystko w …. ! Było już daleko po pierwszym, a ja wciąż nie miałem sensownie działającego systemu – miałem natomiast gorsze rozwiązanie niż lata wcześniej!

* jeśli myślicie, że Was to nie dotyczy, wyobraźcie sobie, że np. za kilka lat, aby móc korzystać z internetu musicie mieć podpięte osobiste klucze (pendrive), które identyfikują wszystkie treści wysyłane w internet. Wszystkie komentarze, pliki, akcje… zero anonimowości. A jeśli przypadkiem Wasz klucz ulegnie uszkodzeniu (lub ktoś mając odpowiedni zasób techniczny, wykona jego zdalną kopię i podszyje** się pod Was…) – to już Wasz problem, w końcu jak zgubicie dowód osobisty czy prawo jazdy, to trzeba pofatygować się na jego wyrobienie, a nawet za to zapłacić!

**skoro w sposób oficjalny nie można wyciągnąć klucza prywatnego, nie znaczy, to, że jest to niemożliwe. Prawdopodobnie przy pomocy jakiś (bliżej hakerskich lub nieudokumentowanych) metod uzyskanie takich danych jest możliwe. Więc nawet przy urządzeniu kryptograficznym istnieje jakiś procent szans na uzyskanie klucza (lub wygenerowanie pasującego klucza prywatnego) i użycie go przez osoby nieuprawnione. Zatem powstają pytania: dlaczego jesteśmy zmuszani do używania tego typu rozwiązań? Dlaczego sugerują nam, aby nie podawać w wątpliwość rozwiązań, które mają zapewniać bezpieczeństwo?

Co się działo w międzyczasie

A w międzyczasie już miałem pytania o aktualizację. I jest to zrozumiałe! Klienci otrzymują informację: będą dwie aktualizacje do końca roku (pierwsza była przed grudniem, druga… miała być w grudniu). Jest mi wstyd za to, że tak to długo trwa. Planowo przecież miał być udostępniamy PowerGPS i RaportyGPS z poprawkami, a ja miałem dalej pracować nad funkcjami pracy w pochyleniu (które miały być prezentowane w programach w wersji 2.14). Dodatkowo prośby o pomoc, znalezione błędy, które trzeba wyeliminować w miarę szybko (bo np. nie można czegoś zaimportować).

Co robić?

Cóż… czekając pod koniec grudnia na wydanie certyfikatu, wcale nie czekałem. Przez ten czas zamiast relaksować się zaszyłem się z robotą, walcząc z mechanizmem współpracy z pochyłomierzem i poprawiając/usprawniając programy. W efekcie gdy w teorii miałem pierwszą możliwość ręcznego podpisu programu (czyli w okolicach 4-5 stycznia), programy już częściowo miały zaszyte w miarę funkcjonujące rzeczy, które wymagały dodatkowych testów. Część już nowych rzeczy czekała na wprowadzenie.

Miałem więc możliwość: cofnąć częściowe (nowe) zmiany, wydać wersję 2.13 (niepełną moim zdaniem, skoro już miałem część funkcjonalnych poprawek/zmian), a za miesiąc-dwa 2.14 (z resztą), albo też połączyć część istniejących funkcjonalności, część dopracować i przedłużyć (po raz kolejny) wydanie wersji 2.13, uwzględniając kolejne nowo-zgłoszone rzeczy jeszcze w tym wydaniu. Opcja druga wydawała się bardziej sensowna.

Dzięki tej decyzji, funkcje związane z kompensacją wychylenia zostały uwzględnione jeszcze w wersji 2.13, choć narzut testów związanych z tym tematem nas przytłoczył i mógłbym spędzić co najmniej kolejny miesiąc na tym zagadnieniu – więc nie jest to jeszcze rozwiązanie gotowe na 100% (choć w pewnych przypadkach może być wystarczające do pomiarów).

Nie chcę jednak kazać Wam czekać! Tak więc udostępniam z dniem dzisiejszym wydanie 2.13 (ze wspomnianym eksperymentalnym wsparciem pomiarów w wychyleniu) oraz świeżymi poprawkami. Wydanie jest podpisane cyfrowo (niestety ręcznie), natomiast to co działo się na przełomie roku dało mi siłę do tego, abym mógł pokazać Wam potencjalne alternatywy do Windowsa. Dlaczego tak?

Windows 10 i problemy z tym związane

Czy nasze programy są kompatybilne z 10-tką? Mamy komputer z tym systemem i na nim też testujemy nasze programy, więc odpowiedź jest twierdząca. Nie jest on jednak wykorzystywany w normalnej pracy – ważnych danych w Windows 10 nie przechowujemy i nie zamierzamy. Dlaczego? Cóż…to już kwestia systemu:

Użytkownik jest produktem, czyli jak Microsoft decyduje za Was

W trakcie ostatnich paru miesięcy miałem styczność z osobami, które z różnych względów przesiadły się na Windows 10. U części osób Microsoft wymusił aktualizację (w starszych Windowsach, np. 7 czy 8 komunikaty o aktualizacji były nachalne i można było łatwo przypadkowo system zaktualizować). Część osób straciła swoje dane po tym, jak Windows przeprowadził aktualizację źle i trzeba było system reinstalować na nowo!
Nie jest to dziwne – zważywszy, iż na świecie również dochodziło do takich sytuacji.

Ale skąd wiadomo kto decyduje?

W odróżnieniu od innych wersji, od Windows 10 nie ma dotychczasowej możliwości wyłączenia automatycznych aktualizacji.
To oznacza, iż w każdym momencie (niespodziewanie), np. włączamy komputer, zajmujemy się pracą i nagle wyskakuje komunikat o konieczności aktualizacji, proces aktualizacyjny może nam: wyłączyć jakąś aplikację (przez restart komputera) nie zapisując danych, może nam przyblokować komputer. Niestety o ile w wersjach ostatnich (np. Windows 7/8/8.1) tę aktualizację można było wyłączyć, o tyle w 10 tego nie zrobimy – nie ma funkcji udostępniających tę funkcję!

Można oczywiście kombinować, grzebać głęboko w ustawieniach konsolowych, uruchamiając specjalne skrypty czy blokować określone adresy serwerów Microsoftu. Jeśli dodać do tego, że już z faktem udostępnienia pierwszych wersji Windows 10 było głośno o tym, że system ten prawdopodobnie kradnie informacje i szpieguje użytkownika (wykorzystując mechanizmy telemetrii) – wyłania się bardzo niedobry obraz. Sygnały w których producent Windowsa planuje wprowadzić reklamy, czy też dalej monitorować aktywność użytkownika (nigdy nie wiesz, czy w kolejnej aktualizacji nie zostaną dodane dodatkowe elementy telemetryczne, szpiegujące i analizujące pracę użytkownika) sprawiają, że przestaje się myśleć pozytywnie o tym rozwiązaniu.
Co gorsza – jeśli kupujecie obecnie komputer, dość ciężko jest kupić coś ze starszym systemem. Czy jednak możemy 10-kę downgradeować (obniżyć wersję) do np. Windowsa 7 czy 8? Źródła w sieci mówią tak! Jednak po rozmowie telefonicznej z oddziałem MS okazuje się, że tylko wtedy, gdy kupimy wersję pudełkową Win10 (czyli wersja za tysiąc zł!)
Jeśli kupimy komputer z Windows 10 Home lub PRO OEM (czyli wersją zainstalowaną na komputerze) w sposób legalny prawdopodobnie nie uda nam się zejść do niższych wersji systemu.

Ok idziemy dalej:

narzekałem na certyfikaty, zrobiłem więc test: czy jeśli przygotuję podpisany przez MS aplikację i ją udostępnię, czy wyskoczy ekran podobny dla tego jak dla niezaufanej aplikacji?

TAK, niestety jest to możliwe. Ale mogę za 1500 zł netto (prawie 2 tys. brutto) wykupić jeszcze lepszy certyfikat EV (który jest powiązany z jeszcze dokładniejszą weryfikacją firmy), który „ponoć” nam to zniesie!
Jednak patrząc na obecne doświadczenia, nie wiem czy chcę mieć cokolwiek wspólnego z certyfikatami od MS!

OK, idźmy jeszcze dalej: czy jeśli tak podpisaną aplikację coś zmodyfikuje (np. wirus lub uszkodzenie nośnika), czy Windows ostrzeże mnie o tym? Czy certyfikat podpisu sprawdzi integralność pliki i chociaż do tego się przyda?

Cóż.. niestety, ale odpowiedź jest negatywna. W takich przypadkach Windows po cichu stwierdza sobie: „aha, plik się zmienił, certyfikat jest nieważny”, standardowe okno jak dla niezaufanego dostawcy i żadnej innej informacji! Wyobraźmy sobie, że zmiana nastąpiła w takim miejscu, że program po takiej zmianie może wydawać się pracować prawidłowo, jednak tak nie będzie. Pomimo, iż Windows mógłby takie rzeczy rozpoznać, jednak tego nie robi, czym faktycznie naraża użytkownika na ryzyko.

Jak funkcjonowało nasze stare rozwiązanie (sprzed certyfikatów)? W 99% przypadków po uruchomieniu na starszych wersjach Win nie było komunikatu, na nowszych owszem (standardowy o niezaufanym dostawcy). Ale później – ok, program (a raczej instalator) uruchomiony, bez przeszkód.

Jeśli jednak z jakiś względów plik był uszkodzony – a miałem okazję obserwować reakcję tylko w 3 przypadkach: gdy plik nie został prawidłowo pobrany (kilka przypadków w ciągu paru lat), uszkodzeniu uległa płyta CD (1 przypadek) lub gdy w testach celowo plik był uszkadzany, aby stwierdzić użyteczność mechanizmu. Wówczas aplikacja na starcie o tym informowała i nie pozwalała na dalsze uruchomienie, nie ryzykując potencjalnych strat u użytkownika. Niestety mechanizm był tak skuteczny, że użycie go przed nadaniem cyfrowego certyfikatu sprawiało, że aplikacja wykrywała nieuprawnioną zmianę (modyfikację pliku EXE o certyfikat) i nie pozwalała się uruchomić. Jeśli natomiast aplikacja najpierw była „certyfikowana”, a później przygotowana wg naszej metody: wówczas certyfikat nie był rozpoznawany i pokazywał się ekran Windows z niezaufanym wydawcą. Metody po prostu się gryzły!

Chyba jednak czas popatrzyć przychylniej na nasze starsze metody, bo przynajmniej z punktu widzenia bezpieczeństwa, gwarantują jego wyższy poziom, niż to co oferuje nam Microsoft ze swoimi certyfikatami!

Podsumowanie akcji z certyfikatami

Finał całej akcji (moje osobiste przemyślenia) jest następujący:

  1. Producent Windows (Microsoft) z jakiś względów wprowadza certyfikaty (potrzeba zarobku?) wymaga więc od kolejnych wersji Windows, aby aplikacje były podpisane cyfrowo. Aby jednak certyfikat był honorowany, firma, która „podpisuje” się pod certyfikatem, musi korzystać z certyfikowanej przez MS firmy (dostawcy usług) – tu jest okazja do wprowadzenia odpłatności.
  2. Kasa się zgadza, ale to nie wystarcza, wprowadzane są dodatkowe wymogi, mające na celu pozyskanie większej ilości danych (takie jak np. stosowanie przez jednostki certyfikacyjne nakazowe „prośby” o rachunki za media) oraz sprzedaż półproduktu (karty kryptograficzne, z których nie da się uzyskać pary kluczy kryptograficznych)
  3. W tym momencie mamy już pogorszenie jakości pracy programistów. Duże firmy zapewne wykupią droższy certyfikat i poświęcą czas jakiegoś pracownika na weryfikację (większe jednostki i tak są wpisane do wszelkiej masy rejestrów, dla nich taka kasa to jak na waciki), a że automatyzacja pracy nie działa? Kogo to obchodzi, tym zajmuje się pracownik, niech to robi, za coś mu płacimy!
  4. Jednostki certyfikacyjne muszą jakoś udowodnić, że pobierana przez nich kasa za produkty się należy. W końcu – sam produkt się nie zmienia (a certyfikat to kwestia paru cyfrowych zapisów na serwerze). Z roku na rok centra mogą automatyzować obsługę, więc finalnie jej koszt może być optymalizowany. Jednak jakby jest odwrotnie – w związku z tym wprowadzanie kolejnych, absurdalnych procedur, ignorowanie potrzeb klientów, zgoda na dostarczanie półproduktów użytkownikom (to właśnie jednostki certyfikacyjne powinny firmom takim jak MS podziękować, a nie zgadzać się na utrudnianie życia swoim klientom).
  5. Finalnie – certyfikaty, których zadaniem było łatwiejsze rozpoznawanie zaufanych firm czy programów, nie spełniają swojej roli. Nie zapewniają spójności (integralności/nienaruszalności). Co z tego, że firma np. wykupi certyfikat, jeśli gdzieś po drodze zdarzą się sytuacje, jakie np. ostatnio miały miejsce udziałem firmy Kaspersky (wykradanie danych) czy CCleaner (zhackowany, wysyłał malware przy aktualizacji) . Zmniejszają bezpieczeństwo wymagając obecność urządzeń, które w jakimś procencie/potencjalnie mogą zaszkodzić komputerowi lub wykradać jego dane (nie mam pełnej specyfikacji karty kryptograficznej więc nie mogę wykluczyć potencjalnego zagrożenia bezpieczeństwa, jeśli użyte w niej komponenty będą posiadały np. backdoory [tylne furtki, rozwiązania mające ułatwić przełamanie zabezpieczeń]). Jedyny plus na jaki mogę się tutaj powołać jest taki, że gdyby faktycznie tak było, prawdopodobnie gdzieś ktoś by o tym napisał… Moim zdaniem jest to jednak namiastka bezpieczeństwa, niestety bardzo złudna**.

Jeśli zrobimy taki eksperyment myślowy: założenie fikcyjnej firmy (firma na słupa) – jeśli widnieje w rejestrach, np. CEiDG to ciężko wykazać, że oficjalnie firma nie istnieje. W dzisiejszych czasach ktoś mógłby przesłać fikcyjne poświadczenie NIP czy REGON, ale właśnie obecność publicznych rejestrów CEiDG umożliwia wstępną weryfikację i odsianie takich przypadków. Dodajmy do tego udostępnienie jakiś rachunków za media (również na słupa), dodanie „wpisów” do katalogów/panoram firm, to czy finalnie zapłata kasy sprawi, że jednostki certyfikacyjne czy MS przymkną oko i będzie się można cieszyć szybko wydanym certyfikatem? Jest to bardzo prawdopodobne, patrząc na wspomniane „procedury”. Ale czy tak to powinno działać?

Żeby było ciekawiej – nawet dla inicjatyw typu Open-Source (kod otwarto-źródłowy), gdzie kiedyś certyfikaty podpisu elektronicznego były bezpłatne, teraz trzeba za nie płacić – co prawda jest to „tylko” 100zł netto. ale to trochę jak policzek dla piszącego. Nie dość że tworzy oprogramowanie, które każdy może sobie bezpłatnie pobrać, używać, czy zmodyfikować, to jeszcze ma płacić za cyfrowy podpis! Nie wiem jak dla Was, dla mnie – zbierając wszystkie rzeczy – puzzle układają mi się w jedną całość:

Czy producentowi Windowsa w ogóle zależy na faktycznym bezpieczeństwie użytkowników? Czy tylko na utrzymaniu własnego statusu i zwiększeniu dochodów?

Kiedyś nawet do nich (Microsoft, bezpośrednio do oddziału zagranicznego) napisałem (to było z rok lub 2 wcześniej), skarżąc się na procedury biurokratyczne związane z w/w kwestiami potwierdzeń notarialnych. Efekt niestety: żaden. A przepraszam…chyba jednak nie, skoro pogorszyli jakość, to może jednak ktoś stwierdził, że nie jest dobrze….i jeszcze pogorszył całą sytuację. Brawo.

A czy są certyfikaty na Androida?

Tak są!

Każdy plik instalatora musi być cyfrowo podpisany. Jednak firmie wspierającej Androida (Google) w obecnym momencie (jeszcze…) nie zależy na zarabianiu w tym zakresie. Klucze kryptograficzne generujemy sami (i sami dbamy o ich bezpieczeństwo). Nie ma kupowania czy przedłużania certyfikatów co rok.

W przypadku aplikacji Androida mamy dwie znane metody instalacji:

  • albo szukamy programu w sklepie Google Play i za jego pomocą instalujemy program (jeśli wydawca programu udostępnił program w tym sklepie). Nasz przykład PowerGPS: link
  • albo pobieramy ręcznie plik APK i instalujemy go na urządzeniu – w ustawieniach systemu wybieramy zgodę na „Nieznane źródła”, co umożliwia nam otwieranie i instalowanie ręczne plików typu APK. Nasz przykład PowerGPS: link – po ściągnięciu w Androidzie, otwieramy plik.

I nikt tutaj użytkowników nie straszy niezaufanymi wydawcami, co więcej przy każdej instalacji można dowiedzieć się o uprawnieniach i ew. anulować instalowanie nowego programu.

A więc można to zrobić po ludzku.

Co jednak poradzić zamiast certyfikatów do sprawdzania autentyczności oprogramowania? Czy każdy użytkownik, nawet nieobeznany z arkanami współczesnych rozwiązań IT może zwiększyć swoją świadomość i bezpieczeństwo danych?
O tym – w tym wpisie (żeby tutaj nie było zbyt długo).

Jeśli zatem kiedykolwiek zauważycie windowsowy komunikat o niezaufanym wydawcy: przypomnijcie sobie o wpisach na SkyRasterBlog i mojej refleksji: że tym mechanizmem MS po prostu naciąga ludzi na kasę!

Ja mogę podsumować całość tak:

  • zepsute Święta i Nowy Rok – tylko dlatego, że zakładałem że duża jednostka certyfikacyjna stanie na wysokości zadania!
  • łącznie stracone 2 tygodnie na kwestie związane z problematycznym działaniem certyfikatu i karty kryptograficznej, w tym:
  • kilka dni całkowitego przestoju – związane z pilnym szukaniem rozwiązań, aby móc podpisywać aplikacje, jak do tej pory – gdyby ten czas wykorzystać na ulepszenia programów, zapewne cieszylibyście się szybciej kolejnymi nowościami czy usprawnieniami…
  • w rezultacie: miesiąc opóźnienia w wydaniu aktualizacji, nie zdążyłem także wysłać życzeń świąteczno-noworocznych w tradycyjnym mailingu przy aktualizacji na Święta (swoją drogą, składanie życzeń przy dużej irytacji i frustracji nie jest dobrym pomysłem)

 

Linuksowa krucjata

Przyznam, że nie mam częstych zapytań o wersje linuksowe programów SkyRaster. System ten, pomimo, iż jest darmowy, jednak nie jest tak popularny wśród użytkowników jak Windows (pomimo, iż jest otwarty i przez wiele osób traktowany jako wydajniejszy niż Windows).
Od jakiegoś czasu jednak coraz przychylniej patrzę w tym kierunku. Po pierwsze: jeśli posiadacie telefony z Androidem, czy różne inne urządzenia operujące na bardziej złożonych algorytmach, zazwyczaj wykorzystują one Linuxa (tak, znajdziemy go nawet w telewizorach czy routerach). Myślę, że wiele osób mogłoby podzielać stwierdzenie: gdyby taki np. telewizor miał pracować w oparciu o system Windows, prawdopodobnie byłby: 1) dużo droższy 2) bardziej awaryjny 🙂

Przyznam, że już w grudniu udało mi się uruchomić Raporty na Linuksie i planuję cykl wpisów związanych z tym systemem. Cóż.. możemy tylko podziękować duetowi Microsoft i Unizeto/Asseco, bo gdyby nie cała sytuacja, zapewne dalej byłbym przekonany do Windows w zakresie aplikacji desktopowych. Obecnie – szukamy lepszych alternatyw i myślę, że w tym temacie będzie sporo do odkrycia i podzielenia się z Wami. Po prostu – czuję się w obowiązku przekazanie Wam wiedzy, która jest związana z tym tematem, abyście mogli sobie wyrobić odpowiednie zdanie i wybrać najlepsze rozwiązanie.

Nie znaczy to, że mówię: usuńcie już teraz Windows, zainstalujcie Linuksa. Bo tego typu akcje nigdy nie są tak proste. Tak samo jak aktualizacje. Dlatego też nasze programy nie posiadają automatycznych aktualizacji*. To każdy użytkownik, świadomie powinien podjąć decyzję:

tak! przeskakuję na kolejny poziom (wersję)

Sam użytkuję różne programy i czasem zdarza się, że użytkuję dwie wersje naraz – bo w nowej coś tak zmieniono, że nie da się z tego sensownie korzystać. Gdybym miał być przymuszony do korzystania tylko z najnowszej wersji, nie byłbym zadowolony. W momencie gdy np. decyduję się na aktualizację, organizuję sobie trochę czasu (zakładając, że nie zawsze wszystko działa OK, czasem są nowe rzeczy, z którymi warto się zapoznać) – i przeprowadzam przejście na nowszą wersję.

*w Androidzie, jeśli instalujecie z Google Play i macie zaznaczone automatyczne aktualizowanie aplikacji to sprawa jest inna, faktycznie w tym przypadku system Was wyręczy i dokona aktualizacji automatycznie (ale to można wyłączyć i przeprowadzać ręcznie, więc nie jest to szczególny problem).

Ale się rozpisałem – przepraszam!

Dalszą część – tę końcową, z opisem aktualizacji – przeczytacie pod linkiem: Aktualizacja, powiedzmy noworoczna.

Jeśli natomiast interesuje Was, jak sprawdzić autentyczność oprogramowania odsyłam wpisu pt: Jak sprawdzić czy program jest autentyczny czyli notka o integralności.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *