我找到的几乎所有文档debian 包签名完全省略了加密算法的主题,而且我见过的少数涉及该主题的人只提到了 RSA,在一种情况下还提到了 DSA。
gpg 似乎是所有 debian 包签名的根源。
gpg 自 2011 年起就有了椭圆曲线,2014 年发布的 2.1.0 使其正式化。但似乎没有提到它的使用。
问题:
- 您可以使用 EdDSA (Ed25519) 密钥对来签署 debian 软件包吗?
- 从 2014 年起,这是否适用于安装的 gpg 版本至少为 2.1.0 的任何地方,或者是否有其他限制?
- gpg 支持的算法中是否存在不应用于 debian 包签名的算法?如果是,是哪些算法,为什么?
答案1
假设您指的是 APT 存储库的签名(这是常见的),而不是指签名单个包(这不是),那么答案是 APT 使用gpgv
,因此支持该二进制文件执行的所有算法。由于gpgv
它是 GnuPG 的一部分,因此它应该支持 GnuPG 的等效版本所支持的所有相关算法。
因此,假设您有合适的 gpgv 版本,您确实可以使用 EdDSA 算法。这似乎是 GnuPG 2.1.0 中的新内容,因此应该是可扩展的或更新的。注意依赖关系做允许使用 v1 of gpgv
,它不支持这一点,但这将是一个奇怪的配置。
一般来说,您的目标应该至少是 128 位安全级别。这意味着,如果您使用 RSA 或 DSA,则它应该至少是 3072 位密钥(这是 DSA 的最大值),或者您应该使用 256 位或更大的椭圆曲线。与 SSH 不同,在 SSH 中,DSA 实际上限制为 1024 位,因此不安全,DSA 在 OpenPGP 中并非不安全,但它在加密社区中已经失宠,因为它比大多数 EC 算法慢。
您还应该确保您的签名是使用 SHA-256 或 SHA-512 进行的。 SHA-1 曾经是默认值,对于签名而言不安全,APT 将不再接受它(即使接受,您也不会愿意这样做)。
由于历史原因以及 EdDSA 尚未标准化为 OpenPGP 的一部分,RSA 目前是默认设置。但是,除非您需要与其他非 GnuPG 实现进行互操作,否则没有理由不使用 EdDSA。