Korzyści z podpisu cyfrowego aplikacji

0

Na początek, proszę skorzystać z ankiety "Czy warto stosować podpis do aplikacji ?".
Ankieta ważna do: ~09.02.2010.

Doszedłem do wniosku, że zabezpieczenie stosowane w Windows Vista/7 jakim jest UAC (User Account Control) nie powinno występować (system Windows nie powinien pytać przez UAC o pozwolenie na podwyższenie uprawnień), gdy aplikacja jest podpisana cyfrowo, a więc jest ona zaufana.

A co za tym idzie, takim podpisem pozbylibyśmy się tego komunikatu UAC przy każdym uruchomieniu aplikacji podpisanej cyfrowo.
Jednak tak nie jest i nie będzie z prostego powodu i wad podpisu cyfrowego.

Podpis może mieć każdy i znowu potwierdziło się powiedzenie, że "Za pieniądze można wszystko mieć". A więc mając podpis można podpisać cyfrowo trojana... i co wtedy ? UAC nie pyta się, bo przecież plik ma podpis więc jest zaufany...

Więc jaki jest sens tego podpisu ? Znikomy, żeby nie powiedzieć że żaden...

1. Aplikacja podpisana cyfrowo i tak nie jest w pełni zaufana w systemie,
System będzie pytał się o pozwolenie na podwyższenie uprawnień tak samo z podpisem w aplikacji i bez podpisu (z tymże UAC przyjmie kolor niebieski zamiast żółtego).

2. Aplikacja podpisana cyfrowo, która została zmodyfikowana - traci ten podpis, ale system o tym nas nie informuje.
Tylko w Windows Vista/7 jest to w komunikacie UAC wyróżnione, ale większość osób nawet nie rozumie co to ten podpis. A więc aplikacja zmodyfikowana nie będzie miała już podpisu i tak samo się uruchomi jak wcześniej przed modyfikacją kiedy miała jeszcze podpis.

I tu istnieje zasada: jeśli znasz aplikację to i tak jej zaufasz przy uruchomieniu.
Tym samym podpis to tylko dodatek - drogi dodatek.

3. Stosują go tylko firmy
Ze względu na cenę, która jest niewspółmierna do korzyści.

Kiedy zakładałem ten podpis, pytali mnie o nazwę firmy, NIP i różne sprawy związane z firmą.
To ja się pytam ich "Czy tylko firmy mogą złożyć zamówienie o podpis ?" ... Chwila namysłu ze strony konsultanta i odpowiedź "Osoby prywatne także mogą, choć rzadko mamy takie zamówienia".
Hmm, wcale się temu nie dziwię...

Także podsumowując:
Podpis cyfrowy w aplikacji darmowej, a czasem i płatnej nie ma sensu, nie wnosi praktycznie żadnych korzyści z wyjątkiem antywirusów, które podobno automatycznie klasyfikują takie aplikacje za zaufane - ale nie zawsze i nie każdy antywirus tą technikę stosuje.

Napisałem ten post bo jestem Ciekaw opinii innych na temat tego podpisu.
Czy dostrzegacie jakieś zalety ?

Dodam, że podpis kosztuje na rok 600zł (odnowienie na rok ponad 305zł), więc dla dewelopera aplikacji darmowych taki wydatek jest bardzo duży.

0

@Opi, podpisywanie aplikacji to dobry pomysł. Windowsowy UAC jest po prostu do d**y, bo z niewiadomych przyczyn nie traktuje podpisu jako rzeczy pewnej. Lepszym przykładem jest dowolny system weryfikacji podpisu w J2ME.

Co do posiadania przez każdego to podpis identyfikuje delikwenta i jeżeli aplikacja podpisana za pomocą podpisu kwalifikowanego to złapanie żartownisia jest tylko kwestią czasu. Podpis można stosunkowo łatwo zweryfikować poprzez zapytanie się wystawcy o status. Kolejną korzyścią jest zapewnienie, że zmodyfikowana aplikacja utraci ważny podpis. Tu znowu wchodzi spartolona obsługa podpisów przez UAC.

Co do wydawania to NIP podajesz "do faktury", a nie "do podpisu". Podpis jest wystawiany dla osoby fizycznej, a firma występuje w polu dodatkowym podpisu jako informacja w czyim imieniu podpisywane są dokumenty.

Co do podpisywania aplikacji i bibliotek darmowych i o otwartym kodzie to sens jest jeszcze większy. Podpis gwarantuje, że dana paczka pochodzi od głównego producenta, a nie jest jedną z modyfikacji w duchu GPL. Kod zmodyfikowany jest podpisywany przez modyfikującego i to on odpowiada (w sensie GPL, czyli zakładamy, że działa lecz nie dajemy gwarancji) za jego działanie.

