HAK 2

klucz sprzętowy USB – HAK na Hackera


Klucz USB HAK2 jest nowoczesnym urządzeniem podłączanym do złącza USB komputera umożliwiającym producentom oprogramowania zabezpieczenie ich produktów przed nielegalnym kopiowaniem. Posiada podobne funkcje jak klucze sprzętowe HASP® firmy Aladdin (obecnie SafeNet, Inc.). Dzięki połączeniu możliwości szyfrowania z siłą 3DES, wbudowanej, bezpiecznej, wielofunkcyjnej pamięci nieulotnej oraz właściwych algorytmów może on także pełnić funkcję „strony zaufania” (trusted party) dla komunikujących się z nim aplikacji.

HAK2 nie wymaga instalowania specyficznego dla siebie drivera. Korzysta on ze standardowego drivera HID (human interface device), który jest dostępny w systemie Windows od wersji Windows®98. Driver ten jest dostępny również w każdym innym systemie operacyjnym, który umożliwia podłączenie do komputera klawiatury USB.

Program może współpracować z wieloma kluczami HAK2 jednocześnie włączonymi w gniazda USB. Możliwa jest również bezkonfliktowa praca kilku aplikacji, z których każda komunikuje się ze swoim kluczem HAK2.

Transmisja danych między programem a kluczem HAK2 jest kodowana algorytmem DES. Dla każdej sesji tworzony jest inny klucz transmisyjny w oparciu o hasło użytkownika i liczby losowe.

Zawartość klucza

Dane do klucza HAK2 wprowadzone są przez 3 podmioty:

  1. MicroMade – producenta kluczy HAK2:
    • VID i PID – identyfikator producenta i urządzenia
    • SN – niepowtarzalny 4 bajtowy numer fabryczny danego egzemplarza HAK2
  2. Programista – autor programu wykorzystującego klucze HAK2:
    • SID – identyfikator programu
    • S0 – klucz DES3 do sprawdzania podpisów
    • S1 – klucz DES/DES3 do kodowania/dekodowania danych
    • MST – maksymalny
    • czas sesji – czas po którym zostanie ona zerwana przez klucz HAK2
    • RAC – awaryjny kod kasujący
  3. Administrator – osoba zarządzająca daną instalacją programu:
    • AID – identyfikator instalacji
    • A – klucz DES/DES3 do kodowania/dekodowania danych
    • Inne dane programu – w tym hasła i uprawnienia użytkowników (również administratorów)

Sprawdzanie obecności klucza HAK2

Znalezienie „swojego” klucza HAK2 jest w pewnym sensie sprawdzeniem jego obecności. Jednak wszelkie wykorzystywane w tym celu informacje są jawne. Istnieje więc możliwość zrobienia urządzenia USB, które zgłosi się tak samo.
Wiarygodne sposoby identyfikacji klucza HAK2 to:

  • sprawdzenie, czy klucz HAK2 prawidłowo zakoduje losowe dane kluczem S1 (zamiast umieszczać w programie klucz S1 narażając go na ujawnienie można posłużyć się przygotowanym wcześniej odpowiednio dużym zestawem losowych danych i wyników ich zakodowania)
  • zakodowanie fragmentu programu (np. wyświetlanych tekstów) – do rozkodowania wykorzystywany jest klucz S1 przy każdym uruchomieniu,
  • umieszczenie fragmentu programu w pamięci klucza HAK2 i wczytywanie przy uruchomieniu programu

Kodowanie danych

Klucz A ma w każdej instalacji programu inną wartość ustaloną przez administratora programu. Dlatego może on być wykorzystany do kodowania danych, które mają być dostępne tylko dla użytkowników tej instalacji programu. Dotyczy to zarówno danych przechowywanych na dysku jak i danych przesyłanych między poszczególnymi komputerami.

Bezpośrednie zastosowanie klucza HAK2 (z kluczem A) do kodowania danych jest nieefektywne czasowo i nie zapewnia zmienności kluczy stosowanych do kodowania danych. Jedną z najprostszych możliwości jest kodowanie danych na komputerze za pomocą wygenerowanego losowo klucza K, a następnie zakodowanie go kluczem HAK2 (z kluczem A). Klucz K w tej zakodowanej postaci może być jawnie przesyłany między komunikującymi się ze sobą komputerami lub dołączony do szyfrowanego bloku danych na dysku – jest on bezużyteczny bez klucza HAK2 z właściwym kluczem A.

