Hallo Leute! Ein Kunde fordert eine Software, die ich demnächst veröffentlichen werde. Allerdings habe ich noch keine Idee, wie ich am besten einen Kopierschutz für die von mir geschriebene Software programmieren könnte, um die Software vor Dritten zu schützen. Ich habe zunächst an eine recht triviale Möglichkeit gedacht, die MAC-Adresse der LAN-Karte des PCs als "Fingerprint" zu nutzen. Was gibt es da für Möglichkeiten? Hardware-Dongle fällt definitiv flach, zu hohe Kosten. Gruß und Danke!
Hi, MAC scheint doch Ok zu sein. Zumindest bindet Altera, TI etc. ihre Software an die MAC Adresse. Gruss
Markus Lebner schrieb: > Hardware-Dongle fällt definitiv flach, zu hohe Kosten. Schonmal über nen simplen (USB-)AVR als dongle nachgedacht, kostet keine 5€....
Ok und wie würdet ihr dann den "Aktivierungsprozess" machen? Nach der Erstinstallation wird die MAC des Kunden-PCs ausgelesen. Diese wird mir dann zugeschickt. Ein Tool auf meinem PC generiert einen Schlüssel aus MAC und Algorithmus. Dieser wird dann dem Kunden übergeben. (Kunden-Software prüft quasi, ob die ihr bekannten MAC-Adresse der passende Algorithmus zugrunde liegt). Wenn ja, wird in die Registry irgendein Flag geschrieben, oder notfalls auch in eine verschlüsselte Datei. Oder habe ich noch einen Denkfehler?
Ja, es gibt einen kleinen Denkfehler: Die MAC lässt sich mit geeigneten Mitteln beliebig ändern, ist also nicht sonderlich zuverlässig.
Ist jetzt nur mal eine Idee ohne weiter drüber nachgedacht zu haben: Man könnte doch auch einen USB-Stick als Dongle (kostet ja nicht die Welt) mitliefern und dessen Seriennummer abfragen. Zur weiteren Verwirrung könnte da noch irgend ein kleines Programm drauf ablegen, mit dem das zu schützende Programm einfach gelegentlich kommuniziert, was aber eigentlich ohne Bedeutung ist. Also Daten an das Prog auf dem Stick und das liefert etwas zurück.
Du brauchst vor allem eine EULA, einen Onlineserver und Chuzpe. Alles weitere ist Standard... http://www.heise.de/newsticker/meldung/Electronic-Arts-Deutschland-aeussert-sich-zu-Spyware-Vorwuerfen-1369395.html Scherz beiseite Wenn deine Software trivial ist, baue genug Nebelkerzen ein. http://thc.org/root/phun/unmaintain.html Wenn deine Software nicht trivial ist, verkaufe dein Brainschmalz also kein Niedrigpreisprodukt sondern Sourcelizenz, Support usw. Aber da sehe ich mit deinem Argument > Hardware-Dongle fällt definitiv flach, zu hohe Kosten. schon schwarz
hardware-dongles und fest damit verbundene software ist der einzig einigermaßen sichere kopierschutz. das sieht man an den ganzen spielen und den versuchen CDs und DVDs zu sichern... nichtmal bill gates hat's in winblöd geschafft, auch diese aktivierung ist zu knacken.
Nicht nur einen, sondern viele. 1) Die MAC lässt sich ändern. 2) Die MAC ändert sich, sobald die Netzwerkkarte geändert wird. 3) Der Algorithmus zur Prüfung lässt sich für einen erfahrenen Cracker binnen weniger Sekunden finden, und aushebeln. Skype, die bisher als die sicherste Software der Welt galt, nutzt dermaßen viele unterschiedliche Kontrollinstanzen, dass eine kleine Änderung sofort auffällt. Einen Quellcode aber soweit zu bringen, dass er eine Veränderung an sich selbst erkennt, ist ein sehr komplexer und komplizierter Vorgang. 4) Ich weiß ja nicht, ob Du eine Steuerung für ein Atomkraftwerk entwickelt hast. Die Aushebelung eines Kopierschutzes ist nur bei interessanter Software mit interessantem Schutz überhaupt ein Thema. Unter Betrachtung der genannten Aspekte (die Liste könnte ich noch deutlich verlängern) mache einfache die Registrierung einfach über einen Schlüssel und gut ist. Und wenn das ganze für eine Firma ist, dann ist eine Online-Registrierung eine Zumutung. Einfachstes Patent: Du generierst einen Schlüssel, der mit dem Programm mitgeliefert wird. Alle Deiner Schlüssel besitzen die selbe Checksumme im einfachsten Fall oder den gleichen MD5-Hash. Im Programm wird darauf geprüft und gut ist. Achja, ich habe Punkt 6 vergessen: Selbst wenn die Arbeit hart war, so sollte man als Entwickler nie glauben, man hätte die wichtigste Software der Welt geschrieben. Und das alleine schon aus reinem Selbstschutz.
> Alle Deiner Schlüssel besitzen die selbe Checksumme im einfachsten Fall oder > den gleichen MD5-Hash. Das sollte hoffentlich in absehbarer Zeit nicht möglich sein ;)
Wirklich sinnvoll geht das nur mit Hardware Schlüsseln. Alladin Key beispielsweise. Der allerbeste Kopierschutz ist aber immer noch ein angemessener Preis, ein gedrucktes Handbuch und ein 1a Support.
Markus Lebner schrieb: > Allerdings habe ich noch keine Idee, wie ich am besten einen > Kopierschutz für die von mir geschriebene Software programmieren könnte, > um die Software vor Dritten zu schützen. Wenn die Software wirklich so weltbewegend besonders ist, daß ein realistisches Risiko der "Raub"kopie besteht, dann ist die einzig sinnvolle Lösung für einen "Kopierschutz" der Einsatz von darauf spezialisierten Dienstleistern (sprich: Donglehersteller à la Aladdin, Wibu, Marx o.ä.). Die dadurch entstehenden Zusatzkosten musst Du allerdings Deinen Kunden aufhalsen. Alle selbst entwickelten Systeme sind prinzipbedingt* unsicher oder ganz erheblich zu teuer oder für den Kunden zu unflexibel. Andererseits gibt es Kunden, die sich gezielt weigern, "verdongelte" Software einzusetzen, eine Einstellung, die ich verstehen kann. *) ohne hier jemandem zu nahe treten zu wollen glaube ich ausschließen zu können, es hier mit ernstzunehmenden Kryptographiexperten zu tun zu haben.
Rufus Τ. Firefly schrieb: > *) ohne hier jemandem zu nahe treten zu wollen glaube ich ausschließen > zu können, es hier mit ernstzunehmenden Kryptographiexperten zu tun zu > haben. Muss dich enttäuschen, ich habe das sogar studiert ;)
>Alladin Key beispielsweise
genau am Besten Alladin Fast-Eye Parallelport-Dongle. Mit dem hatte ich
mal einige Winterabende lang mein Vergnügen. Mach's aber bitte Win98
kompatibel, da's mit SoftICE und BPIO am spassigsten ist.
Mal ernsthaft, die ganzen Dongles sind doch genauso wie ein existenter
Software-Key. Hat man einen, dann fängt man den Traffic ein und emuliert
ihn entsprechend. Geauso wie man die conditional JMPs dem existenten Key
entsprechend durch fixe JMPs ersetzt, das quasie jeder Key gültig ist.
Beim Alladin FastEye von anno 1997 war es IIRC ein 400Bit langer,
repetitiver String, der mit geringfügigen Abweichungen immer wieder
abgefragt wurde.
>> Alle Deiner Schlüssel besitzen die selbe Checksumme im einfachsten Fall oder >> den gleichen MD5-Hash. >Das sollte hoffentlich in absehbarer Zeit nicht möglich sein ;) Eine CUDA-fähige Grafikkarte spielt sich damit.
Frag doch mal bei EA nach. Die haben da gerade sowas nettes das sie "Origin" nennen.
Daniel H. schrieb: >> Alle Deiner Schlüssel besitzen die selbe Checksumme im einfachsten Fall oder >> den gleichen MD5-Hash. > > Das sollte hoffentlich in absehbarer Zeit nicht möglich sein ;) MD5 gilt seit einiger Zeit als gebrochen bzw. zumindest als für ernsthafte Anwendungen eher nicht mehr brauchbar...
Unbekannter schrieb: > Mal ernsthaft, die ganzen Dongles sind doch genauso wie ein existenter > Software-Key. Hat man einen, dann fängt man den Traffic ein und emuliert > ihn entsprechend. Geauso wie man die conditional JMPs dem existenten Key > entsprechend durch fixe JMPs ersetzt, das quasie jeder Key gültig ist. Naja, auf Basis von asymetrischer Verschlüsselung und Challenge Response Verfahren könnte man ein Dongle schon sicher machen. Aber wie du schon gesagt hast, kann man oft einfach den Code anpassen und die JMPs ersetzten. Lösung: Man könnte jetzt anfangen und den Programmcode verschlüsselt auf dem Dongle selbst speichern, der den Code würde dann "on demand" entschlüsselt und zum PC geschickt. Aber da wirts' dann irgendwann lächerlich.
Als jemand der schon auf beiden Seiten stand kann ich dir nur sagen das du dir einfach überlegen musst welche Klientel deine Software anspricht und wie viel sie wirklich wert ist. Dann kannst du entscheiden wie viel dir der Schutz wert ist. Am Ende ist alles knackbar, wenn du den Schutz aber mit jeder Version variierst und neue interessante Features in der Software hast, dann lohnt es sich nicht wirklich sie zu cracken. Wirklich sicher wirst du eigentlich nur indem du essentielle Teile der Software in Hardware oder auf einen Server auslagerst. Sprich, gewisse Berechnungen werden nicht in der Software sondern in der Hardware ausgeführt. Diese sollten natürlich nicht einfach nachvollziehbar sein. Z.B. kann man diverse Tabellen auslagern, welche essentiell für die Funktion sind, auf die man aber nicht einfach schliessen kann. Das liesse sich dann relativ einfach in Hardware implementieren.
Wir standen auch vor der Entscheidung. Haben uns dann aber entschieden, nur einen Pseudo-Schnutz mit RockEye Dongles zu implementieren und den Code soweit wie möglich durch den Dotfuscator zu jagen. Als echten Dongle gibts bei uns ja eh die 2kg schwere Hardware, ohne die die Software keinen Sinn macht. Die Chinesen bekommen noch den RockEye Dongle, den hatten wir aber selbst in weniger als einer Stunde gekackt. Eine Idee war noch, Teile der Software verschlüsselt auf der Hardware zu speichern und erst beim Start zu laden, aber der Aufwand steht meist in keinem Vehältnis zum Nutzen, vor allem da die Software ein Nischenprodukt ist. Ich würde mir das stark überlegen. Viel wichtiger ist eine gerichtsfeste EULA.
Jasch schrieb: > Daniel H. schrieb: >>> Alle Deiner Schlüssel besitzen die selbe Checksumme im einfachsten Fall oder >>> den gleichen MD5-Hash. >> >> Das sollte hoffentlich in absehbarer Zeit nicht möglich sein ;) > > MD5 gilt seit einiger Zeit als gebrochen bzw. zumindest als für > ernsthafte Anwendungen eher nicht mehr brauchbar... Das spielt doch überhaupt keine Rolle. Es ist doch nur das Authentifizierungsverfahren für den Key. Und wie gesagt: Wer so eine Abfrage aushebeln kann und will, schafft das binnen weniger Minuten. Da muss nur der Rückgabeparameter der Prüffunktion in der Hexdatei geändert werden, und gut ist.
Es gibt genügend Firmen die lehnen prinzipiell Kopierschutz ab, der auf "nach Hause telefonieren", Dongels oder anderer Zusatzhard- ware, beruht ab. Auch an den Rechner gebundene SW wird abgelehnt. Wobei der Kopierschutz als solcher voll in Ordnung ist. Der bisher sicherste Kopierschutz ist ein erstklassiger Service, logischerweise nicht über Abzock-Tel-Nummern! So nach der Art: "Wir haben ein Problem, Seriennummer unsere SW ist Xyyyz"; "Sie werden gleich zurückgerufen"; Rückruf binnen 5 min. Problem war gelöst. Die Zeit reicht leicht um zu prüfen, ob der echte Kunde angerufen hat. Zusatz: Man kann ja auch Fehlermeldungen generieren die sehr selten (1 mal pro Jahr) auftauchen, Antwort dann "Drücken Sie die Tasten blabla" und gut ist.
Daniel H. schrieb: > Muss dich enttäuschen, ich habe das sogar studiert ;) ein Studum allein macht noch nicht zum Experten. ;) Nein, mal im Ernst: Tu da einzig richtige und verzichte ganz auf einen Kopierschutz. 1. Der zusätzliche Aufwand verteuerte das Produkt, was es letztlich unattraktiver für den Kunden macht. 2. Wenn dein Programm wirklich sensationell gut ist, wird es sowieso geknackt und kopiert werden. Selbst Hardwaredongles bieten da keinen wirklichen Schutz. 3. Falls dein Programm wieder Erwarten grottenschlecht ist, ist der Kopierschutz eh obsolet, denn dann will es gar keiner kopieren.
Ok Leute, danke erstmal für die guten und interessanten Antworten. Allerdings muss man auch das Klientel der Software betrachten. Und das werden definitiv keine Cracker, Hacker, Hash- und Algorithmusexperten sein. Klar, wissen kann man's nie, aber dafür ist die Software auch zu "klein", um einen derartigen Aufwand mit Dongles o.ä. zu machen. Ich glaube, ich bleibe bei meiner MAC-Adresse. Könntet ihr mir dafür irgendwelche Tipps geben, wie ich das am besten angehe? Gruß
Mit der MAC Adresse musst Du aufpassen. Wenn auf dem Rechner ein oder mehrere virtuelle Rechner installiert sind, hast Du mehrere MAC Adressen.
Toni schrieb: > Der bisher sicherste Kopierschutz ist ein erstklassiger Service, > logischerweise nicht über Abzock-Tel-Nummern! wie hält das jemanden davon ab deine software unerlaubt einzusetzen? oder meinst du dass man die software so grottig programmieren muss dass permanentes händchenhalten durch den support notwendig ist?
Hallo, ich nehme an, du möchtest eine firmenspezifische Software programmieren. Diese wird dann wohl nicht weltweit innerhalb von Minuten verbreitung finden. Angenommen die Anzahl der Rechner, auf dem die Software eingesetzt werden soll, ist überschaubar, wäre eine Möglichkeit, die Software vor dem "Gelegenheitsraubkopierer" zu schützen, folgende: Fahr zum Kunden hin und installier sie vor Ort. Die Funktion der Software könnte an einfache Abfragen wie z.B. die Seriennummer der Festplatte oder des Prozessors geknüpft sein. Jeder Versuch, die Software auf einem anderen System zum Laufen zu bringen, wird scheitern. So hast Du außerdem die Gewissheit, dass die Software auf diesem System garantiert läuft, ohne dass Reklamationen durch fehlerhafte Installation oder Nichtbeachtung von Voraussetzungen kommen. Ganz nebenbei kannst Du auch einen Wartungsvertrag anbieten, um so regelmäßig (im besten Fall ohne etwas tun zu müssen) Geld zu verdienen. Oder du kassierst bei jeder Änderung/Reparatur am System eine entsprechende Summe (z.B. 25€ je angefangene Viertelstunde). Auftrag per Fax mit angegebener Telefonnummer und Unterschrift des Kunden zurück an Dich wäre ratsam. So hast Du gleichzeitig einen schriftlichen Auftrag und die Sicherheit, dass es sich um ein Original handelt. Das Wäre z.B. auch per Fernwartung eine feine Sache. Möglichkeiten gibt es genug, nur musst Du bei dem Wartungsvertrag höllisch aufpassen, dass Deine Software vorher sehr gut getestet wird.
Guten Tag die Runde! Gleich vorweg, ich bin kein Programmierer, bin aber mit Dongle (auch Aladin, hab ich sogar) vertraut, meine ich kenn das. Da ich nun vorhabe einen Automaten zu kreieren, und eigentlich das ganze für mich ist, somit eigentlich sinnlos, ist es für mich aber dennoch wichtig, zumindest mal ansatzweise dies mit den Dongle zu "verstehen". Vieles hab ich da schon gelesen, aber der Punkt ist, dass ich für meinen Automaten einen Schutz benötige, damit die Festplatte alleine sinnlos ist. Im Automaten wird ein PC verbaut, also dachte ich an einen USB Stick, der immer angeschlossen sein muss damit das Gerät normal läuft. (Ohne Abfrage beim Start) - so wie Aladin... Ich benötige auch kein Passwort oder so, nur eben dass, dass bei einer Kopie der Festplatte der eine nichts damit anfangen kann. Logischerweise muss der Stick sicher vor das Kopieren sein bzw auch nicht formatierbar gemacht werden. Ich rede von keiner High Tech Sache, wenns ein "normaler" User nicht schafft da ranzukommen bin ich happy. Es würde mich freuen wenn hier was entsehen könnte. danke
@walter: Moment, das ist vielleicht eine ganz andere Aufgabenstellung. Wenn der Automat ein PC-gesteuertes "Embedded System" (im weitesten Sinne) ist, und von der eigenen Firma gewartet wird, was soll verhindert werden? a) Nachbau durch Konkurrenz b) Manipulation oder Datenentnahme von der enthaltenen Platte durch Kunden?
Danke für die Antwort. Es geht schon um die Datenentnahme. Denn sämtliche Software ist zwar öffentlich, aber ich will einfach verhindern, dass bei Kopieren der ganzen Festplatte einfach die Spiele nicht laufen, ohne "Dongle". Es ist rein ein privates Projekt.
@walter: was du willst ist ein online Schlüssel im RAM. "ich bin kein Programmierer, bin aber mit Dongle (auch Aladin, hab ich sogar) vertraut" ...pffff.... "also dachte ich an einen USB Stick, der immer angeschlossen sein muss damit das Gerät normal läuft. (Ohne Abfrage beim Start) - so wie Aladin..." ...pffff.......pffff.... Ohne Ahnung kann mans gleich sein lassen.
Ist zwar schon ein paar Jährchen her, aber Alladin hat doch auch Lösungen für Nicht-Programmierer. Da gabs doch so ein Verschlüsselungsprogramm, dem wirfst du dein Programm vor und dieses Tool bindet das dann an einen Dongle. Bei starten des Programms läuft erst mal Alladin-Software, die nachsieht ob der Dongle vorhanden ist und nur wenn ja wird dann das in ihm eingebettete Exe gestartet.
Markus Lebner schrieb: > Allerdings muss man auch das Klientel der Software betrachten. Und das > werden definitiv keine Cracker, Hacker, Hash- und Algorithmusexperten > sein. > Klar, wissen kann man's nie, aber dafür ist die Software auch zu > "klein", um einen derartigen Aufwand mit Dongles o.ä. zu machen. Gute Einstellung. Für den Tischler Huber, der bei dir eine Etikettendrucksoftware kauft, tut es auch ein Schlüssel in der Registry, den du ein wenig versteckt anlegst, wenn du bei ihm bist. Das reicht völlig aus, dass er deine Software nicht auch noch auf die anderen 5 PC im Unternehmen ohne dein Wissen verteilt. Und wenn sich Crack-Profis deines Programmes annehmen, hast du sowieso keine Chance.
Ein Kopierschutz erfüllt selten seinen eigentlichen Zweck. Spätestens wenn diese Firma bankrott macht, kannst Du Deine Maschine wegwerfen oder mit einem kleinem Sprung im Programm das Übel beseitigen.
Jedesmal wenn Du einen USB in den Rechner einsteckst, wird der Registry-Eintrag \HKLM\SYSTEM\CurrentControlSet\Services\USBSTOR\Enum aktualisiert. Dort kannst Du die Serie-Nr des Sticks ermitteln.
Mehmet Kendi schrieb: > Dort kannst Du die Serie-Nr des Sticks ermitteln. Idee ist schön, aber kaputte, verschwundene Sticks hatte ich schon wie Sand am Meer. Ein Text auf dem Monitor mit Hinweis auf irgendeine Maschinen-Nr (ausgelesen) und Servicetelefon/Fax 0049... könnte für weitere Kundenkontakte und Nachfolgegeschäfte durchaus gewinnbringender sein. Vorteil ist: auch exportierte oder geklaute Maschinen werden mit der Zeit wieder aufgefunden.
Für wenig Aufwand würde ich folgendes machen: Du suchst einen USB Stick, der eine eindeutige Seriennummer im USB Descriptor einprogrammiert hat. Diese Seriennummer liest zum Beispiel mit dem Tool devcon aus. Mit der Seriennummer als Passwort hast deine Spiele verschlüsselt (Zip, Rar...). Wenn der USB Stick dran steckt, entschlüsselst du beim Systemstart die Spiele mithilfe der wiederum ausgelesenen USB Seriennummer auf eine Ram-Disk und startest sie von dort. Somit kann man die Spiele nur spielen, wenn man genau den USB Stick hat. Jetzt müsste man nur noch verhindern, dass jemand im Betrieb einen USB Stick ansteckt und die entschlüsselten Spiele kopiert. Das könnte man erreichen, wenn man alle USB Ports außer dem für den Dongle-Stick zuklebt/ablötet und beim Abziehen des Dongles die RAM-Disk löscht.
Christian R. schrieb: > Viel wichtiger ist eine gerichtsfeste > EULA. Kann jeder knicken, zumindest in Deutschland: EULAs sind nicht rechtskräftig und nicht bindend, da diese erst nach dem Kauf vom Benutzer akzeptiert werden müssen, aber um rechtskräftig zu sein müssen Vereinbarungen schon vor dem kauf durch den Nutzer gekannt und akzeptiert werden... gab dazu auch mal ein interessantes Video von Semper wo das auch erklärt wurde...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.