Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Bestehende TCP/IP-Kommunikation sicher machen (https://www.delphipraxis.net/195828-bestehende-tcp-ip-kommunikation-sicher-machen.html)

sh17 29. Mär 2018 11:58

AW: Bestehende TCP/IP-Kommunikation sicher machen
 
Zitat:

Zitat von 361 (Beitrag 1397565)
Da das Ganze über das Internet läuft, sollte es schon SEHR sicher sein.

Also die implementierten Verschlüsselungsalgorithmen funktionieren. Ob Du sie dann richtig und sicher anwendest (Schlüsseltausch etc.) liegt an Dir.

Soweit ich SecureBridge kenne, arbeitet es ohne DLLs und Du wirst sogar die Indys los

https://www.devart.com/sbridge/docs/

arnold mueller 29. Mär 2018 15:47

AW: Bestehende TCP/IP-Kommunikation sicher machen
 
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.

scrat1979 29. Mär 2018 16:45

AW: Bestehende TCP/IP-Kommunikation sicher machen
 
Wenn die Verbindung per se unverschlüsselt bleiben kann / soll dann empfehle ich ComponentAce EasyCompression Library. Verschlüsselt und komprimiert Streams. Dies habe ich bei meine C/S- Anwendung in Verwendung und bin begeistert.

361 29. Mär 2018 17:00

AW: Bestehende TCP/IP-Kommunikation sicher machen
 
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.

scrat1979 29. Mär 2018 21:25

AW: Bestehende TCP/IP-Kommunikation sicher machen
 
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 :)

timog 30. Mär 2018 06:59

AW: Bestehende TCP/IP-Kommunikation sicher machen
 
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. :wink:

slemke76 30. Mär 2018 11:17

AW: Bestehende TCP/IP-Kommunikation sicher machen
 
Hallo,

Zitat:

Zitat von timog (Beitrag 1397634)
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. :wiejetzt:

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.

Zitat:

Zitat von timog (Beitrag 1397634)
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz