SG-Lock – Software-Kopierschutz

Zusammenfassung

Entwicklerhandbuch (Stand Feb. 2016) zum Hardware-Dongle-Kopierschutz SG-Lock (SG Intec, Kiel) für Windows XP–10 (32/64-Bit), Windows CE (nur U4), Linux und Mac OS X. USB-Modul mit Seriennummer, verschlüsseltem Speicher, Zählern und TEA-Verschlüsselung; Einbindung über DLL-API in C/C++, Delphi oder Visual Basic.

Inhalt

System & Modelle

  • Keine Treiberinstallation/Admin-Rechte nötig (Win XP–10): nur SGLW32.DLL ins Programm- oder Systemverzeichnis kopieren, Dongle einstecken. 32-Bit-App → immer 32-Bit-DLL, auch auf 64-Bit-OS.
  • Bauformen: S-Serie (Notebook/Tablet) und U-Serie (Desktop), funktional identisch.
  • Technische Daten U2/U3/U4: Speicher kein / 256 B / 1024 B; Zähler – / 16 / 64 (32 Bit); 128-Bit-Schlüssel 1 fest (nicht überschreibbar) / 2 / 16 frei änderbar; Algorithmus TEA; Schreibzyklen >1 Mio., Datenerhalt >20 Jahre; <50 mA; 47×16×8 mm.

Lizenzkonzept

  • AuthentCode (AC): 48-Byte-Code, einmalig pro Hersteller; trennt Hersteller strikt. Ohne eigenen AC sind nur Demo-Module sichtbar.
  • Product ID (16 Bit, 0–65535): unterscheidet Produkte/Ausbaustufen eines Herstellers; SglSearchLock(PID) blendet fremde Module aus.
  • Schutzstrategien: reine Präsenzprüfung, Startzähler begrenzen, Ablaufdatum im Modulspeicher (pay-per-use), Nutzungszähler einzelner Funktionen.

API (SGLW32.DLL)

GruppeFunktionen
BasisSglAuthent (erster Aufruf, schaltet Rest frei), SglSearchLock, SglReadSerialNumber
SpeicherSglReadData/SglWriteData (32-Bit-Werte; Adressen 0–63 U3, 0–255 U4), SglReadCounter/SglWriteCounter
KryptoSglCryptLock (TEA, 64-Bit-Blöcke, KeyNum: 0 U2 / 0–1 U3 / 0–15 U4), SglSignData (64-Bit-Signatur, kombinierter Modus App+Modul)
VerwaltungSglReadProductId/SglWriteProductId, SglWriteKey, SglReadConfig (Typ, Versionen, Seriennummer, Speichergröße …)
  • Rückgabewerte u. a.: SGL_SUCCESS=0, SGL_DGL_NOT_FOUND=1, AUTHENTICATION_REQUIRED=5, AUTHENTICATION_FAILED=6, NOT_SUPPORTED=7, PARAMETER_INVALID=8, SIGNATURE_INVALID=9, USB_BUSY=10 (>5 s belegt).
  • Bindung statisch via Importbibliothek SGLW32.Lib oder dynamisch per LoadLibrary()/GetProcAddress().

Challenge-Response-Authentifizierung

  1. 128-Bit-Zufallsschlüssel erzeugen, einmalig mit SglWriteKey ins Modul programmieren (vor Auslieferung!) und als Konstante im Programm halten (U2: fester Werkschlüssel).
  2. 64-Bit-Zufallszahl (zwei 32-Bit-Werte, mit wechselndem Seed) erzeugen.
  3. Zahl per SglCryptLock im Modul verschlüsseln lassen.
  4. Dieselbe Zahl in der Anwendung per SglTeaEncipher verschlüsseln.
  5. Ergebnisse vergleichen – bei Gleichheit ist das echte Modul vorhanden. Vergleich auf mehrere Programmstellen verteilen erschwert Cracking.
  • Performance: rein modulintern ≈100 Blöcke/s (~0,8 kb/s); PC-CPU >10 MB/s; kombinierter Modus (unterschiedliche Schlüssel für Modul und App!) vereint beides.
  • Schlüssel sind nur schreibbar, nie lesbar; Demo-Module nutzen die im Handbuch abgedruckten Werkschlüssel.
  • Hilfsprogramm SG-Lock Manager (SglMgr.Exe): Eigenschaften lesen, Product ID schreiben (0–65535), Speicher/Zähler editieren, Krypto testen, dez/hex-Umschaltung.

Quellen

  • raw/SG-Lock_Manual_Deu.pdf – Entwicklerhandbuch, SG Intec Ltd & Co. KG, Feb. 2016

Verwandte Artikel