基于 Rust 的 Rustls 性能优于 OpenSSL 和 BoringSSL

在互联网通信中,保证数据的安全传输至关重要。这就是Transport Layer Security (TLS) 协议的作用,它为网络通信提供了加密和身份验证的能力。传统的 OpenSSL 及其衍生版本虽然在互联网上广泛使用,但是接连不断的爆出的各种安全漏洞让使用者很"头疼",而 Rustls 正是为解决此问题而生,它的目标是提供一个轻量级的、易于使用且高度安全的 TLS 解决方案。

RustLS 是用 Rust 编写的现代 TLS (传输层安全协议)库,通过严格遵循 Rust 的所有权模型和生命周期概念,确保了代码的可靠性和安全性,支持多种加密算法和协议版本,包括支持TLS 1.21.3协议,适用于客户端和服务器端。

项目采用了模块化设计,允许通过不同的加密提供商来定制其内部的加解密实现,包括默认的aws-lc-rs以及可选的ring等。RustLS 旨在生产环境中使用,并在多个组织和项目中得到实际部署,保持API的合理稳定,同时持续优化性能。

项目地址: github.com/rustls/rust...

Rustls 性能优于 OpenSSL 和 BoringSSL

MemorySafety.org 发布的一篇文章指出,在 Intel Xeon 服务器上的测试中,Rustls 的表现要优于 OpenSSL 和 BoringSSL。

测试结果表明,在握手性能和吞吐量性能方面,Rustls 都要领先于 BoringSSL 和 OpenSSL。

握手性能(Handshake Performance)

握手性能指标:在相同硬件和相同资源约束下,每秒可以完成的握手次数。

在每一个测试场景中,Rustls 都处于领先地位。

吞吐量性能(Throughput Performance)

吞吐量性能指标:具有相同资源限制的相同硬件上的吞吐量,以每秒兆字节数为单位:

在吞吐量方面,Rustls 也全面领先。

Rustls 不仅在性能方面领先,而且提供了 C 和 Rust API、FIPS 支持、量子密钥交换、加密客户端(ECH)、操作系统信任程序验证等功能。

文章地址: www.memorysafety.org/blog/rustls...

实际应用场景

在实际应用中,RustLS 被广泛应用于需要安全通信的场景,如Web服务器、客户端应用、物联网设备等场景。

1、Web服务器

Rustls 已经成熟且可以商用,在构建安全的 HTTPS 服务器时,完全替代传统的 OpenSSL 方案。事实上,Rustls 现在可以通过 OpenSSL 兼容层在 Nginx 中使用,这意味着你可以在世界上最广泛的 Web 服务器中无缝替换 OpenSSL。

2、客户端应用

对于需要安全连接远程服务器的应用(如文件同步工具、邮件客户端等),Rustls 是实现 TLS 连接的理想选择。

3、物联网设备

在资源有限的物联网环境中,Rustls 的小型体积和低内存需求使其成为最理想的选择。

总结

Rustls 代表了TLS实现的未来方向:安全、高效、易用。它消除了传统安全库的复杂性,同时不牺牲性能或安全性。无论你是正在构建下一代Web服务,还是需要为嵌入式设备添加安全通信,Rustls都值得你认真考虑。

在网络安全日益重要的今天,选择一个像Rustls这样从一开始就为安全而设计的库,不仅能保护你的用户,也能让你晚上睡得更安稳。

所以,下次当你需要TLS功能时,不妨给Rustls一个机会------你的代码(和你的用户)会感谢你的选择。

相关推荐
天若有情6737 小时前
【自研实战】轻量级ASCII字符串加密算法:从设计到落地(防查岗神器版)
网络·c++·算法·安全·数据安全·加密
darkb1rd7 小时前
七、PHP配置(php.ini)安全最佳实践
安全·php·webshell
Hello.Reader9 小时前
Rocket Fairings 实战把全局能力做成“结构化中间件”
中间件·rust·rocket
Andrew_Ryan10 小时前
rust arena 内存分配
rust
Andrew_Ryan10 小时前
深入理解 Rust 内存管理:基于 typed_arena 的指针操作实践
rust
石去皿11 小时前
【嵌入式就业7】计算机网络核心协议与嵌入式应用:从理论到IoT实战
物联网·计算机网络
迎仔11 小时前
11-云网络与混合云运维:弹性数字世界的交通管理
网络·安全·web安全
pitch_dark11 小时前
渗透测试系统基础篇——kali系统
网络·安全·web安全
世界尽头与你11 小时前
(修复方案)基础目录枚举漏洞
安全·网络安全·渗透测试
ん贤11 小时前
一次批量删除引发的死锁,最终我选择不加锁
数据库·安全·go·死锁