Zamknięte na klucz

Firma Aladdin oferuje zaawansowane klucze sprzętowe, służące do zabezpieczania aplikacji przed nielegalnym rozpowszechnianiem.

Firma Aladdin oferuje zaawansowane klucze sprzętowe, służące do zabezpieczania aplikacji przed nielegalnym rozpowszechnianiem.

Sposobów zabezpieczania aplikacji przed nielegalnym kopiowaniem jest wiele. Najprostsze polegają na tym, że klient wprowadza unikalny kod podczas instalacji czy używania programu. Bardziej zaawansowane metody wykorzystują mechanizmy detekcji sprzętu, na którym działa program, i na tej podstawie tworzą klucz jednoznacznie identyfikujący komputer. Taki klucz może być przesłany do producenta aplikacji, który w odpowiedzi odeśle numer seryjny, właściwy dla danej wersji programu i danego komputera.

Jednak wymienione rozwiązania mają zasadniczą wadę. Kod odpowiedzialny za zabezpieczenie znajduje się wewnątrz programu. Tak więc włamywacz analizując kod programu może usunąć zabezpieczenie. W dobie Internetu wystarczy, by jedna osoba złamała zabezpieczenie w aplikacji, a informacja o tym, jak jej nielegalnie używać, dotrze do wszystkich zainteresowanych. Najbardziej skuteczne sposoby zabezpieczeń opierają się na współpracy pomiędzy kodem programu a urządzeniem zewnętrznym - kluczem sprzętowym (HASP).

Aladdin HASP

Aladdin specjalizuje się w konstruowaniu różnych rodzajów kluczy sprzętowych, opierających się na ASIC - Application Specific Integrated Circuit (układ typu PLD). Programista, kupując klucz, otrzymuje własne, unikatowe hasła, które są niezbędne, aby wykonać dowolną ope- rację związaną z kluczem. Firma programistyczna może wykupić serię kluczy z zakodowanym konkretnym hasłem, a następnie zabezpieczyć nimi określoną aplikację. API Aladdin HASP pozwala sprawdzać, czy przyłączony klucz ma odpowiednie hasło, od którego zależy dokładny sposób szyfrowania danych przekazywanych z i do klucza.

Rozszerzona wersja klucza MemoHASP pozwala także na zapisywanie w pamięci klucza dodatkowych informacji (112 lub 496 bajtów). TimeHASP to klucz wyposażony w zegar czasu rzeczywistego i 512 bajtów pamięci. Natomiast NetHASP umożliwia centralne zarządzanie licencjami z poziomu jednego komputera (nie ma potrzeby instalowania kluczy na wszystkich stacjach klienckich).

Wymienione rodzaje kluczy są dostępne w dwu odmianach - jako urządzenia podłączane do portu równoległego drukarki (pozwalają na równoczesne podłączenie klucza i innych urządzeń), a także jako urządzenia przeznaczone do USB. Ponadto Aladdin oferuje klucz sprzętowy w formacie karty PC Card, a także spec-jalnej karty rozszerzającej, wkładanej do komputera. Jest również dostępne rozwiązanie przeznaczone do współpracy z komputerami Macintosh.

Usługi

Podstawową usługą API każdego klucza Aladdin jest (oprócz funkcji sprawdzających istnienie klucza) kodowanie i dekodowanie przekazanego ciągu bajtów. Sposób kodowania zależy od kodu używanego przez programistę. Tak więc oprócz sprawdzania poprawności przekazanego hasła, HASP umożliwia np. zaszyfrowanie fragmentów danych aplikacji i zdekodowanie ich przy użyciu dołączonego klucza.

Dysponując kluczem MemHASP, można zapamiętywać w jego pamięci dodatkowe informacje. Producent oprogramowania może zapisać tam dane na temat opcji dostępnych w aplikacji. W pamięci MemHASP można też na komputerze klienckim zapisać np. licznik uruchomień aplikacji itp.

TimeHASP pozwala kontrolować czas działania aplikacji. Jest też odpowiedni do rozpowszechniania wersji testowych, ograniczonych czasem działania. Ponadto zapewnia zewnętrzny zegar, którego użytkownik nie może samodzielnie przestawiać.

NetHASP pozwala natomiast, by klucz był zainstalowany na jednym z komputerów w sieci. Na tym samym komputerze musi zostać zainstalowany także specjalny serwer licencyjny, z którym komunikują się aplikacje klienckie. NetHASP License Manager może wykorzystywać protokoły TCP/IP, IPX czy NetBIOS. Warto podkreślić, że pamięć znajdującą się na kluczu NetHasp można wykorzystać do kontrolowania dostępu do wielu aplikacji (specjalna aplikacja dostarczana razem z kluczami Aladdin pozwala na kontrolowanie dostępu do 112 programów).

A P I

Interfejs API kluczy Aladdin jest bardzo prosty. Zakłada się, że każda kolejna wersja klucza czy sterownika jest zgod- na wstecz. Ponadto programista może sprawdzać, czy zainstalowany zestaw API zapewnia wszystkie niezbędne usługi. W przypadku podłączenia wielu kluczy każda z funkcji przegląda wszystkie klucze, sprawdzając, który z nich jest zabezpieczony określonym hasłem.

Producent przygotował pliki nagłówkowe i biblioteki pozwalające na natychmiastowe skorzystanie z kluczy w ponad 300 kompilatorach dla DOS, Windows 3.1/95/98/NT/2000, OS/2, Linux, Unix itp. Obsługiwane są nawet takie języki, jak ACTOR. Dołączone są też specjalne skrypty do InstallShield, co umożliwia sprawdzenie obecności klucza już na etapie instalowania pakietu.

API NetHASP nie różni się znacząco od pozostałych. Dochodzą operacje związane z komunikowaniem się z serwerem licencji - sposób jego znalezienia (broadcast czy łączenie się pod konkretnym adresem), sposób zalogowania itp. Funkcje związane z zabezpieczeniem aplikacji są takie same, jak w przypadku MemHASP.

Sterowniki implementujące API są dobrze zabezpieczone. Jest w nie wbudowanych wiele pułapek utrudniających śledzenie, nawet za pomocą debuggerów systemowych (np. SoftIce). Duża część kodu jest polimorficzna, przechwytywanych jest większość wyjątków i przerwań wykorzystywanych przez debuggery. Co więcej, wbudowane zostały procedury zabezpieczające przed debuggerem sprzętowym. Ponadto kontrolowany jest czas przejścia przez procedury, co dodatkowo uniemożliwia śledzenie krokowe.

A może bez API?

Aladdin dostarcza także wiele narzędzi pozwalających na zabezpieczanie aplikacji bez wprowadzania zmian do kodu źródłowego. Envelope pozwala włożyć program do specjalnej "koperty", którą można otworzyć tylko wtedy, gdy klucz jest aktywny i nie przekroczono określonej liczby uruchomień. Envelope modyfikuje określony plik wykonywalny, dopisując do niego kod sprawdzający zainstalowanie klucza. Można także zarządzić, by koperta sprawdzała co np. 10 sekund, czy klucz nadal jest podłączony.

Interesującą opcją Envelope jest tzw. DataHASP. Mechanizm ten pozwala wbudować w kopertę specjalne funkcje sprawiające, że dane zewnętrzne (pliki kon- figuracyjne, pliki zapisywane przez program) aplikacji są najpierw dekodowane przy użyciu klucza. Na przykład można zabezpieczyć standardowy notatnik Windows w taki sposób, by pliki tekstowe były automatycznie szyfrowane/deszyfrowane (przy zapisie i odczycie). Koperta nakładana na program nie jest duża, ma ok. 200 tys. bajtów. Niestety, spowalnia wczytywanie aplikacji. Oprócz programów Win32, można zabezpieczać także aplikacje Win16 i DOS (również korzystające z nakładek np. OVL).

Envelope może także korzystać z mechanizmu FAS, pozwalającego zabezpieczyć więcej niż jedną aplikację przy użyciu jednego klucza wyposażonego w pamięć. Pozwala również na samodzielne określenie komunikatów wyświetlanych dla użytkowników (np. w sytuacji, gdy klucz nie został wykryty). Bez trudu można dostosować go do polskich warunków.

