(Portabel) rechnereindeutige Hardwareinfos erhalten?
-
SeppJ schrieb:
Ganz was anderes: Was, wenn ich als pöser Hacker einfach in deiner Exe einen kleinen Sprungbefehl an der Stelle einsetze, wo der Code für die Prüfung losgeht?
Ich halte das eben für wenig realistisch. Es gibt wenige Leute, die sowas machen können und wollen. Ich kann z.B. einigermaßen x86 Assembler und hab einige Projekte damit gemacht, trotzdem wärs mir viel zu umständlich und ich hätte überhaupt keine Lust, meine Zeit dafür zu verschwenden. Und damit sich jemand findet, der sich damit befasst und einen Crack schreibt, muss die Software eben bekannt genug sein. Aber dann kann man eh nichts dagegen machen, weil jede Software wird gecracked, trotzdem macht es keinen Sinn, gar keinen Schutz einzubauen.
Ich kenne keine entsprechenden Bibliotheken, habe mich nicht so intensiv mit dem Thema befasst. Ich weiß aber, dass sowas schnell ausarten kann, weil zwei Firmen, in denen ich bisher gearbeitet habe, eigene Lizenzlösungen gebaselt haben. Das war sehr fehleranfällig und wartungsintensiv und dann sind immer mehr Wünsche und Anforderungen hinzugekommen und dann wird die Lizenzierung schnell zu einem viel zu umfangreichen Teil des Projekts.
-
Hm, klingt gefährlich. Ging es bei den Lizenzen um verschiedene Versionen oder weil die auch für viele Produkte herhalten sollten? Ich bin halt immer gerne jemand, der die Grundversion selbst kurz baut und wenn es umfangreicher wird, dann auf eine entsprechend komplexere Software umrüstet, v.a. wenn ich etwas noch nicht gemacht habe. Jetzt ist dieses Lizenzierungszeug technisch zwar nicht schwierig zu machen, aber trotzdem will ich das Mal selbst gemacht haben.
Sollte das Geschäfts tatsächlich anlaufen, kann ich ja immernoch umsteigen (ja, könnte naiv sein...). Und irgendwie glaube ich, dass meine Maschinencode-Idee zwar nicht neu ist, aber dennoch nicht einfach Mal so in jeder zweiten Bibliothek zu finden ist. Zumindest hätte ich in der Suchzeit vermutlich schon selbst etwas halbwegs Brauchbares gebastelt.
-
Eisflamme schrieb:
Edit: Irgendwie habe ich den Eindruck, dass immer noch nicht ganz verstanden wird, welches Szenario ich verhindern möchte.

Doch. Du möchtest verhindern, dass ein Normalbenutzer Spaß an deiner Software hat, ohne jemanden der selbstständig die Uhr oder MAC-Adresse seines Rechners ändern kann davon abzuhalten, die Software zu kopieren.

Mechanics schrieb:
SeppJ schrieb:
Ganz was anderes: Was, wenn ich als pöser Hacker einfach in deiner Exe einen kleinen Sprungbefehl an der Stelle einsetze, wo der Code für die Prüfung losgeht?
Ich halte das eben für wenig realistisch. Es gibt wenige Leute, die sowas machen können und wollen.
Woot? Das ist das kleine 1x1 jedes Crackers, das allererste was man lernt. Das haben sich die Kiddies früher selber in ein paar Tagen/Wochen beigebracht. Heutzutage gibt es natürlich das Internet mit Anleitungen, da geht das auch in ein paar Stunden, wenn man vorher schon programmieren kann. Das kannst du auch lernen, wenn du dir dieses Wochenende Zeit nimmst. Die naive Technik wirkt heutzutage natürlich nur noch bei alten DOS-Spielen oder Software von Leuten die in Foren nach rechnereindeutigen Hardwareinfos fragen, aber es ist Grundlage fast jeder höheren Cracktechnik.
-
SeppJ:
Doch. Du möchtest verhindern, dass ein Normalbenutzer Spaß an deiner Software hat, ohne jemanden der selbstständig die Uhr oder MAC-Adresse seines Rechners ändern kann davon abzuhalten, die Software zu kopieren.
Die Spaß der Software hängt also für Dich... wovon ab? Mit der normalen Benutzung davon hat das jedenfalls nichts zu tun. Und ich für meinen Teil könnte meine Software nicht so ohne Weiteres cracken. Aber wenn die Skriptkiddies von heute da mehr draufhaben, gehöre ich anscheinend ja zur Schlussgruppe der IT-affinen Benutzer.