Co do kosztów to nie jest to aż tak dużo. Skoro jako deweloper darmowych aplikacji nie potrafisz sprzedać do nich supportu to chyba masz poważny problem.

Podsumowując to nie podpis jest zły, ale jego obsługa w programie udającym system operacyjny. Nie ma zatem powodów by unikać podpisu.

0
Koziołek napisał(a)

@Opi, podpisywanie aplikacji to dobry pomysł. Windowsowy UAC jest po prostu do d**y, bo z niewiadomych przyczyn nie traktuje podpisu jako rzeczy pewnej.

Przecież opisałem, że podpis może mieć każdy, a co za tym idzie, mogę podpisać trojana i wtedy UAC by uruchomiło go bez przeszkód.
A co jeśli podpis zostanie skradziony i ktoś się podszyje pod niego i będzie go używał do własnych niecnych celów ?

Dlatego UAC niestety każdy program, czy to mający podpis czy nie traktuje tak samo. Ma to dobre i złe strony, ale w zasadzie tak jak napisałem, UAC powinno pytać tylko w przypadku gdy aplikacja nie posiada podpisu.

0

Podpis kwalifikowany może mieć każdy, każdy też może go zweryfikować. Jednakże cały myk polega na tym, że w takiej Polsce podpis kwalifikowany mogą wystawić tylko cztery instytucje:

  • Krajowa Izba Rozliczeniowa SA
  • UNIZETO SA
  • Mennica
  • TP SA

Wystarczy zatem sprawdzać czy podpis jest prawidłowy u tych dostawców (nazwa dostawcy jest w certyfikacie). UAC tego nie robi, ale na przyklad Javowy SecurityManager już tak.

0

Aplikacja podpisana cyfrowo i tak nie jest w pełni zaufana w systemie,
System będzie pytał się o pozwolenie na podwyższenie uprawnień tak samo z podpisem w aplikacji i bez podpisu (z tymże UAC przyjmie kolor niebieski zamiast żółtego).

Heh, podpisana aplikacja != bezpieczna i zaufana aplikacja. AFAIK istniał swego czasu trojan podpisany przez certyfikat wystawiony przez VeriSign. Dlaczego miałbym "z automatu" ufać wszystkim podpisanym aplikacjom? Przecież, to nie ja podpisuję, ale producent.

Owszem, w sumie powinienem być w stanie powiedzieć "hej, ufam wszystkiemu od Microsoft, daj mu prawa administratora", ewentualnie warto pomyśleć nad siecią zaufania - skoro MS ufa tej aplikacji, a jej podpis jest prawidłowy, to niech mnie nie pyta, ale robi swoje. Uwaga: nie wolno doprowadzać do absurdów "aplikacja nie podpisana nie może być uruchomiona" jak to robi Symbian lub do czego dąży Trusted Computing.

Owszem, istnieje w wielu głowach takie podejście, że aplikacja podpisana cyfrowo, to aplikacja zaufana, ale to przecież bzdura, bo o ile wiem to podpis gwarantuje tylko, że się nic nie zmieniło, a to, co program robi to sprawa zupełnie inna. Antywirusy IMO powinny od razu kwalifikować programy z błędnym certyfikatem jako zagrożenie - bo jak się coś zmieniło, to mógł się wirus dopisać na przykład, prawda?

Fakt, w Windows, nie jest to zrealizowane najciekawiej - system powinien wyświetlać wielkie okno informacyjne, że coś jest nie tak z aplikacją i jej podpisem. Coś słyszałem, że Google Chrome OS ma mieć podpisane wszystkie swoje komponenty i wywalać alert, jeśli coś się zmieni. To jest prawidłowe.

0
Ktos napisał(a)

Owszem, istnieje w wielu głowach takie podejście, że aplikacja podpisana cyfrowo, to aplikacja zaufana, ale to przecież bzdura, bo o ile wiem to podpis gwarantuje tylko, że się nic nie zmieniło, a to, co program robi to sprawa zupełnie inna. Antywirusy IMO powinny od razu kwalifikować programy z błędnym certyfikatem jako zagrożenie - bo jak się coś zmieniło, to mógł się wirus dopisać na przykład, prawda?

Tak powinno być i prawdopodobnie już takie sprawdzanie mają co lepsze antywirusy komercyjne.

Ktos napisał(a)

Fakt, w Windows, nie jest to zrealizowane najciekawiej - system powinien wyświetlać wielkie okno informacyjne, że coś jest nie tak z aplikacją i jej podpisem. Coś słyszałem, że Google Chrome OS ma mieć podpisane wszystkie swoje komponenty i wywalać alert, jeśli coś się zmieni. To jest prawidłowe.

