Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Manipulation beim Übertragen von Daten erkennen. (https://www.delphipraxis.net/143948-manipulation-beim-uebertragen-von-daten-erkennen.html)

Hedge 26. Nov 2009 16:44


Manipulation beim Übertragen von Daten erkennen.
 
Ich habe ein Delphi-Programm das Daten an ein php-Script schickt.
Die Verbindung ist mit SSL gesichert.

Die Daten werden via POST übertragen und sind im Moment nicht extra verschlüsselt.
Jetzt möchte ich aber verhindern, dass Jemand das PHP-Script selbst aufruft und mit POST-Daten füttert.
Wenn er sich selbst da was zurechtbastelt bzw. er versucht Daten zu manipulieren, dann muss das vom PHP-Script erkannt werden.

Ich belese mich zwar zum Thema Kryptografie, aber steht trotzdem auf dem Schlauch da es nicht unbedingt darum geht die zu übermittelnde Nachricht zu verschleiern sondern eine Manipulation zu verhindern.

Prüfsummen machen ja Sinn, aber die kann Jemand der davon Ahnung sich auch selber ausrechnen.

mjustin 26. Nov 2009 19:12

Re: Manipulation beim Übertragen von Daten erkennen.
 
Selbser habe ich damit noch nicht gearbeitet, aber Client SSL Zertifikate würden es ermöglichen, dass der Server nur die Verbindungen von authorisierten Clients annimmt.

http://de.wikipedia.org/wiki/Hyperte...rotocol_Secure

http://it.toolbox.com/blogs/security...ificates-11500

Auch ein Client-Zertifikat kann natürlich "gestohlen" werden (so wie ein Autoschlüssel...) - und "SSL-Verbindungen sind grundsätzlich gefährdet durch Man-in-the-middle-Angriffe, bei denen der Angreifer den Datenverkehr zwischen Client und Server abfängt bzw. sich als Zwischenstelle ausgibt." - http://de.wikipedia.org/wiki/Hyperte...rotocol_Secure

Cheers,

Hedge 26. Nov 2009 20:46

Re: Manipulation beim Übertragen von Daten erkennen.
 
Wie du schon sagst.
Auch die Client-Zertifikate können ausgehebelt werden und Man In The Middle-Attacken sind genau das dem ich versuche entgegenzuwirken.

Wir wäre es wenn ich alle Daten die an das Script geschickt werden sollen logisch zusammenfasse, symetrisch verschlüssele. Dann berechne ich davon einen Hashwert und häng den noch ans Ende der Daten ran?

Matze 26. Nov 2009 21:02

Re: Manipulation beim Übertragen von Daten erkennen.
 
Wenn deine Software das verschlüsselt und man das wirklich knacken will, dann schafft man das auch dann. Man kann Veränderungen im RAM auslesen, die Software disassemblieren etc. pp. Das Passwort, mit dem du verschlüsselst, steht in der Exe (wenn auch versteckt) und den Algorithmus selbst kann man auch auslesen.
Das ist doch wie mit diesen ganzen Cracks. Da gibt es Leute, die lesen den Algorithmus zur Prüfung der Seriennummern aus und erstellen damit Tools, die zufällige, gültige Seriennnummern generieren.

Erschweren werden solche Maßnahmen den potentiellen Angriff eines Normalbenutzer sicherlich, aber ob es bei sowas hundertprozentige Sicherheit gibt, bezweifel ich etwas.

Hedge 26. Nov 2009 21:07

Re: Manipulation beim Übertragen von Daten erkennen.
 
Die Normalbenutzer sind schonmal wegen SSL und Hash-Checks der Werte im RAM außenvor.
Wenn ich jetzt noch die dran hindere die vielleicht schonmal nen SoftICE-Tutorial gelesen haben, dann bin ich glücklich.

Hab hier im Nebenraum so einen Hacker-Spezi, aber der ist weniger kommunikativ, deswegen frage ich hier nach.

mjustin 27. Nov 2009 06:30

Re: Manipulation beim Übertragen von Daten erkennen.
 
Die Banken haben doch diese TAN-Listen (bzw. iTAN), das wäre doch eine relativ sichere Lösung?

Nachteil: die Benutzer müssen dann vorab eine Liste von TAN Nummern erhalten.

Wenn es eine einfachere Lösung gäbe, die gegen Missbrauch und Hacking sicher ist, würden die Banken die ja sonst sicher schon lange einsetzen.

Auch eine TAN Liste und eine Chipkarte oder einen Tokengenerator kann man natürlich klauen - illegale Handlungen in einem Sicherheitskonzept zu berücksichtigen, ist nicht leicht :)

Cheers,

Hedge 27. Nov 2009 07:57

Re: Manipulation beim Übertragen von Daten erkennen.
 
Merk schon dass das ganz schön hart ist.

Vom Benutzer verlangen TAN-Nummern einzugeben ist schon wieder zu viel des Guten (Im Angesichts des Zwecks des Programms).

Habt ihr noch andere Ideen?

Wie wäre denn das was ich schon unten beschrieben habe:

Zitat:

Wir wäre es wenn ich alle Daten die an das Script geschickt werden sollen logisch zusammenfasse, symetrisch verschlüssele. Dann berechne ich davon einen Hashwert und häng den noch ans Ende der Daten ran?
Klar ist das auch nicht so toll weil es ja auch reverse-engineert werden kann, aber ich könnte den Algorithmus ja immer mal wieder verändern.
Habe schon eingebaut dass der Benutzer zum Programm-Update gewzungen wird.

p80286 27. Nov 2009 14:23

Re: Manipulation beim Übertragen von Daten erkennen.
 
Hallo Hedge,

wär das hier vielleicht etwas für Dich?
Sicherer dateiheader....

Gruß
K-H

negaH 27. Nov 2009 23:06

Re: Manipulation beim Übertragen von Daten erkennen.
 
Dein Program soll automatisch ohne zb. Benutzerpasswörter bzw. echte Benutzerzertifikate arbeiten ? Wenn ja ist es nur mit kryptographischer Hardware sicher zu bekommen, die du zu deinem Program herausgibts.

Mein des öftern zitiertes Beispiel mit der Wäscheleine. Möchtest du eine Wäscheleine aufspannen dann benötigst du zwei stabile Pfosten. Du hast einen Pfosten schon unter Kontrolle, nämlich deinen Server mit dem PHP Script. Den Pfosten "Client und Clientsoftware" hast du nur im Griff wenn
a) der Client selber ein ernsthaftes Interesse an einer sicheren Verbindung hat und entweder bei dir registriert ist und Passwörter/Zertifikate benutzt, oder
b) der Client eine einbruchsichere Hardware benutzt die schlußendlich du kontrolliert, siehe Smartcard, FitzChip, Palladium, Trusted Plattform Alliance/Management, HDTV/HDMI. Diese Allianzen wissen schon was sie wie und warum tuen.

Ich persönlich würde dann a) bevorzugen bevor ich über b) keine wahre Kontrolle mehr über meinen Rechner und damit meine Daten habe.

Gruß Hagen

Hedge 28. Nov 2009 13:06

Re: Manipulation beim Übertragen von Daten erkennen.
 
Danke p80286, da ich gerade wenig Zeit habe, schaue ich morgen mal rein was da so geschrieben wurde.

@negah:
Alle Benutzer sind registriert und beim Aufruf des Scripts werden auch Benutzername und ein Hash des Passworts mit übertragen um denjenigen zu authentifizieren.
Darüber hinaus muss er einen zufälligen Token mitliefern den ihm der Server irgendwann mal gegeben hat und der nur 1 Mal und auf diesen Nutzer beschränkt gültig ist.

Die Frage ist nur inwieweit das einen registrierten Nutzer daran hindert manipulierte Daten an das Script zu schicken, wobei die Manipulation unerkannt bleibt, sobald er die 3 obigen Informationen zur Verfügung hat.

negaH 28. Nov 2009 14:17

Re: Manipulation beim Übertragen von Daten erkennen.
 
Dein System baut auf Kooperation, möchtest du das nicht bleibt nur TPM und damit die "Enteignung" deiner User.
Andererseits ist das in deinem Falle garnicht sooo schlim. Da deine User quasi zertifiziert sind ist es ein leichtes für dich herauszufinden welcher User einen Mißbrauch getätigt hat und schwups sperrst du den Zugriff.

Gruß Hagen

Codewalker 28. Nov 2009 14:58

Re: Manipulation beim Übertragen von Daten erkennen.
 
Es gibt einfache Verschlüsselungen, die Veränderungen erkennen und theoretisch auch korrigieren können (man kann also ermitteln, welches Bit z.B. geändert wurde). Das ist aber nur für extrem kleine Zahlenwerte noch handhabbar, weil das ganz schnell in höhere Mathematik (Lineare Algebra) geht. Das gute ist, dass die Kontrollmatrix nur auf dem Server bekannt sein muss. http://de.wikipedia.org/wiki/Linearer_Code

Hedge 28. Nov 2009 17:03

Re: Manipulation beim Übertragen von Daten erkennen.
 
@Hagen:
TPM steht außer Frage da es für das Projekt gänzlich ungeeignet ist.
Wenn ich erkenne das Jemand an den Daten rummanipuliert, dann weiß ich auch sofort wer es war. Das ist schonmal gut.
Mein Problem ist lediglich es überhaupt zu erkennen.
Wenn ich einen Hash aus den gesendeten Daten berechne und der Nutzer rauskriegt wie das geht, dann habe ich keine Möglichkeit mehr zu ermitteln ob die Daten stimmen oder nicht.


@CodeWalker:
Das sieht vielversprechend aus wenn der Berechnungsaufwand da nicht in den Weg kommt. Gibt es denn irgendwelche Beispielimplementierungen in Delphi oder PHP?

Ruio 28. Nov 2009 17:12

Re: Manipulation beim Übertragen von Daten erkennen.
 
Du könntest noch mit PHP den User-Agent auslesen.

Mithrandir 28. Nov 2009 17:33

Re: Manipulation beim Übertragen von Daten erkennen.
 
Eine Alternative wäre der Reed-Solomon-Code. Quellen:

Google CodeSearch
http://www.google.de/codesearch/p?hl=de&sa=N&cd=15&ct=rc#1Bj98NGFTOQ/~wojcik/dydaktyka/zaoczne/mag/krypt/lab_k4.zip|RSCODE1.PAS

http://www.eccpage.com/ (etwas runter scrollen)
Schifra (C)

negaH 29. Nov 2009 12:27

Re: Manipulation beim Übertragen von Daten erkennen.
 
Zitat:

Zitat von Hedge
@Hagen:
Wenn ich erkenne das Jemand an den Daten rummanipuliert, dann weiß ich auch sofort wer es war. Das ist schonmal gut.
Mein Problem ist lediglich es überhaupt zu erkennen.

das geht nur auf Serverseite mit der inhaltlichen Überprüfung der Daten. Angenommen du kannst deine Daten nicht inhaltlich überprüfen ob sie korrekt oder inkorrekt sind dann wird es niemals eine sichere Methode geben. Beispiel: Du hast einen Datensatz bestehend aus einem Boolean Datenfeld. Das kann nun TRUE oder FALSE sein. Wenn du nun selber keine Möglichkeit hast zu erkennen das TRUE richtig ist und FALSE ist falsch dann kann es niemals eine Methode geben die dieses fehlende Wissen irgendwie anders kompensiert.

Ergo: du hast eine Methode die deine Daten auf inhaltliche Richtigkeit prüfen kann denn ansonsten kannst du das einfach nicht prüfen und jede beliebige Kombination an Dateninhalten sind immer gültige Daten.

Wenn du sicherstellen möchtest das diese Daten nur von deiner Software stammen dann gibt es wie gesagt nur die beiden oben angesprochenen Wege:
a) Kooperation mit deinen Benutzern, ergo Passwörter für die Benutzer und darauf basierend Zertifikate
b) TPM und selbst das könnte man mit relativ geringem Aufwand von par Millionen Ören auch knacken.

Weg c) Abkehr von sicherer Kryptographie und Nutzung von "Tarnen & Täuschen & Obfuscation & Antihacking & Anticracking" Tricks die dann aber um Millionenfaches schwächer sind als echte Kryprographie.

Kryptographie zwischen zwei Parteien ist immer nur dann wirklich sicher wenn beide Parteien sich an die Spielregeln halten, alles andere ist quasi immer unsicher.

Ich sehe oft in der Kryptrographie, bei vielen Menschen, den Wunsch die Quadratur des Kreises zu lösen, die sinnlose Suche nach dem heiligen Gral.

Gruß Hagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:04 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-2025 by Thomas Breitkreuz