如何生成 public 密钥只有写入任何文件权限的 PGP 密钥?

How to generate a PGP key whose public key has only authorisation of writing to any file?

我想跟踪日志文件。

用户只能使用 public 密钥写入日志文件,并且文件必须加密,或者用户必须写入之前用 public 密钥加密的文件。 (用户不能编辑或读取文件。)

而且,我需要使用我的私钥读取该日志文件。 或者您对解决该问题有什么建议吗?

An answer has came from Adrian Ho who is Quora User.

这是教科书式的加密情况,需要两个组件:

  • a symmetric stream cipher like ChaCha20 (for text-based logs; if you're writing binary logs in fixed-size blocks, a symmetric block cipher like AES could work too)
  • an asymmetric cipher like RSA

这两种密码都应该在几乎所有生产质量语言的加密库中可用。我个人已经涉足了 libcrypt (the core library of GnuPG) and NaCl(一个强调易用性和速度的替代加密库),但是继续使用你手头的任何东西。

准备工作:

Create an RSA key pair.
Embed the public key in the logger program.
Keep the private key private.

记录器的基本逻辑:

  1. 每次创建新的日志文件时,它首先执行以下操作:

    • Generate a new ChaCha20 key at random.
    • Encrypt the ChaCha20 key with your RSA public key.
    • Write the encrypted ChaCha20 key at the start of the file.
  2. 每次写入新的日志条目时,它首先使用 ChaCha20 加密该条目。

在接收端,您的自定义日志 reader 在每个日志文件上执行此操作:

  1. 从文件开头读取加密的 ChaCha20 密钥。
  2. 使用您的 RSA 私钥解密密钥。
  3. 使用解密的 ChaCha20 密钥解密文件的其余部分。

任务完成。