这是一种教科书式的加密情况,需要两个组件:
我想跟踪日志文件
用户只能使用公钥写入日志文件,并且文件必须加密,或者用户必须写入以前使用公钥加密的文件。(用户无法编辑或读取文件。(
而且,我需要使用私钥读取该日志文件。或者你对解决这个问题有什么建议吗?
Quora用户Adrian Ho给出了答案。
这是一种教科书式的加密情况,需要两个组件:
- 像ChaCha20这样的对称流密码(对于基于文本的日志;如果您在固定大小的块中编写二进制日志,像AES这样的对称块密码也可以工作(
- 类似RSA的非对称密码
对于几乎每种生产质量的语言,这两种密码都应该在加密库中可用。我个人已经接触过libcrypt(GnuPG的核心库(和NaCl(一种强调易用性和速度的替代加密库(,但请继续使用手头的任何东西
准备工作:
创建RSA密钥对
在记录器程序中嵌入公钥
保持私钥为私有密钥
记录器的基本逻辑:
-
每次创建新的日志文件时,它首先执行以下操作:
- 随机生成一个新的ChaCha20密钥
- 使用RSA公钥对ChaCha20密钥进行加密
- 在文件开头写入加密的ChaCha20密钥
- 每次写入新的日志条目时,它首先使用ChaCha20对条目进行加密。
在接收端,您的自定义日志读取器会对每个日志文件执行以下操作:
- 从文件开始读取加密的ChaCha20密钥
- 使用RSA私钥解密密钥
- 使用解密的ChaCha20密钥对文件的其余部分进行解密
工作完成。