Zum Cracken:
Ja, klar, aber das ist halt der Punkt. Wenn sich jemand reinkniet, kriegt er alles hin. Das tun trotzdem 99% der Leute nicht.
-
und 1% der Leute stellt es online für 99% der Leute kostenlos zu verfügung...
-
SeppJ schrieb:
Eisflamme schrieb:
Edit: Irgendwie habe ich den Eindruck, dass immer noch nicht ganz verstanden wird, welches Szenario ich verhindern möchte.

Doch. Du möchtest verhindern, dass ein Normalbenutzer Spaß an deiner Software hat, ohne jemanden der selbstständig die Uhr oder MAC-Adresse seines Rechners ändern kann davon abzuhalten, die Software zu kopieren.


Was geht es den Programmierer an, wann und wie oft ich meine Hardware wechsel. So was crackt man genüsslich in der Mittagspause und hat am Ende weniger Ärger als mit einer Originalversion. Und genau diesen Punkt sollte man verhindern, sonst fühlt man sich als Kunde doch nur verarscht.
-
Wie gesagt, immer nur kritisieren, aber nix Konstruktives beitragen... konkrete Vorschläge, wie ich die Seriennummer dem zahlenden Kunden zur Verfügung stellen soll?
Und sag jetzt bitte nicht: einfach irgendeine Seriennummer generieren, die auf jedem PC klappt. Sonst frage ich mich ernsthaft,
und 1% der Leute stellt es online für 99% der Leute kostenlos zu verfügung..
was dieser Kommentar soll. Denn eine Seriennummer anonym für alle anzubieten, ist ja nun noch um ein Vielfaches leichter als eine gecrackte Software.
Also, Vorschläge?
-
Cyres schrieb:
und 1% der Leute stellt es online für 99% der Leute kostenlos zu verfügung...
Und das ist der Knackpunkt, an denen alle Kopierschütze scheitern. Selbst die hardwareverdongelte PS3 wurde geknackt, weil es auf der Welt tatsächlich jemanden gab, der die Herausforderung suchte und tatsächlich die Chips Schicht für Schicht abgeätzt und analysiert hat. Bei deiner kleinen Software ist solch eine Motivation sicherlich nicht da, aber bei den Kpierschützen die die im Moment vorzuschweben scheinen, reicht es ja, wenn ein genervter Kunde das Scriptkiddie von nebenan fragt, ob er nicht diesen nervigen Kopierschutz wegmachen kann. Und danach verbreitet sich dann die so "verbesserte" Version.Eisflamme schrieb:
Sonst frage ich mich ernsthaft,
und 1% der Leute stellt es online für 99% der Leute kostenlos zu verfügung..
was dieser Kommentar soll.
Das war ein ganz ausgezeichneter Kommentar und ich finde es schade, dass du dies nicht einmal erkennst.
Eisflamme schrieb:
Wie gesagt, immer nur kritisieren, aber nix Konstruktives beitragen... konkrete Vorschläge, wie ich die Seriennummer dem zahlenden Kunden zur Verfügung stellen soll?
[...]
Also, Vorschläge?
Meinst du, wir sind schlauer als alle Spielehersteller zusammen, die seit Jahrzehnten kein Mittel gefunden haben? Das "beste" was derzeit auf dem Markt ist, ist die Internetaktivierung. Es gibt keine sichere Lösung, nur hinreichend umständliche. Und selbst eine triviale Scheinsicherheit ist immer in erster Linie vor allem eines: Nervig fur denjenigen, der sie nicht umgeht.
-
Gut, ich gebe mich geschlagen. Der Hardwareschutz könnte die Leute wirklich enorm stören (wobei ich den praktisch nicht eintreten sehe, wenn ich 2-3 Hardwaresetups pro Benutzer einstelle).
Wieso nicht anerkennen? Der ist so trivial, dass es dabei nichts zu verstehen gibt. Wenn Du aber Mal den Kontext um den Satz herumliest, dann siehst Du, worauf ich hinauswollte: Eine Seriennummer, die man einfach weitergeben kann, ist ohne jeden Zweifel einfacher weiterzugeben als eine gecrackte Software..
-
Eisflamme schrieb:
Das einfachste Szenario ist, dass ein Benutzer seine Daten einfach irgendwem gibt, bei dem es dann automatisch funktioniert. Das passiert ständig, da an ein positives Menschenbild zu glauben ist in meinen Augen naiv.
Es geht gar nicht um irgendein Menschenbild.
Wenn die Benutzer die Software wirklich Bekannten empfehlen und weitergeben, ist das doch perfekt. Bessere Werbung gibt es gar nicht. Es gibt doch nur zwei Möglichkeiten:
- Kann nicht weitergegeben werden, also tut es auch keiner.
- Kann weitergegeben werden und ein paar der neuen Benutzer kaufen dann auch.
Natürlich gibt es Menschen, die nichts bezahlen wollen. Dieser Geiz verschwindet aber nicht auf einmal, wenn die Software DRM-verseucht ist. Da kommt dann eher noch Ablehnung wegen der Überwachung dazu.Eisflamme schrieb:
Natürlich gibt es nicht den perfekten Schutz, aber dieses Szenario zu verbieten hält schon 99% aller Kopiefälle ab. Wenn es darüber hinaus welche gibt, meinetwegen, kein Problem.
Wie viele der illegalen Kopien wären denn vermutlich gekauft worden, wenn es nicht anders gegangen wäre? Wenige, nehme ich an.
Wie viele Käufer gehen durch den "Schutz" verloren, weil sie sich überwacht, genervt, misstraut fühlen oder dein Server mal ausfällt?
Die Sache ist nicht so einfach. Mehr Kopierschutz bedeutet nicht automatisch mehr Umsatz. Es wird gerne vergessen, wer der Dienstleister und wer der Kunde ist.Eisflamme schrieb:
Viele Probleme, die Du sonst so siehst, sehe ich nicht. Server zukünftig weg? Alternativlösung über Update einspielen.
Das wird dann wohl vom nicht vorhandenen Server eingespielt?
Eisflamme schrieb:
Bindung an Hardware? Nicht toll, aber alle anderen Lizenzen erlauben eben obiges Szenario ohne jeden Umstand. Und ich könnte auch Lizenzen auf Zeit anbieten, die wären dann so ähnlich. Ich habe mir aber überlegt, dass ich Nutzern kostenlos anbiete eine weiteres System freizuschalten, wenn dafür eben ein altes System rausfliegt. Das ist dann bei Hardwareänderung ein Aufwand von einer Mail (aber den Service bieten andere ja nicht Mal an, die ebenso ein System nutzen), aber sonst kein Problem.
Bist du eigentlich mal auf die Idee gekommen, dass sehr viele Benutzer mehrere Computer haben? Sollen die dann pro Stück eine Lizenz erwerben oder wie?
Gängige Praxis ist die Online-Aktivierung ohne irgendwelche sichtbaren Einschränkungen. Wenn das jemand missbraucht und seine Lizenz in der ganzen Firma 100 mal aktiviert, merkt man das ja als Lizenzgeber und kann reagieren. Mit Windows zum Beispiel kann man das machen und solange man es nicht übertreibt, tut keiner etwas dagegen.So solltest du das machen, das ist der gute Kompromiss. Der Benutzer wird nach der Installation nur kurz mal genervt mit dem Eingeben einer Nummer aus der Email. Trotzdem hast du die volle Kontrolle durch die Übersicht, auf wie vielen Computern das Programm von wem aktuell verwendet wird.
Das einzige Mittel gegen Cracker ist, ihnen keinen Anreiz zu liefern.
-
Ich geh jetzt nicht mehr auf jeden Punkt ein, weil ich davon viele auch schon beantwortet habe, aber anscheinend entweder nicht alles, was ich schreibe richtig gelesen wird, oder ich es nicht ausreichend ausdrücke, sodass es nicht verstanden wird.
Mit der Nervigkeit für den Benutzer und der darauf folgenden Kundenunzufriedenheit, die dann in schlechterem Ruf, Cracken u.ä. resultiert, bin ich jetzt einverstanden; das meint, habe ich verstanden und stimme euch auch zu.
Also da ich jetzt ja den konkreten Vorschlag "Internetaktivierung" von SeppJ und TyRoXx erhalten habe, hätte ich dazu ein paar Fragen:
- Ist das einfach nur eine zufällige Seriennummer, die aber ein paar Anforderungen genügt, sodass man sich keine ausdenken kann?
- Kann man diese also einfach an jemand anderen weitergeben und dort funktioniert sie?
- Muss man etwas Bestimmtes beachten, um diese Seriennummer zu generieren? Nach welchen Algorithmen macht man das in der Regel?
- Was geschieht online überhaupt? Wird dort einfach nur gespeichert: Maschine xyz hat Seriennummer abc eingesetzt? Evtl. noch ein Mapping an die E-Mail (kann man ja direkt beim Kauf nutzen, ich versende die Seriennummer ja ohnehin per Mail) Und das aber rein fürs Logging und sonst keine großartige Überprüfung (außer, dass die Seriennummer eben existiert und generiert wurde)
-
@Eisflamme
Naja es gibt zwei Möglichkeiten.Entweder der Server hat eine Liste an gültigen Keys, und guckt einfach nur ob die Nummer in der Liste ist. In dieser Variante werden die Keys komplett zufällig generiert, und sind damit nicht fälschbar.
Entweder man generiert gleich haufenweise Keys, und markiert dann nur die verkauften als verkauft, oder man generiert beim Verkauf on-the-fly einen neuen Key und trägt den in der Liste ein. Die Variante mit vorab generierten Keys ist vermutlich sicherer (bezüglich Datenverlust): wenn irgendwann mal kein aktuelles Backup mehr haben sollte, kann man immer noch ein altes einspielen, und alle Keys als verbraucht markieren. Und dann einen Haufen neue Keys anhängen, damit wieder welche verkaufen kann.Nachteil: man muss die Liste der verkauften Keys sichern (backup). Die Kunden hätten vermutlich keine Freude wenn ihre Keys auf einmal nicht mehr gehen.
Oder man verwendet eben einen Key-Generator. Wie man das am besten macht müsste ich auch erst recherchieren, aber ich denke mal es wird auf die Verwendung von Private/Public-Key Verschlüsselungsverfahren ala RSA oder EC hinauslaufen.
Nachteil: wenn einer rausbekommt wie du es machst kann er einen Keygen bauen.
Was dabei natürlich immer möglich ist, ist dass jmd. einen fake Aktivierungs-Server baut und online stellt. D.h. du solltest die Abfrage nicht SO einfach machen dass jedes Script-Kiddy mit Ethereal und zuviel Zeit das gleich geknackt hat.
-
Eisflamme schrieb:
Also da ich jetzt ja den konkreten Vorschlag "Internetaktivierung" von SeppJ und TyRoXx erhalten habe, hätte ich dazu ein paar Fragen:
- Ist das einfach nur eine zufällige Seriennummer, die aber ein paar Anforderungen genügt, sodass man sich keine ausdenken kann?
- Kann man diese also einfach an jemand anderen weitergeben und dort funktioniert sie?
- Muss man etwas Bestimmtes beachten, um diese Seriennummer zu generieren? Nach welchen Algorithmen macht man das in der Regel?
- Was geschieht online überhaupt? Wird dort einfach nur gespeichert: Maschine xyz hat Seriennummer abc eingesetzt? Evtl. noch ein Mapping an die E-Mail (kann man ja direkt beim Kauf nutzen, ich versende die Seriennummer ja ohnehin per Mail) Und das aber rein fürs Logging und sonst keine großartige Überprüfung (außer, dass die Seriennummer eben existiert und generiert wurde)Beim Kauf wird eine Nummer zufällig generiert, mit dem Käufer verknüpft und diesem zugesendet. Selbstverständlich könnte die Nummer jeder benutzen, davon hätte der Käufer aber nichts. Die ist wie ein Passwort. Bei der Aktivierung meldet das Programm dem Server, welche Nummer verwendet werden soll. Der sagt dann, ob die gültig ist (ja, das Umgehen der Aktivierung ist trivial, aber das Thema Cracker hatten wir schon). Der Server speichert die Nummer zusammen mit Datum und eventuell einer Computerkennung.
Das Programm meldet sich alle paar Tage zurück, damit der Server inaktive Installationen aus der Datenbank löschen kann. Missbrauch ist dann an einer ungewöhnlich hohen Zahl aktiver Installationen pro Nummer zu erkennen.
-
TyRoXx schrieb:
Das Programm meldet sich alle paar Tage zurück
Eine Sache, was ich bei Programmen überhaupt nicht leiden kann

-
http://www.jagregory.com/writings/rhino-licensing/
https://github.com/ayende/rhino-licensingKommerziell:
http://www.softwareshield.com/Eventuell wäre das ja was.
Wobei aber DRM frei das bessere Feature wäre.
Verschwende deine Energie nicht auf Raubkopierer, denn die sind nicht deine Kunden.
Deine Kunden sind die, die es kaufen.
-
Ich wär mit solchen Nach-Hause-Telefonaktionen vorsichtig -- wenn jemand mal Baumaßnahmen vor der Tür und zwei Tage kein Internet hat, kriegst du damit schon Probleme. Zumal sich die Frage stellt, wie man im Fall des Falles mit einem Verdacht umgeht - am Ende hat ein Cracker aus Russland die Maschine eines Kunden übernommen und sich die Lizenzinfo geholt, oder er hat den Bubi von nebenan drangelassen, dann hast du den falschen an der Hand. Oder du hast nen Bug auf dem Server. So nen Fehler machst du einmal, dann spricht sich das rum, und keiner kauft mehr bei dir. Der Kunde ist König, das steht an erster Stelle. Du solltest den Anschein vermeiden, er müsse sich vor dir verantworten.
Man hat im Raubkopiefall realistischerweise keine sinnvolle Handhabe - seine prospektive Kundschaft zu verklagen, ist kein Geschäftsmodell, und für die tatsächliche Kundschaft gilt das erst recht. Zu wissen, wer wie oft wo deine Software installiert hat, ist daher gar nicht so sinnvoll -- es bist ja nicht du, der hier beeinflusst werden soll, etwas zu kaufen.
Stell Lizenzdateien auf echte Namen aus und zeig sie beim Programmstart an. Schreib groß in den Splashscreen "Lizensiert an Max Mustermann für Privatgebrauch" und pack ne RSA-Signatur dazu, damit das keiner fälschen kann. Dem pubertierenden Kind ist das egal, aber seinen Eltern und erwachsenen Anwendern schlägt so was auf den Magen, wenn es nicht ihr eigener Name ist. Wenn deine Preise fair sind, bringt das eher was als dieser ganze Überwachungsunfug.
-
seldon schrieb:
Ich wär mit solchen Nach-Hause-Telefonaktionen vorsichtig -- wenn jemand mal Baumaßnahmen vor der Tür und zwei Tage kein Internet hat, kriegst du damit schon Probleme.
Erstens würde sich das Programm nicht alle zwei Tage melden - so oft benutzt man es wahrscheinlich gar nicht. Zweitens wäre das nicht sofort ein Problem, schon gar nicht für den Kunden.
seldon schrieb:
Zumal sich die Frage stellt, wie man im Fall des Falles mit einem Verdacht umgeht - am Ende hat ein Cracker aus Russland die Maschine eines Kunden übernommen und sich die Lizenzinfo geholt, oder er hat den Bubi von nebenan drangelassen, dann hast du den falschen an der Hand. Oder du hast nen Bug auf dem Server. So nen Fehler machst du einmal, dann spricht sich das rum, und keiner kauft mehr bei dir. Der Kunde ist König, das steht an erster Stelle. Du solltest den Anschein vermeiden, er müsse sich vor dir verantworten.
Man hat im Raubkopiefall realistischerweise keine sinnvolle Handhabe - seine prospektive Kundschaft zu verklagen, ist kein Geschäftsmodell, und für die tatsächliche Kundschaft gilt das erst recht. Zu wissen, wer wie oft wo deine Software installiert hat, ist daher gar nicht so sinnvoll -- es bist ja nicht du, der hier beeinflusst werden soll, etwas zu kaufen.
Natürlich bietet so ein System keinen Schutz gegen vorsätzlichen Missbrauch. Es ist nur ein Kompromiss, der etwas weniger faul ist als andere Varianten. Man weiß aber zumindest ungefähr, wie viele "russische Cracker" so etwas machen und ob man die Maßnahmen ver- oder entschärfen kann.
Außerdem hat der Kunde etwas "in der Hand". So eine Nummer bindet stärker als ein reines Gewissen allein.seldon schrieb:
Stell Lizenzdateien auf echte Namen aus und zeig sie beim Programmstart an. Schreib groß in den Splashscreen "Lizensiert an Max Mustermann für Privatgebrauch" und pack ne RSA-Signatur dazu, damit das keiner fälschen kann. Dem pubertierenden Kind ist das egal, aber seinen Eltern und erwachsenen Anwendern schlägt so was auf den Magen, wenn es nicht ihr eigener Name ist. Wenn deine Preise fair sind, bringt das eher was als dieser ganze Überwachungsunfug.
Gute Idee, das kommt sogar ohne Überwachungs-Server aus.
-
Dravere schrieb:
LordJaxom schrieb:
2. Habe ich schon erlebt, dass mehrere PCs einer Serie im Auslieferungszustand die gleiche MAC-Adresse hatten (waren in dem Fall MEDION-PCs)
Toll, wenn man mit solchen PCs in einem gemeinsamen LAN unterwegs sein möchte

