标签: pgp

使用具有多个收件人的 PGP/GPG 加密文件

我已经使用 GPG 一段时间了,对内部工作原理也略知一二。例如,我知道如何用你的公钥加密一个文件,这样只有你才能用你的私钥打开它,整洁。

但实际上发生的是(据我所知):

  1. 生成随机密码。
  2. 文件使用此密码对称加密。
  3. 密码与接收者的公钥不对称加密并存储在文件中。

  4. 接收方使用私钥解密密码。

  5. 接收方使用密码解密文件。

AFAIK 这样做是为了显着提高速度,而且理论上每次都有一个新的秘密会使猜测密码变得更加困难。

所以我的实际问题是,是否可以有多个收件人?

例如..我有10GB的文件,要与5朋友或同事分享,我真的需要重新加密5次,存储50GB是否有可能5加密随机选择密码(对称加密)次使用 5 个公钥并将它们放在文件头中?

还是我只是向全世界分享了一个我应该申请专利的想法?=)

security encryption pgp gnupg

8
推荐指数
1
解决办法
2万
查看次数

签名和加密与加密和签名 - GPG 有什么作用?

我已经阅读了讨论我们应该先签名然后加密,还是加密然后签名?以及论文S/MIME、PKCS#7、MOSS、PEM、PGP 和 XML 中的缺陷签名和加密。我的问题与 gpg 正在做什么有关。这有点难以凭经验辨别,因为以下输出:

gpg --encrypt --sign <filename>
Run Code Online (Sandbox Code Playgroud)

每次运行时都会发生变化。(为什么?)

@Jens 解释说,部分原因是包含时间戳。有什么办法可以消除它吗?我没有看到 gpg 选项。

由于选项的顺序可能没有区别,并且由于我无法使用该--detach-sign选项(无论如何只生成一个输出文件),我怀疑输出代表:

\begin{equation}
E_r (msg\  \| \ E_s (\#msg))
\end{equation}
Run Code Online (Sandbox Code Playgroud)

其中$E_r$是用接收者的公钥$E_s$加密,是用发送者的私钥加密,$msg$是消息,$\#msg$是消息的散列,$\|$是连接。IE。这将是“签署消息然后加密”。这样对吗?

或者是它:

\begin{equation}
E_r (msg) \  \| \ E_s (\#msg)
\end{equation}
Run Code Online (Sandbox Code Playgroud)

换句话说,它是“加密然后使用纯文本签名”吗?我假设它不是“加密然后签名密文”,($E_r (msg) \ \| \ E_s (\# E_r (msg))$)因为这与上述论文中的第 1.2 节相反。

@Jens 解释说它确实是“签名消息然后加密”。那么我们如何“加密然后使用纯文本签名”,输出单个 openpgp 文件,而不是两个文件,一个是加密数据,另一个是签名?

另外,我已经阅读了论文并阅读了手册 - 除了代码本身之外,我还可以去哪里查找?

@Jens 建议运行:

echo 'foo' | …
Run Code Online (Sandbox Code Playgroud)

encryption pgp digital-signature

8
推荐指数
1
解决办法
1万
查看次数

如何将 Kleopatra PGP 密钥存储在 USB 驱动器上?

我在 Windows 上使用 Kleopatra(实际上是 gpg4win)。我已经创建了 PGP 私钥,我想将它们存储在我的 U 盘上(例如,只有当私钥可用时才能加密文件 - 也就是说,如果 U 盘在驱动器中)。

我怎样才能做到这一点?

谢谢!

pgp usb-flash-drive

7
推荐指数
1
解决办法
2万
查看次数

如何验证 gpg 密钥的信任路径?

我想检查一下 Julien Danjou 用于他的emacs 快照存储库的 gpg 密钥是否可以信任。从 my key 到 Juliens key有很多信任路径。但我不敢相信不应该有任何 gpg 命令从我的本地密钥环中回答这个简单的问题。或者有吗?

显然我不是唯一一个遇到这个问题的人

pgp cryptography public-key-encryption gnupg

7
推荐指数
2
解决办法
3185
查看次数

如何使用 GnuPG 获得尽可能小的输出(对称加密)?

我正在尝试生成可以嵌入二维码的非常小的 OpenPGP 加密文件。

然而,与例如 OpenSSL 相比,GnuPG 似乎为简单的 'a' 输入产生了非常大的结果:

$ echo -n a|openssl enc -aes-256-ctr|wc -c 
17
$ echo -n a|gpg --symmetric -o-|wc -c
71
Run Code Online (Sandbox Code Playgroud)

通过阅读手册,其中一个区别是 OpenSSL 默认只包含一个 8 字节的标头和一个 8 字节的盐,而 GnuPG 还包含一个盐、校验和和压缩。关闭这些后,文件大小变小但仍然很高:

$ echo -n a|gpg --symmetric --compress-algo none --disable-mdc --s2k-mode 0 -o-|wc -c
35
Run Code Online (Sandbox Code Playgroud)

有什么方法可以进一步优化 OpenPGP 加密的消息(同时保持 AES 启用)?

encryption pgp gnupg openpgp

7
推荐指数
1
解决办法
1322
查看次数

在 emacs 中使用 gpg 加密文件时如何禁用有关信任的提示

我想使用 emacs 编辑使用 gnu 隐私保护加密的文件。我使用 emacs 23 中内置的 gpg 支持,我认为这是一个简单的 pg 助手。我导入在命令行中创建的密钥M-x epa-import-keys。当我保存后缀为 .gpg 的文件时,我首先要在我计算机上安装的密钥中选择收件人。我选择其中之一,我自己创建的密钥。然后我得到了一个问题:Use untrusted key anyway? (y or n). 这是什么意思,我该如何禁用它?gpg 从命令行工作正常。

版本:gpg (GnuPG) 1.4.9,emacs 23.3。

encryption emacs pgp gnupg

6
推荐指数
1
解决办法
2557
查看次数

gpg:导入失败密钥 xxxxxxxx:没有有效的用户 ID

在 gpg (GnuPG) 1.4.2 上导入公钥时出现此错误

gpg: armor header: Version: GnuPG v2.0.14 (GNU/Linux)
gpg: pub  xxxxx/xxxxxxxx 2012-05-25  abcd xyz <email@address.com>
gpg: DSA requires the use of a 160 bit hash algorithm
gpg: DSA requires the use of a 160 bit hash algorithm
gpg: key xxxxxxxx: invalid self-signature on user ID "abcd xyz <email@address.com>"
gpg: DSA requires the use of a 160 bit hash algorithm
gpg: DSA requires the use of a 160 bit hash algorithm
gpg: key xxxxxxxx: invalid subkey binding …
Run Code Online (Sandbox Code Playgroud)

linux encryption pgp public-key-encryption gnupg

6
推荐指数
2
解决办法
6811
查看次数

PGP - 我是否共享我的公钥、指纹或 KeyID?

我在 Twitter 上看到有人发布了相对短的密钥格式。实际的公钥很长。

  1. 他们共享什么——指纹还是钥匙 ID?
  2. 我如何仅使用该密钥 ID 来识别和验证该人?我不需要完整的公钥吗?

pgp gnupg

6
推荐指数
1
解决办法
5779
查看次数

如果不存在主密钥,则无法删除 GnuPG 中的私有子密钥

我有一个 GnuPG 密钥对,其中包含一个主密钥(仅具有认证功能)和 3 个子密钥(分别具有SignEncryptAuthenticate功能)。实际上,当我开始时,我只有子密钥的私钥(我有一个存根,标记为#,而不是主私钥)

我这样做:

  1. 我列出私钥 ( gpg --list-secret-keys)。有一个主密钥存根 ( #) 和三个子密钥。
  2. 我使用公共加密子密钥 ( gpg -e USER)加密消息
  3. 我解密消息 ( gpg -d):好的。
  4. 我删除了三个子项 ( gpg --edit-key)。gpg --delete-secret-keys不适用于主密钥(它只是一个存根)或子密钥。
  5. 我删除公共主密钥 ( gpg --delete-keys)
  6. 我尝试解密第 2 步中的消息:无法,没有私钥,好的。我列出私钥gpg --list-secret-keys:无密钥
  7. 我杀死 gpg-agent ( killall gpg-agent)
  8. 我再次从密钥服务器导入公钥(gpg --receive-keys )
  9. 我尝试解密第 2 步中的消息,令人惊讶的是我能够通过引入保护私有子密钥的密码来解密它!如果我再次执行,私钥就在那里gpg --list-secret-keys

我想我没有正确删除私有子项,我想使用命令gpg --edit-key我只删除了公共子项。如果没有主密钥(它只是一个存根),我如何删除私有子密钥?

再次导入秘密主密钥后,我可以通过执行删除主私钥及其三个子密钥gpg --delete-secret-key …

linux command-line pgp gnupg

6
推荐指数
1
解决办法
3199
查看次数

是否可以使用 macOS“钥匙串”+“TouchID”来执行 pinentry 程序?

是否有某种配置方法pinentry-mac,我目前使用它来输入 OpenPGP 卡(Yubikey)的密码,或者使用其他程序将密码存储在 macOS“钥匙串”中,以便我只需使用“TouchID” '而不是输入它?

pgp gnupg openpgp macos yubikey

6
推荐指数
1
解决办法
2125
查看次数