Passa al contenuto principale

4. The "record_size_limit" Extension (L'estensione 'record_size_limit')

4. The "record_size_limit" Extension (L'estensione «record_size_limit»)

L'ExtensionData dell'estensione record_size_limit è RecordSizeLimit:

uint16 RecordSizeLimit;

Il valore di RecordSizeLimit è la dimensione massima del record in ottetti che l'endpoint è disposto a ricevere. Questo valore serve a limitare la dimensione dei record creati durante la codifica dei dati applicativi e del messaggio di handshake protetto in record.

Quando l'estensione record_size_limit è negoziata, un endpoint NON DEVE generare un record protetto con testo in chiaro più grande del valore RecordSizeLimit ricevuto dal peer. I messaggi non protetti non sono soggetti a questo limite.

Questo valore è la lunghezza del testo in chiaro di un record protetto. Il valore include il tipo di contenuto e il padding aggiunto in TLS 1.3 (cioè la lunghezza completa di TLSInnerPlaintext). In TLS 1.2 e versioni precedenti, il limite copre tutti gli input a compressione e crittografia (cioè i dati che producono infine TLSCiphertext.fragment). Il padding aggiunto come parte della crittografia, ad esempio da un cifrario a blocchi, non è incluso in questo conteggio (vedere la sezione 4.1).

Un endpoint che supporta tutte le dimensioni di record può includere qualsiasi limite fino al limite massimo definito dal protocollo per la dimensione massima del record. Per TLS 1.2 e precedenti, tale limite è di 2^14 ottetti. TLS 1.3 usa un limite di 2^14+1 ottetti. Valori più elevati sono attualmente riservati a future versioni del protocollo che potrebbero consentire record più grandi; un endpoint NON DEVE inviare un valore superiore alla dimensione massima di record definita dal protocollo salvo esplicita autorizzazione da tale versione o estensione futura. Un server NON DEVE far rispettare questa restrizione; un client potrebbe annunciare un limite più elevato abilitato da un'estensione o versione che il server non comprende. Un client PUÒ interrompere l'handshake con un avviso illegal_parameter se l'estensione record_size_limit include un valore maggiore della dimensione massima di record consentita dalla versione del protocollo e dalle estensioni negoziate.

Anche se un peer fornisce un limite di dimensione del record maggiore, un endpoint NON DEVE inviare record più grandi del limite definito dal protocollo, salvo esplicita autorizzazione da una futura versione o estensione TLS.

Il limite di dimensione del record si applica solo ai record inviati verso l'endpoint che annuncia il limite. Un endpoint può inviare record più grandi del limite che annuncia come proprio limite. Un endpoint TLS che riceve un record più grande del limite annunciato DEVE generare un avviso fatale record_overflow; un endpoint DTLS che riceve un record più grande del limite annunciato PUÒ generare un avviso fatale record_overflow oppure scartare il record.

Gli endpoint DOVREBBERO annunciare l'estensione record_size_limit, anche se non hanno bisogno di limitare la dimensione dei record. Per i client, ciò consente ai server di annunciare un limite a loro discrezione. Per i server, ciò consente ai client di sapere che il loro limite sarà rispettato. Se questa estensione non è negoziata, gli endpoint possono inviare record di qualsiasi dimensione consentita dal protocollo o da altre estensioni negoziate.

Gli endpoint NON DEVONO inviare un'estensione record_size_limit con un valore inferiore a 64. Un endpoint DEVE considerare la ricezione di un valore minore come errore fatale e generare un avviso illegal_parameter.

In TLS 1.3, il server invia l'estensione record_size_limit nel messaggio EncryptedExtensions.

Durante la rinegoziazione o la ripresa, il limite di dimensione del record viene rinegoziato. I record sono soggetti ai limiti stabiliti nell'handshake che produce le chiavi usate per proteggere tali record. Ciò ammette la possibilità che l'estensione non sia negoziata quando una connessione è rinegoziata o ripresa.

Il Path Maximum Transmission Unit (PMTU) in DTLS limita anche la dimensione dei record. Il limite di dimensione del record non influisce sul rilevamento del PMTU e DOVREBBE essere impostato in modo indipendente. Il limite di dimensione del record è fisso durante l'handshake e quindi dovrebbe essere impostato in base ai vincoli dell'endpoint e non all'ambiente di rete attuale. In confronto, il PMTU è determinato dal percorso di rete e può cambiare dinamicamente nel tempo. Vedere [PMTU] e la sezione 4.1.1.1 di [DTLS] per maggiori dettagli sul rilevamento del PMTU.

Il PMTU governa la dimensione dei datagrammi UDP, che limita la dimensione dei record, ma non impedisce che i record siano più piccoli. Un endpoint che invia record piccoli può comunque inviare più record in un singolo datagramma UDP.