AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Gedankenspiel: möglichst sicherer Kopierschutz?
Thema durchsuchen
Ansicht
Themen-Optionen

Gedankenspiel: möglichst sicherer Kopierschutz?

Ein Thema von Phoenix · begonnen am 19. Okt 2006 · letzter Beitrag vom 23. Okt 2006
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#1

Gedankenspiel: möglichst sicherer Kopierschutz?

  Alt 19. Okt 2006, 14:03
Ich weiss, das Thema gabs schon zigfach, und ich weiss auch: Einen sicheren Kopierschutz kann es nicht geben. Was jedoch geht, ist den Aufwand für den Angreifer möglichst hoch zu setzen.

Mir geht es darum eine, Idee auf Durchführbarkeit zu prüfen, wie man dieses Ziel mit möglichst wenig eigenem Aufwand realisieren könnte.

Was will ich erreichen?
Ziel soll es sein, eine Lizenz auf einen bestimmten Rechner festzulegen. Das Kopieren der Software soll ohne Funktionalitätseinbussen nicht möglich sein.

Wie will ich es erreichen?
Basis des mir vorschwebenden Verfahrens soll ein Public Key Kryptosystem sein.

Dabei gelten folgende Randbedingungen:
  • Wir befinden uns in der .NET - Welt
  • Der Private Key soll abhängig vom Rechner jedes mal neu berechnet und NIE irgendwo abgelegt werden
    Das heisst: Der Key muss auf einem Rechner jedes mal berechnet werden und immer das gleiche Ergebnis geben. Wird die Software auf einem anderen Rechner ausgeführt ändert sich entsprechend der Key.
  • Ein Teil der Software muss mit dem Public Key des Rechners verschlüsselt abgelegt werden
    Dies erfordert freilich ein eigenes, nur für diesen Rechner verschlüsseltes Assembly.
  • Eine 'Aktivierung' der Lizenz soll über das Internet möglich sein

Idee: Mit einem gültigen (gekauften) Lizenzschlüssel kann einmalig(!) von der Software das verschlüsselte Assembly per Webservice abgerufen werden. Hierzu wird der Public Key und der Lizenzschlüssel übertragen und das verschlüsselte Assembly zurückgeliefert. Ist der Key verbraucht muss ein neuer Key angefordert werden (z.B. wenn die Software von einem Rechner auf einen anderen Umgezogen wird).

Keygens greifen nicht, da ein erzeugter Key in einer Datenbank eingetragen wird und beim abrufen des Assemblys durch den Webservice geprüft und danach gelöscht wird. Somit wird sichergestellt, dass nur gültige und bezahlte Keys auch ein Assembly bekommen.

Das Assembly mit den entsprechenden Funktionalitäten liegt also nur für den entsprechenden Rechner verschlüsselt auf der Platte. Die Applikation liest das Assembly ein, entschlüsselt es mit dem Private Key und läd es. Diese Prozedur ist zwingend, ein unverschlüsseltes Assembly kann nicht geladen werden.

Die Applikation selber ist ein signiertes Assembly, so dass Modifikationen an der Executable dazu führen, dass die Anwendung nicht mehr gestartet werden kann.


Was haltet ihr von diesem Konzept? Insbesondere spreche ich freilich unsere Spezialisten an
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Gedankenspiel: möglichst sicherer Kopierschutz?

  Alt 19. Okt 2006, 14:18
Eines vorneweg ... ich bin kein Experte, bloß weil ich als erster antworte

Mir ist hier
Zitat von Phoenix:
Der Private Key soll abhängig vom Rechner jedes mal neu berechnet und NIE irgendwo abgelegt werden
folgender "Umweg" eingefallen:

Ich (bin einer Böser ) und kaufe mir die Software einmal. Per Debugging bekomme ich heraus wo der private Schlüssel generiert wird. Per DLL-Injection erhalte ich Zugriff auf den Prozess und lese den generierten Schlüssel aus. Dieser wird gespeichet und zusammen mit einem Runtime-Patch (wieder per DLL-Injection) immer "als Konstante" zurückgegeben. -> Imho: geknackt.

Oder?
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Gedankenspiel: möglichst sicherer Kopierschutz?

  Alt 19. Okt 2006, 14:46
Das erste Problem, das ich sehe, ist ermstmal einen Rechner eindeutig zu identifizieren. Woran machst du fest, das es genau dieser Rechner ist ? Wenn ich das Mainboard austausche ist es dann ein neuer Rechner oder noch der Alte ?


Der Kopierschutz sollte ja auch noch für den "ehrlichen" Kunden tragbar sein. Ich entsinne mich nur des Chaos, als XP auf den Markt kam....
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Gedankenspiel: möglichst sicherer Kopierschutz?

  Alt 19. Okt 2006, 14:48
Ein weiteres Problem ist die unbedingt nötige Internetverbindung. Habe ich keine, kann ich das Programm nicht nutzen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
markusj

Registriert seit: 9. Dez 2005
Ort: Kandel
408 Beiträge
 
#5

Re: Gedankenspiel: möglichst sicherer Kopierschutz?

  Alt 19. Okt 2006, 15:18
