Sq,红杉PGP的CLI,发布了

2021-02-17 18:10:32

上个月,我们发布了通用低级OpenPGPlibrary(红杉-openpgp)的1.0版。现在,我们发布了sq的第一个版本,即0.23版,供一般使用。

sq是一个命令行工具,旨在公开该库提供的很多(但不是全部!)功能。尽管我们完全希望sq可以用作OpenPGP瑞士军刀,并且通常说来,真正的甘蔗应该有可能,但是我们首先希望squre在命令行中被人类使用。我们理解这意味着可以使用sq来调整和扭曲OpenPGP数据。但是,那些希望使用Sequoia对其进行更新的人将需要使用该库。而且,无论如何,它们可能会更好地得到服务。

sq具有类似于git的子命令风格的界面。这具有每个命令都有其自己的选项名称空间的优点,这使得更容易准确地了解哪些选项会影响给定的命令。

在功能方面,sq已经提供了任何OpenPGP用户日常使用所需的基本操作:密钥生成(sq密钥生成),加密(sq加密)和解密(平方解密),签名(平方签)和验证(sq验证),密钥验证(sq验证)和密钥服务器(sq keyserver)& webkey目录(WKD)(sq wkd)交互。它还包括一些实用程序功能。它可以生成WKD(sq wkd生成),对自动加密标头进行编码和解码(sq autocrypt),操纵密钥环(sq keyring),像检查文件一样检查与OpenPGP相关的数据(sq inspect),以及漂亮地打印OpenPGP文件的内容(sq包)。倾倒)。

sq仍缺少大量功能。特别是,没有公用或专用密钥存储区。 (尽管存在原型。)这意味着所有OpenPGP证书必须存储在文件中,该文件不可扩展。而且,仍然缺少许多必要和有用的命令。例如,当前无法将新子项添加到证书或更改其到期日期。

sq也不能从脚本中使用。尽管我们不太可能更改当前的API,但更大的问题是sq的输出不可读。在中期,我们计划为每个命令添加一个JSON输出模式。考虑到JSONparsers的众多功能,这应该有效地消除了使用sq的输出来手动解析它的工具的需求,并有望消除一整套常见的对安全敏感的bug。

到现在为止,我们还没有在crates.io上发布squre,并且建议打包者不要将它们包括在发行版中。我们现在认为sq已准备好用于一般用途。如果您有任何建议,请与我们联系。

$ sq inspect /tmp/alice.sec/tmp/alice.sec:可转移的密钥。指纹:1191 7C40 2605 5EA3 4980 8877 C7C7 FF13 8025 22BEP公钥算法:EdDSA爱德华兹曲线数字签名算法公钥大小:256位秘密密钥:未加密创建时间:2021-01-25 19:17:42 UTC到期时间:2024 -01-26 12:44:03 UTC(创建时间+ P1095DT62781S)密钥标志:认证子密钥:0C61 2153 0ACF F0B2 C01E 6E8A 4D4D 029F 2206 7039公钥算法:EdDSA爱德华兹曲线数字签名算法公钥大小:256位秘密密钥:未加密的创建时间:2021-01-25 19:17:42 UTC到期时间:2024-01-26 12:44:03 UTC(创建时间+ P1095DT62781S)密钥标志:签名子密钥:F2CA 7FC7 A347 39F7 7CDC C1F0 C599 64AB 43F7 7134公钥算法:ECDH公钥算法公钥大小:256位密钥:未加密创建时间:2021-01-25 19:17:42 UTC到期时间:2024-01-26 12:44:03 UTC(创建时间+ P1095DT62781S)密钥标志:传输加密,静态数据加密用户ID:Alice< [email protected]>

在这里,我们看到sq默认情况下使用ECC,并生成一个signingsubkey和一个加密子密钥。 (sq密钥生成具有调整密码套件和密钥结构的选项。)默认情况下,sq生成签名子密钥,以防止攻击者将数据上的签名重新用作认证或绑定签名。

默认情况下,密钥材料是未加密的。提供--with-password选项将导致sq提示输入密码,并使用它来加密密钥材料。

$ sq数据包转储/tmp/alice.sec密钥密钥数据包,新的CTB,88字节...用户ID数据包,新的CTB,25字节值:Alice< [email protected]>签名数据包,新的CTB,212字节版本:4类型:PositiveCertification Pk算法:EdDSA Edwards-curve数字签名算法哈希算法:SHA512散列区:签名创建时间:2021-01-25 19:17:42 UTC(关键)密钥到期时间:P1095DT62781S(关键)对称算法首选项:AES256,AES128颁发者:C7C7 FF13 8025 22BE表示法:NotationData {标志:,名称:" [email protected]" ;,值:[209,99,...]}哈希首选项:SHA512,SHA256主用户ID:true(关键)关键标志:C(关键)功能:MDC颁发者指纹:1191 7C40 2605 5EA3 4980 8877 C7C7 FF13 8025 22BE摘要前缀:7E0A级别:0(数据签名)。 ..

为了简洁起见,我只显示了用户ID和相应的自签名。这里要注意的一件有趣的事是[email protected]表示法。这是一个32字节的随机值,默认情况下红杉会插入每个签名中,因为它是不可预测的,因此攻击者更难诱骗用户签名特定消息。

通过向sq packet dump提供--hexoption,可以获得更多详细信息。这导致它打印出数据包的描述性映射。内容,在剖析OpenPGP消息时很有用。

$ sq packet dump --hex /tmp/alice.secSecret-Key Packet,新的CTB,2个标头字节+ 88个字节版本:4创建时间:2021-01-25 19:17:42 UTC Pk算法:EdDSA Edwards-curve数字签名算法Pk大小:256位指纹:1191 7C40 2605 5EA3 4980 8877 C7C7 FF13 8025 22BE密钥ID:C7C7 FF13 8025 22BE密钥:未加密00000000 c5 CTB 00000001 58长度00000002 04版本00000003 60 0f 19 56 creation_time 00000007 16 pk_algo PK curve_len 00000009 2b 06 01 04 01 da 47曲线00000010 0f 01 00000012 01 07 eddsa_public_len 00000014 40 7b 06 00 4c 00 63 89 81 95 2f 22 eddsa_public 00000020 5a 35 7c b2 84 45 ce 9f d9 85 8d 55 01 4d aa 76 00000030 f7 bd b2 07 a1 00000035 00 s2k_usage 00000036 00 fe eddsa_secret_len 00000038 30 95 9d a4 ae 95 c3 e4 eddsa_secret 00000040 fc 15 bb ca 5a 67 31 e1 14 1b 2b 0b 2f 1a 4c 6e 00000050 95 a8 cc 63 7 de校验和...

要将密钥转换为证书(即删除密钥材料),我们可以使用sq keyring filter子命令: 使用sq inspect,我们看到我们现在有了证书而不是密钥: sq密钥环过滤器还允许用户指定一些谓词来实际过滤密钥环。 sq密钥环还有其他有用的功能。 它可以将密钥环拆分为单个密钥,并且可以将多个密钥或密钥环合并为单个密钥环。 为了对邮件进行签名和加密,我们为收件人指定一个或多个证书,为签名人指定一个或多个密钥。 $ sq crypto --recipient-key /tmp/bob.sec --signer-cert /tmp/alice.pgp /tmp/msg.pgp使用AES和256位密钥加密使用4D4D 029F 2206 7039中的ZIPGood签名压缩你好,树林!1 好的签名。 (如果您有兴趣在字节级别检查消息的结构,请确保尝试--hex选项。)

$ sq wkd get [email protected] PGP公共密钥块-----注释:8F17 7771 18A3 3DDA 9BA4 8E62 AACB 3243 6300 52D9注释:Neal H.Walfield< [email protected]> ;评论:Neal H. Walfield< [email protected]>评论:Neal H. Walfield< [email protected]>评论:Neal H. Walfield< [email protected]> xsEhBFUjmukBDqCpmVI7Ve + 2xTFSTG / Yai2nqxBk9gBfQfRFIjMt74 ...

目前,有六人在红杉工作。自从3.5年前该项目开始以来,这些款项全部由基金会支付。来自Wau Holland基金会于2018年的一笔捐款也为我们提供了额外的资金支持。PGP的创建者PhilZimmermann捐赠了1000欧元。并且,在我们的互操作性测试套件发现OpenPGP.js和GopenPGP中存在多个问题后,ProtonMail捐赠了1000欧元,这些问题由他们维护。

尽管p≡p基金会在下半年的财务状况是安全的,但对于红杉的中期健康而言,获得额外资金至关重要。您无需直接使用红杉对其产生正面影响。例如,OpenPGP CA是一种用于创建联合CA的新工具,旨在简化那些不依赖集中式身份验证解决方案的活动家,律师和新闻工作者对OpenPGP的使用。因此,请考虑捐赠。当然,ifyour公司正在使用红杉,请考虑赞助开发商(两个)。注意:如果您想使用GPLv2 +以外的许可来使用Sequoia,请联系基金会。

红杉是团队合作的结晶。 sq包括来自Azul,Igor Matuszewski,Justus Winter,Neal H.Walfield,Nora Widdecke和Wiktor Kwapisiewicz的代码贡献。