Nein den privaten Schlüssel hätte der Kunde in diesem Fall nicht. Ich würde bei mir die Zahl mit dem privaten Schlüssel verschlüsseln, die verschlüsselte Zahl inkl. öffentlichem Schlüssel in eine Datei packen, die die Delphi Anwendung beim Kunden liest, beide Informationen an die SPS sendet und diese entschlüsselt mit dem öffentlichen Key die Zahl. Das meinte ich mit meinem "Edit".
Klingt nach asymmetrischer Verschlüsselung. Die SPS entschlüsselt also mit
privatem Schlüssel und nicht wie du hier behauptest dem öffentlichen Schlüssel die Nachricht. Es wird nur der öffentliche Schlüssel des Empfängers beim Verschlüsseln und der private beim Entschlüsseln benötigt. Erst beim (zusätzlichen) Signieren braucht man die kompletten beiden Schlüsselpaare (den privaten des Senders zum Unterschreiben auf Senderseite und den öffentlichen des Senders zum Überprüfen auf Empfängerseite).
Dabei gehst du davon aus, dass es einfacher ist den Schlüssel und das verwendete Verschlüsselungsverfahren im disassemblierten Code raus zu lesen als eine XOR verschlüsselung zu knacken.
Allerdings, denn es gibt Heuristiken dafür.
Man könnte den Schlüssel ja auch zur Laufzeit aus diversen Konstanten zusammenstellen/berechnen, was es nochmals einiges schwieriger machen sollte den Code zu lesen.
Naja, mich interessiert als Reverse Engineer was rauskommt, also halte ich mich nicht mit unwichtigen Details auf. Abgesehen davon würden Konstanten die du irgendwie zusammenwürfelst im kompilierten Code im Zweifelsfalls sehr RCE-freundlich optimiert
Ja, ich bin da Pragmatiker. Die meisten Reverser sind das
... "jedes Mittel ist recht". Egal ob aus reiner Neugier (für privat), Gier nach Ruhm (sog. "Sicherheitsforscher") oder ob nun der böse Cracker der dein Programm unfreundlicherweise kostenlos an andere weitergibt.
Wobei es im Grunde wie im oberen Beispiel gar nicht zwingend notwendig ist dass die Delphi Anwendung den Aktivierungscode entschlüsselt, sondern kann ihn direkt verschlüsselt an die SPS senden (Natürlich kann auch dieses Kompilat wieder gelesen werden, aber da ist es schon schwieriger ran zu kommen).
In der Tat, einfach durchreichen (ich nehme mal an irgendeine Delphi-Client/Server-Anwendung?) macht sehr viel Sinn. Aber auf die SPS kommt doch der Kunde im Zweifelsfall auch, oder gibt es das Hardwarevorkehrungen? In dem Falle wäre der private Schlüssel in der SPS ja sicher. Immer dran denken ein Reverser wird immer den Weg des geringsten Widerstandes gehen.