Zitat von Phoenix:
Keygens greifen nicht, da ein erzeugter Key in einer Datenbank eingetragen wird und beim abrufen des Assemblys durch den Webservice geprüft und danach gelöscht wird. Somit wird sichergestellt, dass nur gültige und bezahlte Keys auch ein Assembly bekommen.
Risiko: Ein Key kann doppelt von dir Ausgegeben werden, keine eindeutige Zuordnung Key-Kunde ... Besser wäre ein "Used"-Flag, welches gesetzt wird.

mfG

Markus
Markus
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#6

Re: Gedankenspiel: möglichst sicherer Kopierschutz?

  Alt 19. Okt 2006, 16:04
Zitat von chaosben:
Per DLL-Injection erhalte ich Zugriff auf den Prozess und lese den generierten Schlüssel aus. Dieser wird gespeichet und zusammen mit einem Runtime-Patch (wieder per DLL-Injection) immer "als Konstante" zurückgegeben. -> Imho: geknackt.
Soweit ich weiss, ist das bei .NET - Programmen nicht möglich. Oder gibts da Gegenbeweise?

Zitat von Luckie:
Ein weiteres Problem ist die unbedingt nötige Internetverbindung. Habe ich keine, kann ich das Programm nicht nutzen.
Das ist kalkuliertes Risiko. Alternativ kann man sich eine schriftliche Aktivierung vorstellen, bei der der Kunde seinen Lizenzkey und seinen Public Key ausdruckt und einschickt und ihm das für ihn verschlüsselte Assembly auf CD zugeschickt wird.

Zitat von markusj:
Risiko: Ein Key kann doppelt von dir Ausgegeben werden, keine eindeutige Zuordnung Key-Kunde ... Besser wäre ein "Used"-Flag, welches gesetzt wird.
Das ändert m.M.n. nichts an der Sicherheit des Systems. Durch das löschen bin ich mir zu 100% sicher, dass die nächste Aktivierungsanfrage keinen Datensatz mehr finden wird und demnach auch keine Aktivierung zulässt.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Gedankenspiel: möglichst sicherer Kopierschutz?

  Alt 19. Okt 2006, 16:20
Zitat von Luckie:
Ein weiteres Problem ist die unbedingt nötige Internetverbindung. Habe ich keine, kann ich das Programm nicht nutzen.
Da ist die Frage, bis wann man darauf noch Rücksicht nimmt. (natürlich unter Berücksichtigung der Zielgruppe)


Zitat von Ghostwalker:
Das erste Problem, das ich sehe, ist ermstmal einen Rechner eindeutig zu identifizieren. Woran machst du fest, das es genau dieser Rechner ist ? Wenn ich das Mainboard austausche ist es dann ein neuer Rechner oder noch der Alte ?
Evtl. könnte man das am Key des OS festmachen. Das wäre wenigstens für alle XP User relativ sicher. Natürlich gibt es auch da viele illegale Kopien, aber das wird auch immer weniger (jedenfalls wenn ich mich da in meinem Bekannten-/Freundeskreis umgucke)
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#8

Re: Gedankenspiel: möglichst sicherer Kopierschutz?

  Alt 19. Okt 2006, 16:36
Nett, hab mir selbst auch schon einmal überlegt, ob .Net nicht eine/die Lösung des Schwarzkopierens (ich hoffe, niemand wird hier das Wort "Raubkopieren" verwenden -.- ) sein könnte.


Zitat von Phoenix:
Zitat von Luckie:
Ein weiteres Problem ist die unbedingt nötige Internetverbindung. Habe ich keine, kann ich das Programm nicht nutzen.
Das ist kalkuliertes Risiko. Alternativ kann man sich eine schriftliche Aktivierung vorstellen, bei der der Kunde seinen Lizenzkey und seinen Public Key ausdruckt und einschickt und ihm das für ihn verschlüsselte Assembly auf CD zugeschickt wird.
Vielleicht gäbe es in Zukunft auch die Möglichkeit, die Signierung gleich beim Kauf durchzuführen (Public-Key mitgebracht auf einem Blatt/Magnetkarte/RFID-Chip/... ). Wobei wie schon von Nicolai erwähnt in dieser Zukunft das Signieren per Internet sowieso kein Problem mehr darstellen könnte.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.640 Beiträge
 
#9

Re: Gedankenspiel: möglichst sicherer Kopierschutz?

  Alt 19. Okt 2006, 17:08
Offtopic:
Zitat von Khabarakh:
(ich hoffe, niemand wird hier das Wort "Raubkopieren" verwenden -.- )
Warum eigentlich nicht? Wer meine Software illegal vervielfältigt 'raubt' mir meine Einnahmen. Das entzieht mir letzlich die Lebensgrundlage. Wenn das zu viele machen und ich nichts mehr verdiene muss ich mir überlegen, ob es sich noch lohnt das weiterzumachen. Meine Pläne gegen später vielleicht sogar mal Mitarbeiter einzustellen wären dann für die Katz' (nein, nicht Du, Sakura). Das vernichtet letzlich sogar Arbeitsplätze. Von daher sehe ich nicht ein, das hier auf die leichte Schulter zu nehmen und als Kavaliersdelikt abzustempeln. Das ist m.E. eine massive Straftat und sollte auch so behandelt werden. Schliesslich steht da meine Existenz auf dem Spiel.

