我是PGP的新手,我在这里需要一些帮助。
我收到了一个扩展名为.asc的文件,该文件是我从另一个pgp用户收到的邮件,并且说明文件必须被加密并签名
当前用户正在使用ftp服务器,我们的linux服务器的opt / PGP / Keyrings文件夹中有.asc文件,而opt / PGP文件夹中有secring.skr和pubring.pkr。
将来,他们计划迁移到SFTP服务器,并给了我们这个新的.asc文件以供处理。
问题是如何使用已发送的.asc文件加密数据?
注意:
我已经有以下代码来加密数据:
opt/PGP/pgp -es +force "PATH OF FILE TO ENCRYPT" '<RECIPIENT_ID KEY>' -z 'passphrase'
使用上面的命令如何进行加密?内部使用哪些文件加密数据?
如何在新程序中使用.asc文件?
另外,如果我使用新的.asc文件,是否会覆盖现有的secring.skr和pubring.pkr文件?该问题是基于以下假设:.skr和.pkr文件是从.asc文件生成的。我的假设正确吗?如果可以的话,是否可能会有更多的.pkr文件?如何使我的脚本指向要加密的特定.pkr文件?
最佳答案
公平的警告:我不是专家,我在与PGP兼容的系统上的经验是特定于GnuPG的,因此语法可能与您的实现不是100%相同,但是希望这可以为您提供一些帮助。
首先,PGP使用非对称加密方案。这意味着它使用不同的密钥来加密和解密数据。为此,用户必须生成一对(2)密钥,即他们的公钥和私钥。用一对公钥加密的数据只能用相应的私钥解密,反之亦然。
一个典型的情况可能是这样的:Alice和Bob互相交换公钥,这种方式可以使他们合理地确定Alice的公钥确实属于Alice,而Bob的则属于Bob。后来,爱丽丝想向鲍勃发送一条消息(或文件),但该消息包含敏感信息,她只希望鲍勃阅读。为了安全地完成传输,她使用Bob的公钥对消息加密。现在,任何人都可以读取加密消息的唯一方法是,首先使用Bob的密钥对其进行解密。假设Bob保持密钥安全,那么即使其他人截获了加密的消息,也没有人能够解密它。
我怀疑您收到的.asc文件是其他用户的公钥,您需要向他们发送消息/文件。您可以通过在文本编辑器(或Linux中的less / cat / head / tail等)中打开它并阅读内容来进行验证。如果.asc文件的第一行类似于---- BEGIN PGP PUBLIC KEY BLOCK ----,而最后一行是---- END PGP PUBLIC KEY BLOCK ----,那么您知道这就是它们的公钥。如果是这样,则需要将其导入到密钥环中,以便可以为该用户加密消息。在gpg / gpg2中,如下所示:
gpg2 --import sharedKey.asc
他们发送给您的.asc文件实际上也可能是某种加密的消息。如果是这样,则需要与其加密时使用的公钥相对应的私钥才能读取它,但这听起来像只是在设置好了,事实并非如此。
将收件人的公共密钥导入密钥环后,如果还没有一对,则需要生成自己的公共/私有密钥对。这仅需要发生一次,而不是每个消息一次。在gpg2中,用于启动生成过程的命令是
gpg2 --gen-key
此命令将引导您完成一些设置详细信息,然后创建密钥对,该密钥对将用于证明您通过签名发送了任何给定的文件。签名是一个涉及使用私钥来更改您发送的消息的过程。因为您使用私钥进行签名,所以拥有公钥的任何人都可以解密签名,并且如果成功解密,他们可以确保由签署文档的人控制了您的私钥(希望这就是您)。
一旦生成了自己的密钥对,并且导入了收件人的公共密钥,就可以对文件/消息进行加密和签名了,以便可以将它们安全地发送给该人。我不熟悉您提供的代码中的所有语法,但是我将解释自己的理解。
-e加密指定的文件
-s签署加密的文件
加密正确文件所需的“要加密的文件路径”
需要“ Recipient_id密钥”才能为该人加密文件
-z压缩结果
“密码”:使用您的秘密密钥进行签名所需的密码
我对+ force一无所知。
导入收件人的公共密钥后,您可以在密钥环中找到收件人ID。在gpg中,您将使用
gpg2 -k
以获得钥匙圈中所有公钥的列表。每个密钥的ID将是一个8位十六进制值,列在用于该密钥的rsa级别之后。即
pub rsa4096/DE936295 2017-11-28 [SC] [expires: 2018-11-28]
的密钥ID为DE936295。
导入公共密钥或生成新的密钥对不应覆盖密钥链中的任何内容。相反,它将添加新条目。不过,如果您担心的话,考虑制作钥匙圈的备份副本也没有什么坏处。如果您确实丢失了私钥,则将无法再解密使用匹配的公钥加密的任何消息。您应该有以下选择
gpg2 --export-secret-keys --armor -o mykey.priv.asc
gpg2 --export --armor -o pubKey.pub.asc
帮助您制作密钥的备份副本。
TL; DR
导入收件人的公共密钥。
生成自己的私钥/公钥对。
与收件人共享您的公共密钥。
运行您的脚本以加密和签名该收件人的文件/消息。
将结果文件移到您的SFTP目录。
我希望它能对您有所帮助,尽管我99%确信此处提供的语法不会完全适合您的应用程序,但它应该为您指明正确的方向。
关于linux - Linux服务器中的PGP,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47471575/