Allerdings. Hat Stunden gedauert bis wir darauf gekommen sind, die MAC-Adressen zu vergleichen. _Zum Glück_ kann man die im Treiber recht einfach ändern...
-
seldons Idee gefällt mir auch sehr gut.
Dann mache ich Internet-Seriennummer-Check einfach nur, wenn derjenige im Internet ist. Falls nicht, melde ich auch nichts... man kann zwar über Firewall nach Aktivierung die Software vom Internet über Firewall trennen, aber ich will ja den Benutzer bei Offline-Betrieb nicht nerven, richtig?
Key erstelle ich dann irgendwie auf dem Server, Mal schauen. Ich kann den Key ja zusätzlich mit dem Namen des Käufers verschlüsseln. Dann wird Name + Key bei Aktivierung an den Server gesandt, der prüft, ob das übereinstimmt. Dann wird serverseitig bei Übereinstimmung der Key mit einem privaten Schlüssel verschlüsselt, sodass meine Software den mit dem öffentlichen Schlüssel entschlüsselt. Wenn das Ergebnis mit dem Key übereinstimmt, ist die Software aktiviert.
Denn dann müsste der Angreifer zum Aufbau des Proxys ja den privaten Schlüssel kennen, was ja schon Mal nicht reicht. Dann gibt es immer noch andere Sicherheitslücken, aber die ignoriere ich dann eben.
Denkt ihr, das langt?
Edit: Wo genau müsste ich jetzt noch die RSA-Signatur einbauen? Ich könnte den Key vom Server aus natürlich über RSA mit Namen verschlüsseln, aber das macht noch keine Signatur.
-
Eisflamme schrieb:
Denkt ihr, das langt?
Um zu nerven: Ja, auf jeden Fall.
Schutz vor begabtem Scriptkiddie: Ein paar Minuten. Mögliche Einfallstore, die mir direkt einfallen:
- Aktivierte Software kopieren
- Aktivierungscode einfach im Debugger umspringen, den Sprungbefehl dann permanent einpatchen.
- Internetverbindung für deine Software blocken. Das ist selbst bei DAU-Rechnern der Standard, sie müssten deiner Software explizit erlauben, sich überhaupt auszuwählen.
- RSA-Schlüssel in deinem Programm mit eigenem Schlüssel ersetzen, dann die Serverantwort mit dem zugehörigen privatem Schlüssel fälschen.