Ende Offtopic
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#10

Re: Gedankenspiel: möglichst sicherer Kopierschutz?

  Alt 19. Okt 2006, 17:16
Zitat von Phoenix:
Der Private Key soll abhängig vom Rechner jedes mal neu berechnet und NIE irgendwo abgelegt werden
Das heisst: Der Key muss auf einem Rechner jedes mal berechnet werden und immer das gleiche Ergebnis geben. Wird die Software auf einem anderen Rechner ausgeführt ändert sich entsprechend der Key.
Woraus willst du ihn berechnen? Der Computername kann sich genau wie eine SID oder die Hardware jederzeit ändern. Allerdings bist du mit der SID noch auf einer relativ sicheren Seite.

Zitat von Phoenix:
Ein Teil der Software muss mit dem Public Key des Rechners verschlüsselt abgelegt werden
Dies erfordert freilich ein eigenes, nur für diesen Rechner verschlüsseltes Assembly.
Wer hat überhaupt den Private und den Public Key? Wenn ich die Software einmal entschlüsselt habe (und die muß ja entschlüsselt werden um zu laufen), ist der Schutz dahin, weil ich dann theoretisch auch eigene Assemblies erstellen könnte, oder?

Zitat von Phoenix:
Keygens greifen nicht, da ein erzeugter Key in einer Datenbank eingetragen wird und beim abrufen des Assemblys durch den Webservice geprüft und danach gelöscht wird. Somit wird sichergestellt, dass nur gültige und bezahlte Keys auch ein Assembly bekommen.
Ab wann gilt ein Assembly als übertragen? Verbindungen können abbrechen.

Zitat von Phoenix:
Das Assembly mit den entsprechenden Funktionalitäten liegt also nur für den entsprechenden Rechner verschlüsselt auf der Platte. Die Applikation liest das Assembly ein, entschlüsselt es mit dem Private Key und läd es. Diese Prozedur ist zwingend, ein unverschlüsseltes Assembly kann nicht geladen werden.
Nochmal, wo sind Public und Private Key gelagert?

Zitat von Phoenix:
Die Applikation selber ist ein signiertes Assembly, so dass Modifikationen an der Executable dazu führen, dass die Anwendung nicht mehr gestartet werden kann.
Das verlagert nur das Problem.

Zitat von Phoenix:
Offtopic:
Zitat von Phoenix:
Warum eigentlich nicht? Wer meine Software illegal vervielfältigt 'raubt' mir meine Einnahmen. Das entzieht mir letzlich die Lebensgrundlage. Wenn das zu viele machen und ich nichts mehr verdiene muss ich mir überlegen, ob es sich noch lohnt das weiterzumachen. Meine Pläne gegen später vielleicht sogar mal Mitarbeiter einzustellen wären dann für die Katz' (nein, nicht Du, Sakura). Das vernichtet letzlich sogar Arbeitsplätze. Von daher sehe ich nicht ein, das hier auf die leichte Schulter zu nehmen und als Kavaliersdelikt abzustempeln. Das ist m.E. eine massive Straftat und sollte auch so behandelt werden. Schliesslich steht da meine Existenz auf dem Spiel.
Lassen wir mal die Kirche im Dorf. Es mag ja sein, daß es eine unangenehme Sache ist, wenn deine Software raubkopiert wird - insbesondere bei einem kleinen Unternehmen. Das Problem ist wohl immer wieder (finde ich zumindest) das Preis-Leistungs-Verhältnis. Oft genug werden popelige Programme für vergleichsweise hohe Summen vertickt, wohingegen gute andere Software zum Teil komplett frei erhältlich ist (OpenOffice.org, GIMP, VMWare Server, Virtual PC ...). Klar muß da eine Abwägung geschehen, aber es ist eben manchmal besser 1000 Stück für 10 Euro zu verkaufen als 10 Stück für 100 Euro. Auch wird zu oft der Privatanwender vernachlässigt und ihm werden keine kostengünstigeren Alternativen angeboten.

Zuguterletzt ist auch die Frage welche Zielgruppe du bedienst. Wird dein Programm sowieso nur von Autohäusern eingesetzt, wird selten ein Cracker auch nur dein Programm als mögliches Ziel ansehen. Cracker machen es aus Spaß und um sich einen Namen in der Szene zu machen ... mit Programmen die keine weite Verbreitung haben, ist das nicht möglich. Nehmen wir aber mal an, dein Programm wäre ein Massenprodukt und auch für diesen Einsatz bestimmt. Ist es wirklich so cool und so dramatisch neu, daß es ein lohnendes Ziel für einen Cracker sein könnte?

Das ist eben das Problem bei etwas was immateriell ist und deshalb beliebig oft ohne Qualitätsverlust kopiert werden kann. "Massive Straftat" halte ich doch für starken Tobak ...

Zitat von Phoenix:
Ende Offtopic
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 6  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz