【问题标题】:How do I convert libsodium private keys to OpenPGP compatible private key packets?如何将 libsodium 私钥转换为 OpenPGP 兼容的私钥包?
【发布时间】:2015-11-06 11:53:27
【问题描述】:

libsodium 是一个很棒的加密库,而 GnuPG 是一个很棒的密钥管理和签名软件。

GnuPG recently released support for Ed25519 signing keys, and submitted a draft to the IETF.

我想通过我的 Web 应用程序通过 GnuPG 离线使用 Sodium 生成的密钥。这将使我不必每次签名时都用我的私钥信任服务器,而且我不必在我的客户端上使用特殊软件(即使我必须编写它),因为我已经拥有并且信任 GnuPG。

我该怎么做?如何将 libsodium 私钥转换为 OpenPGP 兼容的私钥包?

【问题讨论】:

  • 我什至无法在任何地方找到 libsodium 的密钥格式规范。很高兴知道现代加密库在这方面可能比旧的库甚至更糟
  • 这是一个公钥:\xef'\x07Ga#\xfe\xbc7\x8a\x00\xb3o\xbe\x92}k_\xa8\x8aH\x99cEN\x84\xf7<\x05\xe2\xd8\x8a 和对应的密钥:\x88\xf2\xe6`\xb2\xd9W@\xd7\x8e`1'\xb9\x16XE\xe8_bq\xa7e\n\xb5\x13~o\xe7b\x9f\xd9\xef'\x07Ga#\xfe\xbc7\x8a\x00\xb3o\xbe\x92}k_\xa8\x8aH\x99cEN\x84\xf7<\x05\xe2\xd8\x8a 公钥是 32 字节长;密钥 64 个字节(但最后 32 个字节是公钥) 也许我应该在我的问题中提到这一点,但我要转换的密钥是用 crypto_sign_keypair() 生成的。
  • @MaartenBodewes 我认为 LibSodium 使用相同的 format as Supercop。即与公钥连接的种子。通过使用 SHA-512 对种子进行散列,您可以获得用于确定性散列的 256 位秘密前缀和一个 256 位值,在处理几个位后,该值变为私有标量。
  • 我担心发现这一点将涉及阅读源代码并自己执行实际转换。我称之为一个项目
  • 不知道是什么,但为了 500 声望,我今天会学到一些新东西 lol

标签: cryptography elliptic-curve openpgp nacl-cryptography


【解决方案1】:

libsodium 使用 xsalsa20 算法进行加密。 PGP 目前不支持此算法,而 GnuPG 也不支持此算法。

【讨论】:

    猜你喜欢
    • 2013-07-17
    • 2012-01-07
    • 2022-01-13
    • 2019-11-15
    • 2011-10-22
    • 1970-01-01
    • 2014-11-25
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多