1. Introduction
1. Introduction
Mettre en œuvre le Transport Layer Security (TLS) [TLS] ou le Datagram TLS (DTLS) [DTLS] pour des dispositifs contraints peut s'avérer difficile. Toutefois, les récentes améliorations apportées à la conception et à la mise en œuvre des algorithmes cryptographiques ont rendu le TLS accessible à certains dispositifs très limités (voir par exemple [RFC7925]).
La réception de grands enregistrements protégés peut être particulièrement difficile pour un dispositif disposant d'une mémoire de fonctionnement limitée. Les versions 1.2 du TLS [RFC5246] et antérieures permettent aux émetteurs de générer des enregistrements de 16 384 octets, plus toute expansion due à la compression et à la protection jusqu'à 2 048 octets (bien que cette expansion ne soit en pratique que de 16 octets). TLS 1.3 réduit l'expansion autorisée à 256 octets. Allouer jusqu'à 18 Ko de mémoire pour le texte chiffré dépasse la capacité de certaines mises en œuvre.
Une interface de chiffrement authentifié avec données associées (AEAD) (voir [RFC5116]) exige qu'un enregistrement entier soit présent pour le déchiffrer et l'authentifier. De même, d'autres chiffrements ne peuvent produire de données authentifiées tant que l'enregistrement entier n'est pas présent. Le traitement incrémentiel des enregistrements expose les extrémités au risque de données forgées.
L'extension max_fragment_length [RFC6066] a été conçue pour permettre aux clients contraints de négocier une taille d'enregistrement plus faible. Cependant, max_fragment_length présente plusieurs problèmes de conception (voir la section 3).
Ce document définit une extension record_size_limit (section 4). Cette extension remplace max_fragment_length [RFC6066], que le présent document déprécie. Cette extension est valable pour toutes les versions du TLS.
Une taille d'enregistrement protégé plus réduite n'est qu'un parmi de nombreux problèmes qu'une mise en œuvre contrainte peut devoir traiter. L'extension record_size_limit ne traite que le problème d'allocation mémoire ; elle ne traite pas les limites de taille de code, de capacité de traitement ou de bande passante.