Serial Algorithmus

09/07/2012 18:04 Tyrar#1
ich bin letztens auf diesen thread gestoßen:
[Only registered and activated users can see links. Click Here To Register...]

jetzt frage ich mich, wie werden serials genau generiert?
ich habe ein wenig gegoogelt, habe allerdings nichts sinnvolles gefunden
Code:
if(key == "1337-1337-1337-1337") return true;
was allerdings nicht so wirklich sinnvoll ist.

irgendwie müssen die random generierten serials doch auch wieder verifiziert werden. und mit purem random zeug kann man in dem fall natürlich nichts anfangen.

wie genau ist also ein solcher algo aufgebaut? (beide seiten, generator und verifier)
09/07/2012 18:30 MrSm!th#2
Sieh dir mal das Epvp HWID System an, das ist ein ähnliches Konzept.

Bei hardware gebundenen Serials werden halt Hardware Informationen gehasht und dann wird damit ein bisschen rumgerechnet.
Der Verifizierer nimmt die Informationen, berechnet selbst den validen Key und checkt den übergebenen.

Nicht gebundene Serials werden halt von nem Algorithmus ausgespuckt, der keinerlei Input entgegennimmt oder einen, der letztendlich auch im Key enthalten ist (sodass der Verifizierer ihn nachvollziehen kann). Der verifizierende Algorithmus ist dementsprechend die Umkehrfunktion, die daraus wieder den Startwert macht (könnte zb. ne Prüfziffer am Ende des Keys sein oder eine festgeschriebene Menge von Startwerten).

Es geht halt generall darum, dass der Key gewisse mathematische Eigenschaften hat, die sich immer eindeutig nachprüfen lassen (zb. kommt halt bei einer bestimmten Berechnung darauf ein vorgeschriebener Wert raus und jedes andere Ergebnis deutet auf einen falschen Key hin).

Konkrete Algorithmen kann ich dir leider nicht zeigen, so viel Ahnung habe ich da leider auch nicht.
09/07/2012 19:25 SmackJew#3
Schau dir ein paar KeygenMe's an.
09/08/2012 15:09 Ende!#4
Am besten ist es eigentlich immer, wenn du die Serials vollständig random auf einem Server generierst und dann auch dort verifizierst - am besten so, dass sie sich bei der ersten Eingabe auf eine HWID locken. Du kannst natürlich auch eine Serial für mehrere HWIDs erlauben, solltest dabei allerdings die Anzahl der erlaubten HWIDs für eine Serial beschränken, da diese sonst einfach irgendwo shared werden. Die Packets der Serverseite sollten mit einem asynchronen Crypto-Verfahren wie RSA signiert werden, sodass MITM Angriffe nicht so leicht fallen. Der public Key im Binary sollte selbstverständlich möglichst gut gegen Ersetzung geschützt werden.

Im Übrigen kann ich zur HWID-Generierung nicht den Algorithmus empfehlen, der beim e*pvp HWID System Verwendung findet. Dieser ist NICHT praxisreif und generiert auch nicht zwangsläufig eindeutige HWIDs. Bei dem System in der aktuellen Implementierung handelte es sicher eher um einen ersten Testlauf, der mangels Lowfyr bisher nicht weitergeführt wurde.
09/08/2012 19:23 Tyrar#5
Quote:
Originally Posted by MrSm!th View Post
Sieh dir mal das Epvp HWID System an, das ist ein ähnliches Konzept.

Bei hardware gebundenen Serials werden halt Hardware Informationen gehasht und dann wird damit ein bisschen rumgerechnet.
Der Verifizierer nimmt die Informationen, berechnet selbst den validen Key und checkt den übergebenen.

Nicht gebundene Serials werden halt von nem Algorithmus ausgespuckt, der keinerlei Input entgegennimmt oder einen, der letztendlich auch im Key enthalten ist (sodass der Verifizierer ihn nachvollziehen kann). Der verifizierende Algorithmus ist dementsprechend die Umkehrfunktion, die daraus wieder den Startwert macht (könnte zb. ne Prüfziffer am Ende des Keys sein oder eine festgeschriebene Menge von Startwerten).

Es geht halt generall darum, dass der Key gewisse mathematische Eigenschaften hat, die sich immer eindeutig nachprüfen lassen (zb. kommt halt bei einer bestimmten Berechnung darauf ein vorgeschriebener Wert raus und jedes andere Ergebnis deutet auf einen falschen Key hin).

Konkrete Algorithmen kann ich dir leider nicht zeigen, so viel Ahnung habe ich da leider auch nicht.
Quote:
Originally Posted by SmackJew View Post
Schau dir ein paar KeygenMe's an.
hab inzwischen etwas simples zusammengebastelt. ty :)

Quote:
Originally Posted by Ende! View Post
Am besten ist es eigentlich immer, wenn du die Serials vollständig random auf einem Server generierst und dann auch dort verifizierst - am besten so, dass sie sich bei der ersten Eingabe auf eine HWID locken. Du kannst natürlich auch eine Serial für mehrere HWIDs erlauben, solltest dabei allerdings die Anzahl der erlaubten HWIDs für eine Serial beschränken, da diese sonst einfach irgendwo shared werden. Die Packets der Serverseite sollten mit einem asynchronen Crypto-Verfahren wie RSA signiert werden, sodass MITM Angriffe nicht so leicht fallen. Der public Key im Binary sollte selbstverständlich möglichst gut gegen Ersetzung geschützt werden.

Im Übrigen kann ich zur HWID-Generierung nicht den Algorithmus empfehlen, der beim e*pvp HWID System Verwendung findet. Dieser ist NICHT praxisreif und generiert auch nicht zwangsläufig eindeutige HWIDs. Bei dem System in der aktuellen Implementierung handelte es sicher eher um einen ersten Testlauf, der mangels Lowfyr bisher nicht weitergeführt wurde.
komm ich glaube ich sowieso nich drum rum, das alles auf nem server zu verifizieren.
das problem is, ich versuche den ganzen code hinterher an nen programm zu binden, was bei cryptopp allerdings nicht so sehr einfach sein wird. muss das ganze wohl nochma selbst in c implementieren.