Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Bestimmten Cipher bei Indy+OpenSSL verwenden (https://www.delphipraxis.net/203681-bestimmten-cipher-bei-indy-openssl-verwenden.html)

Codehunter 12. Mär 2020 09:59

Bestimmten Cipher bei Indy+OpenSSL verwenden
 
Hallo!

In Verbindung mit diesem Thema bin ich auf ein Problem gestoßen. Und zwar übergibt Indy korrekterweise eine Liste der unterstützten Cipher beim Client Hello an den Server. Der Server pickt sich daraus dann einen Cipher heraus, den er ebenfalls unterstützt und teilt das dann im Server Hello mit. Soweit ist die Welt auch noch schön.

Dummerweise einigen sich die beiden in meinem Fall jetzt auf RSA_PKCS1_SHA512 und dieser scheint nun wieder nicht von Wireshark unterstützt zu werden. Deshalb kann ich nicht in den Traffic hinein schauen.

RSA_PKCS1_SHA512 ist auch der erste, der in der Cipher-Liste im Client-Hello steht. Daher frage ich mich, ob ich die Liste der übergebenen Cipher beeinflussen und eben solche ausschließen kann, die Wireshark nicht mag.

Grüße
Cody

KodeZwerg 12. Mär 2020 10:37

AW: Bestimmten Cipher bei Indy+OpenSSL verwenden
 
Ich habe mich da noch nie rangetraut, dennoch kann ich dir mitteilen das man es sehr wahrscheinlich beeinflussen kann.

in der IdSSLOpenSSLHeaders.pas
Delphi-Quellcode:
SSL_DEFAULT_CIPHER_LIST = 'AES:ALL:!aNULL:!eNULL:+RC4:@STRENGTH'; //* low priority for RC4 */

(diese zeile enstammt von hier: github.com/skelter)

Wie gesagt, ich habe da noch nie rumgespielt, aber das wäre mein ansatz, vielleicht hilft es dir?

Codehunter 12. Mär 2020 11:50

AW: Bestimmten Cipher bei Indy+OpenSSL verwenden
 
Zitat:

Zitat von KodeZwerg (Beitrag 1459527)
Ich habe mich da noch nie rangetraut, dennoch kann ich dir mitteilen das man es sehr wahrscheinlich beeinflussen kann.

Ja da trauen sich allgemein nicht viele ran. Ich musste mich von Berufs wegen damit befassen um Verbindungen mit externen Non-Standard-REST-Schnittstellen debuggen zu können. Vor mir hat wohl laut Remy Lebeau auch noch nie einer versucht, mit Indy ein NSS-File zu erstellen. Deshalb blieb ein Bug in Indy über Jahre unentdeckt (siehe oben verlinkter Thread)

Zitat:

Zitat von KodeZwerg (Beitrag 1459527)
in der IdSSLOpenSSLHeaders.pas
Delphi-Quellcode:
SSL_DEFAULT_CIPHER_LIST = 'AES:ALL:!aNULL:!eNULL:+RC4:@STRENGTH'; //* low priority for RC4 */

(diese zeile enstammt von hier: github.com/skelter)

Das scheint aber innerhalb von Indy nur zur Ausgabe von Fehlermeldungen verwendet zu werden? TIdSSLIOHandlerSocketOpenSSL.SSLOptions.CipherList ist bei mir auch ein Leerstring und scheint ignoriert zu werden wenn man ihn explizit setzt.

generic 12. Mär 2020 12:10

AW: Bestimmten Cipher bei Indy+OpenSSL verwenden
 
Eine Auflistung von Krypto-Methode bekommt man in diesen Link vorgeschlagen:
https://bettercrypto.org/

Da mal für OpenSSL suchen. In den vorgeschlagenen Einstellungen wird z.B. !RC4 angegeben - der ist ja bekanntlich unsicher. In deinen String steht der noch als gültig drin.

KodeZwerg 12. Mär 2020 12:29

AW: Bestimmten Cipher bei Indy+OpenSSL verwenden
 
Ich habe mal Deinen Tipp mit rlebeau verfolgt und bin auf dieses hier gestoßen, hilft nicht wirklich weiter aber das worauf ich mich bezog war wohl für'ne aaaalte indy....

huch.... die DP ist gerade putt putt bei mir, schaut alles total strange aus, kann keine knöpfe drücken deshalb direkt so:
auf seite https://www.gitmemory.com/rlebeau steht folgendes:
Zitat:

FYI, Indy no longer uses SSL_DEFAULT_CIPHER_LIST, since it doesn't keep up with OpenSSL updates. If the CipherList property is empty, Indy lets OpenSSL use whatever default list it wants. That change was made awhile ago.

Codehunter 15. Mär 2020 15:49

AW: Bestimmten Cipher bei Indy+OpenSSL verwenden
 
ICh hab sowas schon befürchtet. Mit anderen Worten müsste ich für solche Zwecke ein eigenes OpenSSL kompilieren und manche Cipher ausklammern. Oh man. Da kann man Indy noch nicht mal einen Vorwurf machen.

HolgerX 15. Mär 2020 16:47

AW: Bestimmten Cipher bei Indy+OpenSSL verwenden
 
Hmm..

Zitat:

FYI, Indy no longer uses SSL_DEFAULT_CIPHER_LIST, since it doesn't keep up with OpenSSL updates. If the CipherList property is empty, Indy lets OpenSSL use whatever default list it wants. That change was made awhile ago.
Aber wenn ich das richtig gelesen habe, dann müsstet Du ja nur der property CipherList einen gültigen Wert geben, dann sollte diese benutzt werden.
Denn da steht ja nur, wenn diese property 'Leer' ist, dass dann OpenSLL sein default verwendet und nicht mehr die Konstante SSL_DEFAULT_CIPHER_LIST.

Codehunter 15. Mär 2020 17:46

AW: Bestimmten Cipher bei Indy+OpenSSL verwenden
 
Zitat:

Zitat von HolgerX (Beitrag 1459809)
Aber wenn ich das richtig gelesen habe, dann müsstet Du ja nur der property CipherList einen gültigen Wert geben, dann sollte diese benutzt werden.

Siehe #3.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:41 Uhr.

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