Come esattamente l'algoritmo utilizzato ha deciso quando si utilizza TLS (mail)

2

(Spero che questo sia il posto giusto, non ero sicuro di quale dei siti di stackexchange usare) Ho la seguente domanda:

Quando si scambiano messaggi con un'altra società, i messaggi che inviamo vengono crittografati utilizzando TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039). Tuttavia, il nostro messaggio Hello mostra: %codice% e il loro messaggio Hello (quando ci inviano mail) mostra: Cipher Suites (49 suites) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a) Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039) Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA (0x0038) [...]

Da quello che ho capito, l'ordine cifrato che il cliente invia nel suo Ciao dovrebbe essere usato per scegliere il codice.

Di conseguenza, mi aspetto che venga utilizzato Cipher Suites (49 suites) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024) Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a) Cipher Suite: TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 (0x00a3) Cipher Suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x009f) Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (0x006b) Cipher Suite: TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 (0x006a) Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039) [...] .

Quando riceviamo mail da loro, vengono crittografati utilizzando TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) come previsto.

Ci sono altri fattori di cui non sono a conoscenza? Il "problema" si verifica con più altre società.

    
posta whatever 09.06.2017 - 13:30
fonte

2 risposte

2

Un punto importante da fare è che la macchina e il software che l'altra azienda utilizza per emettere invia non è necessariamente la stessa macchina e il software che è usato per ricevere email. E anche quando sono uguali, le configurazioni SSL per i ruoli "client" e "server" possono essere distinte.

Se si desidera dedurre le suite di crittografia utilizzate da un determinato server, è necessario parlarne nel ruolo del server, con uno strumento di scansione che si connetterà ripetutamente e farà tentativi di handshake per capire come reagisce il server; uno di questi strumenti è TestSSLServer . Due caveat qui:

  • Se SSL / TLS viene eseguito dopo un comando STARTTLS esplicito, lo strumento dovrà inviare tale STARTTLS e, più in generale, gestire il bit del protocollo SMTP prima dell'handshake. Non tutti gli strumenti lo fanno (TestSSLServer, al momento, non lo fa).

  • Non dovresti eseguire la scansione di macchine diverse dalla tua. Assicurati di ottenere il consenso dell'altra azienda per farlo.

In ogni caso, per rispondere alla tua domanda specifica: in SSL e TLS, il client invia un elenco di suite di crittografia supportate, ordinate per preferenza. Quindi il server sceglie. In che modo il server sceglie dipende interamente da esso. Alcuni server sono cortesi e seguono le preferenze del cliente. Altri server applicano il proprio ordine di preferenza. Ancora altri server fanno un tipo di mix tra i due, ad es. applicheranno AES su 3DES (indipendentemente da ciò che il cliente afferma di preferire) ma seguirebbero la scelta del cliente per le dimensioni della chiave (AES-128 vs AES-256).

Ci sono anche altri parametri da tenere in considerazione. Ad esempio, un client SSL può annunciare, insieme al supporto delle suite di crittografia che fanno ECDHE, un elenco di curve ellittiche che può gestire per ECDHE. Il server potrebbe anche supportare ECDHE ma scegliere di non utilizzarlo perché non supporta alcuna delle curve implementate sul lato client.

In particolare (e questo sembra plausibile, visto che si sta osservando una suite di crittografia DHE scelta, non ECDHE), ho osservato le due seguenti cose, che potrebbero corrispondere alla situazione:

risposta data 09.06.2017 - 14:18
fonte
1

... the cipher order the client sends in his Hello should be used to pick the cipher.

Il server è libero di scegliere il codice che meglio si adatta al server dall'elenco di codici che il client offre. Le strategie tipiche consistono nel scegliere il primo cifrario supportato dal server nella preferenza del client (ovvero scegliere in base alle preferenze del cliente) o scegliere il primo cifrario supportato dal client in base alla preferenza del server (ovvero scegliere in base alle preferenze del server) . Questi due modi sono spesso configurabili sul server, come ssl_prefer_server_ciphers on con nginx ma il server potrebbe anche impiegare qualsiasi altra strategia per scegliere il cifrario.

... and their Hello message (when they are sending mails to us) shows:

Le crittografie e il loro ordine che un'applicazione utilizza come client TLS potrebbero essere uguali ma non è necessario che siano uguali a quello utilizzato come server. Ciò significa che non è possibile rimandare l'ordine di cifratura quando utilizzato come server dall'ordine in ClientHello. Se i codici e l'ordine dei client e dei server sono gli stessi dipende dall'applicazione specifica e dallo stack TLS.

    
risposta data 09.06.2017 - 14:06
fonte

Leggi altre domande sui tag