## WolfSSL 与 TLS 1.3:兼容性问题 最近的测试发现 WolfSSL 对 TLS 1.3 的实现存在一个显著缺陷,导致与 Erlang/OTP(以及 Elixir)等客户端的连接失败。TLS 1.3 旨在提高安全性,包含“中间盒兼容模式”,以便与不支持新标准的旧网络基础设施协同工作。该模式需要特定的行为——交换虚拟消息——以避免这些“中间盒”的干扰。 然而,WolfSSL *并未*完全按照 RFC 8446 标准实现此兼容模式。它采用一刀切的方式,要么始终启用该模式,要么完全禁用。这意味着期望符合 RFC 标准行为的客户端,例如默认启用该模式的 Erlang/OTP,将无法连接到使用 TLS 1.3 的 WolfSSL 服务器。 作者的经验强调了这个问题,源于希望利用 WolfSSL 的速度与 FreeBSD 上的 Haproxy 结合。解决方法涉及在客户端禁用中间盒兼容性,但这并非理想方案。作者建议关注 LibreSSL 作为更可靠的替代方案,呼应了 OpenBSD 一贯的立场,并警告不要以牺牲标准合规性为代价追求性能提升。
页面顶部 高级航天机器人,简单易学
dRehmFlight
主页
商店
项目
资源
dRehmFlight VTOL
关于
联系方式
更多...
使用Tab键浏览菜单项。
最新视频
在这个视频中,我们建造了一架巨大的旋转无人机,顶部平台经过适当的减速处理以保持定向。它不仅需要可控且可飞行,还需要在与100多架小型遥控飞机对抗中生存下来...
最新文章
欢迎来到dRehmFlight!
2024年6月15日
2分钟阅读 1/4
如果你能梦想到它,你就能飞它!
在r/dRehmFlight Subreddit上分享你的dRehmFlight VTOL作品!
© 2024 dRehmFlight, Nicholas Rehm
页面底部
## 在模糊测试中接口异步 Rust 与同步 C++
Antithesis 使用确定性虚拟机(“Determinator”)和模糊测试器来查找软件中的错误。模糊测试器最初用单线程 C++ 编写,通过发送控制信号来控制 Determinator。为了利用 Rust 的优势来实现新的控制策略,他们将异步、多线程 Rust 代码与现有的 C++ 核心集成。这带来了由于同步/异步不匹配和线程安全问题而产生的挑战。
该解决方案利用 `cxx` crate 进行互操作,定义 Rust 暴露的 C++ 类型,反之亦然。最初,管理跨线程的 C++ 对象生命周期由于 C++ 非线程安全的引用计数而证明很困难。这通过 `CppOwner` 和 `CppBorrower` 结构体来解决,后来使用 `SendWrapper` 进行改进,以安全地将 C++ 对象跨线程传递,并将删除推迟到主线程。
第二个挑战来自于 C++ 函数本身并非线程安全的。他们引入了 `SYNC` 和 `UNSYNC` 宏来对 C++ 方法进行分类,相应地标记不安全的 Rust 函数,并使用 `MainThreadToken` 提供安全的替代方案,以确保在主线程上执行。这种方法将线程安全的责任转移到 C++ 侧进行定义,同时允许 Rust 编译器强制正确的使用。
最终设计优先考虑“Rust 风格”的方法,利用编译器进行安全检查,并允许其他开发人员用于生产。后续文章详细介绍了这些原语的正式验证。