Klucz HAK2 umożliwia również zakodowanie porcji danych z określeniem ich adresata (wewnątrz grupy o tych samych kluczach A lub S1) – odkodować potrafi je tylko HAK2 o numerze fabrycznym wskazanym przy kodowaniu. Dzięki temu możliwe jest przesyłanie poufnych danych do wybranych członków grupy.
Podpisywanie danych

Podpisywanie danych pozwala na ich zabezpieczenie przed modyfikowaniem przez nieuprawnione osoby. Każdy zestaw danych można przetworzyć w taki sposób, aby uzyskać ciąg bajtów o konkretnej długości zależny od każdego z bajtów danych wejściowych. Uzyskany ciąg bajtów jest podpisem tego zestawu danych.
Programista może to wykorzystać w celu niezależnego udostępniania poszczególnych funkcji programu poprzez wydanie licencji podpisanych cyfrowo. Plik licencji może zostać związany z konkretnym użytkownikiem poprzez wpisanie nazwy użytkownika.
Inną możliwością jest związanie informacji o uprawnieniach z konkretnym egzemplarzem klucza HAK2. Tak przygotowana licencja będzie zaakceptowana tylko przez jeden klucz HAK2.

Sesja

Wszystkie istotne funkcje klucza HAK2 stają się dostępne dopiero po zalogowaniu się użytkownika, czyli otwarciu jego sesji. Wygenerowany wówczas (losowo) klucz transmisyjny chroni wymianę danych pomiędzy programem a kluczem HAK2 – transmisja szyfrowana jest algorytmem DES.

Uwaga!
W kryptologii wyróżnia się algorytmy (ogólnie znane) i klucze (tajne). W niniejszym opisie słowo klucz występuje w dwóch znaczeniach. W połączeniu z symbolem HAK2 oznacza urządzenie jakim jest klucz HAK2 przeznaczony do zabezpieczenia oprogramowania. W każdym innym wypadku oznacza tajny klucz (ciąg danych, zwykle małych rozmiarów, np. klucz do algorytmu DES ma 56 bitów) przeznaczony do kodowania/dekodowania danych za pomocą określonego algorytmu.

Dane techniczne

INTERFEJS USB:
prędkość Low Speed (1,5 Mb/s)
specyfikacja USB 1.1 i USB 2.0
driver HID – human interface device
VID 0x13AB – ident. producenta
PID 0x0001 – ident. produktu
KODOWANIE:
algorytm DES, DES3
klucze S0(168bit) spr. podpisu
S1(168bit) kodowanie
A (168bit) kodowanie
PAMIĘĆ:
pojemność 4 kBajty
organizacja 250 stron po 16 bajtów
temperatura pracy 0°C .. +70°C
wymiary 54 x 18 x 7 mm
masa 2g

