1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Lizenzschlüsselgenerator

Dieses Thema im Forum "OS X-Developer" wurde erstellt von KayHH, 20.11.07.

  1. KayHH

    KayHH Gast

    Moin apfeltalker,

    ich möchte in ein Programm eine Seriennummernüberprüfung einbauen. Dazu möchte ich eine beliebige Anzahl von Seriennummern (Lizenzschlüsseln) generieren können. Die Software muss dann in der Lage sein selbstständig und offline die Gültigkeit des eingegebenen Schlüssels überprüfen zu können.

    Gibt es dafür eine offene Lösung, am besten natürlich in Objectiv-C, oder als Library zum dazulinken?


    KayHH
     
  2. pepi

    pepi Cellini

    Dabei seit:
    03.09.05
    Beiträge:
    8.741
    Wenn es sowas als offene Bibliothek gäbe, könnte jeder der einen (nicht käuflich erworbenen) Lizenzschlüssel haben möchte, einfach selbst einen generieren… o_O Wohl nicht ganz im Sinne des Erfinders, also in dem Fall Dir.
    Grundlegende Algorithmen sollten sich im Netz aber finden lassen. (zB mit einem Salt und einem Hash aus dem Benutzernamen sollte sich sowas machen lassen.)
    Gruß Pepi
     
  3. Peter Maurer

    Peter Maurer Carmeliter-Renette

    Dabei seit:
    16.03.04
    Beiträge:
    3.274
    Kagi z.B. hat so einen offenen Mechanismus. Nennt sich Generic ACG und ist nicht besonders sicher, dafuer aber leicht in bestehende Programme einzubauen; und Unhackbarkeit ist in Bezug auf Seriennummern eh ueberbewertet. :D
     
  4. KayHH

    KayHH Gast

    Wenn das so wäre, wären OpenSource Kryptoverfahren ja unsicher, was sie aber nicht sind. Es geht ja nur um den Algorithmus. Auf welcher Basis ich dann den Schlüssel generiere ist ja noch mal was ganz anderes.


    KayHH
     
  5. MacApple

    MacApple Lord Grosvenor

    Dabei seit:
    05.01.04
    Beiträge:
    3.470
    Man kann auch OpenSSL nutzen.

    MacApple
     
  6. Bölzebub

    Bölzebub Querina

    Dabei seit:
    27.05.05
    Beiträge:
    180
    Peter Maurer gefällt das.
  7. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    Dass du einen Schlüssel generieren kannst, bedeutet nicht, dass die Software ihn akzeptiert. Das ist der umgekehrte Fall und wenn das Verfahren asymetrisch ist …

    Das klassische Bild: Wenn man eine Maschine zur Wohnungsschlüsselherstellung hat, kannst du damit noch lange nicht bei deinem Nachbarn einbrechen.

    AquaticPrime wird gerne genommen. McDan, der es ebenfalls verwendet, weist aber darauf hin, dass einen Hack für das öffentliche Framework gibt, so dass man es fest in sein Binary hinein linken sollte.
     
  8. KayHH

    KayHH Gast

    Moin moin,

    prima, das (OpenSSL und AquaticPrime) schau ich mir mal an.


    KayHH
     
  9. GoaSkin

    GoaSkin Gast

    Das Prinzip von solchen Verschlüsselungs-Algorithmen ist die Nutzung von Schlüssel-Paaren durch den Einsatz von nicht umkehrbaren mathematischen Funktionen.

    Das heisst, daß die Daten mit einer mathematischen Funktion verschlüsselt werden (für die es keine Umkehrfunktion geben darf!!!) aber diese mit Hilfe einer ganz anderen Funktion wieder in den Originalzustand konvertiert werden. Auf diesem Prinzip funktionieren sämtliche Kryptoverfahren.

    Der Haken an der Sache ist, daß es sich hier bei um sehr hohe Mathematik handelt, die kaum jemand beherrscht, wenn er nicht gerade Mathematik studiert hat. Eine nicht umkehrbare Funktion zu entdecken ist schon eine schwierige Sache, aber dann noch eine andere, die aus Y wieder X werden lässt...

    Eine weitere Problematik ist, daß ja das Programm der CPU Instruktionen gibt, die letzendlich nichts anderes sind, als maschinenfreundliche Befehle, die das bewirken, was die Befehle einer Hochsprache aussagen sollen. Man programmiert letzendlich immer in Assembler. Die ganzen Befehle, die man in Sprachen wie C oder Basic verwendet stammen letzendlich aus Bibliotheken und Headern, die den Assembler-Code für die ganzen Funktionen bereit halten. Da sich sehr viele Lowlevel-Funktionen dafür im Kernel, der Standard-Bibliothek und den Gerätetreibern befinden, wird man im Assembler-Code eines Programmes auch nur die entsprechenden Funktionsaufrufe finden statt Lowlevel-Code, der das lesen eines disassemblierten Codes erschwert. Fast alle Programme lassen sich mit dem otool-Befehl disassemblieren und der daraus erzeugte Text häufig fast so einfach nachvollziehen, wie der Quellcode des Programmes. Sämtliche Verschlüsselungstools erschweren nur das Disassemblieren des Programmes, sind aber grundsätzlich knackbar und müssen dies auch sein. Die CPU kann mit verspulten Bytefolgen nichts anfangen, worum es eine Funktion geben muß, die das Programm interpretierbar macht. Dadurch verrät jedes Programm selbst, wie es zu hacken ist. Für fast alle kommerziellen Kopierschutz-Systeme gibt es Tools, die aus dem verschlüsselten Binary eine unverschlüsselte Variante erzeugen können - früher oder später - die Hacker sind meist nur wenige Wochen hinterher.

    Beim Netzwerkverkehr lassen sich die Datenströme deshalb sicher verschlüsseln, weil die Information, wie der Code codiert oder decodiert werden muß nicht durchs Netz wandern muß. Die Daten, die erklären wie verschlüsselt wird befinden sich auf Server und Klient und müssen nicht übertragen werden. Die Kommunikation basiert darauf, daß jedes Gerät dem anderen einen Schlüssel überträgt, mit dem die Daten verschlüsselt werden soll und keines von den Geräten mitbekommt, wie das andere diese wieder entschlüsseln möchte.

    Was Software betrifft gibt es nur eine sichere Methode: Hardware-Dongles. Das Prinzip ist, daß durch den Einsatz des Dongles das Programm nicht mehr sich selbst erklären muß, wie sein Code in brauchbare Instruktionen zu konvertieren ist, sondern sich der Schlüssel in einem USB-Stick befindet und für den Rechner nicht abrufbar ist. Die Binärdaten des Programmes werden dabei durch den Stick geschleusst, der einfach andere Daten ausspuckt, die dann die CPU interpretieren kann. Solche Sticks sind ab ca. 50 Euro zu haben, sodaß eine Lizenz eines Programmes dann auch den entsprechenden Preis haben müsste, damit sich dies lohnt. In der Regel wird ein solcher Kopierschutz bei Programmen eingesetzt, die 1000 Euro oder mehr kosten.

    Jeder Programmierer sollt sich darüber bewusst sein, daß im Software-Bereich nicht alles zu Geld zu machen ist. Die Bereitschaft eines Anwenders, für Software zu zahlen ist gering. Open Source ist eine gute und legale Alternative zu Raubkopien und die freie Software gewinnt immer mehr an Qualität. Die freie Software lässt qualitativ heutzutage schon so einige kommerzielle Alternativen im Wald stehen. Es wird eine Frage der Zeit sein, bis es nur noch für spezielle Einsatzgebiete einen Bedarf an kommerziellen Applikationen gibt. Maßnahmen zum Schutz von geistigem Eigentum, Verschärfungen des Urheberrechts und ausgeklügelterer Kopierschutz werden diesen Prozess beschleunigen.
     
  10. Amin Negm-Awad

    Amin Negm-Awad Süsser Pfaffenapfel

    Dabei seit:
    01.03.07
    Beiträge:
    665
    Hmmm, also ich kenne eine einfache "nicht umkehrbare" (wohl gemeint: nicht eindeutig umkehrbare) Funktion:
    f(x) = x^2
    Die lernt man irgendwann in der siebenten (?) Klasse.

    Eine "nicht umkehrbare" Funktion kann auch nie "aus Y wieder X werden" lassen. Dann wäre sie ja umkehrbar. Eine nicht eindeutig umkehrbare (bijektive) Funktion bietet in der Tat nicht die Möglichkeit, y wieder eindeutig auf x abzubilden, sie ist also nicht surjektiv. Aber im obigen Beispiel findet man ziemlich leicht eine Funktion, die y wieder auf x abbildet:
    g(x)=sqr(|x|)
     
  11. GoaSkin

    GoaSkin Gast

    Letzendlich reicht ja die einzelne nicht umkehrbare Funktion nicht aus sondern es ist eine andere Funktion notwendig, die Y wieder zu X macht.

    Aber wie dem auch sei... die Dev Tools unter OSX verschlüsseln sowieso keine Binaries. Dazu sind Tools nötig, die das fertige Kompilat so verschlüsseln, das mit keinem Debugger-Porgramm mehr nachvollziehbar ist, sie die Symbole heissen und ebensowenig mit einem Debugger Assembler-Befehle anhand der Binärdatei ausgegeben werden können. Ein Debugger kann dann zwar während dem Ausführen die Anweisungen ausgeben, jedoch lässt sich daran der Aufbau des vollständigen Programmes nicht mehr nachvollziehen.

    Was dazu notwendig ist kostet ein Vermögen und sichert die Programme nur für sehr begrenzte Zeit. Früher oder später findet jemand heraus, was die Verschlüsselungs-Tools machen und es kursieren Entschlüsselungsprogramme im Netz. Für populäre Systeme wie Safedisk oder SecuROM gibt es haufenweise Tools. Immer nur die neueste Version des Kopierschutzes ist für begrenzte Zeit sicher.

    Vielleicht hat man auch mehr davon, Raubkopierer einfach zu ver**schen, in dem man fehlerhafte Versionen des Programmes in Tauschbörsen stellt und sich zusätzlich falsche Serials ausdenkt, nach deren Eingabe das Programm zerschossen statt freigeschaltet wird. Das muß immer so gemacht sein, daß es für den Kopierer nicht sofort offensichtlich ist und das Programm wieder herunterwirft, weil es nichts taugt.

    Als Logic Audio noch von Emagic angeboten wurde, wurde das Programm vor allem deshalb lange nicht gecrackt, weil die Leute glaubten, daß es schon einen Crack gäbe. Was im Netz lag, hatte allerdings zwar keinen Kopierschutz, dafür aber gelegentlich einen Stolpertakt bei der Wiedergabe. Bis dies auffällt, dauert es aber somit ist dennoch sichergestellt, daß das Programm in dieser Version nicht zu gebrauchen ist.
     

Diese Seite empfehlen