AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Bestehende TCP/IP-Kommunikation sicher machen
Thema durchsuchen
Ansicht
Themen-Optionen

Bestehende TCP/IP-Kommunikation sicher machen

Ein Thema von 361 · begonnen am 29. Mär 2018 · letzter Beitrag vom 30. Mär 2018
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Bestehende TCP/IP-Kommunikation sicher machen

  Alt 29. Mär 2018, 09:56
Nimm einfach Lockbox.

Mach einen Handshake um die Infos auszutauschen und dann go...

Im Prinzip wie es HTTPS auch "unten drunter" macht...

Mavarik
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Bestehende TCP/IP-Kommunikation sicher machen

  Alt 29. Mär 2018, 09:56
Wenn es aufgrund von Restriktionen Theater im Netzwerk geben könnte, dann kannst Du natürlich auch überlegen, nicht die Verbindung als Ganzes, sondern nur Deine Nutzdaten zu verschlüsseln.

Da gibt es Bibliotheken, die sich vollständig in Deinen Quellcode integrieren lassen (z.B. LockBox oder auch von TMS) und z.B. AES-256 oder dgl. anbieten. Auch da reden wir dann über anerkannte Standards. Wichtig wird dann jedoch deren korrekte Verwendung - die schönste Verschlüsselung nützt nichts, wenn man bei der Aufbewahrung des Schlüssels schlampt. Stell Dir einen wirklich guten Tresor vor, dessen Schlüssel außen mit einem Streifchen Tesafilm befestigt wurde, damit er nicht verloren geht.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Bestehende TCP/IP-Kommunikation sicher machen

  Alt 29. Mär 2018, 09:59
Welche Zielplattformen hast Du denn zu unterstützen? Die neuen HTTP-/Net-Komponenten von Delphi unterstützen z.B. direkt die Windows-Schnittstellen, um gesicherte Verbindungen aufzubauen. Dabei wäre OpenSSL nicht erforderlich.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
361

Registriert seit: 27. Okt 2005
Ort: Berlin und Brandenburg
93 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Bestehende TCP/IP-Kommunikation sicher machen

  Alt 29. Mär 2018, 10:09
Hallo Mavarik, hallo Daniel,

vielen Dank für den Hinweis mit Lockbox, habe ich mir angesehen und scheidet wegen der Lizenzen aus. TMS meint Ihr sicherlich das "TMS Cryptography Pack"? Das würde bedeuten, man verschlüsselt nur die Strings? Das wäre sehr interessant für mich.

Mit den neuen HTTP-/Net-Komponenten von Delphi kenne ich mich noch gar nicht aus. Immer wenn ich HTTP lese, denke ich an Port 80, weil ich keinerlei Erfahrungen hier habe und dieser Port würde sich ja ausschließen. Auch kenne ich mich nicht mit Zertifikaten aus, die Software muss relativ leicht einrichtbar sein, aktuell einfach eine Service-DLL welche mittels kleinem Setup installiert und registriert wird. Eigentlich sollte dann schon die Kommunikation losgehen.

"Aufbewahrung des Schlüssels": Kannst Du hier Tipps oder Hinweise geben? Um es mal zu sortieren. Wenn ich eine String-Verschlüsselung verwende, ist dieses Thema dann auch wichtig? Ich würde den Schlüssel gern im Code haben, jedenfalls ist es aktuell so. Oder bezieht sich das bei der Verwendung eines Zertifikats?

Ich bin parallel auch noch auf RCx von Hagen/Himitsu gestoßen. Ein paar Empfehlungen von Euch wären jetzt schön oder auch Input wie das mit dem HTTP/Net-Komponenten von Delphi grob ginge.

VG
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Bestehende TCP/IP-Kommunikation sicher machen

  Alt 29. Mär 2018, 10:48
Hallo Mavarik, hallo Daniel,

vielen Dank für den Hinweis mit Lockbox, habe ich mir angesehen und scheidet wegen der Lizenzen aus.
LGPL3?
Habe ich da etwas übersehen?

Mavarik
  Mit Zitat antworten Zitat
arnold mueller

Registriert seit: 27. Jul 2005
129 Beiträge
 
#6

AW: Bestehende TCP/IP-Kommunikation sicher machen

  Alt 29. Mär 2018, 15:47
Ich kann dir Real Thin Client empfehlen https://rtc.teppi.net Das sind sehr schnelle und robuste Komponenten für Client-Server-Kommunikation mit eingebauter Verschlüsselung über Property schaltbar.

Wenn du dein Protokoll nicht auf das native RTC-Format oder auf JSON oder XML umstellen willst, kannst du auch die RawTCP-Komponente benutzen.
  Mit Zitat antworten Zitat
361

Registriert seit: 27. Okt 2005
Ort: Berlin und Brandenburg
93 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: Bestehende TCP/IP-Kommunikation sicher machen

  Alt 29. Mär 2018, 17:00
Hallo zusammen,

@Sven: also SecureBridge habe ich abgebrochen, da in der Demo bereits ein nerviger Fehler war.

@arnold mueller: Vielen Dank, die teste ich jetzt als nächstes, wird ein langer Tag...

@scrat1979: Vielen Dank, schaue ich mir auch an, waren das nicht die ZipForge-Entwickler? Unterstützen die auch einfach Strings? NACHTRAG: Anscheinend schon, habe ich jedenfalls im Manual gefunden. Das probiere ich auch gleich mal aus.