Tak tylko jak to sprawdzić że podpis uszkodzony ?
http://4programmers.net/Forum/viewtopic.php?id=152859

0

Zgadzam sie z Ktosiem. W Winie jest repozytorium zaufanych certyfikatow i glownych wystawcow (to drugie na pewno jest aktualizowane przez Microsoft). Tyle, ze ufanie z automatu jest bledne. Jesli wystapi blad, np. ktos w jakis sposob podpisze trojana podpisem wystawionym przez zaufanego dostawce, to fakt, latwo to bedzie znalezc, ale PO fakcie. Jak trojan zainfekuje juz troche kompow i media beda trabily o blamazu wystawcy, systemu i producenta-wlasciciela podpisu. Ja bym na miejscu zadnego z nich nie chcial ryzykowac.

0

Można posiadać białą listę firm, którym ufamy. Wtedy programy podpisane kluczami takich firm byłyby automatycznie uznawane za bezpieczne.

W końcu i tak jak ktoś zobaczy, że jakiś programik od Google chce pobrać jakiś dodatkowy moduł to zatwierdza to. Podobnie z Microsoftem lub Adobe.

W sumie to jest to co johny-bravo napisał: repozytorium zaufanych certyfikatów.

Co się stanie jeżeli ktoś podpisze trojana kluczem Google? Po pierwsze taka sytuacja jest raczej niemożliwa. Zapewne każdy program przechodzi testy jakości przed podpisaniem i wydaniem. Po drugie chyba nikt nie pisze trojanów w Google czy Microsofcie.

Cyfrowy podpis to wskazówka dla klienta, że firma czuje się bardziej odpowiedzialna za swój produkt.

Albo przypadek instalowania programu z płyty od kolegi.

0
donkey7 napisał(a)

Zapewne każdy program przechodzi testy jakości przed podpisaniem i wydaniem. Po drugie chyba nikt nie pisze trojanów w Google czy Microsofcie.

Google i Microsoft to nie jedyne firmy na swiecie, ktore posiadaja podpisany certyfikat. Moze go miec kazda firma, ktora zostanie zweryfikowana przez wydawce. Przy czym "weryfikacja" zalezy pewnie od wydawcy poswiadczenia. Ja moge sobie wyobrazic, ze w malej firmie, w ktorej pracuje, powiedzmy 10 programistow, jakis wkurzony pracownik odchodzi i zabiera niepostrzezenie certyfikat. A pozniej robi im na zlosc.

A co do pierwszego - ciezko zdefiniowac testy jakosci. Jak stwierdzisz, ze jakas aplikacja, majaca np. 100 MB w pewnych specyficznych wypadkach nie instaluje wirusa? Nie stwierdzisz raczej. Wydawca nie bierze odpowiedzialnosci za dzialanie programu. Stwierdza natomiast TYLKO i AZ tyle, ze osoba podpisujaca sie tym certyfikatem jest osoba, za ktora sie podaje. Stad taki Verisign raczej w ogole nie interesuje sie tym, co jest podpisywane wydanym przez nich certyfikatem. Raczej tym, zeby robila to jedyna wlasciwa osoba.

0

Hm, pracownicy chyba nie mogą mieć dostępu do klucza prywatnego certyfikatu. Tzn wydaje mi się że to powinno tak działać że gotowy program wysyła się do centrali i tam jest podpisywany i zwracany.

Google i MS to nie jedyne takie firmy, ale to jest tylko przykład. Każdy miałby swoją listę zaufanych producentów.

Programy przed wydaniem, nie mówiąc już o podpisaniu przechodzą testy na obecność szkodników. Z drugiej strony niektóre programy wymagają specjalnych uprawnień np program do przechowywania haseł czy szyfrowania dysku. Ciężko sprawdzić czy taki program wyrządza szkody poprzez analizę jaką wykonują programy zabezpieczające.

Certyfikaty w przypadku programów spełniają podobną rolę jak certyfikaty SSL: zapobiegają podszywaniu się dowolnej osoby pod jakąś organizację. I to jest jedyna chyba funkcjonalność podpisu.

Jeżeli łączycie się z bankiem to widzicie że połącznie jest szyfrowane kluczem z certyfikatem. Dzięki temu jesteście pewni że łączycie się z bankiem a nie oszustem. Mimo wszystko w oprogramowaniu banku mogą być błędy, względnie bank może oszukiwać klientów, ale przed tym nie da się prosto zabezpieczyć. Tak samo jest z programami.

0

