如何使用SSH公钥进行GPG加密?

6
我有一个名为key.pub的文件,其中包含我的公钥,内容如下:
ssh-rsa AAAAB...<snip>...t+f klahnakoski

我希望使用它来使用gpg加密文件。需要哪些shell命令的顺序?我想顺序大致如下:
  • 将密钥转换为gpg友好格式
  • 发明一些凭据以签署密钥
  • 发明一个用户以便添加密钥到密钥环
  • 执行加密操作
谢谢!

1
我们大多数人只是创建了一个 GPG 密钥。 - Anti-weakpasswords
2个回答

7

RSA密钥只能用于加密其密钥长度的一部分数据,例如2048位RSA密钥只能用于加密约245个字节的数据。

参见:

https://security.stackexchange.com/questions/33434/rsa-maximum-bytes-to-encrypt-comparison-to-aes-in-terms-of-security

因此,为了加密/解密大量数据(文件),应使用对称密钥,该对称密钥使用公钥加密,而不是使用公钥本身。

此外,您不会将对称密钥添加到公共 SSH密钥中,因为对称密钥是秘密的,而公共SSH密钥不是秘密。对称密钥应添加到私有 SSH密钥中。

操作如下:

要转换文件格式,请安装monkeysphere工具集(Ubuntu)。

sudo apt-get install monkeysphere

使用pem2openpgp工具将私钥转换为gpg格式。使用管道符号“|”将其导入到gpg中进行导入。
pem2openpgp userid-ssh@example.com < id_rsa | gpg --import

# Check it's there
gpg --list-secret-keys

编辑您对该密钥的信任级别。

gpg --edit-key userid-ssh@example.com
gpg> trust

添加所需的信任级别(例如ultimate)

导入的密钥仅适用于创建证书,不能用于签名或加密。

加密

该密钥是RSA密钥,不能用于加密/解密大量数据。如果您想要这样做,您必须添加对称加密子密钥。当您进行加密时,GPG将使用此子密钥而不是原始SSH密钥。

gpg> addkey
Please select what kind of key you want:
   (3) DSA (sign only)
   (4) RSA (sign only)
   (5) Elgamal (encrypt only)
   (6) RSA (encrypt only)
Your selection? 6

现在,您可以使用基于SSH密钥的身份验证来加密和解密。

gpg -vv -r userid-ssh@example.com -e -a unencrypted_file.txt

这有多有用呢?好吧,使用GPG作为SSH密钥的认证子密钥生成和管理工具比尝试使用反向方法更加合理。实际上,它可以集成到SSH中,而无需使用ssh-agent。

0

也许 ssh-vault能给你一些想法,它遵循PGP的相同原则,并使用公共ssh密钥仅加密密码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接