Ich kann mich nur spaxxn anschliessen. Wir verwenden eine aehnliche Methode bei FPAV (alle 6er-Versionen) und das scheint ziemlich sicher zu sein. Bei uns geht es ja weniger um "Lizenzschluessel", als um "Abo-Schluessel", da man ja die DEF-Dateien ("Virensignaturen" ... und Heuristik etc) ueber ein Abo bezieht.
Grundlegend haben wir folgendes. Um Verwechslungen auszuschliessen, sind bestimmte Zeichenpaare tabu (bspw. 1 und I oder 0 und O). Wir haben also einen gewissen Wertebereich in dem der Schluessel kodiert wird (diese Kodierung ist nicht per-se geheim, da eben auch auf Clientseite eingesetzt). Dann gibt es einen Platz fuer eine Versionsnummer, damit der Server verschiedene Schluesselversionen unterscheiden und so bspw. ein zuvor kompromittiertes Geheimnis (mehr dazu spaeter) von einem neueren unterscheiden kann. Eine andere Version koennte sich von der Vorversion also bspw. einfach durch einen anderen geheimen Schluessel unterscheiden, koennte aber auch laenger sein, andere Daten oder die gleichen Daten in anderer Anordnung enthalten etc. pp.
Desweiteren gibt es einen geheimen Teil des Schluessels, welchen nur der Server entschluesseln kann (mit dem geheimen Schluessel). Man koennte ihn sicher knacken, aber dann koennen wir die Software updaten und bspw. eine neue Schluesselversion mit einem anderen Geheimnis einfuehren, oder bspw. serverseitig aehnliches tun wie in vielerlei Verschluesselungssoftware und einfach mit verschiedenen Schluesseln "probieren".
Der geheime Teil ist jener, der bspw. Dinge enthaelt wie die Tatsache wann der Aboschluessel ausgegeben wurde, wann er auslaeuft, zu welcher Software er gehoert usw. - der oeffentliche Teil hingegen enthaelt Daten, damit die jeweilige Clientsoftware grob unterscheiden kann, ob ein Schluessel akzeptabel ist oder nicht. Natuerlich obliegt dann die endgueltige Entscheidung dem Server, der auch den Schluessel fuer geheimen Teil des Aboschluessels hat. Im oeffentlichen Teil befindet sich insbesondere das Ablaufdatum des Schluessels, ein paar Flags und eine Checksumme. Clientseitig wird der oeffentliche Teil im Prinzip nur benutzt um anzuzeigen, dass ein Abo abgelaufen ist. Wuerde jemand das Datum dort manipulieren und die Checksumme ebenfalls, wuerde das serverseitig auffliegen.
Was bedeutet das? Es bedeutet, dass in diesem Fall ein Angreifer erstmal den verwendeten Verschluesselungsalgo finden muss. Danach muss er "nur" noch das Geheimnis herausbekommen und dann haetten wir ein Problem und muessten ein Softwareupdate rausgeben
... und dann ginge es von Neuem los ... alles in allem sollte die Preisgestaltung dann dem Angreifer begreiflich machen, dass ein Kauf ihn billiger kommt. Aber Cracker rechnen wohl eher selten in Stunden Arbeitsaufwand oder so ...