沙沙声(或布莱恩史密斯/环)AES CBC 选项DONT_INSERT_EMPTY_FRAGMENTS模拟



我正在使用 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 连接。 例如,窗口 7 默认使用 tls 1.0(或 1.1(。

谢谢你的帮助。

Rustls 不支持 CBC 密码套件或 TLS 1.0 或 1.1。 在TLS中使用CBC的方式(MAC-then-Encrypt(被认为是不安全的(特别是当与你想要的选项一起使用时(,Rustls没有实现不安全的算法。 Rustls 支持 TLS 1.2 和 1.3,并且仅支持 AEAD 算法(AES-GCM 和 ChaCha20-Poly1305(。

如果要使用 Rustls 编写服务器,则需要确保客户端至少支持 TLS 1.2 并使用安全密码套件。 如果您关心数据安全性或有任何类型的合规性要求,无论如何都应该这样做。

请注意,Windows 7将在一月份停产,因此此后其TLS支持不应成为问题。

最新更新