如何使用gpg中的私钥加密文件

Ham*_*adi 7 linux encryption gnupg public-key-encryption private-key

我正在为某些系统生成更新,我想加密更新以保持我的签名的机密性,完整性和有效性.我想用我的私钥加密文件并将它们发送到我的客户端,以便他们可以使用我的公钥解密它.但GPG的工作方式是使用public进行加密,使用private进行解密.我不想发送我的私钥,以便我可以更改它并将公钥发送给其他任何人.知道如何做到这一点???

uml*_*ute 15

你的意思不是称为"加密",而是在gpg术语中"签名".

签名基本上是使用您的私钥加密并使用公钥解密.

使用

 gpg --sign myfile.ext
Run Code Online (Sandbox Code Playgroud)

或者使用您的电子邮件客户端的签名功能.

签名显然将允许任何有权访问您的"公共"密钥的人阅读您的文件内容(并且由于"公共"密钥通常,嗯......,公开,这将允许每个人对内容进行decypher).

如果您正在寻找只有收件人可以解码内容的方法,那么您需要以只有收件人才能访问解密令牌的方式加密数据.显然收件人需要有这样一个令牌(即:你与他们进行编码的公共密钥,这样他们就可以与他们的解码私有密钥)

UPDATE

为简单起见:如果您想保证完整性(即:收件人确切知道,数据来自和其他人),您需要签署数据.如果要保证机密性(即:只有您的收件人可以读取数据),您需要加密数据.

双方签名加密实际上是一样的事情.唯一的区别是,谁有权访问密钥.

通过签名,您可以使用私钥加密数据,并使用您的公钥解密(因为每个人都可以访问公钥,所以每个人都可以解密它,因此每个人都可以验证数据是否已由))

通过加密,您可以使用收件人公钥来加密数据,并使用私钥对其进行解密(因此只有他们可以读取它;但是每个人都可以向他们发送加密数据,但他们无法保证它真正来自于发件人,但保证只有他们可以阅读它).

如果您需要机密性和完整性,则需要同时进行签名和加密,为此,您和收件人都需要拥有(不同的)公钥/私钥对.

结论

由于签名和加密都是相同的,因此只要您完全控制所涉及的密钥的可用性,您就可以使用它们来保证数据的有效性和完整性.

  • 我只是注意到我的gpg(来自Ubuntu的1.4.11)的`--sign`没有产生加密文件(需要指定`--sign`和`--encrypt`来为特定收件人加密它根据手册页).也就是说,您可以使用`--decrypt`来读取明文*,而无需使用公钥,您无法检查签名是否正确.所以@HamidRezaMoradi是正确的,并且单个`--sign`不能用于提供机密性(明文只是*压缩*但不加密*). (3认同)
  • 我刚刚独立完成了所有这些,并且可以确认签名不会加密有效负载。如果您在 --sign 命令上添加“--compress-level 0”,那么很容易看出,因为这会禁用压缩,结果是您的明文仅用签名包裹。 (3认同)
  • 这正是我所需要的,但是你确定只要公共密钥在这种情况下不可用,签名就会保留内容的机密性吗? (2认同)
  • 我测试了这种方法.它不保密,只签署包裹.数据将在机器之间以明文形式传输.还有其他方法吗?我创建了一个带有一些文本的文件,我用gpg签名--sing text.txt然后我vi text.txt.gpg我看到我的文字显然在那里 (2认同)
  • 看看这个例子:echo"它是一个测试"> test2.txt; gpg --sign test2.txt; cattest2.txt.gpg A btest2.txtP;它是一个测试 P; Ymm > L& KEȽC h@ ! W׿K v j y { -6&ԄMByX I-! ! R p (Tc w yA zC uzH Yܖ { 8 L = ?Oc q DU ( hX yd) 8 G{Ҙ,) y+ Ko Q` 8 (^\ d )Kb (2认同)

sca*_*cai 8

GnuPG要求您发布私钥以加密文档是不正确的.您永远不应该将您的私钥发布给任何人.

GnuPG支持两种不同的加密方法,即对称加密和对称加密.

非对称加密需要知道收件人的公钥.这通常不是问题,因为名称已经表明这些密钥不是秘密,但每个人都知道.为了再次解密它,只能使用只有收件人知道的私钥.使用GnuPG进行非对称加密是通过该--encrypt选项完成的.

如果你不知道公共收件人的关键,那么你可以使用对称加密,但双方共享同一个密钥.当然,这需要用于传输共享秘密的安全信道.对于对称加密,请使用该--symmetric选项.这里既不需要公钥也不需要私钥,但是共享密钥的安全交换使得对称加密容易受到攻击.

如果您只需要完整性问责制(在未检测到文档的情况下无法对其进行修改,并且您能够验证谁创建/签署了该文档),则可以使用该--sign选项使用您的私钥创建签名.有权访问您的公钥的每个人都可以检查此签名以验证完整性和问责制.但请注意,每个人都可以阅读您的原始邮件内容,因为此签名不是加密.生成的.gpg文件看起来像二进制数据,但只包含压缩但未加密的文本.您还可以通过指定禁用压缩--compress-level 0,您将看到输出文件以纯文本格式包含原始消息.因此,如果您需要保密,请不要使用此选项.