经过三年半的开发,Sequoia 1.0版本软件包发布,开发了一个函数库和命令行工具,并实现了 OpenPGP 标准 (RFC-4880)。
此次发布总结了底层 API 的开发工作,该 API 实现了足以满足完整使用需求的 OpenPGP 标准覆盖范围。项目代码使用 Rust 编写,并以 GPLv2+ 许可证发布。
该项目由三位来自 g10code 的 GnuPG 贡献者创立,g10code是一家 GnuPG 插件开发商和密码系统审计公司。Sequoia 团队还因创建 Hagrid 密钥服务器而闻名,该服务器被 keys.openpgp.org 服务使用。
新项目的目标是重新设计体系结构并应用新技术来提高代码库的安全性和可靠性。
为了提高安全性, Sequoia 不仅使用采用 Rust 语言的安全编程工具,还采用了 API 级别的错误保护。
例如,API 可防止您意外导出密钥材料,因为默认情况下导出操作需要显式选择。同样,API 可确保在更新数字签名时不会遗漏任何重要步骤;默认情况下,创建时间、哈希算法和签名颁发者都会自动更新。
Sequoia还试图消除 GnuPG 的缺点,例如命令行工具与函数库的功能不同步(某些操作只能使用实用程序执行)以及组件之间过于紧密的耦合,这使得更改变得困难,混淆了代码库,并阻止了创建完整的单元测试系统。
Sequoia开发了带有 Git 风格子命令支持的 sq 命令行实用程序、用于验证独立签名的 sqv 程序(gpgv 的替代品)、sqop 实用程序(无状态 OpenPGP CLI)以及 sequoia-openpgp 库。
有用于C和Python语言的链接。 OpenPGP标准中描述的大多数功能与数字签名的加密,解密,创建和验证兼容。
在高级功能中,应注意的是,它支持使用单独提供的数字签名(单独的签名)进行验证,适应与程序包管理器(APT,RPM,上载等)的集成,通过阈值和时间值限制签名的能力。
为了简化开发,调试和事件分析,提供了数据包检查工具,该工具与分析器集成在一起,可让您直观地分析加密消息,数字签名和密钥的结构。
出于安全考虑,允许使用加密服务,例如在隔离区域内使用协处理器进行计算。为了进一步隔离,处理公钥和私钥的服务被分离到不同的进程中(进程间交互采用 Cap'n Proto 协议)。例如,密钥存储就是一个单独的进程。
API 提供两种选项:底层 API 和高级 API。底层 API 尽可能地复刻了 OpenPGP 及其一些相关扩展的功能,例如 ECC 支持、公证(双重签名)以及未来标准草案中的一些元素。
据观察,根据计划的功能,Sequoia 早在一年前就已准备好发布 1.0 版本,但开发人员决定不急于求成,而是花更多时间查找错误并编写完整的高质量文档,其中包含指向 OpenPGP 标准中信息的链接和使用示例。
1.0 版本目前仅支持 sequoia-openpgp box和 sqv 数字签名验证工具。“sq” CLI 和高级 API 仍在最终完善中,尚未稳定。
计划在将来的版本中删除的限制包括:实现用于存储私钥和公钥的服务,对明文数字签名的支持以及使用正则表达式确定可信签名的能力。