AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verschlüsselung von Delphi zu SPS

Ein Thema von Friday · begonnen am 29. Nov 2010 · letzter Beitrag vom 30. Nov 2010
Antwort Antwort
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#1

AW: Verschlüsselung von Delphi zu SPS

  Alt 29. Nov 2010, 14:19
gammatester: Danke, vom Umfang her genau das was ich wollte, allerdings schwer vorzustellen dass es nicht einfach knackbar sein soll (auf den ersten Blick)
Knackbar ist via Brute-Force alles. Aber Brute-Force beseite ist XTEA ziemlich sicher, das englische Wiki listet unter References ein paar weitere Analysen. Ich denke, ein korrekt implementiertes XTEA wird in Deinem System das kleinste Sicherheitsrisiko sein. Allerdings wird es wohl nicht ausreichen, einfach eine Zahl zu verschlüsseln. Zumindest ein variabler 64-Bit IV (Initialisierungsvektor) ist erforderlich, sonst kann man ja einfach ein Paar wiederholen.
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#2

AW: Verschlüsselung von Delphi zu SPS

  Alt 29. Nov 2010, 14:30


Knackbar ist via Brute-Force alles.
Ja, bloß in wievielen Jahren. Der Unterschied ist aber, daß durch den Zugriff des Kunden auf die SPS und den Rechner mit dem Delphiprogramm der Schlüssel nicht geheim ist. Und nun einfach nochmal Schneier's Buch oder so durchlesen. Alternativ: wenn ich dem Einbrecher den Schlüssel unter die Fußmatte lege ("verstecke") dann hilft auch mein Hochsicherheitsschloß nix (und ich nehme einfach mal an, daß es keine Fenster gibt oder die sicher verrammelt sind).

Aber ist egal, wenn es nur darum geht hier ein Placebo zu haben, dann haste das ja nun (@Friday).

Ich weiß ja nicht welche Sorte SPS das ist und welches Framework verwendet (bzw. Bus, Profibus?) wird, aber mir war so, als hätten viele SPSen auch eine Seriennummer. Kannste die nicht verwenden? Ist mindestens genauso leicht zu hacken, aber definitiv einfacher zu implementieren.

Nachtrag:
Einen fähigen Kryptologen oder Hacker wird das wohl nicht aufhalten. Ich möchte bloss nicht direkt zum cracken einladen in dem ich es gar nicht verschlüssele oder so, dass es sehr einfach ist es zu entschlüsseln. Wie du schon sagst geht es nur darum es schwierig-er zu machen.
Ein fähiger Kryptologe kann auch nix gegen die Macht der Mathematik hinter den Algorithmen machen. Ohne privaten Schlüssel ist bei ordentlicher Implementierung nichts auszurichten. Du gibst aber den privaten Schlüssel mit.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)

Geändert von Assarbad (29. Nov 2010 um 14:32 Uhr)
  Mit Zitat antworten Zitat
Friday

Registriert seit: 6. Mai 2008
106 Beiträge
 
Delphi 12 Athens
 
#3

AW: Verschlüsselung von Delphi zu SPS

  Alt 29. Nov 2010, 14:53
Ohne privaten Schlüssel ist bei ordentlicher Implementierung nichts auszurichten. Du gibst aber den privaten Schlüssel mit.
Da ich die Anwendung mit UPC packe wird das auch nicht direkt aus dem Disassemblierten Code lesbar sein. Klar kommt man an den dekomprimierten Code in dem man den Speicher ausliest und diesen Disassembliert. Aber wie einfach es dann ist den Schlüssel zu finden weiss ich nicht. Aber ich denke das sollte dann sicher genug sein, da der 0815 IT-kundige soweit nicht kommen wird. Die Einladung zum betrügen ist damit zumindest nicht gegeben.

EDIT: Die einzig "sichere" Lösung wäre eine asymetrische Verschlüsselung bei der, der Public Key in der Datei mit der verschlüsselten Nummer drin ist. Aber eine RSA Verfahren wird in der SPS nicht realisierbar sein (bzw wahrscheinlich schon, aber mit erheblichem Aufwand und großen Ressourcen Kosten). Eine so schlanke einfache verschlüsselung wie XTEA wird es asymetrisch wohl nicht geben.

