Lizenzschlüsselmustererkennung?

8

Dies ist keine reale Situation; Bitte ignorieren Sie rechtliche Probleme, die Sie vielleicht für zutreffend halten, weil sie dies nicht tun.

Nehmen wir an, ich habe einen Satz von 200 bekannten gültigen Lizenzschlüsseln für einen hypothetischen Softwarelizenzierungsalgorithmus, und ein Lizenzschlüssel besteht aus 5 Sätzen von 5 alphanumerischen Groß- und Kleinbuchstaben (alle Großbuchstaben). Beispiel: HXDY6-R3DD7-Y8FRT-UNPVT-JSKON

Ist es möglich (oder wahrscheinlich), andere mögliche Schlüssel für das System zu extrapolieren?

Was, wenn bekannt ist, dass das Set konsekutiv ist? Wie ändern sich die Methoden für diese Situation und welchen Vorteil bringt das?

Ich habe schon vorher von "keygens" gehört, aber ich glaube, dass sie wahrscheinlich durch das Dekompilieren der Lizenzierungssoftware entstanden sind, anstatt bekannte gültige Schlüssel zu untersuchen. In diesem Fall bekomme ich nur die Schlüssel und ich muss den Algorithmus bestimmen. Mir wurde auch gesagt, dass es ein Industriestandard-Algorithmus ist, also ist es wahrscheinlich nicht etwas Grundlegendes, obwohl die Wahrscheinlichkeit immer da ist, nehme ich an.

Wenn Sie denken, dass dies nicht zu Stack Overflow gehört, schlagen Sie bitte zumindest einen alternativen Ort vor, an dem Sie die Frage anschauen oder stellen können. Ich weiß wirklich nicht, wo ich mit einem solchen Problem anfangen soll. Ich kenne nicht einmal die Terminologie für diese Art von Problem.

    
Ricket 19.05.2010, 21:32
quelle

5 Antworten

0

Im Allgemeinen lautet die Antwort: "Nein, Sie können nichts Nützliches tun."

Wenn die Leute, die die Schlüssel erzeugen, faul wurden und es versäumt haben, eine Art kryptografischen Hash-Code von einer Indexnummer zu verwenden (mit ausreichendem Bit-Mixing, um jede Inspektion zu verhindern), könnten Sie eine Funktion annehmen Form der Zufallszahlengenerierung und sehen Sie, ob Sie zum Beispiel einen Modulus für einen linearen Zufallszahlengenerator oder eine Reihe von Bitmischungsverschiebungen und -additionen, wie in der Jenkins-Hashfunktion oder was auch immer, zurückgeben können.

>

Es gibt keine Algorithmen, um von einer generischen Struktur zum Algorithmus zu gelangen, der diese Struktur erzeugt; etwas Ähnliches ist das, wonach Sie zu fragen scheinen. (Solche Algorithmen sind im Allgemeinen nachweislich unmöglich; wenn Sie den einfachsten Algorithmus haben wollen, der Ihre Schlüssel berechnen kann, ist das Problem isomorph zur Berechnung der Kolmogorov-Komplexität, die teuflisch schwer ("bis jetzt effektiv unmöglich") zu berechnen ist.)

    
Rex Kerr 19.05.2010, 21:41
quelle
1

Wenn Sie davon ausgehen, dass das System kryptographisch stark ist, wissen Sie, dass diese Schlüssel nicht gut sind. Nun, viele solcher Systeme werden von Leuten implementiert, die zu billig sind, um ein echtes Keygen zu kaufen, so dass Sie vielleicht noch eine Hoffnung haben.

Nur ein kleiner Teil der Einhüllenden-Schätzung sagt, dass ein solcher Schlüssel 125 Bits hat (war 800 oops, danke fürs Einfangen). Wenn Sie diesen Platz genug gesampelt haben, könnten Sie in der Lage sein, eine Art Angriff zu machen, aber Sie sprechen über eine große Anzahl von Beispielpunkten. Aber hey, welche anderen Pläne hatten Sie für Ihre Freizeit?

Selbst die großen Jungs haben es vermasselt, vor einem halben Dutzend Jahren gab es einen Fehler bei der Art, wie MSDN-Schlüssel erzeugt wurden, die eine Art Brute-Force-Angriff erlaubten. Sie würden Männer finden, die MSDN-Abonnements bei eBay als Teil eines Unternehmenslizenzpakets verkaufen. Sie würden Ihre Informationen senden und sie würden Ihnen in ein paar Tagen ein vorregistriertes MSDN-Konto geben. Ich bin mir ziemlich sicher, dass sie einen Fehler in der Implementierung ausnutzten und Brute die Registrierung erzwangen, bis einer feststeckte.

Eine Firma, für die ich gearbeitet habe, kaufte eine, Microsoft ehrte sie, weil wir nicht klüger waren, als wir sie kauften, aber sie waren an der Adresse des Typen interessiert, der sie an uns verkaufte.

    
Ukko 19.05.2010 21:40
quelle
1

Dies ist im allgemeinen Fall notorisch schwer zu lösen. Wenn jedoch

  

Mir wurde auch gesagt, dass es ein Industriestandard-Algorithmus ist

Wenn dies der Fall ist, sollten Sie eine Liste dieser "Standardalgorithmen" erhalten und diese auf Schwachstellen analysieren.

Meine naive Vermutung ist, dass die meisten Schlüsselgenerierungen die Form x || haben Hash (x || fixed), wobei x ein zufällig generierter Wert für jeden Schlüssel ist und fixed ein fester Wert ist. Mit diesem Formular können Schlüssel recht einfach validiert werden (x extrahieren, Hash berechnen (x || fixed), sehen, ob es übereinstimmt).

Angenommen, Sie wüssten den genauen Algorithmus, müssten Sie entweder eine Schwachstelle im Algorithmus finden (nicht wahrscheinlich, es sei denn, sie verwenden einen Hash mit bekannten Schwachstellen), rohe Gewalt den festen Wert, etc.

Da es viele Hashes gibt, die keine bekannten Sicherheitslücken aufweisen und wenn Sie annehmen, dass die Typen, die den festen Wert gewählt haben, nicht dumm sind ... ist das ein schwieriger Cookie, es sei denn, Sie verfügen über gute Kryptoanalysefähigkeiten. p>

Das Problem ist also sehr schwer zu lösen, wenn die Leute, die den Algorithmus entworfen haben, nicht dumm sind. Aber sie könnten ...

sein     
alex 19.05.2010 22:29
quelle
1

Schlüssel, die offline validiert werden, werden in der Regel durch bestimmte Eigenschaften definiert. Bestimmte Teilmengen von Bits haben bestimmte Werte oder Symmetrien. Wenn bestimmte Teilmengen von Bytes, die an bestimmte Funktoren übergeben werden, das erwartete Ergebnis zurückgeben, wird der Schlüssel als gültig angesehen.

Wenn Sie nach gängigen Algorithmen zur Schlüsselgenerierung recherchiert haben, könnten Sie wahrscheinlich ein Universum möglicher Eigenschaften finden. Sie können dann induktive Logikprogrammierung verwenden, um herauszufinden, welche dieser Eigenschaften für alle gültigen Schlüssel, nicht aber für ungültige Schlüssel gilt. (Sie benötigen auch eine Reihe ungültiger Schlüssel, die aber leicht zu generieren sind). Aus den Ergebnissen könnte man theoretisch ein Keygen schreiben. Sie könnten wahrscheinlich auch ein Papier daraus schreiben, wenn Sie es zur Arbeit bringen können. Viel Glück.

Wenn sie jedoch online validiert werden, können sie einfach Pseudozufallszahlen sein, die mit einer Datenbank verglichen werden. In diesem Fall sind Sie SOL.

    
patros 19.05.2010 21:53
quelle
0

Das System könnte die Schlüssel nach dem Zufallsprinzip generieren und die Clients dann gegen einen zentralen Server prüfen lassen. Das ist genauso sicher wie jeder andere DRM-Algorithmus, also überhaupt nicht. In diesem Fall ist eine Extrapolation unmöglich.

    
Matthew Flaschen 19.05.2010 21:36
quelle