È possibile dedurre il supporto della firma SHA256 dalle suite di crittografia TLS o da qualsiasi altra parte di ClientHello (se non è stato inviato nessun signature_algorithm)?

2

I siti web che mirano a mantenere la massima compatibilità con i browser (legacy) potrebbero voler servire catene di certificati firmati SHA2 a quegli agenti utente che li supportano e SHA1 a quelli che non lo fanno.

Il codice TLS 1.2 ( link ) definisce una nuova estensione signature_algorithm che, quando inviato dal browser, può essere utilizzato per rilevare il supporto per SHA2. Ad esempio, se il browser include "SHA256 / RSA" sta dicendo al server che supporta questa specifica coppia di algoritmi hash / firma. Il server può quindi selezionare una catena compatibile e restituirla, oppure tornare a qualcosa di simile a "SHA / RSA".

Ci sono due problemi principali che si basano su questa estensione, tuttavia:

  1. RFC 5246 specifica che è facoltativo (vedere la sezione 7.4.1.4.1)

If the client supports only the default hash and signature algorithms (listed in this section), it MAY omit the signature_algorithms extension. If the client does not support the default algorithms, or supports other hash and signature algorithms (and it is willing to use them for verifying messages sent by the server, i.e., server certificates and server key exchange), it MUST send the signature_algorithms extension, listing the algorithms it is willing to accept.

  1. Alcuni browser (ad esempio, Android 2.3-4.3) supportano SHA2 ma non TLS 1.2 (vedi matrice di funzioni )
    1. Se la logica lato server richiede l'estensione, potrebbe "overserver" i certificati SHA1 ai client che potrebbero altrimenti elaborare SHA2.

Considerate le due precedenti carenze, c'è qualche altra parte del messaggio di handshake TLS ClientHello che può essere usato per rilevare il supporto SHA2?

Il pensiero originale era vedere se SHA256 appariva nel campo PRF / MAC di una suite di crittografia (ad esempio, lo SHA256 alla fine di TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256), ma sembra che anche questi saranno presenti solo a partire da TLS 1.2).

    
posta Patrick 07.09.2015 - 02:26
fonte

1 risposta

3

Gli unici posti affidabili per sapere quali sono gli algoritmi delle firme supportati che hai già rilevato:

  • l'estensione signature_algorithms
  • e la versione TLS offerta dal client, che mostra che il client implementa (si spera) almeno i requisiti minimi di questa versione TLS

Tutto il resto sta indovinando. Potresti provare a impronte digitali del client in base ai codici offerti e all'ordine dei codici (vedi i test dei client SSLLabs ). Potresti aggiungere l'uso di altre estensioni come SNI all'impronta digitale. E quindi è possibile mappare l'impronta digitale alle firme supportate.

Ma raccomanderei contro tali hack inaffidabili. Un sacco di grandi siti come Facebook si spostano o si spostano già su SHA-256 e quelli interrompono ogni client che non supporta questi algoritmi di firma. Questo dovrebbe mettere molta pressione sui client per supportare SHA-256.

    
risposta data 07.09.2015 - 06:00
fonte

Leggi altre domande sui tag