Geändert von Friday (29. Nov 2010 um 15:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Verschlüsselung von Delphi zu SPS

  Alt 29. Nov 2010, 15:36
Exe-Packer sind auch kein Hindernis mehr.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#5

AW: Verschlüsselung von Delphi zu SPS

  Alt 29. Nov 2010, 16:03
EDIT: Die einzig "sichere" Lösung wäre eine asymetrische Verschlüsselung bei der, der Public Key in der Datei mit der verschlüsselten Nummer drin ist. Aber eine RSA Verfahren wird in der SPS nicht realisierbar sein (bzw wahrscheinlich schon, aber mit erheblichem Aufwand und großen Ressourcen Kosten). Eine so schlanke einfache verschlüsselung wie XTEA wird es asymetrisch wohl nicht geben.
Eben nicht. Das ist es was ich die ganze Zeit versuche rüberzubringen. Nicht der Typ des Algos oder seine Implementierung sind hier die Schwachstelle, sondern bereits das Einsatzgebiet. Um zu ver- oder entschlüsseln brauchst du in jedem Fall auf einer Seite einen privaten Schlüssel - und das ist der Pferdefuß, denn der Kunde kann den in Erfahrung bringen.

Was ich damit sagen will ist vor allem, daß es völlig irrelevant ist ob du XTEA benutzt oder einfach XOR. Am Ende ist beides gleich knackbar, da du aufgrund dessen wie du es einsetzt in beiden Fällen die Schlüssel mitliefern mußt. Systembedingt, sozusagen.

Nur XOR ist eben noch leichter als XTEA zu implementieren.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Friday

Registriert seit: 6. Mai 2008
106 Beiträge
 
Delphi 12 Athens
 
#6

AW: Verschlüsselung von Delphi zu SPS

  Alt 29. Nov 2010, 19:06
Um zu ver- oder entschlüsseln brauchst du in jedem Fall auf einer Seite einen privaten Schlüssel - und das ist der Pferdefuß, denn der Kunde kann den in Erfahrung bringen.
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".

Was ich damit sagen will ist vor allem, daß es völlig irrelevant ist ob du XTEA benutzt oder einfach XOR.
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. 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. 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).
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#7

AW: Verschlüsselung von Delphi zu SPS

  Alt 29. Nov 2010, 21:21
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.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#8

AW: Verschlüsselung von Delphi zu SPS

  Alt 29. Nov 2010, 21:35
Wenn das eine S7 ist, dann les dir doch einfach per SZL einige Informationen raus (Seriennummer, Firmware, Ausgabestand, evtl. Produktionsdatum, usw). Da gibt es schon ein paar Infos, aber sicher bekommst du das ganze nicht, zumal man das Programm ja einfach aus der SPS zurücklesen kann. Bei der S7 fehlen zwar Kommentare und Symbole aber man wird den Schlüssel finden.
Marc
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die 10. summt die Melodie von Tetris... | Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück! | engbarth.es
  Mit Zitat antworten Zitat
Friday

Registriert seit: 6. Mai 2008
106 Beiträge
 
Delphi 12 Athens
 
#9

AW: Verschlüsselung von Delphi zu SPS

  Alt 29. Nov 2010, 22:25
Die SPS entschlüsselt also mit privatem Schlüssel und nicht wie du hier behauptest dem öffentlichen Schlüssel die Nachricht.
Stimmt, das hab ich verwechselt. Wäre also auch keine bessere Lösung.

Das Zusammenstellen des Schlüssels zur Laufzeit klang schon beim tippen nicht sehr vielversprechend, das wär dann wohl so ungefähr bei der Haustür Tesa-Film vors Schloss kleben und sich sicher fühlen. Aber egal, das Problem ist ja keines wenn ich die verschlüsselte Zahl direkt weiter reiche (weiss gar nicht mehr warum ich die im Delphi Programm überhaupt entschlüsseln wollte).


(ich nehme mal an irgendeine Delphi-Client/Server-Anwendung?) macht sehr viel Sinn. Aber auf die SPS kommt doch der Kunde im Zweifelsfall auch
Das ist eher eine SPS-Fernsteuerung. Ich weiss nicht wie es bei der S7 ist, aber hierbei handelt es sich um eine Steuerung von Jetter, da liegt nur der kompilierte Code drin. Den kann man mit einem FTP Client zwar downloaden, aber der ftp Zugang ist Passwortgeschützt. Sollte ein cracker dennoch an das Kompilat gelangen und das lesen und verstehen können, dann ist es auch egal, weil dann kann er auch die Sprungadresse der Stelle an der die Aktivierung abgefragt wird einfach ändern, so dass der Schlüssel komplett wertlos wird. Aber das ein Kunde soviel Energie da rein steckt kann ich mir schlecht vorstellen.

Ausser er ist vielleicht auch ein Reverser aus Passion
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz