2015-09-27 3 views
1

Je dois implémenter TLS sur un périphérique intégré avec un client OpenSSL exécuté sur un ordinateur normal. Les transferts de données sont limités à moins de 1 Ko à la fois. J'ai regardé mbedtls et il est possible de limiter la mémoire tampon d'enregistrement à 2 Ko pour économiser de la mémoire, cependant l'enregistrement TLS standard peut aller jusqu'à 16 Ko. Est-il possible de limiter la taille de l'enregistrement dans TLS ou à tout le moins exiger chaque commande SSL_write pour créer son propre enregistrement? Sinon, OpenSSL peut concaténer les données et créer un enregistrement trop long pour être reçu. J'ai un contrôle complet sur les deux extrémités de la connexion, donc il ne devrait y avoir aucun problème de compatibilité.Limite de la taille d'enregistrement dans OpenSSL

+0

De la [ 'BIO_f_buffer (3)' page man] (https://www.openssl.org/docs/manmaster/crypto/BIO_f_buffer.html): * "BIO_set_read_buffer_size(), BIO_set_write_buffer_size() et BIO_set_buffer_size() return 1 si le tampon a été redimensionné avec succès ou 0 pour l'échec "et *" ... la taille de tampon initiale est 'DEFAULT_BUFFER_SIZE', actuellement 4096. Toute tentative de réduire la taille du tampon en dessous de DEFAULT_BUFFER_SIZE' est ignorée." * – jww

Répondre

1

Essayez BIO_set_write_buffer_size(), mais vous devriez simplement pouvoir contrôler combien vous lisez ou envoyez à la fois, et vider le BIO après chaque écriture.

Une autre stratégie pourrait être de créer une mémoire BIO, et de transmettre les octets de sortie qu'elle produit. Vous ne pouvez pas contrôler la taille maximale de son tampon, mais vous devriez pouvoir contrôler manuellement la taille de ce bloc.

+0

BIO_set_write_buffer_size' pourrait être difficile. Selon la page de manuel ['BIO_f_buffer (3)'] (https://www.openssl.org/docs/manmaster/crypto/BIO_f_buffer.html): * "... La taille de la mémoire tampon initiale est DEFAULT_BUFFER_SIZE, actuellement 4096. Toute tentative de réduction de la taille de la mémoire tampon au-dessous de DEFAULT_BUFFER_SIZE est ignorée. "* Il peut donc également être nécessaire de changer DEFAULT_BUFFER_SIZE. – jww

+1

Sans avoir vérifié, cela ressemble à une constante de compilation, donc il faudrait probablement recompiler la bibliothèque et lancer des tests de régression. Il y a peut-être aussi d'autres codes qui font des suppositions à ce sujet, car il s'agit aussi d'une taille de page. – Davislor

+0

Oui, j'attends de voir le résultat. Nous pouvons envoyer un rapport de bogue référençant ceci et quelques autres questions sur SO si OpenSSL a besoin d'une recompilation. (Je considère SO comme une source de vrais problèmes qui peuvent être résolus). – jww