Rustls (или briansmith / ring) AES CBC опция DONT_INSERT_EMPTY_FRAGMENTS аналог - PullRequest
0 голосов
/ 16 октября 2019

Я использую библиотеку rustls (https://github.com/ctz/rustls) для соединений TLS. Все хорошо, за исключением того, что некоторые серверы не устанавливают соединение (происходит сбой после сообщения HelloClient), поскольку они не поддерживают пустые фрагменты для режима CBC(имя опции из OpenSSL - SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS, подробности здесь https://www.openssl.org/~bodo/tls-cbc.txt). Я знаю, что rustls также использует библиотеку колец (https://github.com/briansmith/ring),, но я также не могу найти подобную опцию там.

Я пытался исследовать шорох и код звонка, но аналогичные опции не были найдены.

Я ожидаю установить соединение tls без пустых фрагментов с сервером, который его не поддерживает. Например, Windows 7 используетtls 1.0 (или 1.1) по умолчанию.

Спасибо за помощь.

1 Ответ

1 голос
/ 18 октября 2019

Rustls не поддерживает наборы шифров CBC или TLS 1.0 или 1.1. Использование CBC (MAC-then-Encrypt) в TLS считается небезопасным (особенно при использовании с нужной вам опцией), и Rustls не реализует небезопасные алгоритмы. Rustls поддерживает TLS 1.2 и 1.3 и только алгоритмы AEAD (AES-GCM и ChaCha20-Poly1305).

Если вы хотите написать сервер с использованием Rustls, вам необходимо убедиться, что ваши клиенты поддерживают как минимум TLS 1.2 ииспользуйте безопасные наборы шифров. Вы должны сделать это в любом случае, если вы заботитесь о своей безопасности данных или имеете какие-либо требования к соответствию.

Как примечание, Windows 7 будет EOL в январе, поэтому после этого поддержка TLS не должна беспокоить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...