Kopierschutz - Wie realisiert man eine brauchbare Internetaktivierung?



  • Ich will meine Software mit einer Internetaktivierung versehen.

    Jetzt habe ich aber folgende Frage.
    Wenn der Kunde die CD mit einer Seriennummer bekommt, und diese bei der Aktivierungsabfrage eingegeben wird, dann wird diese ja an meinen Aktivierungsserver gesendet und der gibt dann ein OK, wenn die Seriennummer noch nicht benutzt wird.

    Das Problem das ich dabei aber jetzt habe ist folgendes, wie verhindere ich jetzt, daß jemand meinen Aktivierungsserver einfach in seinem lokalen Netz immitiert?

    D.h. daß er alle IP Anfragen an die IP Adresse meines Servers einfach in seinem lokalen Netz an seinen eigenen Server umleitet und dort ein kleines Serverprogramm
    installiert, daß einfach den Wert "True" für die Freischaltung zurückliefert?

    Was kann man dagegen machen und wie lösen die großen Firmen das?



  • ssl und certificate authenticity 🙂



  • du könntest dem server eine spezielle message senden. und der server muss darauf eine art check-code zurücksenden, zB eine art md5-has etc auf die message. Natürlich muss die art der berechnugn des rückgabewertes anders als md5 sein. damit kannst du halbwegs sicher stellen, dass der antworter auch wirklich dein server ist.



  • das wunder der asynchronen verschlüsselung. der server hat nen fixen public key. der client erzeugt sich für die kommunikation ein eigenes pair. jetzt benutzt er den public key des servers, um seinen eigenen public key zu verschlüsseln und sendet diesen als authentifizierung an den server. die restliche kommunikation findet jetzt jeweils verschlüsselt statt. der server sendet immer für den client verschlüsselt, der client für den server verschlüsselt.

    das ganze ist natürlich nicht 100% sicher, aber wenn jemand seinen eigenen server basteln will, um das ganze zu umgehen, muss er entweder den privaten schlüssel des servers herausfinden (unwahrscheinlich) oder den client manipulieren, um dessen public key abzufangen, bevor er verschlüsselt wird.



  • slizgnak schrieb:

    das wunder der asynchronen verschlüsselung. der server hat nen fixen public key. der client erzeugt sich für die kommunikation ein eigenes pair. jetzt benutzt er den public key des servers,

    D.h. der Public Key des Servers muß im Programmcode irgendwie eingebettet sein, denn sonst funktioniert das nicht, da dann jeder beliebiger Server seinen Public Key schicken könnte.

    Wenn der Public Key des Servers aber im Programmcode eingebettet ist,
    dann kann man diesen auch mit dem PK des eigenen Servers austauschen.



  • sulibar schrieb:

    Wenn der Public Key des Servers aber im Programmcode eingebettet ist, dann kann man diesen auch mit dem PK des eigenen Servers austauschen.

    Man kann nichts 100% sicher machen. Aber grundsätzlich ist dies mit Sicherheit eine der gangbarsten Methoden (Kompromis aus Sicherheit und Implementierungsaufwand).



  • Hi,

    wenn die Software aus der Seriennummer und Daten des jeweiligen Rechners (z.B. LaufwerksID...) eine Nummer berechnet, und Dein Internetserver daraus nach eigenem geheimen Algorithmus eine Kontrollsumme berechnet und die zurückschickt und die dann auf dem Rechner überprüft wird müsstest Du schon auf der richtigen Seite sein. Aber wenn der andere mit einem Debugger umgehen kann nützt das alles nichts.

    Gruß Mümmel



  • Lagere wichtigen Programmcode in eine DLL aus die erst nach der Aktivierung heruntergeladen wird. Die kann ein anderer Server nicht liefern. Allerdings wird die Datei wohl auch in Umlauf kommen ... also evtl. signieren. Aber selbst das schützt nicht vor den Debuggern. Aber vielleicht kann man mit diesem Denkansatz irgendetwas basteln?

    MfG SideWinder



  • Denke dabei bitte aber auch an folgende Eventualitäten:

    • Der Anwender hat auf seinem Rechner mehrere Betriebssysteme laufen (Windows XP, Windows Vista). Was passiert, wenn er die Software auf beiden Systemen installieren möchte?
    • Der Anwender installiert sein System neu. Lässt sich die Software dann wieder problemlos aktivieren?
    • Ist sichergestellt, dass Server bzw. Url auch in drei Jahren noch funktionieren und "alte" Versionen aktivieren?


  • SideWinder schrieb:

    Lagere wichtigen Programmcode in eine DLL aus die erst nach der Aktivierung heruntergeladen wird. Die kann ein anderer Server nicht liefern. Allerdings wird die Datei wohl auch in Umlauf kommen ... also evtl. signieren. Aber selbst das schützt nicht vor den Debuggern. Aber vielleicht kann man mit diesem Denkansatz irgendetwas basteln?

    so hatte ich das auch mal gemacht fuer den kopierschutz der beta, dazu kann man noch in die dll kurz vor dem runterladen eine signatur reinschreiben die den kunden identifiziert bzw auch seinen rechner. das kann fuer die authentifizierung beim start genutzt werden und auch spaeter beim identifizieren wer die dll versucht hat in umlauf zu bringen.


Log in to reply