Hacker News 中文摘要

RSS订阅

OpenSSL 4.1.0 发布 -- OpenSSL 4.1.0

OpenSSL 4.1.0 是一次功能发布,为 OpenSSL 增加重要新功能。此版本包含可能重要或不兼容的改动:Configure 移除未真正禁用实现的 no-ecdsa 和 no-ecdh 选项,需用 no-ec 关闭椭圆曲线支持;tsget 改用 Net::Curl::Easy(来自 Net-Curl CPAN 发行版)替代已废弃的 WWW::Curl::Easy,依赖者升级前应安装 Net::Curl::Easy。新增 ppc64le 上的 ML-DSA 与 ML-KEM NTT 优化、x86_64 上的 ML-DSA 与 AVX-512 SHAKE x4 优化,以及 AES-CBC 解密的 AVX-512 与 VAES 优化;还新增 VC-WIN32-MSVC2013 和 VC-WIN64A-MSVC2013 构建目标,提供用于弥补微软(Microsoft)Visual C++(MSVC)2013 中 C99 标准支持缺口的内部函数。

正文

OpenSSL 4.1.0 是一个功能发布版本,为 OpenSSL 增加了重要的新功能。

本版本引入了以下可能重大或不兼容的变更:

已从 Configure 中移除 no-ecdsa 和 no-ecdh 选项,因为这些选项实际上并未禁用相关实现。若要禁用椭圆曲线支持,请使用 no-ec。

tsget 工具已改为使用 Net::Curl::Easy(来自 Net-Curl CPAN 发行版),取代已废弃的 WWW::Curl::Easy。依赖 tsget 的用户应在升级前安装 Net::Curl::Easy。

新增了 ppc64le 上优化的 ML-DSA 和 ML-KEM NTT 运算,以及 x8664 上优化的 ML-DSA 运算;还新增了 x8664 上用于 ML-DSA 的 AVX-512 优化 SHAKE x4 运算,以及 x86_64 上 AES-CBC 解密的 AVX-512 和 VAES 优化。

新增了 VC-WIN32-MSVC2013 和 VC-WIN64A-MSVC2013 构建目标,提供内部函数,以弥补 MSVC 2013 在 C99 标准支持上的不足。

本版本新增了以下功能:

4.1.0 中的已知问题

32878

当收到 DTLS 1.3 KeyUpdate 时,所有其他待处理的握手后记录都会从重传缓冲区中丢弃。

这意味着,如果原始传输丢失,仍在等待 ACK 的握手后记录(例如 NewSessionTicket)将不再被重传。修复正在进行中,并计划在未来版本中发布。

33277

DTLS 监听器上的永久性接收失败,可能会在已接受的连接上被报告为 SSLERRORWANT_READ。轮询和后续的 accept 调用也可能无法报告该错误,导致应用程序在发生永久性失败后继续等待。

33278

从 DTLS 监听器接受的非阻塞连接上,可重试的写入失败可能会被报告为 SSLERRORSYSCALL,而不是 SSLERRORWANT_WRITE。将此结果视为致命错误的应用程序,可能会关闭一个仍然可用的连接。

评论

讨论气氛是怀旧与挑刺交织:有人为 Windows-on-Itanium 和 Windows CE 目标被移除而像送别一个时代。更集中的意见则是在批评 OpenSSL 修复和跟进太慢、生态向其他 TLS 库迁移;对于 DTLS 1.3,则分成“重要能力终于补齐”和“QUIC 时代是否还值得优先做”两种态度。

认为 OpenSSL 改进太少太晚,生态已在转向 LibreSSL、BoringSSL 等替代品

  • 有人提醒 LibreSSL 仍然存在,也有人直言这次变化“太少也太晚”,大家已经在迁移;还有人对 OpenSSL 到现在才支持 GREASE 感到意外,过去因为标准早已落地而长期链接 BoringSSL,并好奇两类库的当前份额。(较多人)
  • > 真没想到 OpenSSL 到现在才支持 GREASE,相关 RFC 标准都发布六年了,我这些年只好改用 BoringSSL(@aftbit)

对 OpenSSL 3.0 引入的性能回退仍未修复感到失望

  • 有人核对更新说明后指出,并没有看到修复 3.0 系列带来的严重性能回退,并引用 cryptography.io 上的 OpenSSL 现状说明作为背景。(少数人)
  • > 我没看到“修复了我们在 3.0 中引入的那些过度性能回退”,这很可惜(@hannob)

肯定 DTLS 1.3 支持终于落地,认为效率和简洁性显著优于 1.2

  • DTLS 1.3 对应 RFC 9147,被认为在效率和简洁度上比 1.2 提升很大,终于发布让需要它的人受益,不过具体实现质量还有待检验。(少数人)
  • > DTLS 1.3 相比 1.2 在效率和简洁上都是巨大改进,虽然没法评价 OpenSSL 的实现,但终于发布是好事(@mlhpdx)

质疑在 QUIC 普及背景下新增 DTLS 1.3 的优先级

  • 有人觉得大多数新应用似乎都默认走 QUIC 的 datagram 模式,OpenSSL 现在才加 DTLS 1.3 有点反直觉;他自己的 DTLS 1.3 项目目前跑在 wolfSSL 上,表示会来看看。(少数人)
  • > 大多数新应用似乎都已默认用 QUIC 的 datagram 模式,这时候才支持 DTLS 1.3 让人意外;我自己的项目目前在 wolfSSL 上,会来试试(@markasoftware)

抱怨 OpenSSL 仍需要 Perl 才能构建

  • 有人吐槽 OpenSSL 似乎是自己仍在使用的软件里唯一还必须装 Perl 的项目,构建依赖显得过时。(少数人)
  • > 这大概是我用的唯一一个还要求我保留 Perl 的软件项目(@adzm)

怀念 Windows-on-Itanium 与 Windows CE 的退场,也承认其生命周期已经很长

  • 移除 VC-WIN64I 和 VC-CE 目标让讨论带上怀旧色彩:有人致敬一个时代结束;也有人指出 Itanium 的支持其实延续得很久,并非突然死亡。(较多人)
  • > 一个时代结束了,致敬(@Razengan)

有价值的补充

  • Windows Server 2008 R2 的 Itanium 更新持续到 2020 年、付费支持到今年才结束,说明这次移除是超长生命周期后的自然退场(@haunter)。