Zastosowanie

  • Zabezpieczenie przed użyciem nielegalnych kopii programu – sprawdzanie obecności klucza przy uruchamianiu programu
    Programista generuje tajny klucz S1, wpisuje go do klucza HAK2, a tego dołącza do legalnej kopii programu. W programie umieszcza tablicę z dużą ilością (wygenerowanych uprzednio przez siebie) par: liczba losowa (R) – liczba losowa zaszyfrowana kluczem S1 (RC). Program przy starcie (i/lub co jakiś czas w trakcie swojego działania) wybiera losowo jedną z par i testuje ją: szyfruje pierwszą połówkę pary (R) kluczem HAK2 (S1) i wynik porównuje z prawidłowym (z drugą połówką pary – RC). Pozytywny wynik porównania oznacza, że klucz HAK2 jest legalny – ma wpisany właściwy klucz S1. Klucz S1 pozostaje bezpieczny – programista nie zaszywa go w programie, tylko w kluczu HAK2, skąd nie można go odczytać (można go tylko użyć do szyfrowania).
  • Zabezpieczenie dostępu do programu – logowanie do programu poprzez sprawdzanie haseł użytkowników w kluczu HAK2
    Administrator klucza HAK2 wpisuje do niego użytkowników, może ich być do 250 (tylu ile stron pamięci). Użytkownicy identyfikowani są przez 16-bitowy numer (UID). Użytkownikowi można też przypisać nazwę (login), ale zajmuje ona jedną stronę pamięci (może więc być maksymalnie 125 użytkowników z nazwami). Sprawdzenie hasła (logowanie) przypomina protokół „challenge” – hasło nie jest wysyłane, służy tylko do zaszyfrowania po obu stronach (tj. po stronie programu i klucza HAK2) liczb losowych, które służą do weryfikacji hasła (liczby te utworzą następnie klucz sesji). Dzięki temu niemożliwe jest wyłudzenie hasła przez podejrzenie transmisji lub przez podstawienie urządzenia udającego klucz HAK2.
  • Udostępnianie poszczególnych funkcji programu poprzez wydanie licencji podpisanej cyfrowo
    Programista generuje tajny klucz S0, wpisuje go do klucza HAK2, a tego dołącza do legalnej kopii programu. Następnie wpisuje udostępniane funkcje programu (lub jego parametry, np. liczbę stanowisk, datę wygaśnięcia licencji) do pliku licencji (może być otwartym tekstem). Plik ten podpisuje programowo używając klucza S0 i wysyła użytkownikowi. Program przy uruchomieniu wysyła podpisany plik do klucza HAK2 w celu weryfikacji autentyczności. Jeśli sprawdzenie wypadnie pozytywnie, oznacza to, że plik nie został zmodyfikowany – licencja jest legalna i program może przyjąć zapisane w niej dane. W przypadku chęci zakupu poszerzonej licencji przez użytkownika programu wystarczy przygotować (podpisać) i wysłać odpowiednio „bogatszy” plik licencji. Aby zapobiec Wymienianiu się licencjami między użytkownikami można umieścić w pliku licencji nazwę użytkownika, która pojawi się na wydrukach z programu. Można też każdemu użytkownikowi wysłać klucz HAK2 z unikalnym kluczem S0, i generować pliki licencji indywidualnie.
  • Kodowanie danych zapisywanych na dysku komputera
    Możliwe różne warianty. Np. dzięki możliwości wpisania wielu użytkowników można każdemu z nich udostępniać inny folder dysku po podaniu indywidualnego hasła (klucz HAK2 przypisany do komputera). Możliwe jest też przyznanie dostępu do komputera grupie użytkowników, których klucze HAK2 posiadają ten sam klucz A (klucz HAK2 przypisany do użytkownika).
  • Kodowanie transmisji pomiędzy komputerami w tej samej instalacji
    Np. kodowanie korespondencji (e-mail) między użytkownikami tej samej instalacji (np. między odległymi oddziałami firmy). Administrator wpisuje do wszystkich kluczy HAK2 w danej instalacji ten sam klucz A – dane zaszyfrowane przez jeden z nich będą mogły odczytać pozostałe klucze HAK2 z grupy.
  • Kodowanie danych przesyłanych do innych osób np. przez e-mail
    • Kodowanie do całej grupy, która posiada klucze HAK2 z takimi samymi kluczami S1 lub A
      Kodowanie danych przeznaczonych dla całej grupy, która posiada klucze HAK2 z takimi samymi kluczami S1 (wszyscy użytkownicy danego programu, nawet z innych instalacji) lub A (tylko użytkownicy jednej instalacji).
    • kodowanie z podaniem numeru klucza – tylko ten jeden klucz potrafi odkodować dane
      Możliwe jest także kodowanie do indywidualnego adresata (z podaniem numeru jego klucza HAK2) – tylko ten jeden klucz HAK2 potrafi odkodować dane.
  • Bezpieczne przechowywanie wrażliwych danych o niewielkich rozmiarach
    W kluczu HAK2 można bezpiecznie przechowywać np. klucze szyfrujące, certyfikaty bezpieczeństwa itp. Bezpieczeństwo zapewniają hasła użytkowników i kodowanie transmisji.

Funkcje

HAK2_funkcje

Cennik


Cena klucza uzależniona jest od wielkości zamówienia i kształtuje się następująco:

Ceny netto w PLN za sztukę
zakup do 4 szt. 100,00 zł
zakup od 5 do 19 szt. 95,00 zł
zakup od 20 do 49 szt. 90,00 zł
zakup od 50 do 99 szt. 80,00 zł
zakup 100 szt. i więcej 70,00 zł

Przy regularnych zakupach przekraczających jednorazowo 50 szt. kluczy, cena jest do negocjacji.