如何生成一个PGP密钥,其公钥只有写入任何文件的权限



我想跟踪日志文件

用户只能使用公钥写入日志文件,并且文件必须加密,或者用户必须写入以前使用公钥加密的文件。(用户无法编辑或读取文件。(

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

Quora用户Adrian Ho给出了答案。

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

  • ChaCha20这样的对称流密码(对于基于文本的日志;如果您在固定大小的块中编写二进制日志,像AES这样的对称块密码也可以工作(
  • 类似RSA的非对称密码

对于几乎每种生产质量的语言,这两种密码都应该在加密库中可用。我个人已经接触过libcrypt(GnuPG的核心库(和NaCl(一种强调易用性和速度的替代加密库(,但请继续使用手头的任何东西

准备工作:

创建RSA密钥对
在记录器程序中嵌入公钥
保持私钥为私有密钥

记录器的基本逻辑:

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

    • 随机生成一个新的ChaCha20密钥
    • 使用RSA公钥对ChaCha20密钥进行加密
    • 在文件开头写入加密的ChaCha20密钥
  2. 每次写入新的日志条目时,它首先使用ChaCha20对条目进行加密。

在接收端,您的自定义日志读取器会对每个日志文件执行以下操作:

  1. 从文件开始读取加密的ChaCha20密钥
  2. 使用RSA私钥解密密钥
  3. 使用解密的ChaCha20密钥对文件的其余部分进行解密

工作完成。

最新更新