Geändert von 361 (29. Mär 2018 um 17:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Bestehende TCP/IP-Kommunikation sicher machen

  Alt 29. Mär 2018, 21:25
Meine Komponenten für den Server sowie die Clients wurden übrigens von den sgcWebSocket-Komponenten abgeleitet nachdem ich mit vielen anderen Komponenten verzweifelt bin. Funktionierte auf Anhieb perfekt! Noch eigenes Protokoll und Userdatenbank integriert - Fertig. Vielleicht auch einen Blick wert
Michael Kübler
  Mit Zitat antworten Zitat
Benutzerbild von timog
timog

Registriert seit: 26. Sep 2006
Ort: Landkreis Oldenburg (Oldb)
117 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#9

AW: Bestehende TCP/IP-Kommunikation sicher machen

  Alt 30. Mär 2018, 06:59
Zu TMS: Die RandomDLL wird nur bei 64bit Anwendungen benötigt. Es gibt keinen Quellcode zu den Komponenten, nur kompilierte Obj-Files. Quellcodeverfügbarkeit finde ich persönlich immer wichtig.

Es gibt auch noch SecureBlackBox ohne externe Abhängigkeiten zu DLLs. Updates erscheinen sehr regelmäßig. SourceCode gibt es allerdings nur im teuersten Paket und nicht mehr als Abo. Die EULA/Lizenz findest Du hier http://www.secureblackbox.com/company/legal/eula/

Komponenten zur Kommunikation mit dem Zertifikat-Store des OS sind bei SBL ebenfalls enthalten, das könnte Dir bei der Frage zum Speichern des Schlüssels helfen (Client-Zertifikate). Insgesamt ist die Lernkurve bei SBL aber eher steil, man muss noch an einiges selber denken, wie Prüfen auf Zertifikat-Revocation, etc. Es gibt einige Beispiele und ein Forum, mit dem man sich am Anfang etwas behelfen kann, da SBL aber für mehrere Programmiersprachen verfübar ist, findet man nicht immer gleich ein Delphi-Beispiel.

Sicherheit ist halt nicht einfach und braucht Zeit.
Timo
Real Programmers are surprised when the odometers in their cars don't turn from 99999 to 9999A.
  Mit Zitat antworten Zitat
slemke76

Registriert seit: 29. Mär 2005
Ort: Quakenbrück
146 Beiträge
 
#10

AW: Bestehende TCP/IP-Kommunikation sicher machen

  Alt 30. Mär 2018, 11:17
Hallo,

Es gibt auch noch SecureBlackBox ohne externe Abhängigkeiten zu DLLs. Updates erscheinen sehr regelmäßig. SourceCode gibt es allerdings nur im teuersten Paket und nicht mehr als Abo.[..]
Habe auch die SBB im Einsatz - das einzige, was mich immer noch ärgert ist, dass mit Übernahme durch /n software meine Lifetime Lizenz hinfällig war/ist.

Was ich auch gut finde, ist der Source (ja, ich habe dann das "große" Paket gekauft), keine DLLs, 64bit Unterstützung - und ein wirklich guter & schneller Support.

Insgesamt ist die Lernkurve bei SBL aber eher steil, man muss noch an einiges selber denken, wie Prüfen auf Zertifikat-Revocation, etc.
Stimmt nicht ganz

Delphi-Quellcode:
    idUri:=TIdUri.Create(FRemoteURL);
    CertificateValidator.ValidateForSSL(Certificate, idUri.Host, '', hrServer, nil, true, Now, Validity, Reason);
https://www.secureblackbox.com/kb/he...ateforssl.html

Ich benutze die Komponenten zusammen mit Indy (IdHTTP.IOHandler) - ich glaube, in es sind aber auch Komponenten enthalten, die die Indys komplett ablösen könnten (bin mir nicht ganz sicher, fahre sehr gut mit den Indys). Die .ValidateForSSL wird in der Funktion OnCertificateValidate der TElClientIndySSLIOHandlerSocket Klasse aufgerufen. Es gibt bei der SBB auch ein paar Beispiele.

Persönlich bin ich noch einen Schritt weiter gegangen - ValidateForSSL prüft die komplette Chain (lässt sich auch noch weiter parametrisieren) - inklusive Revokes, Gültigkeitszeitraum, etc. Um einen MITM Angriff zu verhinden (man könnte ja selber eine CA erstellen, die man im Zertifikatsspeicher als vertrauenswürdig kennzeichnet) prüfe ich zusätzlich den public Teil des Serverzertifikates gegen einen hard codierten Wert (klar, bei einem Reissue muss man den Source anpassen). Alternativ könnte auch prüfen, ob es sich um die korrekte CA handelt.

Kurzum: Für das Vorhaben würde ich persönlich wahrscheinlich auf HTTPS setzen mit entsprechender Prüfung der Zertifikate. Ist sicher und man muss nicht ganz tief in die Krypto einsteigen. Halb oder falsch implementierte Krypto wiegt einen meistens in falscher Sicherheit. Hinzu kommt, dass HTTPS auch durch Firewalls i.d.R. problemlos druch geht

Optional auch noch - wie schon erwähnt - Client-SSL Zertifikate und/oder CA nutzen, dann kann der Server ebenfalls die Identität prüfen.

Grüße
Sebastian


Nachtrag:
unbedingt SBHTTPCRL und SBHTTPOCSPClient in dies uses Klausel aufnehmen, wenn man die Komponenten zur Laufzeit erzeugt (so mache ich das immer, dann muss man nach einer Delphi Neuinstallation nicht wieder etliche Packages installieren), sonst könnte der Revocation Check fehlschlagen.

Geändert von slemke76 (30. Mär 2018 um 11:26 Uhr) Grund: Nachtrag hinzugefügt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 18: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