红杉0.20.0发布,在Rust中实现OpenPGP



Sequoia 0.20.0 软件包发布于昨天发布。它提供了功能库和命令行工具以及OpenPGP标准(RFC-4880)的实现。该项目团队由三人组成-OpenPGP项目(RFC-4880)的成员。为了提高代码库的安全性和可靠性,他们决定在Rust中创建OpenPGP的新免费实现。项目代码根据GPLv2 +许可证分发。



开发人员的目标不仅是要提高产品的安全性,而且要摆脱GnuPG的缺点。如果不破坏兼容性或从根本上重新设计代码库,就不能在主项目中消除它们。例如,GnuPG各个组件之间的连接足够牢固,以至于很难进行更改,更不用说创建一个单元测试系统了。 gpupg命令行工具包的功能和功能库未同步,因此只能使用该实用程序执行许多操作。



红杉有一个带有Git样式子命令支持sq命令行实用程序,外加两个API选项-低级和高级。有C和Python语言的绑定。 OpenPGP标准中描述的大多数功能都支持数字签名的加密,解密,创建和验证。



附加功能包括对单独提供的数字签名的验证支持,与包管理器集成的适应性以及通过阈值和时间限制签名的能力。



低级API非常接近地再现了OpenPGP的功能和一些相关的扩展,包括ECC支持和该标准未来版本的“草稿”中的元素。就异常而言,这些仅是规范的过时部分,可能会对安全性产生负面影响-例如,对MD5哈希的支持。该API还支持无缓冲的消息处理。就功能而言,它已经接近于OpenPGP标准的完整覆盖范围,并且完全准备好与OpenPGP数据一起使用。一个稳定的1.0版本应该在不久的将来发布。



至于高级API,它才刚刚开始发展,到目前为止涵盖了诸如存储公用密钥和通过网络访问功能之类的功能。计划随着项目的发展添加其他支持功能和特定于域的功能。



此外,该软件包还具有非常强大的软件包检查工具,可用于开发,调试和事件分析。检查工具与解析器结合在一起,以便用户可以分析加密消息,数字签名和密钥的结构。



  sq packet dump --hex message.pgp
 
   New CTB, 13 bytes: One-Pass Signature Packet
       Version: 3
       Type: Binary
       Pk algo: EdDSA Edwards-curve Digital Signature Algorithm
       Hash algo: SHA512
       Issuer: 83F8 2E4F E9A5 E098
       Last: true
 
   00000000  c4 0d                                              frame
   00000002        03                                           version
   00000003           00                                        sigtype
   00000004              0a                                     hash_algo
   00000005                 16                                  pk_algo
   00000006                    83 f8  2e 4f e9 a5 e0 98         issuer
   0000000e                                             01      last


就平台支持而言,该软件包当前可与Linux,FreeBSD,Windows,macOS,Android和iOS平台一起使用。也有可能使用这些平台提供的密码服务,包括用于在隔离区域中进行计算的协处理器。为了提供额外的隔离,通常将服务分成使用公钥和私钥的单独进程。例如,密钥存储以单独过程的形式开发。 Cap'n Proto协议用于确保各个流程的交互。



所提供的新版本具有一个低级软件包sequoia-openpgp,即sqv程序(替换了gpgv),以使用Stateless OpenPGP CLI的实现来验证分离的签名和一个sqop实用程序防锈要求已提高到1.46版。扩展了使用连续集成系统检查更改的功能,并改进了与OpenPGP的兼容性测试集。



在不久的将来,开发人员计划发布1.0版,该版本还将包括一个高级API,而不仅仅是现在的一个低级API。






All Articles