@Opi, podpisywanie aplikacji to dobry pomysł. Windowsowy UAC jest po prostu do d**y, bo z niewiadomych przyczyn nie traktuje podpisu jako rzeczy pewnej. Lepszym przykładem jest dowolny system weryfikacji podpisu w J2ME.

UAC JEST PO TO [CIACH!] ZEBY SIE ZASTANOWIC CZY MA SIE TEN PROGRAM OTWORZYC CO Z TEGO ZE PROGRAM JEST OD SUPER [CIACH!] FIRMY I W OGOLE JAK MOZE MIEC WIRUSA

0

@..., czyli UAC jest do d**y. Podpis służy miedzy innymi do weryfikacji niezmienności podpisywanego programu. Mówiąc prościej podpis jest funkcją klucza prywatnego i funkcji skrótu dla wiadomości (tu programu), którą można zweryfikować za pomocą klucza publicznego zawartego w podpisie.

0

Jeśli aplikacja jest podpisana cyfrowo to UAC powinno raz zapytać się i zezwolić programowi już na stałe startować z uprawnieniami najwyższymi.

Jakakolwiek ingerencja w plik, niszczy podpis.

Skoro podpis może uzyskać każdy nawet twórca wirusa, to podpis jest do d**y.
A jeśli UAC pyta się o każdy program tak samo, mimo zaufania do programu, to UAC jest do d**y.

I ogólnie to UAC i podpis to pic na wodę.

0

Linux zatem też jest do d**y, skoro ciągle pyta o hasło admina :)

0

@somekind, nie w ten sposób. Linux pyta o hasło wtedy i tylko wtedy gdy dana operacja wymaga uprawnień administratora. Nie ma problemu z uruchomieniem programu jeżeli użytkownik ma do tego uprawnienia. W przypadku UAC użytkownik może mieć uprawnienia, a i tak będzie co chwila pytany o potwierdzenie.

0

UAC pyta o pozwolenie o wykonanie pewnych operacji, a nie uruchamianie aplikacji - a to różnica. System chroni swoje zasoby przed każdą próbą ingerencji w nie, bez względu na to, skąd ona pchodzi.
To chyba słuszne podejście i tego brakowało wcześniej, przez co ludzie sobie dużo krzywdy zrobili.

0

Hm... czyli wychodzi na to, że UAC działa mniej więcej tak samo jak linux. Różnica polega na tym, że z definicji chroniony jest znacznie większy obszar systemu ponieważ miejsca wrażliwe są znacznie bardziej rozproszone (czytaj jest więcej mniejszych dziur) albo wywoływany jest częściej ponieważ napisanie aplikacji windowsowej, która mogła by działać bez odwoływania się do "zasobów roota" i była by bardziej skomplikowana niż "Hello World!" przerasta umiejętności nawet gości z Microsoftu.

0
Koziołek napisał(a)

Hm... czyli wychodzi na to, że UAC działa mniej więcej tak samo jak linux.

No też mi się tak właśnie wydaje, bo mimo, ze na Linuksie pracuję rzadko, to pamiętam, że każda instalacja czy niektóre zmiany konfiguracji wymagają podania hasła.

Różnica polega na tym, że z definicji chroniony jest znacznie większy obszar systemu ponieważ miejsca wrażliwe są znacznie bardziej rozproszone (czytaj jest więcej mniejszych dziur) albo wywoływany jest częściej ponieważ napisanie aplikacji windowsowej, która mogła by działać bez odwoływania się do "zasobów roota" i była by bardziej skomplikowana niż "Hello World!" przerasta umiejętności nawet gości z Microsoftu.

A podobno narzekania na M$ już jest passe ;)

UAC chroni głównie katalogi systemowe, programów oraz ten nieszczęsny rejestr. Dla porządnie napisanego programu będzie pytał tylko przy instalacji, bo program nie powinien później grzebać w tych miejscach - od konfiguracji czy danych są inne katalogi.

Nie mam obecnie programu, który by mnie pytał o pozwolenie przy uruchamianiu go czy przy wykonywaniu jakichś operacji, a raczej trochę ich używam. W ogóle nie wiem, skąd się ten wątek w tej dyskusji pojawił.
Jest co prawda ileś niepoprawnie napisanych aplikacji, które chcą trzymać dane np. w Program Files, ale to jest wina ich twórców (nieraz się i na forum pojawiają tacy, którzy przekonują, żeby ustawienia trzymać byle gdzie).

M$ zwalił jedną tylko sprawę - niepotrzebnie pozwala to wyłączać, a stado nierozsądnych użytkowników tych systemów powinno być trzymane krótko, edukowane i zabezpieczone na siłę.

0 użytkowników online, w tym zalogowanych: 0, gości: 0