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.DLLins 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)
| Gruppe | Funktionen |
|---|---|
| Basis | SglAuthent (erster Aufruf, schaltet Rest frei), SglSearchLock, SglReadSerialNumber |
| Speicher | SglReadData/SglWriteData (32-Bit-Werte; Adressen 0–63 U3, 0–255 U4), SglReadCounter/SglWriteCounter |
| Krypto | SglCryptLock (TEA, 64-Bit-Blöcke, KeyNum: 0 U2 / 0–1 U3 / 0–15 U4), SglSignData (64-Bit-Signatur, kombinierter Modus App+Modul) |
| Verwaltung | SglReadProductId/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.Liboder dynamisch perLoadLibrary()/GetProcAddress().
Challenge-Response-Authentifizierung
- 128-Bit-Zufallsschlüssel erzeugen, einmalig mit
SglWriteKeyins Modul programmieren (vor Auslieferung!) und als Konstante im Programm halten (U2: fester Werkschlüssel). - 64-Bit-Zufallszahl (zwei 32-Bit-Werte, mit wechselndem Seed) erzeugen.
- Zahl per
SglCryptLockim Modul verschlüsseln lassen. - Dieselbe Zahl in der Anwendung per
SglTeaEncipherverschlüsseln. - 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