Zdalne dodawanie

Nie każdy klient potrzebuje wszystkich funkcji wbudowanych w aplikację. Jednak przygotowywanie dla każdego z nich osobnego produktu, dysponującego tylko niezbędnymi funkcjami, jest trudne - chociażby dlatego że należy w pewien sposób umożliwić dodanie modułu w przypadku, gdy dany element będzie jednak potrzebny. Aladdin HASP zawiera specjalny moduł, pozwalający kontrolować funkcjonalność aplikacji, odblokowując w razie potrzeby poszczególne jej moduły.

RUS (Remote Update System) to specjalny mechanizm, umożliwiający zdalne aktualizowanie informacji zawartych w kluczu podłączonym do komputera. Tworzone są dwa narzędzia. Jedno to program dla dostawcy aplikacji, drugie jest dostarczane klientowi razem z produktem. W momencie gdy klient chce np. zakupić dodatkowe moduły w aplikacji, odczytuje unikalny ID klucza HASP i wysyła go do dostawcy. Dostawca tworzy hasło RUS, które przesyła klientowi. Klient wprowadza hasło na swoim komputerze, odblokowując tym samym dodatkowe funkcje zabezpieczonej aplikacji.

Oprócz gotowych programów, Aladdin dostarcza specjalne API, pozwalające tworzyć własne aplikacje zarówno dla dostawcy, jak i klienta (np. z interfejsem w narodowym języku).

PCS (Pattern Code Security) to najbardziej zaawansowana metoda zabezpieczania aplikacji. Oprócz dostępu do kodu źródłowego wymaga, by język, w którym tworzona jest aplikacja, pozwalał na równoczesną deklarację i inicjowanie zmiennych. Innymi słowy - PCS powoduje, że wraz z każdym jawnym wywołaniem funkcji API HASP wyzwalane są niejawne odwołania do API, które mogą na siebie wzajemnie wpływać. Co najważniejsze, z punktu widzenia osoby analizującej kod jedno odwołanie do API zmienia różną liczbę elementów w pamięci. Powoduje to, że jeżeli zostanie usunięte podstawowe odwołanie do API, to nie zostanie wykonany cały ciąg operacji!

Jak zabezpieczać?

Instalacja klucza USB nie sprawia trudności. W przypadku klucza podłączanego do LPT mogą wystąpić pewne problemy z niektórymi urządzeniami peryferyjnymi. Jednak co trzy miesiące pojawiają się nowe sterowniki do Aladdin HASP, które usuwają większość problemów. Nic nie stoi na przeszkodzie, by równocześnie podłączać szeregowo kilka kluczy do LPT czy przez specjalne koncentratory do USB (oczywiście do jednego komputera można włożyć równocześnie klucz USB i LPT).

Jednak gdyby okazało się to niemożliwe, można skorzystać z NetHASP.

Należy pamiętać, że nawet najlepszy klucz sprzętowy nie zapewnia automatycznie bezpieczeństwa aplikacji. Należy jeszcze umiejętnie korzystać z usług dostarczanych przez HASP. W dokumentacji Aladdin znajduje się wiele porad, sprawiających, że "złamanie" aplikacji będzie bardzo trudne. Sprawdzanie obecności kluczy powinno być rozmieszczone w różnych fragmentach aplikacji (pomaga tu mechanizm PCS). Jeżeli dane niezbędne do działania aplikacji zostaną zakodowane przy użyciu API HASP, to nie uda się ich odkodować bez klucza. Fakt wykrycia braku klucza nie zawsze trzeba zgłaszać użytkownikowi. Wystarczy, by program zaczął działać wadliwie...

Cena klucza wynosi ok. 100 zł. Droższy jest NetHASP. Polski dystrybutor (http://www.systherm-info.pl ) dysponuje systemem pozwalającym na nadawanie unikalnego kodu programisty, dzięki czemu zamówienia na partię kluczy są realizowane niemal z dnia na dzień.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200