Verschlüsselung 4D-Server - 4D

Product :4D - 4D Server
4D : v15

Guten Abend
zum Thema “Verschlüsselung & 4D” hätte ich folgende Fragen:

  1. Wie kann überprüft werden ob eine Verbindung zwischen 4D und 4D Server verschlüsselt erfolgt? Es gibt keinen Befehl in 4D dafür.

  2. cert.pem und key.pem müssen gem. Anleitung (http://doc.4d.com/4Dv15/4D/15.4/ClientServer-Verbindungen-verschlusseln.300-3286412.de.html) auf dem 4D Server und auf dem Client 4D im Verzeichnis Resources abgelegt sein. key.pem ist der private Schlüssel und darf eigentlich nicht auf die Clients verteilt werden, sonst macht die ganze asymmetrische Verschlüsselungsgeschichte keinen Sinn (siehe https://de.wikipedia.org/wiki/Asymmetrisches_Kryptosystem).

  3. Überprüfung der Zertifikate mangelhaft
    In der Annahme, dass die Anleitung von 4D stimmt, dass cert.pem und key.pem auf dem Server UND Client vorhanden sein müssen haben wir folgende Tests gemacht:
    Wir haben auf dem 4D Server eigene cert.pem und key.pem im Resources Verzeichnis. Auf dem Client haben wir diese Dateien bewusst gelöscht. Wir haben nun versucht uns mit 4D mit dem 4D Server zu verbinden und es hat funktioniert!
    Auch wenn auf dem 4D Client andere cert.pem und key.pem Dateien als auf dem 4D Server vorhanden sind gelingt die Anmeldung!
    Dieses Verhalten hat uns stark verwundert. Unserer Meinung nach sollte die Verbindung ganz klar abgelehnt werden weil die Schlüssel auf Client und Server unterschiedlich sind.
    Wir wissen auch nicht ob die Verbindung dann noch verschlüsselt ist oder nicht da wir keine Möglichkeit haben dies zu Prüfen (siehe Punkt 1).
    Ob ServerNet verwendet wird oder nicht spielt keine Rolle. Verbinden geht trotzdem.

Wenn wir davon ausgehen dass die Anleitung von 4D falsch ist, und auf dem Client die key.pem nicht vorhanden sein muss stimmt das oben erklärte Verhalten mit der erfolgreichen Anmeldung.
Jedoch ist es so, dass wenn eine der beiden Dateien auf dem Client fehlt, dass dann ein Fehler NACH dem Login kommt. (Runtime Error “Fehler” Nr 38 [Keine Beschreibung] und 58 “Socket durch Peer herunterfahren”. Ein Klick auf weiter startet jedoch die Applikation ganz normal…
Wenn jedoch die falschen Dateien auf dem Client sind, dass kommt nach dem Anmelden kein Fehler.
Wir würden hier erwarten, dass das Zertifikat welches vom Server gesendet wird geprüft und verglichen wird mit dem welches auf dem Client gespeichert ist und falls dies nicht übereinstimmt, dass 4D die Anmeldung mit der entsprechenden Meldung beendet.

  1. Unserer Meinung nach sollte es doch so sein, dass der Client den öffentlichen Schlüssel vom Server abholt, diesen mit dem Zertifikat prüft und dann der Schlüsselaustausch stattfindet.
    Das wäre ja eigentlich die Idee von asymmetrischen Verfahren um genau das Schlüsselverteilungsproblem zu umgehen.
    Eine Erweiterung wäre, dass jeder Client ein eigenes Zertifikat hat um sich gegenüber dem Server zu authentisieren.
    Siehe Abschnitt “Funktionsweise” auf https://de.wikipedia.org/wiki/Transport_Layer_Security#Funktionsweise.

  2. Abgesehen davon sind die Beschreibungen zum Thema Verschlüsselung bei 4D mangelhaft:

http://doc.4d.com/4Dv15/4D/15.4/TLS-Protokoll.300-3275009.de.html:
“Mit dem privaten Schlüssel werden die Daten verschlüsselt. (…) Mit dem öffentlichen Schlüssel werden die Daten entschlüsselt.”
Dies ist falsch! Gem. https://blog.k-webs.ch/2015-11-ssltls-verschlusselung-bei-https-verbindungen.html ist folgendes richtig:
“Nachrichten können mit dem Public Key verschlüsselt, aber nicht mit dem selben Key wieder entschlüsselt werden, da eine Einwegfunktion zur Verschlüsselung genutzt wird. Zum Entschlüsseln der Nachricht wird der Private Key benötigt.”

http://doc.4d.com/4Dv15/4D/15.4/ClientServer-Verbindungen-verschlusseln.300-3286412.de.html:
Mehrfach steht hier TSL statt TLS.

Allgemein sollte es mehr Informationen geben, also z.B. konkrete Implementierungsanleitungen.

  1. 4DD Datendatei:
    Sind die Daten in der 4D Datendatei verschlüsselt? Gem. http://4d.1045681.n5.nabble.com/How-secure-is-the-data-in-a-4dd-file-at-rest-td1411379.html ist dies nicht der Fall:
    “The data in a 4D data file is not secure at all, just open it with a text editor to see.”
    Ist dies korrekt?

  2. Hat jemand Erfahrungen im Bereich Verschlüsselung zwischen 4D Server und 4D?

Schon im Voraus vielen Dank für Antworten

GSE & Co.
Peter Gisin

Wenden Sie sich bitte an den technischen Support Ihres Händlers, vermutlich Ajar in der Schweiz.

Kurzfassung: 4D Server/Client verwendet entweder einen (in 4D enthaltenes) mitgelieferten Schlüssel - alternativ kann dieser ersetzt werden, dann wir ihrer verwendet - aber nur falls dieser vollständig enthalten ist.

Das ist kein per Client Zertifikat oder Client Authentifizierung. Es ist nur ein anderes Zertifikat als das enthaltene.