Da hier in letzter Zeit ein paar mal die Frage nach Lizenzierungssystem gekommen ist, möchte ich euch hier mal meine Idee vorstellen und schauen was Ihr davon haltet.
Man erstellt über RSA zwei Schlüssel-Paare. Das eine verschlüsselt die Kommunikation zum Server, das andere verschlüsselt die Kommunikation zum Client.
Nun fügt man dem Client drei Schlüssel als Ressource hinzu. Den öffentlichen Schlüssel des Servers sowie den privaten und öffentlichen Schlüssel des Clients.
Die Überprüfung, ob ein Produkt Lizenziert wurde erfolgt über ein Key-File, welches mit dem Öffentlichen Schlüssel des Clients verschlüsselt wird.
Ist dieses KeyFile nicht vorhanden, wird eine verschlüsselte Verbindung zum Server hergestellt, über die man den Lizenzkey und evtl. noch andere Informationen überträgt. Der Server meldet dann verschlüsselt zurück, ob die Aktivierung gültig ist oder nicht.
Ist die Aktivierung gültig, werden Systeminformationen verschlüsselt in die Keyfile eingetragen. Nur wenn diese mit den aktuellen Werten übereinstimmen, kann das Programm gestartet werden.
Zum Schutz der Ressourcen, sowie der Prüflogik, habe ich das Programm Confuser verwendet.
Im Anhang gibt es ein Demo-Projekt. RemotingVB.7z
Vorkompilierter Server: .\RemotingServer\bin\Debug\LoggingServer.exe
Vorkompilierter und geschützter Client: .\RemotingClient\bin\Debug\Confused\TestClient.exe
Test-Activation Key = ACTIVATE
Was sagt Ihr dazu? Gibt es noch Schwächen, die ich nicht beachtet habe?
Edit: Eine Kopie vom Confuser liegt in dem Archiv bei. Confuser-Projektdatei liegt im Hauptordner des RemotingClient.
Man erstellt über RSA zwei Schlüssel-Paare. Das eine verschlüsselt die Kommunikation zum Server, das andere verschlüsselt die Kommunikation zum Client.
Nun fügt man dem Client drei Schlüssel als Ressource hinzu. Den öffentlichen Schlüssel des Servers sowie den privaten und öffentlichen Schlüssel des Clients.
Die Überprüfung, ob ein Produkt Lizenziert wurde erfolgt über ein Key-File, welches mit dem Öffentlichen Schlüssel des Clients verschlüsselt wird.
Ist dieses KeyFile nicht vorhanden, wird eine verschlüsselte Verbindung zum Server hergestellt, über die man den Lizenzkey und evtl. noch andere Informationen überträgt. Der Server meldet dann verschlüsselt zurück, ob die Aktivierung gültig ist oder nicht.
Ist die Aktivierung gültig, werden Systeminformationen verschlüsselt in die Keyfile eingetragen. Nur wenn diese mit den aktuellen Werten übereinstimmen, kann das Programm gestartet werden.
Zum Schutz der Ressourcen, sowie der Prüflogik, habe ich das Programm Confuser verwendet.
Im Anhang gibt es ein Demo-Projekt. RemotingVB.7z
Vorkompilierter Server: .\RemotingServer\bin\Debug\LoggingServer.exe
Vorkompilierter und geschützter Client: .\RemotingClient\bin\Debug\Confused\TestClient.exe
Test-Activation Key = ACTIVATE
Was sagt Ihr dazu? Gibt es noch Schwächen, die ich nicht beachtet habe?
Edit: Eine Kopie vom Confuser liegt in dem Archiv bei. Confuser-Projektdatei liegt im Hauptordner des RemotingClient.
SWYgeW91IGNhbiByZWFkIHRoaXMsIHlvdSdyZSBhIGdlZWsgOkQ=
Weil einfach, einfach zu einfach ist!
Weil einfach, einfach zu einfach ist!