gnupg - 需要能够解密,而不能加密

时间:2014-05-20 17:27:29

标签: encryption cryptography gnupg

我需要做的是:

  • 在我的服务器上:获取文件并加密
  • 在许多远程设备上,我需要解密文件(不需要检查autenticy /签名)

我无法为远程设备提供加密功能!

我做了什么 - 第1步 - 关键准备:

  • 在我的笔记本上:
  • gpg --gen-key
  • gpg --armor --export KEYNUMBER> key.pub
  • gpg --armor --export-secret-key KEYNUMBER> key.priv

  • 在我的服务器上:

  • gpg --import< key.pub

  • 远程设备

  • gpg --import< key.priv

我做了什么 - 第2步 - 加密文件:

  • 在我的服务器上:
  • gpg --armor --encrypt --recipient KEYNUMBER< file.orig> file.asc

  • 远程设备

  • gpg --decrypt< file.asc> file.out

一切正常。正如我所希望的那样。

但是,如果我在远程设备上工作" gpg --armor --encrypt --recipient KEYNUMBER< file.orig> file.asc"这成功地产生了。我不希望远程设备能够加密。它应该只解密。

有关如何解决此问题的任何提示?

谢谢,

2 个答案:

答案 0 :(得分:3)

您无法阻止客户端加密到该密钥,因为密钥始终包含OpenPGP中的公钥(由GnuPG实现)。

来自RFC 4880,突出显示我:

  

5.5.1.3。密钥包(标签5)

     

Secret-Key数据包包含在公钥包中找到的所有信息,包括公钥材料,但也包括所有公钥后的密钥材料字段。

     

5.5.1.4。秘密子密钥包(标签7)

     

Secret-Subkey数据包(标记7)是Secret Key数据包的子模板,具有完全相同的格式。

如果要确保从服务器发送消息,则必须使用第二个密钥对对其进行签名,其中服务器具有私钥,而客户端仅具有公钥。

答案 1 :(得分:1)

您应该问自己为什么不希望远程设备能够加密。一方面,您说您不需要身份验证,但OTOH您可能希望通过确保只有服务器能够加密来实现某种身份验证。因此,如果您需要身份验证和完整性保护,请使用为其设计的机制,即数字签名。如果您不需要身份验证,请不要担心设备能够加密消息。